我正在创建一个使用MeshToonMaterial
投射和接收阴影的球体,但这会在最黑暗的部分给我一个不规则的阴影。
有不规则阴影的球体:
仔细观察球体:
光是:
light = new THREE.PointLight(0xffffff, 0.8, 18);
light.position.set(-3,6,-3);
light.castShadow = true;
light.shadow.camera.near = 0.1;
light.shadow.camera.far = 25;
light.shadowBias = 0.0015;
scene.add(light);
球体是:
mesh = new THREE.Mesh
(
new THREE.SphereBufferGeometry( 1, 32, 16 ),
new THREE.MeshToonMaterial({color:0xff4444})
);
mesh.position.y += 1;
mesh.receiveShadow = true;
mesh.castShadow = true;
mesh.position.set(-2.5, 3/2, 2.5);
scene.add(mesh);
渲染器:
renderer = new THREE.WebGLRenderer();
renderer.setSize(800,400);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
我尝试过其他模型和阴影贴图类型,结果相似。
如果我设置:
mesh.castShadow = false;
然后我得到的是:
这几乎就是我所寻找的风格,但我也需要它来施放阴影。
我想避免使用额外的球体投射阴影。
我怎样才能做到这一点?
答案 0 :(得分:0)
禁用在球体网格上接收阴影将阻止使用投射阴影渲染阴影,但它仍会在平面上投射阴影。
NotFoundError: /home/g_cloud/exe_paul/1epoch1000; No such file or directory
但是,这意味着球体也不会从其他物体上投射任何阴影。
除此之外,看起来问题与香椿着色器处理投射阴影的方式有关。