我试图在Autodesk Forge查看器中控制摄像头。设置目标和位置似乎工作正常,但如果我尝试设置旋转或四元组,它没有任何作用。Forge查看器中的控制摄像头
要获取相机,我使用getCamera函数,然后在尝试设置参数后应用相机。
我想要实现的是在手持设备上使用设备方向来旋转模型。仅仅使用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);
嗨,去年,我做了一个实验,用移动设备驱动Viewer的摄像头。这是一个关于它的博客。 https://forge.autodesk.com/cloud_and_mobile/2016/11/remotely-connect-forge-viewer-with-mobile-sensor-and-touch-by-javascript.html。我只是复制一些Viewer3D.js代码旋转相机。你可以看看它是否有帮助吗?如果没有,你能提供一些你为我们调查过的代码片段吗? –
嗨。我已经添加了我第一次尝试访问我的问题的代码片段。我也尝试使用四元数来更改我的代码,但它仍然不好。我的设备的alpha和beta值非常“跳跃”。如果在Chrome中以模拟设备方向运行,它看起来不错。 – FrodeTo