您好,我想知道有没有办法通过写代码的方式来改变 Forge Viewer 相机的位置,这是有办法做到的吗?
goToView的性能吃不消
.Viewing.Viewer3D.navigation.getCamera()
获取到相机之后操作相机
然后更新this._navapi.setView(newPosition, newTarget);
首先把视角调到自己想要的视角,然后用viewer.autocam.getCurrentView();获取当前自己想要的这个视角。以下的值在你想要的当前视角的结构里可以找到,直接进行替换就好。有值的替换值,其他的不用动。这只是基础的写法,可以根据自己想要的效果进行优化。
//初始化模型视角
const eye = viewer.navigation.getEyeVector();
const newPosition = new THREE.Vector3(-508.8144114263626, -280.3273446852653, 266.7830755532873);
const target = eye.add( newPosition );
const up=new THREE.Vector3(0.3887726104595453,0.12839765943236225,0.9123430815262217);
const worldUp=new THREE.Vector3(0,0,1);
const center=new THREE.Vector3(-446.59100073377203,-254.7583215368543,236.66966636633654);
const pivot=new THREE.Vector3(-464.94482906148437,-217.88815652611004,230.05122957846686);
const defaultViewer ={
position: newPosition.clone(),
up: up.clone(),
center: center.clone(),
pivot: pivot.clone(),
fov: 53.130101602940826,
worldUp: worldUp.clone(),
isOrtho: false
};
// 将信息更新到相机上
viewer.autocam.goToView(defaultViewer);
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
可以的,在 Forge Viewer 里头有很多方法可以做到这点,这边我会以
AutoCam.goToView()
来示范,以下样例假设相机的新位置是 ( x1, y1, z1 ):以上希望对你帮助~