javascript - ThreeJS 创造一个太阳

标签 javascript html three.js webgl

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

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

谢谢!

最佳答案

您应该为太阳添加一个 THREE.PointLight - 它会向所有方向转换光。

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

  • 使用 6 个纯阴影聚光灯或平行光,并将阴影摄像机排列成指向每个世界轴(即指向一个立方体)。这将是相当昂贵的。
  • 使用一个(或多个)阴影转换光指向最感兴趣的区域,例如用户当前正在寻找的地方。
  • 自行实现全方位阴影贴图(例如,双抛物面阴影只需要两个阴影贴图,而不是 6 个)。
  • 省略阴影。空间中可以接收阴影的表面并不多,所以您真的需要它们吗?

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

关于javascript - ThreeJS 创造一个太阳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186676/

相关文章:

javascript - 通过 href 执行 JavaScript 函数

javascript - 如何从onchange获取值?

javascript - Angular2 setinterval 在 dom 更改时被阻止

javascript - 我想通过单击箭头导航使每个部分水平滚动?每个部分都有无限的垂直滚动

三.Js在webgl中绘制线性渐变纹理

javascript - Three.js 阴影贴图 - Shadow.camera 未定义

javascript - React-VR替换Pano时设置相机位置

javascript - React 初学者在将 Material-UI 示例应用到 React 项目时遇到问题。 State 与 Hooks 的工作方式不同

html - Bootstrap col exeeding 12 in single row 没有填充

html - 包含 Bootstrap 链接后如何保留原始 css 文件?