1. 凸面体与三角网格
三角网格可以很完美地表现一个OGRE模型的物理外形。
OGRE模型和Flour所生成的三角网格就外形而言完全等同,
为了性能起见,一般使用凸面体做物理碰撞。
NxOgre中凸面体最多256个顶点,作为一个大包装盒把要进行碰撞检测的对象包围起来。
2. Flour是一个可以把OGRE模型转换成NxOgre格式的小工具。
包括,特殊的mesh、skeleton和heightfield。
3. 使用Flour生成.nxs文件
flour convert in:Stairs.mesh, into:triangle, out:Stairs.nxs
flour convert in:Barrel.mesh, into:convex, out:Barrel.nxs
4. BloodyMess使用自己的资源系统来处理所有类型的文档:文件夹、zip压缩文档、URL。
NxOgre::ResourceSystem::getSingleton()->openArchive("media","file:media");
NxOgre::ResourceSystem::getSingleton()->openArchive("media","file:D:/Projects/BloodyMess Tutorials/media");
(注意:文件路径可以使用相对或绝对路径,"/" 也可以用 "//"替换)
5. 使用资源系统加载模型
NxOgre::Mesh* convexMesh = NxOgre::MeshManager::getSingleton()->load("media:Barrel.nxs");
NxOgre::Mesh* triangleMesh = NxOgre::MesnManager::getSingleton()->load("media::Stairs.nxs");
6. 使用已加载的模型,创建凸面体和三角几何
NxOgre::Convex* convex = new NxOgre::Convex(convexMesh);
NxOgre::TriangleGeometry* triangleGeometry = new NxOgre::TriangleGeometry(triangleMesh);
7. 将模型加入到场景
// 使用Convex作为外形,创建一个OGRE3DBody。
OGRE3DBody* convexBody = mRenderSystem->createBody(convex,NxOgre::Vec3(0,30,0),"Barrel.mesh");
convexBody->setGlobalOrientation(NxOgre::Matrix33(NxOgre::Vec4(0,45,0,45)));
// 通过TriangleGeometry,创建场景几何。
mScene->createSceneGeometry(triangleGeometry,NxOgre::Matrix44(NxOgre::Vec3(0,5,0)));
// 通过Entity,可视化创建的场景几何。
Ogre::Entity *triangleEntity = mSceneMgr->createEntity("trianlgeEntity","Stairs.mesh");
Ogre::SceneNode* triangleNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
triangleNode->attachObject(triangleEntity);
triangleNode->setPosition(Vector3(0,5,0));
NxOgre 笔记07
最新推荐文章于 2012-03-13 20:40:00 发布