D-20260903-03|編輯器幾何島與 Primitive 分離¶
背景與驅動力¶
既有切分工具只有軸向平面切割與封蓋。來源 GLB 若已在單一 primitive 內包含數個彼此不連通、 各自水密的外殼,或已用多個 primitive/材質區塊表達數個水密實體,作者仍須用平面重新切割, 可能產生不必要的新切面,也無法直接沿原建模邊界轉成可獨立調整與指派材質的 Mesh node。
考慮過的選項¶
- 只保留平面切割:功能安全但不能利用來源既有分區,否決。
- 依材質名稱合併或猜測開口封蓋:會改變作者拓樸,且無法保證每區體積 well-defined,否決。
- 沿既有 primitive 或 exact-edge 幾何島分離,並要求每個輸出原本就水密(採納)。
- 同時實作把多個 Mesh 熔接為單一 Mesh:布林、材質與可逆語意不同,這次不採納;日後另案討論。
決定¶
- 切分面板提供「平面切割並封蓋」「依不連通幾何島分離」「依 Primitive/材質區塊分離」。
- 幾何島以 primitive 內的位置焊接後 exact-edge 連通性分組;不以視覺距離猜測相連,也不跨 primitive 自動合併。
- Primitive 分離保留每個 triangle primitive 的材質、attributes 與 indices;不按相同材質名稱 合併 primitive。
- 後兩種模式不新增三角面。只有至少兩個輸出,且每個輸出都已水密時才可執行;任一輸出非 水密即整次拒絕,GLB 保持不變。
- 第一片沿用原 node 名稱,其餘片使用決定性的
_2、_3唯一後綴;片段置於原父節點下並 保留原 local TRS,後續共用 Node TRS 工具可單選或多選調整。 - 整次切分是一筆 asset-replacement undo transaction;未物化的表面與拓樸 patch 會先阻擋。
後果與影響¶
已具有正確建模邊界的 GLB 不必再製造切面,即可在瀏覽器內得到可獨立調整、指派材質且物理 體積明確的 Mesh node。開放表面或只是材質色塊、但沒有獨立封閉體積的區域仍不能分離成物理 sub-mesh。專案為 pre-launch,不新增舊工作階段或中間格式 migration。