在Forge查看器中控制相机

时间:2017-02-21 19:54:37

标签: autodesk-forge autodesk-viewer

我试图在Autodesk Forge Viewer中控制相机。设置目标和位置似乎工作正常,但如果我尝试设置旋转或四元数,它没有任何效果。

要获取相机,我使用了getCamera函数,然后在尝试设置参数后使用applyCamera。

我想要实现的是在手持设备上使用设备方向来旋转模型。仅仅使用alpha和beta设置目标并不是一种顺畅的体验。

// get camera
var cam = _viewer.getCamera();

// get position
var vecPos = cam.position;

// get view vector
var vecViewDir = new THREE.Vector3();
vecViewDir.subVectors(cam.target,cam.position);

// get length of view vector
var length = vecViewDir.length();

// rotate alpha
var vec = new THREE.Vector3();
vec.y = length;
var zAxis = new THREE.Vector3(0,0,1);
vec.applyAxisAngle(zAxis,THREE.Math.degToRad(alpha));

// rotate beta
var vec2 = new THREE.Vector3(vec.x,vec.y,vec.z);
vec2.normalize();
vec2.negate();
vec2.cross(zAxis);
vec.applyAxisAngle(vec2,THREE.Math.degToRad(beta) + Math.PI / 2);

// add to camera
cam.target.addVectors(vecPos,vec);
_viewer.applyCamera(cam,false);

1 个答案:

答案 0 :(得分:1)

您需要使用setView()方法

_viewer.navigation.setView (pos, target) ;

并且可能还需要设置向上矢量以确保您按照自己的方式定位相机。

_viewer.navigation.setCameraUpVector (upVector) ;