1.生成真实地形,需要用到地形高程图

这里提供两种获取高程图的方式:

1.1 准备一块DEM数据,格式为img或tiff,并准备好Global Mapper和Photoshop两款软件;

DEM下载地址:http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp

将全球分为24×72的大小格网。如下图所示:

然后在网页中选择要下载的区域,下载的格式有GeoTiff和ASCII两种格式,其中海洋部分没有高程数据,所以大部分是没有的。

1.2我是采用第二种方法,使用BIGEMAP下载的数据(需要购买)

选定区域范围, 选择保存路径,选择存储格式为tif,勾选下载级别。

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、如果能够下载到对应高程图的卫星图,将其保存为PNG格式,按地形大小贴到导入的这块地形上。

注意修改Layer的贴图大小,和地形大小保持一致

 

最后效果图如下:

基本的教程到这里就结束了,但是如果你是需要导入超大地形,可以继续往下看

超大地形的基本思路就是分块,这里以4X4 = 16块的地形举例,既然地形要分块了,高程图和卫星图肯定也要分块

超大地形的高精度卫星图是非常大的,PS并不能裁剪这么大的图片,这时候我们可以用Global Mapper或者ArcGis中的裁剪功能,这里以Global Mapper为例:

把需要裁剪的 tif 格式的卫星图导入Global Mapper,出现弹窗的话选择中间那个选项,然后点击OK

然后File ——>Export——>Export Raster/Image Format

弹出窗口选择PNG格式

然后Tiling ——>Specify Number——>选择x,y轴分块数量,点OK

卫星贴图到这里就处理完了

下面是高程图,高程图千万不能用PS来处理,PS切分之后只能选择导出为web格式,然后需要再转为Unity能够导入的Raw格式会导致地形非常尖锐。

所以我们同样使用Global Mapper来处理,将地形 tif 格式的图片导出为16份Raw格式的高程图

但是注意,这16份高程图除了要和卫星贴图一一对应上,还需要用PS对每一张高程图进行垂直翻转

(可以自己导入几张高程图到Unity里面,看看是否能够对应上,高程图越黑的地方,高程越低,同理,越白,高程越高)

分别将16张高程图翻转之后保存,然后就可以导入Unity了,教程结束

PS:如果使用Global Mapper切分的卫星图导入Unity后出现部分贴图明显黑于其他贴图,且有反光现象,可以使用其他切图软件,比如ArcGis(Global Mapper切出来的图片较小,而ArcGis切出来的较大,精度基本没差,所以最好用Global Mapper来切)。

ArcGis的分割操作给张流程图,不作过多解释了

 

 

参考资料:https://blog.csdn.net/lingbaoer1234/article/details/45242371

                   https://blog.csdn.net/qq_35040828/article/details/76668757

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