World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017

上次介绍了如何把真实地形数据DEM导入world machine制作地形,博客地址:https://blog.****.net/qq_29413829/article/details/80631891 。这次也是因为项目需要,讲一下World Machine大地形导出成分块地形,导入unity3D2017。因为之前也没看到world Machine怎么导出分块地形,花了两天找资料,琢磨,最后偶然搞出来了,专业人士勿喷,毕竟菜鸟啊。还是一样,写博客纪念一下。
目标图:高度图
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
放大:
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
贴图后:
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
一、前言
本次地形制作长度:2km*2km,分成16瓷块,单块长宽为500*500m,单块分辨率为1024*1024,总分辨率为4096*4096。在制作地形前,要做一些通用的设置,这些设置对后面瓷块导出很重要。
1.更改世界参数
(1)点击世界命令——世界参数
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
宽高设置为2km*2km
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
(2)瓷块选项
a.瓷块选项
“分配边缘到顶点”和“在部分图块上计算边缘瓷块”选项是为了瓷块图像边缘上多一个边缘像素能将图像边缘拉到地,形成立体块而不只是图像面(好吧其实懂不懂不重要,勾上就好)
“翻转y轴方向”是因为worldmachine是右手系,uinty3d是左手系,不翻转在uinty贴贴图时没法贴。参考:https://blog.****.net/fcauto2012/article/details/70767973
截图:
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
b.分辨率设置
瓷块分辨率:指的是每一小块的分辨率,我这里是1024*1024
每个边的瓷块数:因为我是16块,所以是4*4
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
(3)一般设置
这个没啥说的。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017

二、world machine地形制作(只想看分块导出的跳过此步骤)
本次地形制作为平缓的大陆地形+一条导入的沟槽。
1.沟槽的导入
(1)沟槽数据
沟槽数据(就是一条线的数据)是程序生成的svg矢量图格式数据,worldmachine中Layout Generator支持两种格式数据导入,svg和dxf.(导出支持svg和ai).svg数据可以由浏览器和文本文件打开,下图:
浏览器:
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
文本:xml格式的
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
说明:
1-viewbox:显示界面的坐标,比如这里对应worldmachine里一个2048*2048米的范围,坐标大小左下角为(0,0),右上角为(2048,2048).
2-:线的节点数,本线有27个节点数,所以xml中有27行数据。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
3-stroke-width:表示下图红色框,也就是衰退距离,这里是1米。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
其余的如opacity代表透明度等等,不在叙述。
(2)导入
过程:界面”Generator”——”Layout Generator”,双击打开,进入后看到文件按钮。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
点击“文件”——”Add layout from file”导入已有的svg格式,如下图
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
如果想要改变衰退距离,透明度什么的,可以按下图操作:1点击形状列表,2弹出布局图形层次,找到输入的Import1,3再点击形状属性刷的第二个“笔”按钮就可以改变了。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
2. 地形构建
(1)设置柏林噪声中比较平缓的大陆地形+自己导入的沟槽数据
(2)输出16块heightmap(高度图)图(.raw16)和16块bitmap贴图(.png)数据,贴图为黄色
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
三、world machine瓷块(分块)地形导出
做好地形后就要导出瓷块数据了,导出之前要设置导出到哪个文件夹下
heightmap设置导出文件路径
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
bitmap(贴图)设置文件导出路径
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
1. heightmap图导出+贴图导出
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
或者:
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
设置完成后,就可以看到16张高度图都导出了,r16像rar的可以打开格式(其实打不开),看起来像压缩包哈!。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
设置完成后,就可以看到16张贴图导出。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
2. 只有heightmap图导出
在做地形的时候的输出部分不要加上colorizer和Bitmap Output,然后输出方法和上面一样,如下图.
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
四、导入uinty3d
UNITY3D用的是2017版本,需要下一个地形插件:TerrainComposer v1.92,这个导入的过程我用的比较笨,网上有些用程序自动导入,而我是手动导入。
1.导入高度图
(1)打开unity,创建多个Terrain,参考http://www.element3ds.com/forum.php?mod=viewthread&tid=37834 中的第4步的(1)(2)小步。
设置尺寸。强调下:设置尺寸为x:500,z:500,uinty单位是world units,就是米。x与z与world machine中保持一致。高y随意,最好设大些,比如这里为3000。
第4步的(1)小步
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
(2)设置一个4X4的地形(第4步的(2)小步)
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
(3)高度图导入
这里用的是unity自带的Terrain系统,依次点击要导入的瓷块,点击Import Raw导入。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
注意:Import Heightmap对话框中
Depth:表示导入的文件是16位的,也就是r16
Width:表示r16文件中单个瓷块的分辨率
Height:表示r16文件中单个瓷块的分辨率
Flip Vertically :就是前面的左右手系问题,前面勾了这里不勾,反之,则勾。
terrain Size:unity中地形的长宽高,单位米
XZ长宽,因为我们的单个瓷块图是500m*500m,高设成3000.
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
注意:Resolution设置
Terrain Width:表示地形宽
Terrain Length:地形长
Terrain Height:地形高,就是上文Y值
注意这个Y值是你希望的地形高度中最大值和最小值之间的差值,它决定了你的地形的整体高度。
我的理解(不知道对不对):((h2-h1)+x)a=Y
h2地形最高点
h1地形最低点
x是个高度的偏移量(定值)
a是个缩放系数
现象:我调小Y值,整个地形趋于平缓且地形平面靠近0海拔点。给我的感觉是,当Y减小,h2-h1=Y/a-x的值在减小,导致地形趋缓。这个还没有搞懂。
Heightmap Resolution:高度图分辨率,这里和r16瓷块分辨率一致
其余的参考unity手册
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
依次导入,完成16幅地图加载。
2.贴图导入
首先加载贴图进unity3d,再依次给每个瓷块加载贴图,需要设置size为瓷块大小,16张加载后,贴图导完成。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017
还有一种方法:可以一次性对16张瓷块地形贴图
选择1splat textures——2“+”——3导入贴图——4选择 按下SHIFT+鼠标完成设置。
World Machine大地形导出成分块地形(tile瓷块导出,包括高度图+贴图)到unity3d2017

参考:
http://blog.sina.com.cn/s/blog_471132920101ngm0.html Unity3D教程宝典之Terrain Composer
http://www.element3ds.com/forum.php?mod=viewthread&tid=37834 Unity Asset - TerrainComposer v1.52地形教程(附带插件)
http://blog.sina.com.cn/s/blog_5f1d26aa0102x15t.html unity里做真实世界的某块地形
https://blog.****.net/fcauto2012/article/details/70767973 Unity5.6大规模地形—地形资源的创建(1)