本方法是在http://blog.csdn.net/lingbaoer1234/article/details/45242371基础上进行操作,具体如下:
Unity3D手册中介绍了两种地形制作方法:
1、在SceneView中使用height tools直接绘制;
2、使用外部工具制作的heightmaps;
生成真实地形,需要用到heightmaps方法,具体操作如下:
1、准备一块DEM数据,格式为img或tiff,并准备好Global Mapper和Photoshop两款软件;
DEM下载地址:http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp
将全球分为24×72的大小格网。如下图所示:
然后在网页中选择要下载的区域,下载的格式有GeoTiff和ASCII两种格式,其中海洋部分没有高程数据,所以大部分是没有的。
2、在Global Mapper打开DEM数据文件,操作为中“File”->“Open Data File”,选择DEM数据文件,比如test.tiff,然后弹出对话框选“全是”;
3、打开地形文件后,在工具栏下拉列表中选择“Gradient Shader”,在此列表框后面有一个“Enable/Disable Hill Shader”的按钮,我们需要取消渲染;
4、此时显示的是此dem数据的灰度图,如下:
5、将图片到处为JPG,操作过程如下,在弹出的选择对话框中选择JPG:
6、在此对话框内设置jpg的属性;采样间距可以自己填写,值越小,图片经度越大,若不知道怎么选择可以先按默认值,后期看图片分辨率,根据需要在重设此参数,“Image Quality”也可自行选择,而“光栅输出的带设置”中必须选择“灰度(1 8-字节带)”,下面的“World File”和“PRJ File”可以不勾选,此文件对导入地形无关;然后选择保存文件名即可;
7、此时生成了一个“test.jpg”;我们用photoshop进行打开编辑;打开图片后选择“图像”->“画布大小”;单位选择像素,长宽值填写值需要是2的指数次幂比如128、256、1024或2048(我用的Unity版本中导入的图片大小貌视不能大于2048,否则会出错),这时我将宽度和高度均设置为128(这里需要将长宽设置成一样值),点击确定;
注意:这里新建的画布大小最好比原来的要小,否则大的部分会被填充;
8、在PS中导出raw文件;选择“文件”->"另存为",格式中选择raw,“保存”生成一个test.raw的文件;
9、打开Unity,5.X版本的操作为创建地形:
10、在创建的地形中导入刚生成的raw文件;
然后选择前面生成的RAW文件;
11、在弹出对话框中进行设置,Depth选择8bit,Width和 Height选择你RAW像素大小,比如我的是128,ByteOrder根据自己的情况选择Mac或Windows,地形x,,是地形的大小,y是高度,表示地形最高处的高度,这些后面可以进行调整,最好成比例,直接点击“Import”即可以导入该地形;
12、如果原来地形有地貌,可以在Globalmap中使用地貌导出一张jpg文件作为Unity中可导入的纹理,按地形大小贴到导入的这块地形上。
这里的x,y要和之前地形的x,y大小保持一致才可以完整贴到地形上。
最后效果图如下:
(PS:如果导入图片后发现图片和地形位置不对应可以在ps里对图片进行翻转和旋转等操作,进行调整):