void createMeshWithMaterial(String fileName) { String matFileNameSuffix = ".material"; String matName1 = "red"; String matFileName1 = matName1 + matFileNameSuffix; MaterialPtr matPtr = MaterialManager::getSingleton().create(matName1, "General"); Pass* pass = matPtr->getTechnique(0)->getPass(0); pass->setDiffuse(1.0, 0.1, 0.1, 0); String matName2 = "green"; String matFileName2 = matName2 + matFileNameSuffix; matPtr = MaterialManager::getSingleton().create(matName2, "General"); pass = matPtr->getTechnique(0)->getPass(0); pass->setDiffuse(0.1, 1.0, 0.1, 0); String matName3 = "blue"; String matFileName3 = matName3 + matFileNameSuffix; matPtr = MaterialManager::getSingleton().create(matName3, "General"); pass = matPtr->getTechnique(0)->getPass(0); pass->setDiffuse(0.1, 0.1, 1.0, 0); String matName4 = "yellow"; String matFileName4 = matName4 + matFileNameSuffix; matPtr = MaterialManager::getSingleton().create(matName4, "General"); pass = matPtr->getTechnique(0)->getPass(0); pass->setDiffuse(1.0, 1.0, 0.1, 0); ManualObject* manObj = OGRE_NEW ManualObject("mesh"); manObj->begin(matName1, RenderOperation::OT_TRIANGLE_LIST); manObj->position(0, 50, 0); manObj->position(50, 50, 0); manObj->position(0, 100, 0); manObj->triangle(0, 1, 2); manObj->position(50, 100, 0); manObj->position(0, 100, 0); manObj->position(50, 50, 0); manObj->triangle(3, 4, 5); manObj->end(); manObj->begin(matName2, RenderOperation::OT_LINE_LIST); manObj->position(0, 100, 0); manObj->position(-50, 50, 0); manObj->position(-50, 0, 0); manObj->position(-50, 50, 0); manObj->position(-100, 0, 0); manObj->position(-50, 0, 0); manObj->end(); manObj->begin(matName3, RenderOperation::OT_LINE_STRIP); manObj->position(50, 100, 0); manObj->position(100, 50, 0); manObj->position(100, 0, 0); manObj->position(150, 0, 0); manObj->end(); manObj->begin(matName4, RenderOperation::OT_POINT_LIST); manObj->position(50, 0, 0); manObj->position(0, 0, 0); manObj->end(); manObj->convertToMesh(fileName); OGRE_DELETE manObj; }
void OgreDisplay::createCylinderMesh(std::string name, std::string material) { //make a cube mesh ManualObject* cylinderMesh = sceneMgr->createManualObject("cylinder"); cylinderMesh->begin(material, RenderOperation::OT_TRIANGLE_LIST); for(double i = 0.0; i < Math::PI * 2; i += Math::PI / 5) { cylinderMesh->position(cos(i), 1, sin(i)); cylinderMesh->textureCoord(i / (Math::PI * 2), 1.0); Ogre::Vector3 myNormal(cos(i), 0, sin(i)); myNormal.normalise(); cylinderMesh->normal(myNormal); } for(double i = 0.0; i < Math::PI * 2; i += Math::PI / 5) { cylinderMesh->position(cos(i), -1, sin(i)); cylinderMesh->textureCoord(i / (Math::PI * 2), 0.0); Ogre::Vector3 myNormal(cos(i), 0, sin(i)); myNormal.normalise(); cylinderMesh->normal(myNormal); } for(int i = 0; i < 10; i++) { cylinderMesh->triangle(i, (i+1) % 10, ((i + 10) % 20)); } for(int i = 10; i < 20; i++) { cylinderMesh->triangle(i, (i+1) % 10, (i+1) % 10 + 10); } cylinderMesh->position(0, 1, 0); cylinderMesh->textureCoord(0.5, 0.5); cylinderMesh->position(0, -1, 0); cylinderMesh->textureCoord(0.5, 0.5); for(int i = 0; i < 10; i++) { cylinderMesh->triangle(20, (i+1) % 10, i); cylinderMesh->triangle(21, ((i+10) % 10) + 10, ((i+ 11) % 10) + 10); } cylinderMesh->end(); cylinderMesh->convertToMesh(name); }
// source: // http://www.ogre3d.org/forums/viewtopic.php?p=301318&sid=ce193664e1d3d7c4af509e6f4e2718c6 ManualObject* createCubeMesh(Ogre::String name, Ogre::String matName) { ManualObject* cube = new ManualObject(name); cube->begin(matName); cube->position(0.5,-0.5,1.0);cube->normal(0.408248,-0.816497,0.408248);cube->textureCoord(1,0); cube->position(-0.5,-0.5,0.0);cube->normal(-0.408248,-0.816497,-0.408248);cube->textureCoord(0,1); cube->position(0.5,-0.5,0.0);cube->normal(0.666667,-0.333333,-0.666667);cube->textureCoord(1,1); cube->position(-0.5,-0.5,1.0);cube->normal(-0.666667,-0.333333,0.666667);cube->textureCoord(0,0); cube->position(0.5,0.5,1.0);cube->normal(0.666667,0.333333,0.666667);cube->textureCoord(1,0); cube->position(-0.5,-0.5,1.0);cube->normal(-0.666667,-0.333333,0.666667);cube->textureCoord(0,1); cube->position(0.5,-0.5,1.0);cube->normal(0.408248,-0.816497,0.408248);cube->textureCoord(1,1); cube->position(-0.5,0.5,1.0);cube->normal(-0.408248,0.816497,0.408248);cube->textureCoord(0,0); cube->position(-0.5,0.5,0.0);cube->normal(-0.666667,0.333333,-0.666667);cube->textureCoord(0,1); cube->position(-0.5,-0.5,0.0);cube->normal(-0.408248,-0.816497,-0.408248);cube->textureCoord(1,1); cube->position(-0.5,-0.5,1.0);cube->normal(-0.666667,-0.333333,0.666667);cube->textureCoord(1,0); cube->position(0.5,-0.5,0.0);cube->normal(0.666667,-0.333333,-0.666667);cube->textureCoord(0,1); cube->position(0.5,0.5,0.0);cube->normal(0.408248,0.816497,-0.408248);cube->textureCoord(1,1); cube->position(0.5,-0.5,1.0);cube->normal(0.408248,-0.816497,0.408248);cube->textureCoord(0,0); cube->position(0.5,-0.5,0.0);cube->normal(0.666667,-0.333333,-0.666667);cube->textureCoord(1,0); cube->position(-0.5,-0.5,0.0);cube->normal(-0.408248,-0.816497,-0.408248);cube->textureCoord(0,0); cube->position(-0.5,0.5,1.0);cube->normal(-0.408248,0.816497,0.408248);cube->textureCoord(1,0); cube->position(0.5,0.5,0.0);cube->normal(0.408248,0.816497,-0.408248);cube->textureCoord(0,1); cube->position(-0.5,0.5,0.0);cube->normal(-0.666667,0.333333,-0.666667);cube->textureCoord(1,1); cube->position(0.5,0.5,1.0);cube->normal(0.666667,0.333333,0.666667);cube->textureCoord(0,0); cube->triangle(0,1,2); cube->triangle(3,1,0); cube->triangle(4,5,6); cube->triangle(4,7,5); cube->triangle(8,9,10); cube->triangle(10,7,8); cube->triangle(4,11,12); cube->triangle(4,13,11); cube->triangle(14,8,12); cube->triangle(14,15,8); cube->triangle(16,17,18); cube->triangle(16,19,17); cube->end(); return cube; }