Skip to content

feat(viewport): v1.0 B3b — Babylon gizmo + snap 跨引擎#41

Merged
longyi-xw merged 14 commits into
mainfrom
feat/v1.0b3b-babylon-gizmo
Jun 18, 2026
Merged

feat(viewport): v1.0 B3b — Babylon gizmo + snap 跨引擎#41
longyi-xw merged 14 commits into
mainfrom
feat/v1.0b3b-babylon-gizmo

Conversation

@longyi-xw

Copy link
Copy Markdown
Owner

摘要

让 Babylon 模式可拖动(T/R/S gizmo + 平面拖拽)+ grid/node/socket 三层吸附,与 Three 跨引擎对等。实现 B3a 定义的 IRenderHost gizmo+snap 契约。

  • BabylonRenderHostGizmoManagerusePointerToAttachGizmos=false,onDragStart/Drag/End 映射拖拽生命周期;WeakSet 幂等挂 observer 防累积;planarGizmoEnabled 平面手柄对齐 Three)
  • babylon/snap-features.ts(OBB 15 点 + Vector3.Project,15 点顺序与 Three 一致)+ babylon/transform-util.ts(四元数归一)
  • computeSnapOffset/transformsEqual 中立化到 core/snap/offset.ts / runtime/transform-util.ts,两引擎共用(无 babylon→three 依赖)
  • 能力门细分 engineCapabilities{gizmo,play,focus,assetDrop}:gizmo 两引擎放开,play/focus/assetDrop 仍 Three-only(B4)
  • BabylonViewport 接 gizmo 四方法 + diff 后重放

留 B4(已与用户确认):socket 标记视觉(socket 吸附已实现但无标记)、Babylon 材质覆盖、play 行为预览跨引擎。

测试计划

  • typecheck / lint(0 error)/ vitest 594 全绿;isEngineEditingCapable 无残留
  • Babylon snap-features / transform-util / GizmoManager 接线 headless 单测(含 observer 不累积 + planar 手柄断言)
  • visual smoke(Babylon 模式):T/R/S + 平面拖拽、grid/node 吸附、单次 undo、locked 只描边、拖拽相机自动 detach、gizmo pill 放开、Three 零回归

🤖 Generated with Claude Code

@longyi-xw longyi-xw merged commit 3274065 into main Jun 18, 2026
1 check passed
@longyi-xw longyi-xw deleted the feat/v1.0b3b-babylon-gizmo branch June 18, 2026 14:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant