
简介面向建筑、规划及景观设计从业者和学生教程系统讲解如何将数字化地形图转化为Lumion可用的仿真地形模型解决三维地形制作流程繁琐、比例难控等常见问题。教程以飞时达GPCADX V1.0完成高程信息转换与地形表皮生成再借助草图大师及mesh2HeightMap插件输出灰度图并在Photoshop中进行比例校正最后导入Lumion创建逼真三维地形全流程步骤清晰、实操性强适合已有一定软件基础的设计人员参考学习。资源为单个PDF文档压缩包大小3.16MB内容精炼且图文配合便于按步骤边看边操作。目前已有122人学习下载对于希望提升Lumion地形建模效率、增强设计方案可视化表现力的读者是一份实用的入门与进阶教程。1. 数字化地形图进Lumion为什么偏偏要走一条多软件链路做景观和建筑表现的同行应该都遇到过这个场景方案汇报要表现一片完整的场地手里只有一张测绘CAD地形图图上密密麻麻全是等高线和离散高程点。手捏地形吧怎么看都不像现场把CAD图直接丢进Lumion吧又只有二维图块。这篇教程讲的就是把数字化地形图里的等高线和高程点抽出来经过坐标清洗和插值生成一张黑白灰度高度图再借助建模软件或Lumion自带的地形导入功能还原成三维仿真地形。整个过程跨了CAD、图像处理、建模和Lumion四个环节每一步的参数都会直接影响最终地形的高矮和走向。适合手里有CAD地形图、想把真实场地放进Lumion做表现的从业者也适合给规划、园林项目做前期推敲的人。这套链路第一次跑通大约需要半天跑通之后基本就固定成工序了。2. 地形图预处理把等高线和高程点整理成能喂脚本的三列数据2.1 先分清地形图里哪些信息“真的能用”拿到一张数字化地形图不要急着全图导出。先打开CAD软件用特性面板选几条等高线看看如果对象属性里带“标高”或Z坐标这是最理想的情况直接能提取三维坐标如果等高线只是二维多段线只有文字注记写标高那就必须先把注记文字和图线对应上工作量会明显增加。高程点则通常是块参照插入点的X、Y就是平面坐标属性或文字里带高程值这类点提取起来最省事。常见做法是第一遍先筛选图层。把地形图里的等高线、高程点单独放图层是最好的如果没有分图层就用快速选择按对象类型过滤。边坡、陡坎、水系边线这类对象也可以保留因为它们描述的是地形突变位置对后续插值有帮助。道路中线、建筑轮廓、标注尺寸则在这一步全部删掉它们不是地形数据留下只会让点集里混入大量干扰点。2.2 从CAD批量导出CSVDATAEXTRACTION的完整步骤大多数人查坐标只会用LIST命令逐个点看几百个高程点还能忍几千个点这样查会查到怀疑人生。正确做法是用CAD自带的数据提取功能整套提取是向导式操作不需要写代码输出结果直接是CSV表格。我的操作顺序是这样在图层管理器里把不需要的对象全部冻结只留等高线和高程点。在CAD里执行“数据提取”命令选择“创建新数据提取”保存提取文件。在选择对象步骤里用“选择对象”按钮框选整个场地保证只框地形范围不要框到图框和外部参照。在“类别过滤”里只勾选几何图形相关项后面的属性列表勾选位置X、位置Y、位置Z/标高。对等高线把分类下面“直线/圆弧/多段线”节点里的顶点坐标也勾上对高程点找到块参照节点下的位置坐标属性。下一步把输出格式设为CSV勾选“将数据输出至外部文件”选一个路径保存。这样导出来的CSV通常有十几列里面混着对象类型、图层、颜色这些无关字段需要进一步整理成三列。注意“数据提取”对样条曲线支持有限有时候样条曲线提取出来顶点不完整最好在提取前把样条曲线转成多段线这一步能避免后面地形表面出棱角。2.3 数据清洗把CSV整理成标准的X、Y、Z三列拿到导出的CSV先用表格软件打开按照对象类型分列。我的清洗顺序是第一只保留“点位”和“等高线顶点”两类坐标删除所有标注、多段线中心点等重复内容第二按X和Y排序后删掉完全重复的坐标点一个位置只留一个Z值否则后面插值会出现二义性第三异常值过滤把Z值明显超出场地合理范围的挑出来确认常见原因是高程点注记文字被当成点位导入了注记文字的位置坐标和文字内容容易混在一起。单位统一这一步最容易翻车。地形图制图常用毫米单位但Lumion和建模软件按米工作。如果X、Y是以毫米计的一旦作为米导入场地范围会被放大一千倍。所以必须在清洗阶段把所有坐标除以1000Z值同样处理统一成米。清洗完保存成三列CSV第一列X第二列Y第三列Z文件头可以留中文也可以删掉脚本读取时自己指定列名即可。注意单位不统一是整套流程里排第一位的坑导出CSV之前先在CAD里确认图纸单位能省掉后面一整轮返工。这里补一句没有高程值只有注记的等高线最费时间的处理方式是用插件把文字内容批量赋给对应图线原理是读取注记文字的位置找到最近的等高线并写入标高属性如果没有插件就只能人工选线后逐个改标高。属于没有任何捷径可走的部分。2.4 什么时候该放弃从图纸提取直接换数据源有一类地形图不值得在上面花太多时间年代久远导致等高线断裂多、注记丢失、图面坐标系混乱的老图纸。比例尺小、间距大、又缺高程点时强行提取并插值生成的地形连趋势都对不上后期在Lumion里也没法靠修地形补回来。我一般遇到这种情况就直接换思路先找高程数据源或者找无人机航测生成点云数据再按后续流程制作灰度高度图。注意这种时候原本的地形图退出数据源角色退化为“参考图”只用来确认场地边界和设计范围。救不回来的图纸早点放弃比耗一天时间在CAD里补线划算得多。3. 生成灰度高度图插值方法对比与一组可直接改的代码3.1 为什么中间要经过一张灰度图而不是直接把点导入Lumion第一次接触这个流程的人常问既然有几千个高程点为什么不让Lumion直接读点。原因很现实Lumion的地形工具和前端的建模软件通常只接受连续表面几千个散点落在网格上需要做插值这一步在Lumion里没有开放给用户只能靠外部软件先生成一张“规则网格”。灰度高度图就是规则网格最通用的编码方式每个像素的亮度代表该位置的高度黑色是低处白色是高处。一张1000乘1000的图能装一百万个网格点而CSV文件到一百万行数据级别就已经很难处理了。另外灰度图是多个软件之间的“共同语言”。在建模软件里导入灰度图可以生成三角网地形在Lumion里可以直接导入高度图生成地形同一张图两端都能用换软件不换数据这是整套链路最省事的地方。3.2 三种插值方法怎么选拿到离散点以后要做的事是把稀疏的XYZ点变成密集的规则网格这一步叫插值。三种常见方法对比如下方法特点适合场景注意点线性三角网插值速度快山脊线保留锐利等高线数据点分布太散时会出现尖角反距离加权IDW光滑近处点权重高均匀分布的测量点对异常点敏感克里金插值平滑效果最好考虑空间自相关专业地质分析参数多配置成本高做Lumion仿真地形我一般默认选线性三角网插值因为等高线数据本身描述的就是地形趋势线性插值不容易出怪异的隆起。如果手头是均匀分布的测量点而非等高线想追求柔和地表再换IDW也不迟。3.3 可以直接跑的Python脚本从CSV到灰度图下面是整个流程里最关键的一段代码。把上一步清洗好的CSV放进来运行后会直接输出一张灰度PNG。import numpy as np from scipy.interpolate import griddata from PIL import Image import pandas as pd # 读取清洗后的三列数据x, y, z单位统一为米 pts pd.read_csv(points.csv) x pts.iloc[:, 0].to_numpy() y pts.iloc[:, 1].to_numpy() z pts.iloc[:, 2].to_numpy() # 输出图像分辨率每个像素代表多少米 pixel_size 1.0 x0, x1 x.min(), x.max() y0, y1 y.min(), y.max() w int((x1 - x0) / pixel_size) 1 h int((y1 - y0) / pixel_size) 1 # 生成规则网格结果数组第一维对应Y方向第二维对应X方向 grid_y, grid_x np.mgrid[y0:y1:complex(h), x0:x1:complex(w)] # 线性插值超出已知点范围的区域先记为NaN zi griddata((x, y), z, (grid_x, grid_y), methodlinear) # 去除无数据区域按5%和95%分位数裁剪高程防止粗差压扁整体起伏 mask np.isnan(zi) valid zi[~mask] lo, hi np.percentile(valid, (5, 95)) zi np.clip(zi, lo, hi) zi[mask] lo # 归一化到0-255并输出8bit灰度图 zi_norm (zi - lo) / (hi - lo) * 255.0 zi_norm np.flipud(zi_norm) # 图像Y轴朝下翻转成CAD北朝上的视觉方向 Image.fromarray(zi_norm.astype(np.uint8), modeL).save(heightmap.png)参数说明pixel_size控制最终精度1.0表示一个像素对应一米场地一公里见方时输出约1000乘1000像素性能压力不大想更精细可以改成0.5输出尺寸翻倍插值耗时也会成倍增加。分位数裁剪里5和95这两个数用来剔除个别异常高程点如果你的数据清洗得很干净可以改成0和100保留全部高差。np.flipud这一行是为了解决图像坐标系和测量坐标系Y轴相反的问题表现为地形上下颠倒如果导入Lumion后发现方向还是反的把这一行注释掉再生成一次即可。3.4 生成之后先肉眼检查三个关键点灰度图生成后不要直接导入Lumion先用图片查看器放大检查三个地方。一是整体明暗过渡是否连续如果出现大量椒盐噪声说明原始点集里有异常高程回第2章清洗。二是有效区域边界是否完整如果场地边缘有大片黑色说明点集范围比实际场地小需要补充边界点否则导入后会出现一圈塌陷。三是明暗方向是否符合常识找一处已知的山体走向用截图方式对比确认北方向正确。这一步检查花不了五分钟却能避开后面在Lumion里反复试错的尴尬。4. 从高度图到Lumion地形两条路径与参数校准4.1 路径一Lumion直接导入高度图最省事的方式Lumion自带的地形工具支持直接导入高度图操作路径是进入地形模式选择导入高度图选中刚才生成的PNG然后按提示输入最小海拔和最大海拔。最小海拔就是灰度图黑色区域对应的真实高度最大海拔是白色区域对应的真实高度这两个数值直接决定地形整体高差。导入成功后第一件事是转一圈观察边缘。如果地形边缘出现垂直面或凹陷多半是灰度图四角有无效黑色区域回去在脚本里把无数据区域裁掉或者填成场地最低值重新生成后再导入。如果在等高线的陡坎位置出现明显的锯齿先不要急着在Lumion里疯狂平滑Lumion的地形平滑工具会把真实地形特征也抹掉正确做法是回到第3章提高pixel_size分辨率或者把插值方法改成cubic重算。这条路径适合场地范围不大、高差变化不剧烈、主要用来做建筑周边配景的仿真地形操作最快返工也快。4.2 路径二建模软件先生成地形网格再导入Lumion大范围场地或需要精确控制边界的项目我一般不走直接导入而是用建模软件把高度图或CSV点集转成三角网地形修好边界和道路断面后再导出FBX或DAE进Lumion。常见做法是在建模软件里导入灰度图用地形工具生成网格之后对网格做平滑、合并和边界裁剪最后导出。如果有建模插件能直接读CSV点集生成地形效果更可控因为它保留原始点位不受灰度图量化精度影响。导出时两个参数最容易出错单位必须设为米坐标轴轴向需要和Lumion一致。Lumion导入外部模型默认向上方向是Y轴而很多建模软件默认Z轴向上如果导出设置里没有自动转换进入Lumion后模型会躺倒。正确做法是在导出前把模型整体绕X轴旋转-90度或者在导出对话框里把向上轴设为Y。这类问题在Lumion里表现为地形模型趴在水平面上初见时以为是单位错误实际上是轴向问题。4.3 两条路径怎么选直接导入还是先进建模软件把两条路放在一起对比会更清楚直接导入高度图流程短不用建模软件五分钟出结果适合小场地、方案前期、配景地形缺点是边界控制弱地形细节受Lumion地形工具限制。建模软件生成网格后导入可以精确控制边界可叠加道路、水系断面网格精度高适合大场地、报建场景、建筑红线相关项目缺点是流程长需要多一次模型导出和修模。我的习惯是前期推敲用直接导入正图阶段改用建模软件生成网格。两种方式共用同一张灰度图中间没有任何返工成本这也是坚持用灰度图作为中间文件的原因。4.4 让地形和项目对位控制点才是关键地形导入后悬浮在模型旁边是这类流程里几乎必遇到的问题。Lumion的地形以世界原点为基准CAD图纸里场地可能离原点有几公里远直接对位必然错位。我一般会在清洗CSV时把所有坐标减去场地西南角坐标让场地左下角落在原点附近这样生成的高度图天然对齐项目原点。如果项目里已经有建筑模型就在建模软件里把地形模型和建筑模型按同一控制点对齐后再导出两个模型一起进Lumion位置关系不会乱。有一个反向操作要注意Lumion地形工具生成的地形会自动铺满整个项目范围而外部导入的地形模型是独立的两者互相穿插时很容易出现“双层皮”。如果用了外部地形模型就把Lumion自带地形关掉或降到最低避免两个地形成交叉重叠。5. 地形转Lumion的五个翻车现场现象、原因与排查建议5.1 地形整体南北颠倒或左右镜像现象灰度图和CAD图放在一起看走势完全一致到了Lumion里山脊走向却反了。原因图像坐标系原点在左上角测量坐标系原点在左下角Y轴方向相反第3章脚本里虽然有翻转处理但不同软件对灰度图的读取方向约定不完全一致。解决在脚本输出前检查np.flipud是否注释导入后用Lumion地形工具的旋转功能先试90度、180度和镜像组合找出正确朝向更稳妥的做法是在灰度图四角各放一个人为的明暗标记导入后一眼看出朝向是否正确。5.2 地形高差大得离谱平地被拉成悬崖现象明明场地高差只有几米导入Lumion后却出现几百米深的峡谷。原因单位没有统一。CAD图纸里XY坐标以毫米为单位Z值却写成米或者反过来XY以米为单位Z还是毫米清洗阶段没有除以1000。解决回到第2章检查CSV三个维度单位是否一致如果确实无法确定原始单位就在脚本里加一个height_scale参数放到归一化之前整体缩放Z值先把高差校正到合理范围再生成灰度图。5.3 地形像梯田一层一层台阶状现象坡度稍微平缓的地方出现明显的阶梯状纹理。原因8bit灰度图只有256级高度当场地高差较大时每级亮度对应几十厘米甚至更高像素之间亮度跳变产生了台阶。另一个常见原因是插值方法选择了nearest。解决用第3章脚本的cubic插值替换linear同时在分位数裁剪时把高差范围拉满让有效高差尽量占满0到255的灰度范围如果项目对精度要求高就把输出改为16bit PNG并确认目标软件支持16bit读取否则继续用8bit但缩小场地范围重新切块。5.4 外部模型与地形脱开建筑悬空或陷入地面现象建筑模型在坡地上方悬空或者地下室完全埋在土里。原因地形模型和建筑模型基准高度不一致。用建模软件生成地形时地形网格最低点可能在某个负值而建筑模型底标高为0两者没有对齐到同一基准。解决在建模软件里把地形网格整体移动到建筑底标高对应的Z值让建筑入口标高处与地形表面相交如果建筑本身有多个标高则用场地控制点逐一验证不要只凭肉眼。5.5 CAD数据提取阶段就卡死导出没反应现象执行数据提取命令后CAD长时间无响应等待十几分钟都出不来CSV。原因地形图里混入了大量高密度光栅图像、填充图案和外部参照数据提取把全部对象都扫了一遍。解决先运行清理命令清理无用对象把外部参照绑定或移除把光栅图像图层冻结最后用窗口方式只框选场地范围再提取。经历过一次卡死之后我再也不会把整张地形图拿来提取即使要提取全图也先把无关图层批量关掉。6. 进阶用法给地形叠一层真实影像并批量验证多个地块6.1 给地形叠加地表影像单看灰度图生成的地形像一块单色泥模。叠加正射影像或卫星图以后Lumion里的场景立刻就有真实感。做法是把正射影像按场地范围裁剪缩放到与灰度图完全相同的像素尺寸然后在建模软件里把影像作为材质贴到地形网格上如果走的是Lumion直接导入高度图路径就在Lumion里把影像作为地形材质贴图加载。关键是对齐影像的长宽比例必须和灰度图一致否则贴上去会拉伸变形。常见的做法是先看灰度图输出尺寸比如1000乘800就把影像用图像处理软件强制缩放到这个尺寸。6.2 批量处理多个地块做城市片区或大型园区项目时往往一个项目分十几个地块每块各有地形图。第3章脚本可以改造成一个循环函数把pixel_size、裁切范围、输出文件名作为参数批量生成所有地块的高度图。只要所有CSV统一坐标系多块灰度图在Lumion里可以通过位置参数拼起来。批量处理的坑在文件名编号建议用地块编号加坐标范围生成文件名方便后期追溯。6.3 用控制点做一次精度验证地形做进Lumion之后视觉上好看并不代表位置准确。我的习惯是在CAD图里选两到三个特征点比如道路交叉口、山脊最高点、建筑角点把它们的X、Y、Z记下来然后在Lumion里放参考物体或标高测试点逐一验证三维坐标是否吻合。误差控制在可接受范围内就继续往下做深化对不上就先找回数据处理环节不要在Lumion里靠修地形硬凑那个方向只会越调越乱。最早做地形时我也用手捏过捏出来的山放在现场照片旁边怎么看都别扭。后来固定成“地形图提取、清洗、插值、灰度图、导入、验证”这套流程才算是把这件事从玄学变成了固定工序。每次项目拿到地形图我第一件事永远是先问清楚单位和坐标系这两件事不问明白后面的所有操作都可能白做。希望帮到你。本文还有配套的精品资源点击获取