我很久很久之前有一个想法,就是把名山大川的地形做成三维模型,然后用3D打印机给打印出来,拿来卖钱。当然这个想法没有实施,一来相对于平面来说,其实名山的地形高差不够,比如庐山范围东西南北长度都在20公里以上,但是庐山最高峰才不到1500米,那么出来的模型长款得是高度的20倍,显然是很不合适的。二来模型出来也很丑,除了地形就是光秃秃的,要在地形级别尺度的模型上去打印树木,那就太看得起现在的3D打印机了,就连想普通的地形图一样分高程渐变着色,一般的3D打印机都做不到。虽然打印出来比较难,不过不妨碍我研究一下怎么制作出来模型。下面是制作步骤。

  1. 下载DEM,DEM数据有很多免费公开的,可以去地理空间数据云或者NASA的EarthData上去下载,我下载的GDEMV3,V3看起来就比V2和V1要厉害一点的样子。如果是地理空间可以使用高级检索选择范围,EarthData可以自己上传范围检索。

  2. 下载之后用ArcGIS的Data Management>Raster>Raster Dataset>Mosaic To New Raster工具把多幅数据合并成一幅数据。这里如果使用ArcMap,先把数据加进来再合并可能会很迷惑,会发现合并之后的数据的最大值最小值跟加在地图上的几份数据不一致。这是因为原数据并没有进行统计,ArcMap加的时候应该是为了加载速度,没有扫描数据的每个像素值,只做了采样就渲染了,所以他渲染图例显示的最大值最小值并不是数据真实的最大值最小值。可以在ArcCatalog的数据属性里把原数据统计一下,就不会有这个问题了。

  3. DEM裁切,使用ArcGIS的Spatial Analyst>EXtract>Extract by Mask工具使用相应的范围面裁切DEM得到一个范围的DEM。

  4. DEM拉升。~~blender可读取的通常是16位无符号的整型数据,也就是说如果我们的dem包含小数或者负数,需要进行转换处理;当前dem的像素范围是从50到2236,在blender中是以像素值为高度来进行拉伸的,像素范围小会导致渲染出来的3D图高度跳跃,不够平滑,将像素范围拉伸到0-65535,既能满足数据类型的要求,也保障后续的三维立体平滑效果。~~使用ArcGIS的Spatial Analyst>Map Algebra>Raster Calculator工具进行计算,计算公式为如下,之所以在65535后面减20000,是为了把整体抬高,之后处理时把NoData设置成0,这样最低点和没数据的部分就不会融在一起了。

("DEM"-MIN) * (65535-20000) / (MAX-MIN) + 20000

上面一步来自于M姐实验室的教程# 3D地质图制作:GeoScene Pro+Blender,但是她这种做法渲染出图可以,没法导出成模型。她的模型形成是用的着色器的置换,着色器在各个三维平台是不兼容的,所以也就没法导出成通用模型。所以扩大到65535来平滑没有必要了,但把数值抬高于与NoData区分这一步是有必要的。

  1. 用PS或者其他图形软件打开DEM拉伸之后tif数据,把数据另存为PNG。把这个PNG复制一份副本。

  2. 打开Blender,删除掉默认的内容。然后添加一个平面,调整他的大小,大小按DEM影像的像素来,比如我的影像是3343×2255,我的平面尺寸就是33.43m×22.55m,当然这个数值其实只要比例对就OK,但是合适的数值会比较方便后期的坐标映射。

  3. 选中平面,按Tab键进入编辑模式,右键>细分,切割次数填最大值100。然后选中所有切割出的平面,再次细分,这次切割次数填3。这个可以自己调整,理论上切分的越成的模型就会越精细,但是切分的越细数据就会越大。

  4. 按Tab进入物体模式,选中平面,在纹理属性处新建两个笔刷,在图像处分别选择保存的PNG和PNG副本。

  5. 选中平面,在修改器属性中新建一个置换修改器,关联刚刚新建的纹理,可以看到地形的模型已经出来了。如果切分的不够多,模型可能不够精细,可以右键>平滑着色一下,效果会好一些。如果在3.0或以上版本,可能默认是没有修改器的,需要在插件里面去勾上。

  6. 选中平面,在材质属性界面新建一个材质槽位和一个材质。

  7. 到Shading工作空间,把保存的PNG图片拉进着色器编辑器,并进行如下连接。

  8. 在图片输入和原理化BSDF之间添加一个颜色渐变节点(添加>转换器>颜色渐变),接下来调整颜色到如下图。这里得多分几个关键颜色点,不然blender不知道怎么通过线型算中间色。另外最左边应该专门添加一个关键颜色点作为没有数据的底色,真正的最小值配色稍往右移,这也就是我们之前拉升DEM的时候专门抬高的用处了。

  9. 因为着色器不通用,这样通过颜色渐变来的效果是没法导出的,因此我们需要把效果烘培成贴图。为了提高烘培效果,我们先给场景添加日光,位置Z30米,强度2。

  10. 然后烘培。选中平面,渲染使用Cycles引擎,设备选择GPU计算,找到下面的烘培选项卡,点击烘培,等待烘培完成。这里使用GPU会比CPU快不少。

  11. 这时候再观察地形模型,发现我们的模型已经不对了,因为我们的纹理已经变成了烘培过之后的彩色图片,数据就不对了。我们需要在修改器属性中置换修改器的关联纹理改成另一个使用副本数据的。

  12. 到UV Editing或者Texture Paint工作空间,反正是有图像编辑器的就行,图像>另存为,使用原名字,颜色使用RGBA,保存。这个保存通常非常大,之后可以用PS之类的图形软件稍微压缩下,但不能使用8位色图像。

  13. 到Shading工作空间的着色器编辑器中,删除颜色渐变节点。然后把图片和原理化BSDF连接起来,就得到了一个可以方便导出,没有复杂着色器的模型了。

  14. 文件>导出>glTF 2.0,勾选几何数据>应用修改器,就可以得到通用格式,web可用,有材质的glb三维地形模型了。

