You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Viewer中多次平移模型后,如何恢复至初始位置?

模型平移后恢复初始位置的实现方案

初始位置信息的存储情况

Autodesk Viewer加载模型后,模型实例的originalTransform属性会默认存储其初始变换矩阵,这个矩阵包含了模型加载完成时的原始位置、旋转及缩放信息,不会随后续的平移/变换操作自动修改,是恢复初始状态的核心依据。

恢复初始位置的具体操作

针对整个模型的恢复

如果是对整个模型执行的平移操作,直接调用模型的setPlacementTransform方法,传入初始变换矩阵即可:

// 获取当前加载的模型实例
const model = viewer.model;
// 恢复到初始位置
model.setPlacementTransform(model.originalTransform);
// 刷新视图使变更生效
viewer.impl.invalidate(true);

针对单个构件的恢复

如果是对模型中的单个构件执行平移,需要提前备份该构件的初始变换矩阵(可在构件加载完成时获取),恢复时再将该矩阵赋值回去:

// 假设提前备份了构件的初始矩阵,比如在加载完成时存储
const initialMatrix = viewer.getFragmentList().getMatrix(fragId, new THREE.Matrix4());

// 恢复构件位置时
viewer.getFragmentList().setMatrix(fragId, initialMatrix);
viewer.impl.invalidate(true);

多次平移场景的注意事项

  • 每次执行新的平移操作前,无需重复备份初始矩阵,model.originalTransform会始终保留模型加载时的原始状态。
  • 如果需要在多次平移操作中切换不同位置,可以额外存储每次平移后的变换矩阵,实现多状态切换。

内容的提问来源于stack exchange,提问作者Igor Barcelos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:42:03