• <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
            <2009年8月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            午夜视频久久久久一区| 久久久久一区二区三区| 亚洲国产一成久久精品国产成人综合| 国产精品狼人久久久久影院| 欧美激情精品久久久久久久| 国产偷久久久精品专区| 国产精品久久久久久| 色天使久久综合网天天| 久久精品国产网红主播| 久久久久久亚洲精品不卡| 乱亲女H秽乱长久久久| 久久国产热这里只有精品| 日韩人妻无码精品久久免费一| 国产精品美女久久久久av爽 | 久久精品国产福利国产秒| 欧美麻豆久久久久久中文| 精品国产VA久久久久久久冰 | 熟妇人妻久久中文字幕| 国产精品综合久久第一页| 久久国产亚洲精品无码| 成人综合久久精品色婷婷| 久久精品免费大片国产大片| 久久99精品国产一区二区三区| 久久久一本精品99久久精品88| 中文字幕成人精品久久不卡| 人妻少妇久久中文字幕 | 综合久久国产九一剧情麻豆| 久久人人爽人爽人人爽av| 热久久这里只有精品| 秋霞久久国产精品电影院| 狠狠色婷婷久久一区二区三区| 精品久久亚洲中文无码| 欧美日韩精品久久久久| 亚洲欧美一级久久精品| 模特私拍国产精品久久| 久久婷婷人人澡人人爽人人爱| 亚洲国产精品一区二区三区久久| 久久人人爽人人爽人人片AV麻豆| 精品久久久久一区二区三区| 国产午夜精品久久久久九九电影| 国产精品成人无码久久久久久|