2016-10-05 3 views
0

私はThreeJSのシャドウで作業しています。私はWebGLRendererでPerspectiveカメラを使用しています。照明の設定はそのままです。壁の近くで面白い三角シャドウ影

var light = new THREE.SpotLight(0xdddddd, 1); 
light.castShadow = true; 
light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(60, 1, 1, 2500)); 
light.shadow.bias = 0.0001; 
light.shadow.mapSize.width = 1024; 
light.shadow.mapSize.height = 1024; 
light.position.set(100, 800, 0); 

私が得るのは、私が壁を閉じるときに影を切ることです。私はShadow Biasと一緒に遊んだが、私にとっては暗闇の中で完全に刺すようだ。

私が得意とするのは、この奇妙な影の動きです。スクリーンショットを添付し、それを指している矢印とともに赤で丸で囲んだ。ライトが壁から反射して影を消しているかのように、シャドウがどのようにカットされているかに注目してください。これを避ける方法はありますか?

enter image description here

+0

シャドウカメラ錐台がそれを点検し、ちょうどしようとする[シャドウカメラヘルパー](http://stackoverflow.com/a/35178593/4977165)を使用し、狭くすることがあるように見えますそれを '' '60''から' '' '' '' 'と言うように増やしてください。 –

+0

私があなたが指摘したように例を設定してしまったので、あなたが正しいと思います。 – Dale

+0

'' 'light.shadow = new THREE.LightShadow(新しいTHREE.PerspectiveCamera(90、1、1、2500));' '' –

答えて

1

は、ほとんどの場合、シャドウカメラfrustmは狭くすることです。あなたはshadow camera helperを使用して、それを確認することができます。

var helper = new THREE.CameraHelper(light.shadow.camera); 
scene.add(helper); 

影のカメラがあるため、パフォーマンスの大きさに制限されていますが、あなたのニーズに合うかだけのために60から90にその角度を(増加することから、すべての飛行機を調整することができます例):

light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(90, 1, 1, 2500));

関連する問題