ThreeJS创造了太阳

时间:2013-01-06 20:59:58

标签: javascript html5 three.js webgl

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

我的太阳有一个meshBasicMaterial,我的行星有一个meshShaderMaterial。任何人都可以如此友善地为我提供一些示例代码吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

你应该为太阳添加THREE.PointLight - 它会向所有方向投射光线。

由于Three.js中的点光源不支持阴影投射,阴影更加棘手。你有一些不太理想的选择:

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

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

答案 1 :(得分:2)

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