跳轉到

D-20260903-02|編輯器增量拼接與共用 TRS

背景與驅動力

舊拼接在空工作區一次收集多個 GLB,面板自行維護 position 與跨列 parent,合併後再把結果當成 全新資產重走匯入。D-20260903-01 已讓零件與場地共用標準 Node TRS、多選 pivot 與匯出新基線, 繼續保留另一套 position-only 組裝介面會造成兩個變形權威;重走匯入也會重設目前 draft、來源 血緣與 undo history。

考慮過的選項

  • 保留舊多列面板,再補旋轉與縮放欄位:重複 Node TRS 能力且無法直接觀察組裝後結果,否決。
  • 先把兩個 GLB 合成另一份檔案,再重新匯入:仍會重設目前工作階段與一次性類型選擇,否決。
  • 把新 GLB 逐次加入目前資產,加入後共用既有選取與 TRS(採納)。
  • 同批提供 Mesh 熔接或任意重新掛父層:超出本次拼接定位需求;若日後需要另行決定。

決定

  • 拼接只有在目前已有 GLB 時可用;每次選擇一個外部 GLB 加入目前資產,不建立第二個暫存工作區。
  • 目前資產是已准入、已正規化的工作 bytes,不重複 sanitize、來源單位換算或 provisional fit。 新來源獨立執行 sanitize、canonical 壓縮幾何解碼與明示匯入單位的公尺正規化,但不套用整件 零件/場地的 provisional fit。
  • 加入前把目前 scene edits 攤平;若還有未物化的表面筆刷或拓樸 patch,先拒絕並要求作者完成 或復原,避免重建 mesh context 使既有幾何 undo 找不到原作用對象。
  • 新來源保留內部 Mesh、primitive 與 node hierarchy,整包成為獨立場景根。節點重名依來源順序 決定性加 _2、_3 後綴;本功能不熔接 Mesh,也不重新掛父層。
  • 加入後自動多選新增 Mesh,使用共同 Node TRS 的位移、旋轉、各軸縮放及共同/各自中心模式。 面板不另提供 position、rotation 或 scale 欄位。
  • 整次加入以一筆 asset replacement transaction 進入 undo/redo。現有 draft、資產名稱、來源 血緣與下一個一般匯入的類型選擇不變;輸出以加入後的 hierarchy、TRS、幾何與材質為新基線。

後果與影響

作者可反覆「加入一個 GLB → 直接在 viewport 調整 → 再加入下一個」,而不必離開目前資產或 先猜 position 數字。需要 launch bullet 父子結構的來源必須在加入前已具正確內部 hierarchy; 拼接本身不再兼任 hierarchy 編輯器。專案仍為 pre-launch,舊 position/parent 組裝請求不保留 相容 shim 或資料遷移。