1

我正在尝试在 WebGL 中创建一个太阳系。但是我不知道设置照明。我想在我的太阳上放一盏灯,让它360度投射光。我的行星应该投射和接收阴影。为了实现这一点,我的灯光需要 360 度投射阴影。有可能做这样的事情吗?如果是这样,怎么做?我应该使用哪种类型的灯?

我的太阳有一个meshBasicMaterial,我的行星有一个meshShaderMaterial。谁能给我一些示例代码?

谢谢!

4

2 回答 2

5

您应该THREE.PointLight为太阳添加一个 - 它会将光线投射到各个方向。

阴影比较棘手,因为 Three.js 中的点光源不支持阴影投射。您有一些不太理想的选择:

  • 使用 6 个仅限阴影的聚光灯或定向灯,阴影摄像机排列为指向每个世界轴(即进入立方体)。这将是相当昂贵的。
  • 使用一个(或多个)指向最感兴趣的区域的阴影投射灯,例如用户当前正在看的地方。
  • 自己实现全方位阴影贴图(例如双抛物面阴影只需要两个阴影贴图而不是 6 个)。
  • 省略阴影。太空中可以接收阴影的表面并不多,所以你真的需要它们吗?

请注意,使用自定义ShaderMaterial阴影接收对象,您需要自己在着色器中实现阴影(或包含三个.js 的阴影代码块)。

于 2013-01-09T09:05:21.610 回答
2

听起来您需要使用全向灯。

于 2013-01-06T21:14:29.977 回答