• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Ogre中的地形

            使用terrain.cfg
            WorldTexture=terrain_texture.jpg? //地形紋理
            DetailTexture=terrain_detail.jpg? //細節紋理
            DetailTile=3????????????????????? //細節紋理在一個地形小塊中的平鋪數
            PageSource=Heightmap????????????? //高度圖數據源
            Heightmap.image=terrain.png?????? //高度圖名稱,符合2^n+1
            PageSize=513????????????????????? //高度圖大小
            TileSize=65?????????????????????? //地形小塊大小
            MaxPixelError=3?????????????????? //決定使用層次細節時充許誤差
            PageWorldX=1500?????????????????? //地形在世界中的范圍x方向
            PageWorldZ=1500?????????????????? //z方向
            MaxHeight=100???????????????????? //世界中地形最大映射高度
            MaxMipMapLevel=5????????????????? //層次細節上限
            #VertexNormals=yes??????????????? //在緩沖中計算頂點法線,計算機光照或GPU程序用到時打開
            #VertexColors=yes         //在緩沖中設置頂點顏色,假如有GPU程序需要時打開
            #UseTriStrips=yes???????????????? //對于現在的硬件,建議關掉
            VertexProgramMorph=yes   ????? //使用頂點程序進行LOD融合處理
            LODMorphStart=0.2???????????????? //LOD融合開始點:高,低LOD之間距離之比

            下列參數用于提供自己的著色程序時使用,這會提供自己定義的material,那么先前定義的
            WorldTexture 與 DetailTexture的設置不再用到,多余的了。

            MorphLODFactorParamName=morphFactor 
            //假設VertexProgramMorph被設為yes,定制的material中包括一個高級頂點程序。它指定了一個頂點
            //程序的參數名,這個參數用于融合LOD,參數值從0-1,0表示不調整,1表示完全調整到下一級LOD

            MorphLODFactorParamIndex???????? //用于materail中包含低級頂點程序的情況,意義同上
            CustomMaterialName?????????????? //指定的materail名字

            上述配置文件定義了基于高度圖的地形。這些參數定義可概括為兩類:Ogre使用第一類從高度圖產生地形
            mesh與材質。第二類是定制材質與GPU頂點程序,這可以代替ogre自動產生的著色程序。
            另外的說明:
            TerrainScenceManager會把高度圖分為向個pages,每個page由幾個tiles組成.而它們也不過是個方便的名字,
            它們都定義了在產生的mesh中一組構成正方形的頂點集。
            WorldTexture定義的紋理不必與目標地形一樣大。
            PageWorldX,PageWorldZ可以縮放世界中的地形。
            MaxHeight 在Y方向縮放地形。
            DetailTexture 只使用一個紋理,如使用多層紋理,應該使用自定義materail。

            從程序加載地形
            setWorldGeometry()有重載形式,一種用于加載配置文件,另一種我們可在程序中使用,以
            達到手工加載的功能。這里,SceneData被 typedef 為std:map,它存儲了如我們在terrain.cfg
            中看到那些值對。假設我們已經從某個二進制文件讀入我們想要的內容到SceneData中。我們要做
            的就是把讀入的內容轉換成setWorldGeometry()需要的類型。先看一下函數原型:
            Ogre::SceneManager::setWorldGeometry (? DataStreamPtr &? stream,?
            ? const String &? typeName = StringUtil::BLANK
            ?)?
            DataStreamPtr是一個智能指針,因此從局部變量中返回是安全的,程序相當直觀,不再多說了。

            Ogre::DataStreamPtr Process_Loader::getSceneDataStream(SceneData &data) {
            // create what looks like a config file for the edification of Ogre
            std::string mem;
            SceneData::iterator it;
            for (it=data.begin(); it!=data.end(); it++) {
            mem += it->first;
            mem += "=";
            mem += it->second;
            mem += "\n";
            }
            void *pMem = (void *)new unsigned char[mem.length()+1];
            memset(pMem, 0, mem.length()+1);
            memcpy(pMem, mem.c_str(), mem.length() + 1);
            // stuff this into a MemoryDataStream
            Ogre::DataStreamPtr pStr(new Ogre::MemoryDataStream(pMem, mem.length() + 1));
            return pStr;
            }
            // and then elsewhere in the world loader:
            Ogre::DataStreamPtr pStr = getSceneDataStream(terrainDef);
            m_sceneMgr->setWorldGeometry(pStr);

            posted on 2007-03-09 17:25 清源游民 閱讀(2022) 評論(0)  編輯 收藏 引用 所屬分類: OGRE
            <2007年3月>
            25262728123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久99精品久久久久久久不卡| 日韩人妻无码一区二区三区久久99| 香蕉久久久久久狠狠色| 久久久久免费视频| 亚洲国产精品嫩草影院久久 | 国内精品久久久久久久久| 国产精品成人99久久久久 | 91精品国产高清久久久久久91 | 久久精品国产99国产精偷 | 好久久免费视频高清| 国产精品午夜久久| 久久99这里只有精品国产| 精品国产乱码久久久久软件| 久久久一本精品99久久精品66 | 久久国产一片免费观看| 无码人妻久久一区二区三区蜜桃 | 亚洲欧洲日产国码无码久久99| 国产成人精品久久免费动漫| 青青青青久久精品国产h久久精品五福影院1421 | 久久国产精品视频| 久久久国产精华液| 中文字幕一区二区三区久久网站 | 久久亚洲私人国产精品| 久久婷婷五月综合成人D啪 | 久久综合久久综合亚洲| 国产高潮国产高潮久久久91 | 91久久精品国产成人久久| 亚洲国产精品无码久久| 久久伊人精品青青草原日本| 精品久久久久香蕉网| 久久久一本精品99久久精品88| 国产午夜精品久久久久九九| 久久久久AV综合网成人| 少妇人妻综合久久中文字幕| 日本久久久精品中文字幕| 久久综合狠狠综合久久| 国产69精品久久久久APP下载| 99久久久久| 久久精品无码一区二区app| 91精品久久久久久无码| 91精品国产高清久久久久久国产嫩草 |