效果如下:

用DEM制作通用三维地形模型相关推荐

  1. WEB端显示三维地形模型

    注:正常在WEB上显示三维地形首选Cesium,本文内容仅作为研究,展示文章用DEM制作通用三维地形模型中制作的局部三维地形模型 Cesium是可以很容易的实现在WEB端三维地形的,下面的图是分别是使 ...

  2. 利用DEM数据实现三维地形高程图制作

    利用DEM数据实现三维地形高程图制作 本次三维高程图制作用到的数据及软件主要是90m SRTM 高程数据和surfer 14软件.话不多说,咱们开始吧! SRTM 90 m DEM 中国区 以祁连山区 ...

  3. 如何使用SU生成三维地形模型

    Sketchup是一套直接面向设计方案创作过程的设计工具,其创作过程能够充分表达设计师的思想而且完全满足与客户即时交流的需要,经常会用到Sketchup快速表现景观设计方案,景观中会涉及到缓坡草地.生 ...

  4. 见证一张CAD图如何蜕变成一个高大上的三维地形模型(一)

    一般情况: 数据准备1.dem栅格图一张,2.对应dem位置的影像图一张即可 软件准备:ArcScene(esri arcgis 的是一个三维扩展模块,版本:10以上,本文10.2)或者terraBu ...

  5. MicroStation里CASS地形数据生成三维地形模型

    将如下CASS地形数据文件稍作编辑,生成MicroStation输入命令脚本: place point; xy=362047.09,3254845.853,88.288; xy=362047.273, ...

  6. 怎么使用3DMax制作三维地形

    1. 概述 水经注软件除了可以轻松下载无水印Google Earth卫星影像.有明确拍摄日期的历史影像.地方高清天地图.百度高德大字体打印地图,按1万/5千等国家标准图幅下载,对百度坐标与火星坐标进行 ...

  7. 如何利用 Blender GIS 制作三维地形

    1.概述 三维地形虚似可视化仿真技术是指在计算机上对数字地形模型中的地形数据实时的进行三维逼真显示.模拟仿真.简化和多分辨率表达等内容的一项技术.它涉及到遥感与测绘.现代数学.计算几何.地理信息系统. ...

  8. Max基于等高线制作三维地形

    1.导入cad地形文件,或人工根据图纸绘制地形等高线. 2.根据等高线标高,修改每层等高线高度. 3.选择最低层等高线,点击命令面板--创建--几何体--复合对象--地形. 4.选择拾取操作对象,从下 ...

  9. 基于html5的矢量图绘制方法研究,基于HTML5和WebGL的三维地形可视化方法研究

    摘要: 近年来地理信息的需求急速增长,越来越多的GIS应用走向网页化.移动化.WebGIS应用也在逐渐从二维层面向三维层面发展,三维地形可视化是三维GIS的基础,基于Web的三维地形可视化也成为新的研 ...

  10. UE4-制作真实场景三维地形

    目录 3dmax软件中创建三维地形模型 1.下载所需的影像图和高程图 2.生成DEM数据图拱3Dmax使用 3.3Dmax加载Dem数据 在UE4中使用地形工具创建三维地形 1.下载高度图 2.高程图 ...

最新文章

  1. python代码用c语言封装_使用C语言扩展Python程序的简单入门指引
  2. 远程机房监控设计方案
  3. 安装spark1.3.1单机环境
  4. 使用ssh远程连接时的一些注意问题
  5. 晚上:上课笔记,听完自己独立完成
  6. idea 注解报错_SpringBoot 遗忘后的简单快速回忆之环境搭建与常见注解
  7. 拖拽之路(二):自定义QListWidget实现美观的拖拽样式(拖拽不影响选中)
  8. Android视频播放
  9. HDU2525 Clone Wars【模拟】
  10. Hi3531D调试手记(六):IT6801实现HDMI转码BT1120输入VI
  11. html实现宿舍管理系统,宿舍管理系统部分代码实现
  12. Clover 驱动文件夹_通过AppleALC,轻松解决苹果声卡驱动的问题.
  13. 基于JAVA大众点评管理系统计算机毕业设计源码+系统+lw文档+部署
  14. python wow自动打怪脚本官方教程_【按键精灵】魔兽世界LR 自动打怪脚本
  15. 计算机科学编辑部态度,计算机科学期刊介绍--各种杂志投稿方式与评价(转)...
  16. a16z:私钥屡被攻破?Web3安全还得从钱包说起
  17. Excel怎么把横排变竖排,一键转换表格格式
  18. 在Excel表格中如何设置字体随单元格大小变化
  19. android ocr 中文版,android ocr
  20. [codeforces 718E]Matvey's Birthday

热门文章

  1. Linux指令系统文件复制到U盘
  2. 寻找生态位置,中小险企破局生态建设——保险生态建设...
  3. 别花时间抠图了,赶紧试试这几个免抠图的PNG图片网站!
  4. 京东联盟API接口-单页市场-提高商品转化率-京东高级API接口
  5. oracle里xdb用户,修改Oracle XDB默认监听端口
  6. md设备linux,【linux基础】14、raid和md模块
  7. GitHub使用技巧,在线ide编辑代码、在线运行代码、快速查找阅读代码
  8. CAD轴测图怎么画,才能不踩坑?
  9. 确定有限自动机DFA
  10. Photoshop更换证件照底色