Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41849
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 344
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-19 11:34
文章分类
文章存档

2014年(22)

我的朋友

分类: Android平台

2014-06-11 15:54:28

unity3d基础开发地形的基础知识
(0)基本术语
Splat:地形所使用的贴图,即Terrain Texture。术语叫Splat或者 Splat map。
Splat Alhpa Map:地形贴图布局图,用图的rgba各个通道来表示贴图在地形上的使用,project界面里展开地形即可看见。术语叫Splat Alpha Map,或者Alpha Map.

(1)地形编辑器的不足
地形Terrain是3D游戏里必不可少的一部分。引擎提供的地形编辑器也十分好用,但是依然有少许不足和缺陷。
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[,,])的第三维的长度
阅读(1129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~