2

カメラの回転を手動で 0,0 にトゥイーンしようとしています:

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

  });

トゥイーンは期待どおりに機能しますが、カメラに対するマウス コントロールが失われています。それを取り戻すために、私はmatrixAutoUpdateをtrueに設定しています

tween.onComplete(function(){
     document.querySelector('#camera').object3D.matrixAutoUpdate=true
});

しかし、その後、カメラの回転は元の位置 ( tween の前) に戻り、0,0 を維持したいと思います。私が欠けているものは何ですか?ありがとう

更新 以下は、threejs オブジェクトに入らずに aframe のみを使用するバージョンです

問題はカメラのルックコントロールコンポーネントだと思います

有効にすると、カメラの回転や setAttribute をアニメーション化できなくなります。最初に無効にする必要があります-アニメーションを起動してから再度有効にするよりも。

しかし、問題は、もう一度有効にしたときです。

camera.setAttribute ('look-controls-enabled',"true")

カメラは元の回転に戻ります (アニメーションをリセットする前の状態)。使用時の同様の問題matrixAutoUpdate=false/true

ここに私のペンがあります http://codepen.io/anon/pen/dMjrWd

左に 30 度回転すると、resetCamera アニメーションが発生します - 意図したとおりに動作します。ただし、look コンポーネントが無効になっている場合のみ。「animationend」イベントで再度有効にすると、回転が元の状態に戻り、resetCamera が何度もトリガーされます

4

4 に答える 4

0

あなたは本当にいじる必要はありませんmatrixAutoUpdate

しかし、あなたがそうであることを考えると、次のことを試して、positionquaternion、およびscaleを強制的に一致させmatrixます。

object.matrix.decompose( object.position, object.quaternion, object.scale );

three.js r.76

于 2016-04-23T17:53:39.927 に答える