2017-05-17 6 views
0

Raycasterまたはリモートが指しているプリミティブを描画したいと思います。私はaframeまたはthree.jsで何らかの "Orientationを取得する"メソッドを探しています。私のコントローラーが指しているところで、世界座標を取得するシンプルで速い方法がありますか? ありがとうございます!空想コントローラーオリエンテーション

アップデート:ここで コードです:

HTML: [...]

<a-entity id="remote" daydream-controller raycaster="objects: .selectable"> 
<a-cone id="ray" color="cyan" position="0 0 -2" rotation="-90 0 0" radius bottom="0.005" radius-top="0.001" height="4"></a-cone> 
<a-box id="position-guide" visible="false" position="0 0 -2"></a-box> 
</a-entity 

ここでは、HTMLにJavaScriptのである:ロードされた白昼夢のデータを取得するための

var rayEl = document.querySelector('#remote'); 
rayEl.addEventListener(
var rayElDirection = new THREE.Vector3(0,0,-1); 
rayEl.object3D.getWorldDirection(rayElDirection); 
console.log("Raycaster Direction: " + rayElDirection); 

答えて

0

Object3D、I found a PR that i'm not sure is in the current buildに転送しますが、three.jsの後に読み込まれる限り、独自のスクリプトとしてロードすることができます。あなたはそれを持っていたら

は、あなたは、コントローラの向きを取得することができます - それはあなたが利用可能な機能を見つけることObject3D's documentationをチェックアウトすることができTHREE.Object

継承するためTHREE.Object.getWorldDirection()は、デイドリームコントローラがどこにポイントされているかのベクトルを与えます。

これを.getWorldPosition()と組み合わせると、例えば、コントローラの表現をデバッグの目的でシーンのその位置に置くことができます。

+0

ありがとうございます!私はgetWorldDirection()関数を試しましたが、コントローラの現在の位置を指し示す方向ではありません。私はすでに別の方法を試みたが、何も動作していないようだ。四元数から情報を取得しようとすると、値は実際の方向を表すようには見えませんでした。 私は次の方向を試しました: 'var rayElDirection = new THREE.Vector3(0,0、-1); rayEl.object3D.getWorldDirection(rayElDirection); ' しかし、私はそれが現在のリモート位置を取得するようだと述べた。 – JllX

+0

rayElの種類はわかりません。デイドリームコントローラにアクセスするために使用している実装にリンクできますか? object3dにデータを間違って読み込んだ場合、正しく動作しません。また、回転させる必要があることを意味する90度回転してもかまいませんが、正のZ軸に沿った単位ベクトルでなければなりません。 daydreamcontroller.getworlddirection()は、そのオブジェクトの正の軸に沿って指すベクトルを返します。それは関数がすることです。 getworldposition()は、そのObject3Dの位置を返します。コードやヘルプを共有するだけです – OtterFamily

関連する問題