Skip to content

Interface: TransformManager ​

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:59

零部件位置变换编辑 manager(单实例粒度,平移+旋转)。

真值模型:Map<NodeId, 世界增量 D>。节点渲染世界矩阵 = Translate(explode)·D·originalWorld。 D 经 SceneStore.setInstanceEditDelta 推到实例(含边线同步)。装配/内部节点(无 instance)静默跳过。 持久化由宿主层经 getOverrides/setOverrides 完成(本类不做文件 I/O)。

Remarks ​

经 viewer.transform 访问,不要直接构造。

Methods ​

animateOverrides() ​

animateOverrides(list, durationMs?): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:592

批量动画套用编辑覆盖(视图切换时的零件平滑运动)。

构造 union = list 节点 ∪ 当前有编辑的节点,对每个节点从当前 delta(或 identity) 插值到目标 delta(或 identity),用 decompose→slerp→compose 方式做四元数球面插值。 不 pushHistory、不 emit,直到动画完成时 emit transform-changed 一次。

durationMs <= 0 → 直接 setOverrides,不起 tween。 durationMs 省略 → overrideAnimDuration(union.size) 自动计算。

Parameters ​

list ​

object[]

durationMs? ​

number

Returns ​

void


applyRotation() ​

applyRotation(nodeIds, eulerDegXYZ, space): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:329

旋转选中节点(欧拉角,单位:度,XYZ 顺序)。绕选中集当前有效世界盒中心 pivot。 space='world' 绕世界轴;'local'(仅单选有意义,多选回退 world)绕节点自身轴。 内部/装配节点(无 instance)跳过。

Parameters ​

nodeIds ​

NodeId[]

eulerDegXYZ ​

[number, number, number]

space ​

"world" | "local"

Returns ​

void


applyTranslation() ​

applyTranslation(nodeIds, v, space): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:285

平移选中节点。space='world' 沿世界轴;space='local' 沿各节点当前世界朝向。 内部/装配节点(无 instance)跳过。

Parameters ​

nodeIds ​

NodeId[]

v ​

[number, number, number]

space ​

"world" | "local"

Returns ​

void


canRedo() ​

canRedo(): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:219

是否有可重做步。

Returns ​

boolean


canUndo() ​

canUndo(): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:217

是否有可撤销步。

Returns ​

boolean


finishOverrideAnimation() ​

finishOverrideAnimation(): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:690

立即跳到 tween 目标,清 tween,emit transform-changed 一次。无 tween 时 no-op。

Returns ​

void


getGizmoMode() ​

getGizmoMode(): GizmoMode

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:477

Returns ​

GizmoMode


getGizmoSpace() ​

getGizmoSpace(): GizmoSpace

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:469

Returns ​

GizmoSpace


getNodeLocalPose() ​

getNodeLocalPose(nodeId): NodePose

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:522

Local 帧相对位姿:平移分量投影到节点当前有效局部轴(与 applyTranslation('local') 同一基底,故面板按差量施加可往返自洽),旋转沿用编辑欧拉。与 getNodePose(世界绝对、 绕设计原位)一一对应,供面板 Local 帧累计显示——未编辑返回零位姿。

Parameters ​

nodeId ​

NodeId

Returns ​

NodePose


getNodePose() ​

getNodePose(nodeId): NodePose

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:500

读绝对位姿(平移 mm + 欧拉度 XYZ,绕原始几何中心)。未编辑返回零位姿。

Parameters ​

nodeId ​

NodeId

Returns ​

NodePose


getNodeTransform() ​

getNodeTransform(nodeId): number[]

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:127

取该节点当前世界增量 D(列主序 number[16]);未编辑返回单位阵。

Parameters ​

nodeId ​

NodeId

Returns ​

number[]


getOverrides() ​

getOverrides(): object[]

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:264

序列化全部编辑(供宿主写 sidecar)。delta 为列主序 number[16]。

Returns ​

object[]


getSelectionPivot() ​

getSelectionPivot(nodeIds): [number, number, number] | null

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:390

选中集当前有效世界盒中心 [x,y,z];空或全内部节点返回 null。供 gizmo 摆位 + 旋转 pivot。

Parameters ​

nodeIds ​

NodeId[]

Returns ​

[number, number, number] | null


hasEdits() ​

hasEdits(): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:212

是否存在任意编辑。

Returns ​

boolean


isAnimatingOverrides() ​

isAnimatingOverrides(): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:698

True while an override tween is in flight.

Returns ​

boolean


isEdited() ​

isEdited(nodeId): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:205

该节点是否有编辑。

Parameters ​

nodeId ​

NodeId

Returns ​

boolean


isEditMode() ​

isEditMode(): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:461

Returns ​

boolean


isTransformable() ​

isTransformable(nodeId): boolean

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:116

该节点是否可变换:解析(merge 根→成员、装配/内部节点→子树叶)后至少有一个带 instance 的叶子。叶子(有 instance)恒 true,空装配 / 不存在节点为 false。 供上层 UI 判定选中项能否进变换面板/gizmo(与实际能被平移旋转的集合一致)。

Parameters ​

nodeId ​

NodeId

Returns ​

boolean


redo() ​

redo(): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:223

重做一步。空栈静默。

Returns ​

void


resetAll() ​

resetAll(): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:232

复位全部编辑。

Returns ​

void


resetNode() ​

resetNode(nodeId): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:226

复位某节点的编辑(清除 D,恢复原始世界矩阵)。

Parameters ​

nodeId ​

NodeId

Returns ​

void


resetNodes() ​

resetNodes(nodeIds): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:248

复位给定节点的编辑(清 D,恢复原始世界矩阵),作为一步历史。未编辑的节点跳过;无一可清则静默。

Parameters ​

nodeIds ​

NodeId[]

Returns ​

void


setEditMode() ​

setEditMode(on): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:455

进入/退出变换编辑模式(显示/隐藏 gizmo)。幂等。

Parameters ​

on ​

boolean

Returns ​

void


setGizmoMode() ​

setGizmoMode(mode): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:472

gizmo 把手族(默认 translate=平移箭头)。Move 工具→translate,Rotate 工具→rotate。改变触发 controller.setMode(rig 切换族 + 重建)。

Parameters ​

mode ​

GizmoMode

Returns ​

void


setGizmoSpace() ​

setGizmoSpace(space): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:464

gizmo 参考坐标系(默认 world)。改变触发 rig 重建。

Parameters ​

space ​

GizmoSpace

Returns ​

void


setNodePose() ​

setNodePose(nodeId, pose): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:547

绝对设置位姿。D = T(pos)·T(p)·R(rot)·T(−p)(绕原始几何中心)。一步历史。无 instance 静默跳过。

Parameters ​

nodeId ​

NodeId

pose ​

NodePose

Returns ​

void


setNodeTransform() ​

setNodeTransform(nodeId, deltaWorld): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:133

设该节点的世界增量 D(列主序 number[16])。绝对设值(覆盖既有 D)。无 instance 静默跳过(不污染 deltas,不发事件)。

Parameters ​

nodeId ​

NodeId

deltaWorld ​

number[]

Returns ​

void


setOverrides() ​

setOverrides(list): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:271

批量套用编辑(供宿主读 sidecar 后恢复)。会覆盖同名节点的现有 D。无 instance 的节点静默跳过。

Parameters ​

list ​

object[]

Returns ​

void


undo() ​

undo(): void

Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:221

撤销一步(委托共享栈;可能撤销可见性步)。空栈静默。

Returns ​

void