Controlling camera in Forge viewer

时光毁灭记忆、已成空白 提交于 2019-12-25 08:49:24

问题


I'm trying to control the camera in the Autodesk Forge Viewer. Setting target and position seems to work fine, but if I try to set rotation or quaternion it do not have any effect.

To get the camera I use the getCamera function and then applyCamera after I have tried to set the parameters.

What I'm trying to achieve is to use the device orientation on a handheld device to rotate the model. Just using alpha and beta to set target is not a smooth experience.

// 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:


You need to use the setView() method

_viewer.navigation.setView (pos, target) ;

and may also need to set the up vector to make sure you orient the camera the way you want.

_viewer.navigation.setCameraUpVector (upVector) ;


来源:https://stackoverflow.com/questions/42376706/controlling-camera-in-forge-viewer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!