好久沒上來寫文章了,最近陷入了低潮,提不起勁,可能還沒適應好新環境吧!
其實早在好幾年前,就想玩玩看Multi View Port這個東西,但覺得好像只有特殊畫面(比方三國無雙的分割畫面)及工具部份(像Max studio的Split four view ports)比較用得到,而且也可以用Render to texture再貼到一個Screen poly來取代,所以也就沒有多加研究。
最近剛好有過年這個空窗期,就來測試一下,結果發現,在Ogre下做這部份的處理,出乎意料的簡單。
基本上,只要設定好view port即可,以下是相關的Demo…
以下是相關部份的程式碼:
//Top view
Ogre::Camera* pCamera1 = pSceneManager->createCamera("Camera1");
pCamera1->setFOVy(Ogre::Degree(45.0f));
pCamera1->setNearClipDistance(0.05f);
pCamera1->setFarClipDistance(50000.0f);
Ogre::Viewport* pVeiwPort1 = pRenderTarget->addViewport(pCamera1, 1, 0.5f, 0.0f, 0.5f, 0.5f);
pVeiwPort1->setBackgroundColour(Ogre::ColourValue::Black);
pCamera1->setAspectRatio(Ogre::Real(pVeiwPort1->getActualWidth()) / Ogre::Real(pVeiwPort1->getActualHeight()));
pCamera1->setPosition(Ogre::Vector3(0.0, 100.0f, 0.0f));
pCamera1->pitch(Ogre::Degree(-90.0f));
//Left view
Ogre::Camera* pCamera2 = pSceneManager->createCamera("Camera2");
pCamera2->setFOVy(Ogre::Degree(45.0f));
pCamera2->setNearClipDistance(0.05f);
pCamera2->setFarClipDistance(50000.0f);
Ogre::Viewport* pVeiwPort2 = pRenderTarget->addViewport(pCamera2, 2, 0.0f, 0.5f, 0.5f, 0.5f);
pVeiwPort2->setBackgroundColour(Ogre::ColourValue::Red);
pCamera2->setAspectRatio(Ogre::Real(pVeiwPort2->getActualWidth()) / Ogre::Real(pVeiwPort2->getActualHeight()));
pCamera2->setPosition(Ogre::Vector3(-100.0, 30.0f, 0.0f));
pCamera2->yaw(Ogre::Degree(-90.0f));
…
沒有留言:
張貼留言