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

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

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

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

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

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

            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 清源游民 閱讀(2032) 評(píng)論(0)  編輯 收藏 引用 所屬分類: OGRE
            <2006年11月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久久久精品成人免费图片| 国产精品99久久久久久董美香| 伊人久久无码精品中文字幕| 亚洲国产精品无码久久一区二区 | 性做久久久久久久| 国产精品美女久久久久久2018| 99久久成人国产精品免费| 久久人人爽人人爽人人片AV东京热| 国内精品综合久久久40p| 亚洲国产成人久久综合一| 国产免费久久精品99re丫y| 国产成年无码久久久久毛片| 久久笫一福利免费导航 | 久久亚洲AV永久无码精品| 久久婷婷五月综合色高清| 亚洲成av人片不卡无码久久 | 少妇高潮惨叫久久久久久| 久久人人爽人人爽AV片| 国产激情久久久久影院老熟女| 亚洲精品无码久久千人斩| 无码国内精品久久人妻麻豆按摩| 国产一区二区三区久久精品| 中文字幕无码免费久久| 久久亚洲中文字幕精品一区| 久久精品一区二区影院 | 99久久精品免费看国产一区二区三区| 国产成人精品久久亚洲| 久久国产免费观看精品| 久久精品国产91久久综合麻豆自制| 久久人人爽人人爽人人片AV东京热 | 亚洲AV日韩精品久久久久| 国内高清久久久久久| 中文字幕无码免费久久| 国产A三级久久精品| 欧美丰满熟妇BBB久久久| 人妻少妇久久中文字幕 | 武侠古典久久婷婷狼人伊人| 国产精品久久久天天影视香蕉 | 久久影视国产亚洲| 国产精品久久久久久久人人看 | 日本精品久久久久影院日本|