three.js に組み込まれているシャドウ マップ プラグインを利用しようとしています。最初の困難の後、私は多かれ少なかれ許容できるイメージを持っていますが、最後の不具合が 1 つあります。その 1 つは、法線 0,0,1 で、いくつかの (すべて?) サーフェスの上に表示される影です。以下は同じモデルの写真です。
Three.js
Preview.app (Mac)
そして、影をセットアップするために使用されるコード:
var shadowLight = new THREE.DirectionalLight(0xFFFFFF);
shadowLight.position.x = cx + dmax/2;
shadowLight.position.y = cy - dmax/2;
shadowLight.position.z = dmax*1.5;
shadowLight.lookAt(new THREE.Vector3(cx, cy, 0));
shadowLight.target.position.set(cx, cy, 0);
shadowLight.castShadow = true;
shadowLight.onlyShadow = true;
shadowLight.shadowCameraNear = dmax;
shadowLight.shadowCameraFar = dmax*2;
shadowLight.shadowCameraLeft = -dmax/2;
shadowLight.shadowCameraRight = dmax/2;
shadowLight.shadowCameraBottom = -dmax/2;
shadowLight.shadowCameraTop = dmax/2;
shadowLight.shadowBias = 0.005;
shadowLight.shadowDarkness = 0.3;
shadowLight.shadowMapWidth = 2048;
shadowLight.shadowMapHeight = 2048;
// shadowLight.shadowCameraVisible = true;
scene.add(shadowLight);
更新: そして、ここに実例があります: http://jsbin.com/okobum/1/edit