用代理網格為 3DGS 提供真實法線
概述
ProxyMesh 是 LCC4Unreal 的專業版功能,通過放置代理網格提供真實的深度和法線信息,是唯一具有真實形狀着色的法線模式。適用於 LCC2 管線的全部格式(.lcc2 / .sog / .spz / .ply)。授權說明見版本與授權。
注:ProxyMesh 需要有效授權。未授權時自動回退為 Fixed 模式。
代理網格是什麼
3DGS 數據本身沒有表面法線,也不寫入 GBuffer,無法參與常規光照計算。代理網格的作用是提供一份與 3DGS 形狀一致的幾何體,插件從它身上取得深度、法線以及 GBuffer 中的材質屬性,交給引擎光照與後處理使用;這份網格自身不出現在最終畫面裏。
3DGS 數據 代理網格
(顏色、不透明度) (深度、法線、材質屬性)
│ │
│ ▼
│ 寫入 GBuffer
│ │
│ ┌───────────────┴───────────────┐
│ ▼ ▼
│ 引擎光照計算 依賴 GBuffer 的
│ (方向光、點光、陰影) 後處理(反射、折射等)
│ │ │
│ └───────────────┬───────────────┘
▼ ▼
顏色來源 ──────────────▶ 合成最終畫面
│
▼
代理網格自身不可見
換句話說:畫面裏看到的顏色來自 3DGS,光照表現來自代理網格。
網格的來源不受限制,插件只讀取它的渲染結果,不關心它怎麼來的。常見的幾種:
| 來源 | 說明 |
|---|---|
| 與 3DGS 一同生成的近似網格 | 採集流程中輸出的網格,形狀貼合度最高,是首選 |
| 3DGS 轉換得到的網格 | 用第三方工具從 3DGS 重建出的網格 |
| 自行建模的網格 | 在 DCC 軟件中按 3DGS 形狀建模,適合需要精確控制的場景 |
| 基礎幾何體拼接 | 用 Cube、Plane 等基礎網格拼出大致體塊,適合建築、地面這類規則形狀 |
唯一的要求是網格與 3DGS 在空間上形狀貼合。貼合得越準,光照表現越接近真實;偏差過大時,光照方向會與畫面中看到的形狀不符。
網格精度不需要高:只要體塊和朝向正確,低面數的簡化幾何體就夠用。
材質的作用
代理網格的材質屬性會隨 GBuffer 一起被讀取,因此它決定了 3DGS 表面對光照的響應方式。
只需要基本光照時,白盒材質即可,不需要貼圖。要做依賴材質屬性的效果時,就必須在網格的對應位置使用相應的 PBR 材質,例如:
- 水面反射與折射:在水域位置使用金屬度、粗糙度合適的水面材質
- 金屬高光:在金屬結構位置給出對應的 Metallic 與 Roughness
- 粗糙表面:用高 Roughness 抑制不該出現的高光
材質屬性與實際形狀不匹配時,光照結果會與畫面中看到的 3DGS 外觀不符,例如本該粗糙的牆面出現鏡面高光。
快速設置
步驟 1:放置 ProxyMesh Actor
- 在編輯器中通過 LCC4Unreal 插件面板添加
ALCC2ProxyMeshActor - 為其
StaticMeshComponent分配一個 StaticMesh(來源不限,見上節) - 調整 ProxyMesh 位置使其與 3DGS 內容在空間上重疊

在場景中放置 ALCC2ProxyMesh Actor
步驟 2:啟用 ProxyMesh 模式
- 選中 LCC2 管線的 Actor(
ALCC2Actor/ASogActor/ASpzActor/APlyActor) - 在 Details 面板找到LightMode修改為Lit模式
- 在 Details 面板找到 LCC2Component 的 Lighting 分類
- 將
NormalMode設置為ProxyMesh

啟用 Lit 並將 NormalMode 設置為 ProxyMesh
步驟 3:驗證
- 改變場景光照方向,觀察 3DGS 是否產生自投影效果
- 確認代理網格在最終畫面中已隱藏

ProxyMesh 提供真實法線後的光照效果
ProxyMesh使用實例

ProxyMesh 的設置過程與光照效果
ALCC2ProxyMesh
代理 Actor,與 LCC2 管線的 Actor 在 NormalMode = ProxyMesh 下配對使用。
屬性
| 屬性 | 說明 |
|---|---|
| StaticMeshComponent | 提供場景深度和法線的靜態網格 |
默認變換
- 縮放 (100, 100, 100):網格默認單位為米,UE 為厘米
- 旋轉 (0, 180, 0):補償網格生成管線與 UE 前向軸方向相反
行為
- StaticMesh 有效時自動啟用 CustomDepth 渲染
- StaticMesh 為空時記錄警告並禁用 CustomDepth
授權判定
ProxyMesh 模式需要專業版授權,詳見版本與授權。未授權時自動回退為 Fixed 模式,存儲的屬性值不會被修改。
運行時切換
NormalMode 可在運行時通過藍圖或 C++ 修改,下一幀生效。
藍圖用法
生成 ProxyMesh
SpawnActor->Class: ALCC2ProxyMesh
→ 設置 StaticMeshComponent 的 StaticMesh
→ 調整位置對齊 3DGS 內容
切換模式
LCC2Component->NormalMode = ProxyMesh
最佳實踐
- 網格覆蓋: 確保代理網格覆蓋與 3DGS 內容相同的空間區域。
- 網格精度: 場景幾何體的簡化近似即可,不需要高面數。
- 多個 Actor: 可以放置多個
ALCC2ProxyMeshActor 覆蓋不同區域。 - 無需顯式綁定: 不需要將 ProxyMesh 鏈接到特定的 Actor,配對自動完成。
- 向後兼容: 不使用 ProxyMesh 的項目行為與升級前完全一致,無額外開銷。
故障排查
ProxyMesh 沒有效果
- 確認
NormalMode已設為ProxyMesh - 確認許可證有效
- 確保 ProxyMesh Actor 已分配有效的 StaticMesh
- 確認 ProxyMesh 在空間上與 3DGS 內容重疊
警告:「has a null StaticMesh」
為 ALCC2ProxyMesh Actor 分配 StaticMesh 即可解決。警告已節流,每個實例僅發出一次。
最終畫面中可見白盒顏色
- 確保至少一個 LCC2Component 處於 ProxyMesh 模式
- 如深度匹配過嚴,調整
LCC2.ProxyMeshDepthEpsilon
光照效果不正確
- 驗證代理網格法線是否為實際場景幾何體的合理近似
陰影只在近處出現,遠處被截斷
引擎自身的問題。選中 ProxyMesh Actor,把 StaticMeshComponent 的 Far Shadow 關閉再重新打開即可恢復完整陰影。