我正在尝试在 WebGL 中创建一个太阳系。 但是我不知道要设置照明。 我想在我的太阳下放一盏灯,让它 360 度发光。我的行星应该转换和接收阴影。为此,我的灯光需要 360 度转换阴影。 有可能做那样的事情吗?如果是这样,如何?我应该使用哪种类型的灯?
我的太阳有一个 meshBasicMaterial,我的行星有一个 meshShaderMaterial。谁能给我提供一些示例代码?
谢谢!
最佳答案
您应该为太阳添加一个 THREE.PointLight
- 它会向所有方向转换光。
阴影比较棘手,因为 Three.js 中的点光源不支持阴影转换。您有一些不太理想的选择:
- 使用 6 个纯阴影聚光灯或平行光,并将阴影摄像机排列成指向每个世界轴(即指向一个立方体)。这将是相当昂贵的。
- 使用一个(或多个)阴影转换光指向最感兴趣的区域,例如用户当前正在寻找的地方。
- 自行实现全方位阴影贴图(例如,双抛物面阴影只需要两个阴影贴图,而不是 6 个)。
- 省略阴影。空间中可以接收阴影的表面并不多,所以您真的需要它们吗?
请注意,使用阴影接收对象上的自定义 ShaderMaterial
,您需要在着色器中自己实现阴影(或包含 three.js 的阴影代码块)。
关于javascript - ThreeJS 创造一个太阳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186676/