void CSceneEditorView::EngineSetup(void) { Ogre::Root *Root = ((CSceneEditorApp*)AfxGetApp())->m_Engine->GetRoot(); m_SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "SceneEditor"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("SceneEditor"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("SceneEditor", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = m_SceneManager->createCamera("Camera"); m_Camera->setPosition(Ogre::Vector3(1683, 50, 2116)); m_Camera->lookAt(Ogre::Vector3(0, 0, 0)); m_Camera->setNearClipDistance(0.1); m_Camera->setFarClipDistance(50000); if (m_Root->getRenderSystem()->getCapabilities()->hasCapability(Ogre::RSC_INFINITE_FAR_PLANE)) { m_Camera->setFarClipDistance(0); // enable infinite far clip distance if we can } m_Camera->setAutoTracking(false); m_Camera->setFixedYawAxis(true); m_Camera->yaw(Ogre::Radian(0)); m_Camera->pitch(Ogre::Radian(0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = m_SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); m_SceneManager->setAmbientLight(Ogre::ColourValue(0.2, 0.2, 0.2)); //Create viewport Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); m_SceneManager->setSkyDome(true, "Examples/CloudySky", 5, 8); Ogre::MaterialManager::getSingleton().setDefaultTextureFiltering(Ogre::TFO_ANISOTROPIC); Ogre::MaterialManager::getSingleton().setDefaultAnisotropy(7); Ogre::Vector3 lightdir(0.55, -0.3, 0.75); lightdir.normalise(); Ogre::Light* light = m_SceneManager->createLight("tstLight"); light->setType(Ogre::Light::LT_DIRECTIONAL); light->setDirection(lightdir); light->setDiffuseColour(Ogre::ColourValue::White); light->setSpecularColour(Ogre::ColourValue(0.4, 0.4, 0.4)); m_SceneManager->setAmbientLight(Ogre::ColourValue(0.2, 0.2, 0.2)); mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(m_SceneManager, Ogre::Terrain::ALIGN_X_Z, 513, 12000.0f); mTerrainGroup->setFilenameConvention(Ogre::String("Terrain"), Ogre::String("dat")); mTerrainGroup->setOrigin(Ogre::Vector3::ZERO); configureTerrainDefaults(light); for (long x = 0; x <= 0; ++x) for (long y = 0; y <= 0; ++y) defineTerrain(x, y); // sync load since we want everything in place when we start mTerrainGroup->loadAllTerrains(true); if (mTerrainsImported) { Ogre::TerrainGroup::TerrainIterator ti = mTerrainGroup->getTerrainIterator(); while(ti.hasMoreElements()) { Ogre::Terrain* t = ti.getNext()->instance; initBlendMaps(t); } } mTerrainGroup->freeTemporaryResources(); }
void CUsingControllersView::EngineSetup(void) { Ogre::Root *Root = ((CUsingControllersApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "Walking"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("Mouse Input"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("Mouse Input", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); m_Camera->setPosition(Ogre::Vector3(0.0, 0.0, 1000.0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.8f, 0.8f, 0.8f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); Ogre::SceneNode *SphereNode = SceneManager->getRootSceneNode()->createChildSceneNode("Sphere", Ogre::Vector3(0,0,0)); Ogre::Entity *SphereEntity = SceneManager->createEntity("Sphere", "sphere.mesh"); SphereEntity->setMaterialName("Wall/Screen"); SphereNode->attachObject(SphereEntity); SphereEntity->getParentNode()->scale(0.2,0.2,0.2); m_Camera->lookAt(Ogre::Vector3(0.0, 0.0, 0.0)); #undef new Ogre::ControllerFunctionRealPtr func(OGRE_NEW Ogre::WaveformControllerFunction(Ogre::WFT_SINE, 0.0, 1.0)); Ogre::ControllerValueRealPtr dest(OGRE_NEW SphereScale(SphereNode, 1.0)); #ifdef _DEBUG #define new DEBUG_NEW #endif Ogre::ControllerManager& ControllerManager = Ogre::ControllerManager::getSingleton(); m_SphereController = ControllerManager.createController(ControllerManager.getFrameTimeSource(), dest, func); Root->renderOneFrame(); }
void CSceletalAnimationView::EngineSetup(void) { Ogre::Root *Root = ((CSceletalAnimationApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "Animation"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("Mouse Input"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("Mouse Input", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); m_Camera->setPosition(Ogre::Vector3(5.0, 5.0, 10.0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.8f, 0.8f, 0.8f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); m_Camera->lookAt(Ogre::Vector3(0.5, 0.5, 0.5)); m_Camera->setPolygonMode(Ogre::PolygonMode::PM_WIREFRAME); Ogre::ManualObject* ManualObject = NULL; ManualObject = SceneManager->createManualObject("Animation"); ManualObject->setDynamic(false); ManualObject->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_TRIANGLE_LIST); //face 1 ManualObject->position(0, 0, 0);//0 ManualObject->position(1, 0, 0);//1 ManualObject->position(1, 1, 0);//2 ManualObject->triangle(0, 1, 2);//3 ManualObject->position(0, 0, 0);//4 ManualObject->position(1, 1, 0);//5 ManualObject->position(0, 1, 0);//6 ManualObject->triangle(3, 4, 5);//7 //face 2 ManualObject->position(0, 0, 1);//8 ManualObject->position(1, 0, 1);//9 ManualObject->position(1, 1, 1);//10 ManualObject->triangle(6, 7, 8);//11 ManualObject->position(0, 0, 1);//12 ManualObject->position(1, 1, 1);//13 ManualObject->position(0, 1, 1);//14 ManualObject->triangle(9, 10, 11);//15 //face 3 ManualObject->position(0, 0, 0);//16 ManualObject->position(1, 0, 0);//17 ManualObject->position(1, 0, 1);//18 ManualObject->triangle(12, 13, 14);//19 ManualObject->position(0, 0, 0); ManualObject->position(1, 0, 1); ManualObject->position(0, 1, 1); ManualObject->triangle(15, 16, 17); //face 4 ManualObject->position(1, 0, 0); ManualObject->position(1, 1, 0); ManualObject->position(1, 1, 1); ManualObject->triangle(18, 19, 20); ManualObject->position(1, 0, 0); ManualObject->position(1, 1, 1); ManualObject->position(1, 0, 1); ManualObject->triangle(21, 22, 23); //face 5 ManualObject->position(0, 1, 0); ManualObject->position(1, 1, 0); ManualObject->position(0, 1, 1); ManualObject->triangle(24, 25, 26); ManualObject->position(1, 1, 0); ManualObject->position(1, 1, 1); ManualObject->position(0, 1, 1); ManualObject->triangle(27, 28, 29); //face 6 ManualObject->position(0, 0, 0); ManualObject->position(0, 1, 1); ManualObject->position(0, 0, 1); ManualObject->triangle(30, 31, 32); ManualObject->position(0, 0, 0); ManualObject->position(0, 1, 0); ManualObject->position(0, 1, 1); ManualObject->triangle(33, 34, 35); ManualObject->end(); Ogre::MeshPtr MeshPtr = ManualObject->convertToMesh("Animation"); Ogre::SubMesh* sub = MeshPtr->getSubMesh(0); Ogre::SkeletonPtr Skeleton = Ogre::SkeletonManager::getSingleton().create("Skeleton", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); MeshPtr.getPointer()->_notifySkeleton(Skeleton); Ogre::Bone *Root1 = NULL; Ogre::Bone *Child1 = NULL; Ogre::Bone *Child2 = NULL; Root1 = Skeleton.getPointer()->createBone("Root"); Root1->setPosition(Ogre::Vector3(0.0, 0.0, 0.0)); Root1->setOrientation(Ogre::Quaternion::IDENTITY); Child1 = Root1->createChild(1); Child1->setPosition(Ogre::Vector3(4.0, 0.0, 0.0)); Child1->setOrientation(Ogre::Quaternion::IDENTITY); Child2 = Root1->createChild(2); Child2->setPosition(Ogre::Vector3(5.0, 0.0, 0.0)); Child2->setOrientation(Ogre::Quaternion::IDENTITY); Ogre::VertexBoneAssignment Assignment; Assignment.boneIndex = 0; Assignment.vertexIndex = 0; Assignment.weight = 1.0; Skeleton->setBindingPose(); sub->addBoneAssignment(Assignment); Assignment.vertexIndex = 1; sub->addBoneAssignment(Assignment); Assignment.vertexIndex = 2; sub->addBoneAssignment(Assignment); Ogre::Animation *Animation = MeshPtr->createAnimation("HandAnimation", 100.0); Ogre::NodeAnimationTrack *Track = Animation->createNodeTrack(0, Root1); Ogre::TransformKeyFrame *KeyFrame = NULL; for (float FrameTime = 0.0; FrameTime < 100.0; FrameTime += 0.1) { KeyFrame = Track->createNodeKeyFrame(FrameTime); KeyFrame->setTranslate(Ogre::Vector3(10.0, 0.0, 0.0)); } Root1->setManuallyControlled(true); Child1->setManuallyControlled(true); Child2->setManuallyControlled(true); MeshPtr->load(); MeshPtr.getPointer()->_notifySkeleton(Skeleton); // Ogre::SkeletonSerializer skeletonSerializer; // skeletonSerializer.exportSkeleton(Skeleton.get(), "C:\\Users\\Ilya\\Documents\\Visual Studio 2010\\Projects\\Recipes\\media\\models\\testskeleton.skeleton"); // Ogre::MeshSerializer ser; // ser.exportMesh(MeshPtr.get(), "C:\\Users\\Ilya\\Documents\\Visual Studio 2010\\Projects\\Recipes\\media\\models\\testskeleton.mesh"); Ogre::Entity *Entity = SceneManager->createEntity("Animation", "Animation"/*"testskeleton.mesh"*/); Ogre::SceneNode *SceneNode = SceneManager->getRootSceneNode()->createChildSceneNode(); SceneNode->attachObject(Entity); Entity->setDisplaySkeleton(true); m_AnimationState = Entity->getAnimationState("HandAnimation"); m_AnimationState->setEnabled(true); m_AnimationState->setLoop(true); m_Camera->setPolygonMode(Ogre::PolygonMode::PM_WIREFRAME); Root->renderOneFrame(); }
void CManualObjectView::EngineSetup(void) { Ogre::Root *Root = ((CManualObjectApp*)AfxGetApp())->m_Engine->GetRoot(); m_SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "m_ManualObject"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("m_ManualObject"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("m_ManualObject", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = m_SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); m_Camera->setPosition(Ogre::Vector3(200.0, 50.0, 100.0)); m_Camera->lookAt(0.0, 0.0, 0.0); Ogre::SceneNode *CameraNode = NULL; CameraNode = m_SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(1.0f, 1.0f, 1.0f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); CreateManualObject(); Ogre::AxisAlignedBox Box = m_ManualObject->getBoundingBox(); Ogre::Vector3 Center = Box.getCenter(); m_Camera->lookAt(Center); m_Camera->setPosition(300, 100, 200); // m_Camera->setPolygonMode(Ogre::PM_WIREFRAME); Root->renderOneFrame(); }
void CSaveSceneView::EngineSetup(void) { Ogre::Root *Root = ((CSaveSceneApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "SaveScene"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("SaveScene"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("SaveScene", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); m_Camera->setPosition(Ogre::Vector3(200.0, 50.0, 100.0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); CameraNode->attachObject(m_Camera); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.0f, 0.0f, 0.0f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); Ogre::Entity *RobotEntity = SceneManager->createEntity("Robot", "robot.mesh"); Ogre::SceneNode *RobotNode = SceneManager->getRootSceneNode()->createChildSceneNode(); RobotNode->attachObject(RobotEntity); Ogre::AxisAlignedBox Box = RobotEntity->getBoundingBox(); Ogre::Vector3 Center = Box.getCenter(); m_Camera->lookAt(Center); int rc; xmlDocPtr doc; // Create a new Xmlm_XmlWriter for DOM, with no compression. m_XmlWriter = xmlNewTextWriterDoc(&doc, 0); // Start the document with the xml default for the version, // encoding ISO 8859-1 and the default for the standalone // declaration. xmlTextWriterStartDocument(m_XmlWriter, NULL, MY_ENCODING, NULL); SceneExplore(SceneManager); xmlTextWriterEndDocument(m_XmlWriter); xmlFreeTextWriter(m_XmlWriter); xmlSaveFileEnc("1.scene", doc, MY_ENCODING); xmlFreeDoc(doc); }
void CTransparentMaterialView::EngineSetup(void) { Ogre::Root *Root = ((CTransparentMaterialApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "MFCOgre"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("Ogre in MFC"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("Ogre in MFC", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); m_Camera->setPosition(Ogre::Vector3(320.0, 240.0, 500.0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.8f, 1.0f, 0.8f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); Ogre::ManualObject *Screen = SceneManager->createManualObject("Screen"); Screen->setDynamic(true); Screen->begin("window", Ogre::RenderOperation::OT_TRIANGLE_LIST); Screen->position(-100,-100,50); Screen->textureCoord(0,0); Screen->position(300,-100,50); Screen->textureCoord(1,0); Screen->position(300,300,50); Screen->textureCoord(1,1); Screen->triangle(0, 1, 2); Screen->position(-100,-100,50); Screen->textureCoord(0,0); Screen->position(300,300,50); Screen->textureCoord(1,1); Screen->position(-100,300,50); Screen->textureCoord(0,1); Screen->triangle(3, 4, 5); Screen->end(); Ogre::Entity *RobotEntity = SceneManager->createEntity("Robot", "robot.mesh"); Ogre::SceneNode *RobotNode = SceneManager->getRootSceneNode()->createChildSceneNode(); RobotNode->attachObject(RobotEntity); Ogre::SceneNode *WindowNode = SceneManager->getRootSceneNode()->createChildSceneNode(); WindowNode->attachObject(Screen); }
void CLinkedAnimationView::EngineSetup(void) { Ogre::Root *Root = ((CLinkedAnimationApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "Walking"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("Mouse Input"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("Mouse Input", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); m_Camera->setPosition(Ogre::Vector3(/*20*/0.0, /*5*/0.0, 100.0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.8f, 0.8f, 0.8f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); Ogre::SceneNode *RobotNode1 = SceneManager->getRootSceneNode()->createChildSceneNode("Robot1", Ogre::Vector3(-50,0,0)); Ogre::Entity *RobotEntity1 = SceneManager->createEntity("Robot1", "robot.mesh"); RobotNode1->attachObject(RobotEntity1); Ogre::Skeleton *Skeleton1 = RobotEntity1->getSkeleton(); RobotEntity1->setDisplaySkeleton(true); Ogre::SceneNode *RobotNode2 = SceneManager->getRootSceneNode()->createChildSceneNode("Robot2", Ogre::Vector3(50,0,0)); Ogre::Entity *RobotEntity2 = SceneManager->createEntity("Robot2", "robot.mesh"); RobotNode2->attachObject(RobotEntity2); Ogre::Skeleton *Skeleton2 = RobotEntity2->getSkeleton(); RobotEntity2->setDisplaySkeleton(true); Skeleton1->addLinkedSkeletonAnimationSource(Skeleton2->getName(), 2.0); // RobotEntity1->_initialise(true); // RobotEntity2->_initialise(true); // RobotEntity1->refreshAvailableAnimationState(); m_Camera->lookAt(Ogre::Vector3(0.0, 0.0, 0.0)); m_AnimationState1 = RobotEntity1->getAnimationState("Walk"); m_AnimationState1->setEnabled(true); m_AnimationState2 = RobotEntity2->getAnimationState("Slump"); m_AnimationState2->setEnabled(true); Root->renderOneFrame(); }
void CTerrainWalkingView::EngineSetup(void) { Ogre::Root *Root = ((CTerrainWalkingApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "Walking"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("Walking"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("Walking", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(10); m_Camera->setFarClipDistance(10000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.8f, 0.8f, 0.8f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); Ogre::SceneNode *TopographyNode = SceneManager->getRootSceneNode()->createChildSceneNode("Topography"); Ogre::Entity *TopographyEntity = SceneManager->createEntity("Topography", "Topography.mesh"); TopographyNode->attachObject(TopographyEntity); Ogre::AxisAlignedBox TopographyBox = TopographyEntity->getBoundingBox(); Ogre::Vector3 Minimum = TopographyBox.getMinimum(); Ogre::Vector3 Center = TopographyBox.getCenter(); Ogre::SceneNode *RobotNode = SceneManager->getRootSceneNode()->createChildSceneNode("Robot"); Ogre::Entity *RobotEntity = SceneManager->createEntity("Robot", "robot.mesh"); RobotNode->attachObject(RobotEntity); RobotEntity->getParentNode()->scale(10,10,10); Ogre::AxisAlignedBox RobotBox = RobotEntity->getBoundingBox(); RobotNode->setPosition(Ogre::Vector3(Minimum[0], Minimum[1] + RobotBox.getSize()[1], Minimum[2])); m_Camera->setPosition(Ogre::Vector3(Minimum[0], Minimum[1] + 5000, Minimum[2])); m_Camera->lookAt(Center); m_Camera->setPolygonMode(Ogre::PolygonMode::PM_WIREFRAME); m_Animation = RobotEntity->getAnimationState("Walk"); m_Animation->setEnabled(true); m_CollisionTools = new MOC::CollisionTools(SceneManager); Root->renderOneFrame(); }
void CGeoImageView::EngineSetup(void) { Ogre::Root *Root = ((CGeoImageApp*)AfxGetApp())->m_Engine->GetRoot(); Ogre::SceneManager *SceneManager = NULL; SceneManager = Root->createSceneManager(Ogre::ST_GENERIC, "MFCOgre"); // // Create a render window // This window should be the current ChildView window using the externalWindowHandle // value pair option. // Ogre::NameValuePairList parms; parms["externalWindowHandle"] = Ogre::StringConverter::toString((long)m_hWnd); parms["vsync"] = "true"; CRect rect; GetClientRect(&rect); Ogre::RenderTarget *RenderWindow = Root->getRenderTarget("Ogre in MFC"); if (RenderWindow == NULL) { try { m_RenderWindow = Root->createRenderWindow("Ogre in MFC", rect.Width(), rect.Height(), false, &parms); } catch(...) { MessageBox("Cannot initialize\nCheck that graphic-card driver is up-to-date", "Initialize Render System", MB_OK | MB_ICONSTOP); exit(EXIT_SUCCESS); } } // Load resources Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); // Create the camera m_Camera = SceneManager->createCamera("Camera"); m_Camera->setNearClipDistance(0.5); m_Camera->setFarClipDistance(5000); m_Camera->setCastShadows(false); m_Camera->setUseRenderingDistance(true); // m_Camera->setPosition(Ogre::Vector3(320.0, 240.0, 500.0)); Ogre::SceneNode *CameraNode = NULL; CameraNode = SceneManager->getRootSceneNode()->createChildSceneNode("CameraNode"); Ogre::Viewport* Viewport = NULL; if (0 == m_RenderWindow->getNumViewports()) { Viewport = m_RenderWindow->addViewport(m_Camera); Viewport->setBackgroundColour(Ogre::ColourValue(0.8f, 1.0f, 0.8f)); } // Alter the camera aspect ratio to match the viewport m_Camera->setAspectRatio(Ogre::Real(rect.Width()) / Ogre::Real(rect.Height())); TIFF *Tif = (TIFF*)0; /* TIFF-level descriptor */ GTIF *GTif = (GTIF*)0; /* GeoKey-level descriptor */ CString SourcePath = "C:\\Users\\Ilya\\Documents\\Visual Studio 2010\\Projects\\Recipes\\media\\materials\\textures\\o41078a1.tif"; int ImageWidth; int ImageHeight; double LowerLeftX; double LowerLeftY; double UpperRightX; double UpperRightY; int Xpos; int Ypos; Tif = XTIFFOpen((LPCSTR)SourcePath, "r"); GTif = GTIFNew(Tif); GTIFDefn Definition; GTIFGetDefn(GTif, &Definition); GTIFPrint(GTif, 0, 0); TIFFGetField( Tif, TIFFTAG_IMAGEWIDTH, &ImageWidth); TIFFGetField( Tif, TIFFTAG_IMAGELENGTH, &ImageHeight); int res = 0; double LowerRightX = ImageWidth; double LowerRightY = ImageHeight; res = GTIFImageToPCS(GTif, &LowerRightX, &LowerRightY); //Lower Left LowerLeftX = 0.0; LowerLeftY = ImageHeight; res = GTIFImageToPCS(GTif, &LowerLeftX, &LowerLeftY); //Upper Right UpperRightX = ImageWidth; UpperRightY = 0.0; res = GTIFImageToPCS(GTif, &UpperRightX, &UpperRightY); double UpperLeftX = 0.0; double UpperLeftY = 0.0; res = GTIFImageToPCS(GTif, &UpperLeftX, &UpperLeftY); Ogre::ManualObject *Terrain = SceneManager->createManualObject("Terrain"); Terrain->setDynamic(false); Terrain->begin("Terrain", Ogre::RenderOperation::OT_TRIANGLE_FAN); #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define MAX(x,y) (((x) > (y)) ? (x) : (y)) #define SW 0 #define NW 1 #define NE 2 #define SE 3 FILE *File = NULL; char Dummy[160]; char inText[24]; char *Dest; int base[2048]; /* array of base elevations */ char mapLabel[145]; int DEMlevel, elevationPattern, groundSystem, groundZone; double projectParams[15]; int planeUnitOfMeasure, elevUnitOfMeasure, polygonSizes; double groundCoords[4][2], elevBounds[2], localRotation; int accuracyCode; double spatialResolution[3]; int profileDimension[2]; int firstRow, lastRow; int wcount = 0; double verticalScale = 1.0; /* to stretch or shrink elevations */ double deltaY; char *junk; double eastMost; double westMost; double southMost; double northMost; int eastMostSample; int westMostSample; int southMostSample; int northMostSample; int rowCount, columnCount, r, c; int rowStr = 1; int rowEnd; int colStr = 1; int colEnd; int colInt = 1; int rowInt = 1; int outType = 0; int k,l ; double comp = 0.0; int mod ; int tempInt, lastProfile = 0; float noValue = 0.0f; int profileID[2], profileSize[2]; double planCoords[2], localElevation, elevExtremea[2]; File = fopen("C:\\Users\\Ilya\\Documents\\Visual Studio 2010\\Projects\\Recipes\\media\\geotiff\\karthaus_pa.dem", "r"); fscanf(File, "%144c%6d%6d%6d%6d", mapLabel, /* 1 */ &DEMlevel, /* 2 */ &elevationPattern, /* 3 */ &groundSystem, /* 4 */ &groundZone ); /* 5 */ for (k=0; k<15 ; k++) { fscanf(File,"%24c", inText); /* 6 */ Dest = strchr(inText,'D'); *Dest = 'E'; projectParams[k] = strtod(inText,&junk); } fscanf(File,"%6d%6d%6d", &planeUnitOfMeasure, /* 7 */ &elevUnitOfMeasure, /* 8 */ &polygonSizes); /* 9 */ for (k=0; k < 4 ; k++) for (l=0; l < 2 ; l++) { fscanf(File,"%24c", inText); /* 6 */ Dest = strchr(inText,'D'); *Dest = 'E'; groundCoords[k][l] = strtod(inText,&junk); } fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; elevBounds[0] = strtod(inText,&junk); /* 10 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; elevBounds[1] = strtod(inText,&junk); /* 11 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; localRotation = strtod(inText,&junk); /* 12 */ fscanf(File,"%1d%12le%12le%12le%6d%6d", &accuracyCode, /* 13 */ &spatialResolution[0], /* 14 */ &spatialResolution[1], /* 14 */ &spatialResolution[2], /* 14 */ &profileDimension[0], /* 15 */ &profileDimension[1]); /* 15 */ fscanf(File, "%160c", Dummy); if (spatialResolution[0] == 3.0) { comp = spatialResolution[0] - 1.0 ; deltaY = spatialResolution[1] / 3600. ; } else { comp = 0.; deltaY = spatialResolution[1] ; } eastMost = MAX(groundCoords[NE][0], groundCoords[SE][0]); westMost = MIN(groundCoords[NW][0], groundCoords[SW][0]); northMost = MAX(groundCoords[NE][1], groundCoords[NW][1]); southMost = MIN(groundCoords[SW][1], groundCoords[SE][1]); eastMostSample = ((int) (eastMost / spatialResolution[0])) * (int) spatialResolution[0]; westMostSample = ((int) ((westMost + comp) / spatialResolution[0])) * (int) spatialResolution[0] ; northMostSample = ((int) (northMost / spatialResolution[1])) * (int) spatialResolution[1] ; southMostSample = ((int) ((southMost + comp) / spatialResolution[1])) * (int) spatialResolution[1] ; columnCount = (eastMostSample - westMostSample) / (int) spatialResolution[0] + 1; rowCount = (northMostSample - southMostSample) / (int) spatialResolution[1] + 1; if (columnCount != profileDimension[1]) columnCount =MIN( profileDimension[1], columnCount); for (c = 1; c <= columnCount; c++) { fscanf(File, "%d%d%d%d", &profileID[0], /* 1 */ &profileID[1], /* 1 */ &profileSize[0], /* 2 */ &profileSize[1]); /* 2 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; planCoords[0] = strtod(inText,&junk); /* 3 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; planCoords[1] = strtod(inText,&junk); /* 3 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; localElevation = strtod(inText,&junk); /* 4 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; elevExtremea[0] = strtod(inText,&junk); /* 5 */ fscanf(File,"%24c", inText); Dest = strchr(inText,'D'); *Dest = 'E'; elevExtremea[1] = strtod(inText,&junk); /* 5 */ lastProfile = profileID[1]; firstRow = abs(((int) (planCoords[1] - southMostSample)) / (int) spatialResolution[1]); lastRow = firstRow + profileSize[0] - 1; for ( r = 0 ; r < firstRow ; r++ ) base[r] = 0; /* read in all the data for this column */ for (r = firstRow; r <= lastRow; r++ ) { fscanf(File, "%6d", &tempInt); base[r] = tempInt; } double tempFloat; for (r = firstRow; r <= lastRow; r += rowInt) { tempFloat = (float) base[r] * verticalScale; Terrain->position(planCoords[0], tempFloat, planCoords[1]); Ogre::Real u = 0.0; Ogre::Real v = 0.0; if (planCoords[0] > LowerLeftX && planCoords[0] < UpperRightX) { u = (planCoords[0] - LowerLeftX) / (UpperRightX - LowerLeftX); } if (planCoords[1] > LowerLeftY && planCoords[1] < UpperRightY) { v = (planCoords[1] - LowerLeftY) / (UpperRightY - LowerLeftY); } Terrain->textureCoord(u, v); planCoords[1] += deltaY; } } Terrain->end(); fclose(File); Ogre::SceneNode* node = SceneManager->getRootSceneNode()->createChildSceneNode(); node->setPosition(0, 0, 0); node->attachObject(Terrain); Ogre::AxisAlignedBox Box = Terrain->getBoundingBox(); Ogre::Vector3 Center = Box.getCenter(); Ogre::Vector3 Target = Center; Ogre::Vector3 Position = Center; Position[1] += 5000.0; m_Camera->setPosition(Position); m_Camera->lookAt(Target); }