NxOgre 笔记07

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));

你可能感兴趣的:(笔记)