恢复时保存的相机参数在 Autodesk Forge Viewer 中显示不同的视图

Saved camera parameters when restored shows different view in Autodesk Forge Viewer

我们使用类似的代码如下 -

// Get camera params from viewer and save it
let camParams = oViewer.getViewArrayFromCamera();

// Do something - rotate, zoom, pan etc

// Restore the view as it was
oViewer.setViewFromArray(camParams);

这适用于某些视图,但在某些情况下无法恢复准确的视图。

我们在从 http://extract.autodesk.io 中提取的模型之一中编写了示例代码,它显示了这个问题。 我们可以在支持邮件中发送示例代码。

保存和恢复视图的最简单方法是使用 navigation 界面:

const pos = NOP_VIEWER.navigation.getPosition(); //save current camera position
const target = NOP_VIEWER.navigation.getTarget(); //save current camera target
NOP_VIEWER.navigation.setView(pos,target) //restore

或者,如果您不介意其他状态通过,则只需恢复 Viewer 的状态

根据 Bryan Huang 的建议,我尝试使用 viewer state 并且效果很好

// Get viewer state and save it
let viewerState = oViewer.getState();

// Do something - rotate, zoom, pan etc

// Restore the view as it was
oViewer.restoreState(viewerState);