FrodeTo
FrodeTo

Reputation: 83

Controlling camera in Forge viewer

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);

Upvotes: 1

Views: 3597

Answers (1)

cyrille
cyrille

Reputation: 2659

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) ;

Upvotes: 4

Related Questions