私は0,0に手動でトゥイーンカメラ回転しようとしています:AFRAME/threejsカメラのマニュアル回転
camera.object3D.matrixAutoUpdate=false;
var orgrot = { x : camera.object3D.rotation.x, y: camera.object3D.rotation.y };
var target = { x : 0, y: 0 };
var tween = new TWEEN.Tween(orgrot).to(target, 500);
tween.onUpdate(function(){
camera.object3D.rotation.x= this.x;
camera.object3D.rotation.y= this.y;
camera.object3D.updateMatrix();
});
期待通りトゥイーンは動作しますが、私はカメラの上にマウスコントロールを失うのです。それを取り戻すため 私は本当の
tween.onComplete(function(){
document.querySelector('#camera').object3D.matrixAutoUpdate=true
});
にmatrixAutoUpdateを設定していますが、その後、カメラの回転は、(トゥイーン前の)元の位置に変更し、私は0,0を維持したいと思います。私は何が欠けているのですか?おかげ
UPDATEは、以下のオブジェクトのみthreejsに行かなくてもAFRAME使用したバージョンである
私は有効にすると、問題が
カメラルック制御コンポーネントだと思う - 私はカメラの回転、あるいはsetAttributeメソッドをアニメーション化することはできません。 私はそれを最初に無効にする必要があります - アニメーションを起動し、再度有効にするよりも。
しかし、問題は、私は再びそれを有効にすると、次のとおりです。
camera.setAttribute ('look-controls-enabled',"true")
カメラは元の回転(リセットアニメーション前の状態)になります。意図したとおり、それは動作します - ここmatrixAutoUpdate=false/true
を使用して 同様の問題は、私のペンを使用すると、左30度回転させた場合、それはresetCameraアニメーションを起動しますhttp://codepen.io/anon/pen/dMjrWd
です。 lookコンポーネントが無効の場合のみです。 "animationend"イベントで再度有効にすると、回転が元の状態に戻り、何度もresetCameraがトリガーされます。
別のエンティティにカメラをラップすることについてのヒントをありがとう。 これはおそらくうまくいくかもしれませんが、計算が少し複雑になるので、カメラレベルで解決できるかどうか疑問です。 問題を表示するためにcodepenで投稿を更新しました – KChris
@KChris同じ問題があります。元のカメラの回転をリセットすることはできません。これを行うためには、カメラの周りに親要素をラップして計算を行う必要があります。 (ときどきローテーションがうまくいかないので、私はそれらを行うことはできません) 解決策は見つかりましたか? – alex