2012年1月29日 星期日

關於Ogre multi view port的測試…

好久沒上來寫文章了,最近陷入了低潮,提不起勁,可能還沒適應好新環境吧!

其實早在好幾年前,就想玩玩看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));

沒有留言:

張貼留言