您的位置:首页 > 移动开发 > Unity3D

unity3d基础开发地形的基础知识

2014-06-11 15:50 309 查看
unity3d基础开发地形的基础知识

(0)基本术语

Splat:地形所使用的贴图,即Terrain Texture。术语叫Splat或者 Splat map。

Splat Alhpa Map:地形贴图布局图,unity3d论坛用图的rgba各个通道来表示贴图在地形上的使用,project界面里展开地形即可看见。术语叫Splat Alpha Map,或者Alpha Map.

(1)地形编辑器的不足

地形Terrain是3D游戏里必不可少的一部分。Unity提供的地形编辑器也十分好用,但是依然有少许不足和缺陷。

Unity地形编辑器的不足:

1)地形只能是成片的抬高或者降低。如果想定制某特定斜率,或者特定曲线的地形就没法实现了。

2)地形不能实时改变。

不过Unity提供了强大的地形脚本接口,可以弥补上述不足。

(2)地形结构

首先要清楚, Terrain地形的包括Heightmap高度图,贴图信息,树信息等几乎所有数据都是储存TerrainData里,而TerrainData可以保存成地形文件,地形文件后缀为.asset。任意工程导入地形文件后,在project窗口下都会显示为地形文件。

TerrainData的基本属性:

1.terrainData.heightmapResolution int,高度图的长宽分辨率,一般是2的幂加1,如513

2.terrainData.baseMapResolution int,Resolution of the base map used for rendering far patches on the terrain

如513

3.terrainData.size: Vector3,地形世界里的尺寸,world unit. 如new Vector3(50, 50, 50);

4.terrainData.alphamapResolution alphamap的分辨率,如512;

地形贴图信息储存在Terrain之下的SplatAlpha图里。在project窗口展开一个地形,会看到之下的贴图信息,名称格式为SplatAlpha xx.

(3)地形与SplatAlpha

在SplatAlpha图中

红=第1张贴图

绿=第2张贴图

蓝=第3张贴图

Alpha=第4张贴图

第5张贴图开始,会创建新的SplatAlpha图,然后继续 红绿蓝黑 如此循环。

alphamap:指的是纹理中某通道的颜色, refer to a grayscale image residing in a single channel of a texture

Splat:一张纹理贴图和其对应的alphamap统称为一个splat。 主要是分块,divide in chunks.所以可以使用LOD等技术

terrainData.splatPrototypes 就是地形包含的贴图信息

splatPrototypes 为SplatPrototype[],

SplatPrototype为单张贴图信息

SplatPrototype的属性有

SplatPrototype.texture Texture2D,地形贴图

SplatPrototype.tileOffset Vector2,图块偏移

SplatPrototype.tileSize Vector2,图块尺寸(World Unit)

terrainData.SetAlphamaps(int x,int y,float[,,]) ,其中x,y为起点

float[i,j,k]为通道信息,i,j为对应的点,k为第几张图,float值储存的是该点该图的灰度值。

terrainData.splatPrototypes的长度 = 贴图数量 = splatArray (float[,,])的第三维的长度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: