【发布时间】:2026-02-21 14:55:02
【问题描述】:
最后,我需要一个正常的阴影。但是使用带有 Lambert / Phong 材料的 Spot / Directional 灯我没有得到正确的结果:
当我使用带有 Lambert 材质的聚光灯时,这种材质不会对光做出反应(图 1、2)。 当我使用 Phong 材质的 Spot Light 时,我得到阴影,像图案一样,不光滑(图 3、4)。 当我将定向光与 Lambert / Phong 材料一起使用时,我得到了平滑,但阴影不合适(图 5 - 8)。
我将这个偏好用于阴影:
renderer.shadowMap.enabled = true;
renderer.shadowMapSoft = true;
renderer.shadowCameraNear = 3;
renderer.shadowCameraFar = camera.far;
renderer.shadowCameraFov = 50;
renderer.shadowMapBias = 0.0039;
renderer.shadowMapDarkness = 0.5;
renderer.shadowMapWidth = 1024;
renderer.shadowMapHeight = 1024;
这对于灯光来说:
var ambientLight =new THREE.AmbientLight( 0x555555 );
scene.add(ambientLight);
和
var spotLight = new THREE.SpotLight( 0xffffff);
spotLight.position.set( 12, 22, -25 );
spotLight.castShadow = true;
scene.add(spotLight );
和
var directionalLight=new THREE.DirectionalLight( 0xffffff, 0.5 );
directionalLight.position.set( 12, 22, -25 );
directionalLight.castShadow = true;
scene.add(directionalLight);
此外,我对所有这些示例都使用相同的 castShadow 和 receiveShadow 属性。
如果需要,其他代码可以作为本页源代码观看:
对于我的所有示例,此代码都相同,不包括光 - 材料组合。
【问题讨论】:
-
现在我在另一台机器上检查了我的示例,发现使用 Spot Light / Lambert 材质的示例与 Spot Light / Phong 材质的工作方式相同。这可能取决于视频卡吗?但其他问题仍然相同:使用 Spot Light 的阴影不平滑,使用 Directional Light 的两种材质的组合阴影效果不佳。 new example
-
THIS 问题可能相关
-
是的。 @2pha,谢谢。它解决了我最近的问题,但我有一个新问题。所有未点亮的面都没有颜色:example。如果我应该创建一个新问题,或者扩展这个问题?
标签: javascript three.js