Appearance
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
getGizmoSpace()
getGizmoSpace():
GizmoSpace
Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:469
Returns
getNodeLocalPose()
getNodeLocalPose(
nodeId):NodePose
Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:522
Local 帧相对位姿:平移分量投影到节点当前有效局部轴(与 applyTranslation('local') 同一基底,故面板按差量施加可往返自洽),旋转沿用编辑欧拉。与 getNodePose(世界绝对、 绕设计原位)一一对应,供面板 Local 帧累计显示——未编辑返回零位姿。
Parameters
nodeId
Returns
getNodePose()
getNodePose(
nodeId):NodePose
Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:500
读绝对位姿(平移 mm + 欧拉度 XYZ,绕原始几何中心)。未编辑返回零位姿。
Parameters
nodeId
Returns
getNodeTransform()
getNodeTransform(
nodeId):number[]
Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:127
取该节点当前世界增量 D(列主序 number[16]);未编辑返回单位阵。
Parameters
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
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
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
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
Returns
void
setGizmoSpace()
setGizmoSpace(
space):void
Defined in: packages/viewer-core/src/public/managers/TransformManager.ts:464
gizmo 参考坐标系(默认 world)。改变触发 rig 重建。
Parameters
space
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
pose
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
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