terrain.cfg参数详解

terrain.cfg文件包含了许多生成地面的选项,和以往一样,我只会讲一些基础的东西,更详细的内容可以在/*这里*/找到。需要注意的是,地面场景管理器设计的时候包含了分页的功能,只不过还没有被实现。不过OGRE有一个插件目前可以实现这个功能:Paging Scene Manager。

地面场景管理器使用高度图(Heightmap)来生成地面。你可以通过更改Heightmap.image的参数来改变高度图。你可以通过更改WorldTexture来更改地面的帖图。你还可以通过更改DetailTexture来使地面看得更逼真。你可以在/Media/materials/textures里找到terrain.cfg默认的几个图片。

在场景中地形的形状和染色从一张高度图,一张地形纹理和一张细节贴图中被计算出来。高度图是一张灰度图,每个象素表现一个高度值,0表示地平面,255表示地形最高点。

地形上面覆盖的的那层纹理被拉伸。这些地形纹理具有代表性的是斑驳的褐色,绿色,白色或者灰色适合于地表,草,雪或岩石地形。地形纹理通常比要覆盖地形小的多,所以近看时通常很模糊。为了解决这个问题,使用了一张细节纹理,当近看时混合地形纹理。细节纹理没有被拉伸,消除了近看模糊问题。

地形被分成一个地形小块表格。地形小块可能在不同的细节层次被场景管理器显示出来,依赖于小块的布局和离观察者的距离。整个地形被投射到一个世界坐标空间中,在里面地形的尺寸。

地形场景管理器通过terrain.cfg脚本被设置。

1.WorldTexture:指定地形纹理的名称。

2.DetailTexture:指定细节纹理的名称。

3.DetailTile:这个指定细节纹理在每个地形小块中重复次数,也就是说,如果这个值是n,细节纹理将在每个地形小块的n*n格中被显示。如果这个值设置过低,地形在近看时会模糊,反之则会在放眼观察时看起来有反复模式(露馅了,^_^) 。

4.PageSource:指定高度图数据的来源,默认为Heightmap.

5.Heightmap.image:指定高度图的名称。尺寸必须是方形,而且要符合2^n+1, 高度图越大,地形细节就越高,但是程序消耗的的资源也越多(包括程序启动时间)。

6.PageSize:地形将会有PageSize*PageSize那么大。如上所述,必须要符合2^n+1(如651292575131025)。

7.TileSize:地形小块有TileSize*TileSize大小。这个数必须小于PageSize这个数必须要符合2^n+1须要符合2^n+1。设的过小会严重影响性能,太大的话又会在场景的某些部分导致不必要的高细节。

8.MaxPixelError:指定当决定哪个细节层次被使用时的最大允许误差。设置过高会导致地形撕裂,过低则会影响性能。

9.PageWorldX,PageWorldZ:设定地形在世界坐标系中的范围,地形越大,细节越低,地形使用的顶点数基于高度图,不是世界大小,你可以缩放地形到你想要的任意大小。

10.MaxHeight:在世界坐标系中地形的最大高度。高度图中的0..255缩放到世界坐标系中的0..MaxHeight

11.MaxMipMapLevel:指定渲染地形使用的细节层次的数目。地形的远处和平坦处会以低细节渲染。

Advanced Configuration Parameters

有些高度图保存为raw格式,下列参数描述raw格式。

12.Heightmap.raw.size:指定高度图的尺寸,要求同上。

13.Heightmap.raw.bpp:指定每象素字节数,1=8 bits, 2=16 bits

14.Heightmap.flip:如果设置为true,则翻转高度图。

高度图处理说明

高度图必须是灰度图,如果不是,可以使用photoshop处理,选择菜单【图像】->模式->灰度,然后存为png格式即可。

坐标系问题

Terrain Scene Manager把纹理图的左上角作为世界原点(000),以从左到右为x正方向,从上到下为z正方向,从屏幕里到屏幕外为y正方向,符合右手坐标系。

你可能感兴趣的:(设计模式,脚本)