2013-05-09 19 views
8

これは本当に新しいものです。私はPointerLockControlsで飛び回ることができるシンプルな3Dシーンを作りたいと思っていますが、私は懐中電灯を持っていたいと思っています。スポットライトはカメラと同じ方向を指すはずです。Point three.js(懐中電灯)と同じ方向のスポットライト

私はカメラに従うようにスポットライトを作りましたが、ターゲットは0,0,0にバインドされています。

これを達成する最も良い方法は何ですか?

ありがとうございます。

答えて

12

SpotLightターゲットは、Vector3ではなく、Object3Dです。そして、このような何かを、あなたはまだスポットライトを使用する場合は

scene.add(camera); 
camera.add(pointLight); 

spotlight.target = myObject; 

あなたのケースでは最良の解決策は、代わりにPointLightを使用して、このパターンを使用することです

scene.add(camera); 
camera.add(spotLight.target); 
spotLight.target.position.set(0, 0, -1); 
spotLight.position.copy(camera.position); // and reset spotlight position if camera moves 

シーンの子としてカメラを追加する必要はありませんが、カメラの子としてライトが追加されるため、この場合は必須です。

three.js r.69

+0

ええ、PointLightは私に影を与えません。彼らにPointLightを持たせる方法はありますか? –

+0

trueの場合、pointLightsは影をサポートしません。しかし、光がカメラのどこにあるのかというと、シャドウを投影しているオブジェクトが途中にあるので、とにかく影を見ることはできません。 – WestLangley

+0

私はおそらく悪い例 - 仕事: node.jsによってサーバー、(マルチプレイヤー)として同期されたシーンで2つのユニットが必要で、ユニットのそれぞれにフラッシュライトを持ち、定義された方向を指し示したい。ソケットでそのような情報を送信する最良の方法は何ですか? (方法はどこですか?): –

8

Iは次のように私が解決同一の問題を有していた:スポットライトの.TARGETオブジェクト(およびいない位置)にする必要があるため

flashlight = new THREE.SpotLight(0xffffff,4,40); 
camera.add(flashlight); 
flashlight.position.set(0,0,1); 
flashlight.target = camera; 

を私が見つかりました。精神的に簡単に懐中電灯を直接の背後に置き、カメラカメラに向けてください。したがって、光がカメラを照らし、その前のものを照らします。

このアプローチは、懐中電灯が胸の近く(身体の中央)に保持され、片側がオフでない懐中電灯の効果がある場合には問題ありません。上記WestLangleyのソリューションに触発さ

+0

これは私のために働いてくれてありがとう!いくつかの作業コードを見つけようとしています。スポットライトをカメラとは独立してインタラクティブにすることができますか?私はここで質問しました:http://stackoverflow.com/questions/17827292/add-interactivity-to-a-spotlight-in-three-js – Paul

2

は、私がspotlight.targetスポットライト自体がそれは車や銃のように、カメラまたは他の目的であるかどうか、同じオブジェクトに子として追加することができることを見出しました。次に、それらは親オブジェクトに対して相対的に配置されるため、あるオブジェクトから別のオブジェクトへの位置のコピーを維持する必要はありません。

scene.add(camera); 
camera.add(gun); 
gun.position.set(-30,-30,0); 
gun.add(spotlight); 
spotlight.position.set(0,0,30); 
gun.add(spotlight.target); 
spotlight.target.position.set(0,0,31); 

をそして今銃は、デフォルトでは、カメラに従います、そしてスポットライトが銃に沿って点灯します:

あなたは、例えば、このような何かを行うことができます。銃が何らかの理由で回転した場合(弾丸を逸らす、地面に這うなど)、スポットライトも回転します。スリーは素晴らしいソフトウェアです。 :-)

スポットライトをカメラに取り付け、カメラと同じ方向に向け、中心から遠ざけて配置すると、ライトコーンは常に円形に見えます。多くのアプリケーションでは、より涼しく、より現実的に見えます。投影では形状が動的に変化します。小さなオフセットはすべて(私はその1つをテストしていないが、上記の私の例では)です。

関連する問題