我試圖在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