0

だから私はThreeJSで影を扱っています。WebGLRenderer で遠近法カメラを使用しています。照明設定はこんな感じ。

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

私が得ているのは、壁に近づくと影が切れることです。私はシャドウ バイアスでプレイしましたが、私にとっては暗闇での完全な刺し傷です。

私が得ているのは、この奇妙な影の動作です。スクリーンショットを添付し、それを指す矢印とともに赤丸で囲みました。光が壁に反射して影を打ち消しているかのように、影がどのようにカットされているかに注目してください。これを回避する方法はありますか?

ここに画像の説明を入力

4

1 に答える 1

1

ほとんどの場合、シャドウ カメラ錐台が狭くなっています。シャドウ カメラ ヘルパーを使用して確認できます。

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

于 2016-10-06T22:19:37.307 に答える