2017-02-21 43 views
0

Autodesk Forge Viewerでカメラを制御しようとしています。ターゲットと位置を設定するのはうまくいくようですが、ローテーションやクォータニオンを設定しようとすると効果はありません。Forgeビューアのカメラの制御

カメラを取得するには、パラメータを設定しようとした後にgetCamera関数を使用してからapplyCameraを使用します。

私が達成しようとしているのは、ハンドヘルドデバイスでデバイスの向きを使用してモデルを回転させることです。アルファとベータを使ってターゲットを設定するだけでは、スムーズな操作ではありません。

あなたはsetviewコマンド()メソッド

_viewer.navigation.setView (pos, target) ; 

を使用する必要があり、また、あなたがカメラにあなたが望むように向きを確認するために、最大ベクトルを設定する必要があるかもしれません。

// 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); 
+0

こんにちは、私は、昨年、モバイルデバイスでビューアのカメラを駆動する実験を行いました。これはそれに関するブログです。 https://forge.autodesk.com/cloud_and_mobile/2016/11/remotely-connect-forge-viewer-with-mobile-sensor-and-touch-by-javascript.html。 Viewer3D.jsコードをコピーしてカメラを回転させただけです。それが少し助けることができるかどうか見てみることができますか?そうでない場合、私たちが調査するためにあなたが演奏したコードスニペットをいくつか提供できますか? –

+0

こんにちは。私は最初に私のqestionに試みたもののコードスニペットを追加しました。クォータニオンを使用してコードを変更しようとしましたが、それでもやっていません。私のデバイスのアルファ値とベータ値は非常に「跳ね上がります」。 Chromeでシミュレートしたデバイスの向きで実行した場合はうまく見えます。 – FrodeTo

答えて

1

_viewer.navigation.setCameraUpVector (upVector) ; 
+0

私はそれを試みましたが、結果は同じです。実際のデバイスからのオイラーアングルは、Chromeでシミュレートされたアングルのようには動作しません。あなたは簡単な例をここでテストすることができます:https://deviceorientationtest.azurewebsites.net/ – FrodeTo

+0

私はあなたのコードを詳しく調べることができますが、私はすでにサンプルをhttp://vr.autodesk.io/で公開しています - ソースコード: https://github.com/cyrillef/google-cardboard-vr - それが役に立たない場合はお知らせください。デビューする予定です。 – cyrille

関連する問題