ThreeJS创造了太阳

use*_*041 1 javascript html5 webgl three.js

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

我的太阳有一个meshBasicMaterial,我的行星有一个meshShaderMaterial.有人可以这么善良地为我提供一些示例代码吗?

谢谢!

Tap*_*pio 5

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

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

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

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