灭点梯度成像法

从CAD平面到手绘效果图:透视投影 + 梯度渲染算法管线

计算机图形学 建筑可视化 MASD管线延伸

一、研究动机

多邻空域线集定义法(MASD)解决了"AI如何从CAD看懂建筑空间"的问题。灭点梯度成像法是MASD的自然延伸——将理解后的空间域转为可视化的三维效果图,用透视投影和梯度渲染模拟手绘建筑画的效果。

DXF图纸 → [MASD] → 空间域 → [挤压] → 3D墙面 → [灭点投影] → 屏幕坐标 → [梯度渲染] → PNG效果图
    

二、灭点透视数学

2.1 三种透视类型

类型灭点数适用场景视觉特征
一点透视1室内走廊、正立面深度汇聚,正面不变
二点透视2建筑外观、街角两个方向汇聚 ★
三点透视3高层鸟瞰/仰视三个方向汇聚

2.2 投影公式

给定相机 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
    

2.3 关键参数

参数推荐值效果
透视类型二点透视建筑外观标准视角
视高1.6m人眼平视
旋转角30-45°两个立面都显露
焦距 f1500适中透视(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
模拟铅笔+水彩纸质感

四、完整管线

Step 1MASD
空间域
Step 23D墙面
挤压
Step 3灭点
投影
Step 4深度
排序
Step 5梯度
着色
Step 6PNG
输出

墙体三维化

// 多边形每条边 → 一堵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)
    

五、v1/v2 验证结果

MASD → 灭点渲染 实测

17
空间域输入
566
3D面生成
3
相机角度
72.8%
鸟瞰填充率
9.2%
侧透视填充率
角度填充率效果评估
鸟瞰72.8%✅ 建筑布局清晰,屋顶/墙面梯度可见
侧透视9.2%⚠️ 3m层高 vs 171m面宽→建筑过扁
正透视4.8%同上——需多层叠加

六、改进方向

P方向预期效果依赖
P0多层叠加2-6层挤出18m体量→正常透视比例多层MASD数据
P1门窗开洞墙上开洞口→立面细节门检测数据
P2地面参考地面平面+阴影→空间锚定室外域数据
P3手绘滤镜Perlin噪声+边缘抖动→铅笔质感PIL后处理
P4Lovart风格化AI生成手绘风→叠加到线框Lovart API

七、与MASD的衔接

灭点梯度成像法是MASD空间理解管线的下游应用。MASD输出空间域多边形→灭点引擎接收→挤压为3D墙面→透视投影→梯度渲染。这是完整的"CAD→空间理解→效果图"管线。

技术栈

提取ezdxf
几何Shapely
投影自写引擎
渲染PIL
风格Lovart
琼ICP备2026009355号-1