在Three.js中的MeshPhongMaterial或MeshLambertMaterial上投射阴影

kan*_*gax 8 textures shadow three.js

我觉得我在这里缺少一些简单的东西.

我使用了@WestLangley的JSFiddle,它演示了如何将阴影从一个物体投射到一个平面上.

当飞机充满颜色时,一切都按预期工作:

var groundMaterial = new THREE.MeshLambertMaterial({
  color: 0xFF0000
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后我改为使用纹理代替:

var groundMaterial = new THREE.MeshLambertMaterial({
  // color: 0xFF0000,
  map: texture
});
Run Code Online (Sandbox Code Playgroud)

突然,阴影消失了:

在此输入图像描述

这发生在MeshPhongMaterialMeshLambertMaterial.

请注意,相机位置和阴影配置均未更改.一切都保持不变,但阴影消失了.

纹理应该被"告知"接收光还是其他东西?

在r61,r66,r67上测试过.

Mar*_*zzo 1

这是一个相当老的问题,但为了提供一些结论,我想指出,存在此问题的版本已经得到修复。小提琴使用 Three.js r66,但最新版本(截至撰写本文时为 r107)不再存在此问题:

在此输入图像描述