• <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 清源游民 閱讀(2014) 評論(0)  編輯 收藏 引用 所屬分類: OGRE
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久一本毛久久久| 最新久久免费视频| 久久国产高清一区二区三区| 久久婷婷色综合一区二区| 久久婷婷五月综合国产尤物app | 国产一区二区三精品久久久无广告 | 热99RE久久精品这里都是精品免费 | 97久久精品无码一区二区| 91久久精品视频| 精品久久久中文字幕人妻| 精品久久久久久久| 色狠狠久久综合网| 久久国产一区二区| 天天爽天天狠久久久综合麻豆| 久久中文字幕一区二区| 亚洲精品乱码久久久久久| 久久99精品久久久久久水蜜桃| 久久亚洲精品中文字幕| 青青草原综合久久大伊人导航 | 久久国产精品视频| 成人妇女免费播放久久久 | 色综合久久88色综合天天| 伊人久久精品无码二区麻豆| 国产巨作麻豆欧美亚洲综合久久| 日日躁夜夜躁狠狠久久AV| 久久久久波多野结衣高潮| 久久综合色区| 久久国产香蕉视频| 久久免费小视频| 99久久99久久精品免费看蜜桃| 久久无码AV中文出轨人妻| 伊人色综合久久天天人守人婷| www亚洲欲色成人久久精品| 狠狠色丁香婷婷久久综合不卡| 色欲综合久久躁天天躁蜜桃| 久久久久久久综合狠狠综合| 色播久久人人爽人人爽人人片aV| 久久精品三级视频| 欧洲国产伦久久久久久久| 青青热久久国产久精品 | 伊人久久亚洲综合影院|