2013年12月13日 星期五

整合Ogre1.9心得(PC及IOS)…

Ogre1.9讓我心動的項目有:
  1. Remove eclipse based android port(意思是以後以純Native的方式開發andorid了,雖然自己之前因為等不及,在1.8就做過了這方面的整合,不過這是官方的,意義更重大…)。
  2. CMake based build support for android,這個很精彩,之後要好好試試。
  3. Extract the overlays from OgreMain and transform it into a own overlay component,這是Ogre開始走向Componet化的一步,為了達到行動平台需要精簡化的函式庫架構的目標,這非常重要。
  4. New Volume Rendering componet with LOD,這是讓我最心動的項目,簡單來就是有體積的Terrain,可以來做洞窟及UV不會拉扯的高山,相信這個東西有機會和我的場景編輯器再創新的視覺高峰,不過碰撞資料處理就變得更麻煩了。
  5. Many Terrain improvements,如果New Volume Rendering componet不堪用的話,這得花時間好好研究一下。
整合相關問題整理:
  1. 有使用到OverlaySystem的部份,要自己建立這個系統,因為1.9他被Componet化了,可以在Initialize Render時加入類似這樣的Code:
    #if OGRE_VERSION >= OGRE_DEFINE_VERSION(1,9,0)
      m_pOverlaySystem = OGRE_NEW Ogre::OverlaySystem;
        m_pOgreSceneManager->addRenderQueueListener(m_pOverlaySystem);
          #endif
          1. ResourceManager GetByName函式改成getResourceByName,可以加入類似的Code來處理:
            #if OGRE_VERSION >= OGRE_DEFINE_VERSION(1,9,0)
            Ogre::ResourcePtr spResource = pResourceManager->getResourceByName(srtResourceName);
            #else
            Ogre::ResourcePtr spResource = pResourceManager->getByName(srtResourceName);
            #endif
          2. 由於OS X10.9+Xcode5.0.2使用CMake IDE,沒產生沒有OGRE_BUILD_PLATFORM_APPLE_IOS的選題可以選,所以要使用Command Line來產生專案,語法是如下:(其中...指的是你的OgreSource路徑,而下這個命令在要在Build Folder下才有用,至於cmake指令找不到,又是另一則故事了…)
            cmake -D OGRE_BUILD_PLATFORM_APPLE_IOS=1 OGRE_CONFIG_ENABLE_LIBCPP_SUPPORT=1 -G Xcode ...
          3. 在OS X10.9+Xcode5.0.2下編譯時,會發生std::bad_alloc::bad_alloc()…等link libc++的連結錯誤,發生原因是因為Ogre官方附的IOSDependencie是用libc++編譯,而CMake預設所產生出來的專案裡的Build Settings裡的Apple LLVM 5.0 - Language - C++選項是指向Compiler Default,所以無法正常匹配,解決方法為自行調整成:
            - "Build Settings > Apple LLVM 5.0 - Language - C++> C++ Language Dialect" to "C++11" 
            - "Build Settings > Apple LLVM 5.0 - Language - C++> C++ Standard Library" to "libc++" 或自己建立IOSDependencies
          在此附上New Volume Rendering componet Example的影片讓大家欣賞一下,接下來我要去創造她跟我的場景編輯器之間的故事了…(這個Demo的編輯方式所做出來的場景會讓人覺得很害羞…)



          Dream continues in...

          2 則留言:

          1. Hi 板主
            可以分享一下你怎麼做時間管理嗎?

            我蠻好奇你在台灣遊戲公司上班(台灣遊戲公司幾乎都很晚下班,假日還要加班),居然又有時間弄這些。

            謝謝。

            回覆刪除
            回覆
            1. 我目前的工作是負責3D成像技術底層實作及支援,另外還有編輯器開發的部份,目前沒有直接參與遊戲專案的開發,所以忙錄狀況比較固定,一直處於中度忙錄狀態,直接參與遊戲專案的同事們比較不固定,有時很忙,有時比較鬆。由工作內容跟這些技術正相關,所以比較容易分享這些資訊。
              至於時間管理的部份,我傾向先把該做的事情做完,不要等到Deadline再來加班趕工作,這樣可以有比較多的彈性時間可以運用,大概是這樣

              刪除