2016-04-23 26 views
1

私は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がトリガーされます。

答えて

0

本当にmatrixAutoUpdateを使う必要はありません。

しかし、あなたがしていることを考えると、matrixに一致するようにpositionquaternion、そしてscaleを強制するには、次の試してみてください。私はいくつかの問題を参照してくださいr.76

0

three.js

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

を。フレームを使用している場合は、object3Dに直接アクセスしないでください。あなたが独立して実行されているトゥイーンのカメラを変更したい場合は、別のエンティティ

にカメラをラップすることができますあなたはthe declarative API

を使用して任意のエンティティにトゥイーンを適用することができます

cameraEl.setAttribute('position', {x: 0, y: 0; z;0 })

を行う必要があります<a-entity rotation="0 360 0"><a-entity id="camera" camera><a-animation ...></a-animation></a-entity></a-entity>

+0

別のエンティティにカメラをラップすることについてのヒントをありがとう。 これはおそらくうまくいくかもしれませんが、計算が少し複雑になるので、カメラレベルで解決できるかどうか疑問です。 問題を表示するためにcodepenで投稿を更新しました – KChris

+0

@KChris同じ問題があります。元のカメラの回転をリセットすることはできません。これを行うためには、カメラの周りに親要素をラップして計算を行う必要があります。 (ときどきローテーションがうまくいかないので、私はそれらを行うことはできません) 解決策は見つかりましたか? – alex

関連する問題