zoukankan      html  css  js  c++  java
  • 真实大地形初探

    //更新2020.07.15:国外一个地形高度网站,terrain.party,提供了全球任意位置高度图下载,PNG格式的灰度图。拖入Unity更改图片属性:read/write checked。

    1下载卫星图

    1.1 下载

    框选一个矩形区域,弹出一个选择菜单栏

    image

    几个关键数据:

    Map下拉有卫星图和交通图,第一次选择区域时用卫星图。

    zoom表示缩放的精度级别,值越高,像素密度越大,瓦片区块越多。

    1.2 拼接

    下载好之后需要拼接

    image

    zoom要与下载设置的zoom一样!导出之后的ecw文件会有色差问题,这里先不管了。

    2裁切卫星图

    2.1 裁切导出

    下载好ecw格式的文件用mapper打开裁切导出。而worldMachine导入文件的格式支持png、bmp等,如下图

    image

    导出后会生成png、pgw与prj(带有坐标信息),这里还需要一个经纬度信息

    2.2 生成经纬度信息

    把导出好的png再次用mapper打开,生成经纬度信息。

    image

    只需要TXT元数据,导出会有两个文件:.jpg和.txt。jpg暂时不用,打开txt能看见经纬度信息。南和西开始代表小值,北和东代表大值。

    3下载DEM数据

    打开网址http://www.gscloud.cn/search,获取高程数据:GDEMV2 30M 分辨率数字高程数据。

    把txt里面的经纬度信息输入,下载。下载好的数据解压,导入mapper中,输出hfz格式选择边界框并继续输入经纬度信息,确定。

    把生成的hfz文件导入mapper,测量裁切后地形长宽值。

    4导入DEM到WorldMachine

    4.1 导入高程数据

    新建File Input设备,导入高程hfz数据。设置它的长宽,自然高度

    image

    4.2 导入贴图

    新建File Input设备,选中Interpret as RGB;点选Place into current view。

    5 对公路和河流的侵蚀与遮罩

    5.1 侵蚀的问题

    制作公路与河流略。用Erosion侵蚀设备对公路和河流边缘地形进行圆润打磨。

    对公路和河流的combiner高程输出作为侵蚀输入,这时出现问题了

    image

    黄线左右对比,被侵蚀的特别厉害,公路消失了,河流很浅了。

    5.2 对侵蚀使用遮罩

    对公路和河流layout的shapeMask合并相加,强度最大。

    image

    公路和河流的高低差合并,mask遮罩合并反转,侵蚀。

    6 设置各种材质

    6.1 沟壑材质效果

    image

    Erosion flow输出给Equalizer平衡器和Clamp压缩

    Combiner对选中的区域反转进行mask遮罩,被遮罩的部分不进行flow效果添加;对flow的颜色用color生成器增强。

    6.2 公路或河流材质,突出显示

    image

    三个端口,A、B端口是混合类型,C是将要控制的对象shape mask连接。然后选择方法。

    image

    这里端口A是整体颜色,端口B是给控制对象要添加颜色,端口C的输入是控制对像的特定输出。然后用上图的算法进行混合。就是把个体与整体的突出分离融合。

    然后是河流:

    image

    突出河流颜色,新增color生成器与公路combine合并,然后把河流的shape遮罩输入,只对河流部分增加颜色。

    7 导出

    7.1 导出高度图、位图

    导出高度图,需要连接最后一次height Filed output;image

    导出位图也就是rgb贴图需要连接最后一次bitmap output.image

    7.2 导出网格优化

    导出网格mesh也要连接最后一次heightFiled output,跟导出高度图的连接点相同。image

    image

    参数说明:从上至下从左至右

    Always output all tiles:一般勾选。如果要导出特定坐标的话需要手动选择下面列出的格子。

    Tiling Options:
    Merge to xxx:勾选,
    Share edge x:勾选.共享边缘顶点。
    Flip y-axis :翻转坐标Y轴朝向。
    Calculate edge :勾选,计算瓦片边缘。
    Tile Resolution:单个瓦片分辨率
    tiles per : 最终瓦片数量
    blending: 瓦片边缘过渡的混合强度
    Naming string:命名格式format

    7.3 导出splatmap

    地形贴图分层显示。

    image

    red是flow shape;每个select slope连接heightFiled,然后调整高度,分别连接green、blue。最后输出png格式的bitmap贴图。

    7.4 导出有腐蚀效果的splatmap

    新版本叫image  ,老版本叫image

    8 导入unity

    image -> image ->image

    depth根据world machine导出时的格式精度;
    宽高是整个分辨率;
    byte order字节大小端;
    flip表示左右手坐标系,wm勾了unity就不勾。保持统一就行
    Terrain size:unity中单位为米,根据wm长宽等比例缩,Y值高度也要等比例缩放。

    设置splat分层贴图:

    核心就是读取和设置TerrainData的alphamap数据

    image

    image

    然后读取创建好的splat贴图数据。

    image

    注意splat贴图的rgb之和不能大于1,如果手动制作的贴图不能保证,在代码里加几行

    image

    这样在每层边缘过渡的时候不会有硬边了。

    image -> image

  • 相关阅读:
    PythonSource Maya
    Max中ActiveX出错的解决方式
    技术美术基础知识之OLE
    MaxSDK中版本定义及对不同版本的兼容
    MaxSDK中卸载插件的方法
    MaxScript生成Gif
    将多个Shape附加给一个transform的MayaPython
    Max做履带,简单方法一则
    使用Python开发Maya导出插件的一些辅助
    MaxScript使用Flash做界面
  • 原文地址:https://www.cnblogs.com/baolong-chen/p/13296835.html
Copyright © 2011-2022 走看看