plsm2使用手记(3)-plsm2基本使用方法

 来源:http://sxoo0305.blog.163.com/blog/static/10132887200911555816746/

Plsm2使用方法

 注意:在看本文前,请先确认你已经看过前边的plsm2环境搭建,并且搭建成功。

 下面以要加载一副名为gcanyon_height_4k2k(4097*2049)尺寸的高程图为例子。

  

1.      填写地图配置文件以及分割文件。

注意:下边的操作均在Samples\Media\paginglandscape2\terrains目录下操作。

打开gcanyon_height_4k2k.gen.cfg文件,如下做出配置:

 

GroupName=PLSM2                         //指定地图所在的资源组

LandScapeFileName=gcanyon_height_4k2k   //指定要分割的文件名

TextureStretchFactor=1  //指定纹理缩放因子,当纹理大小和地图不一样时使用

OutDirectory=LandScapeFileName //指定输出文件夹得名称

PageSize=513                  //指定每个page的大小

TileSize=65                   //指定每个tile的大小

ColorMapName=gcanyon_texture_4k2k.png //指定对应的纹理贴图

ColorMapSplit=yes              //地图是否分割

HeightMap=yes                   //指定地图的格式

MiniMap=yes           //指定是否生成最小图以及他的尺寸

MiniMapWidth=256

MiniMapHeight=256

 

    完成地图的分割文件的配置,下边将该配置文件名加入maptool.cfg文件中给mapsplitter指定要分割的地图配置文件。如下:

  

DefaultMap=test       //指定默认的分割地图

Test=gcanyon_height_4k2k.gen.cfg  //这样做个字符替换,可以列出很多地图

…… 其他的地图

# resource group name //指定资源组

GroupName=PLSM2

#do you want to run it on all maps listed here

BatchMode=no    //指定除了默认的地图外,其他的地图是否也分割

 

好了,下边配置TerrainGenerator.cfg文件,该文件告诉mapspliter将生成的地图存放在哪个文件夹里边,高度图以及材质贴图在哪里,如下设置:

 

HeightMapFolder=datasrcs

ColorMapFolder=datasrcs

OutputFolder=terrains

 

OK,完成以后就可以运行bin目录的下的mapspliter.exe。生成分割图,完成后可以在terrain中看到对应的文件夹。里边存放的时对应的分割后的地图。

 

 

  下面就是将分割后的地图载入程序了。

  首先保证ogre的正常的程序结构可以运行。然后做如下修改:打开工程属性,在连接器选项里边的输入项加入Plugin_PagingLandScapeSceneManager2_d.lib

  并且拷贝Plugin_PagingLandScapeSceneManager2_d.dllbin/debug运行目录下。

 

 完成后候就需要配置gcanyon_height_4k2k.cfg 文件,如下:

 

  GroupName=PLSM2                           //资源组

LandScapeFileName=gcanyon_height_4k2k         //指定地图文件

FileSystem=LandScapeFileName

 

Width=8                         //地图被分割后的横向

Height=4                        //纵向的块数。

可以根据地图的尺寸和设定的page的大小计算得到

 

ScaleX=90000            //地图的尺寸在世界中表示的坐标的范围。计算公

ScaleY=30000                式详细参见后文的辅助说明

ScaleZ=90000

 

TextureStretchFactor=1      //指定纹理缩放因子  

TextureFormatSupported0=ImagePaging

TextureFormat=ImagePaging          //指定纹理贴图以及各式   

ImageFilename=gcanyon_texture_4k2k 

 

# where to put camera on load. //指定摄像机的在世界中的坐标

BaseCameraViewpoint.x=-4702.0f

BaseCameraViewpoint.y=250245.0f

BaseCameraViewpoint.z=-19140.0f

 

Baselookat.x=0.0f       //指定朝向

Baselookat.y=0.0f

Baselookat.z=0.0f

 

以上是基本的必须的参数,其他的参数请参考

plsm2的目录结以及配置文件说明.doc文档。

 

 

 

 

 配置完以后,下边配置pageinglandscapescnemanager.cfg文件,该文件时插件要读取的文件,文件名可以不唯一,根据代码修改,做如下配置:

 

DefaultMap=grand_canyon //指定要家在地地形图#

 

grand_canyon=gcanyon_height_4k2k

# resource group name where to find map definition //指定资源组

GroupName=PLSM2

# Try forbidden textureformat combinations

TextureFormatDebug=no //是否开启纹理混合

 

同前边的一样,详细的配置参数参看plsm2的目录结以及配置文件说明.docx

 

Ok,配置部分完成。下边修改代码:

 

  1.在程序头文件中加入对应的头文件PagingLandScapeSceneManager.h.

  2.mSceneMgr = mRoot->createSceneManager(ST_EXTERIOR_CLOSE)中的ST_EXTERIOR改为ST_EXTERIOR_REAL_FAR,表示加载plsm场景管理器。

(注意:如果这里在代码运行时提示场景管理器类型错误的话,则要手动加载plsm插件)

3.mSceneMgr->setWorldGeometry("terrain.cfg");中的参数改为

Ogre::string(“paginglandscape2.cfg”).加载地形;

之后编译运行程序,如果以上顺利,就可以进入程序了。当然会有很多问题。但是基本的流程就是这样。根据错误多到论坛看看。多google下!

 

 下面是配置文件中的一些参数的换算关系

 

.地形图和世界坐标系之间的关系

大地形高程图大小:  16385×16385

 

块大小(PageSize):  513

 

Width, Height:  32

 

ScaleX, ScaleZ:  204800  (204800=(513-1)×400)

 

那么,PLSM2三维世界坐标系的大小是(SizeX, SizeZ) = 32×512×400 = (6553600, 6553600)

 

那么,PLSM2三维世界坐标系的左上角的坐标是(MinX, MinZ) = -6553600/2 = (-3276800, -3276800)

 

.地形图和实际场景尺寸之间的关系

 

16385*16385高程图表示的实际范围的换算方法:

 

x = (16385 - 1)*4 = 65536

 

那么x就是65536m*65536m的地图就是65km*65km的地图。

你可能感兴趣的:(ogre,360,google,string,文档)