从CAD平面到手绘效果图:透视投影 + 梯度渲染算法管线
多邻空域线集定义法(MASD)解决了"AI如何从CAD看懂建筑空间"的问题。灭点梯度成像法是MASD的自然延伸——将理解后的空间域转为可视化的三维效果图,用透视投影和梯度渲染模拟手绘建筑画的效果。
DXF图纸 → [MASD] → 空间域 → [挤压] → 3D墙面 → [灭点投影] → 屏幕坐标 → [梯度渲染] → PNG效果图
| 类型 | 灭点数 | 适用场景 | 视觉特征 |
|---|---|---|---|
| 一点透视 | 1 | 室内走廊、正立面 | 深度汇聚,正面不变 |
| 二点透视 | 2 | 建筑外观、街角 | 两个方向汇聚 ★ |
| 三点透视 | 3 | 高层鸟瞰/仰视 | 三个方向汇聚 |
给定相机 C(cx,cy,cz)、焦距 f、世界坐标 P(x,y,z):
// 世界 → 相机空间 rel = P - C cam_z = rel · forward // 透视投影 sx = w/2 + f * (rel · right) / cam_z sy = h/2 - f * (rel · up) / cam_z
| 参数 | 推荐值 | 效果 |
|---|---|---|
| 透视类型 | 二点透视 | 建筑外观标准视角 |
| 视高 | 1.6m | 人眼平视 |
| 旋转角 | 30-45° | 两个立面都显露 |
| 焦距 f | 1500 | 适中透视(f↓=夸张,f↑=正交) |
面法线 · 光源方向 → 面明暗过渡
I = max(0.15, N·L)
正立面0.7、侧面0.4、背光0.15
距相机越远越淡 → 空气透视
fog = 1 / (1 + z/80000)
远墙向背景色过渡
Perlin噪声 + 纸纹理 + 边缘加重
final = base*(1+noise+paper)*edge
模拟铅笔+水彩纸质感
// 多边形每条边 → 一堵3D墙 for edge in polygon: wall = [(x1,y1,0), (x2,y2,0), (x2,y2,h), (x1,y1,h)] normal = cross(edge, up) faces.append(wall, normal)
| 角度 | 填充率 | 效果评估 |
|---|---|---|
| 鸟瞰 | 72.8% | ✅ 建筑布局清晰,屋顶/墙面梯度可见 |
| 侧透视 | 9.2% | ⚠️ 3m层高 vs 171m面宽→建筑过扁 |
| 正透视 | 4.8% | 同上——需多层叠加 |
| P | 方向 | 预期效果 | 依赖 |
|---|---|---|---|
| P0 | 多层叠加 | 2-6层挤出18m体量→正常透视比例 | 多层MASD数据 |
| P1 | 门窗开洞 | 墙上开洞口→立面细节 | 门检测数据 |
| P2 | 地面参考 | 地面平面+阴影→空间锚定 | 室外域数据 |
| P3 | 手绘滤镜 | Perlin噪声+边缘抖动→铅笔质感 | PIL后处理 |
| P4 | Lovart风格化 | AI生成手绘风→叠加到线框 | Lovart API |
灭点梯度成像法是MASD空间理解管线的下游应用。MASD输出空间域多边形→灭点引擎接收→挤压为3D墙面→透视投影→梯度渲染。这是完整的"CAD→空间理解→效果图"管线。