Three.js - 发光的球体

13

我有个问题。 我想制作一个像光源(太阳)一样工作的球体。 我发现 meshPhongMaterial 有一个选项,如 emissive: colorshininess: intensity,但我无法编写太阳的代码。 有人知道怎么做吗? 感谢答案!


尝试编码。如果您在代码中遇到任何问题,我们可以提供帮助。 - clu3Less
3个回答

24

感谢您的所有工作。我总是去那里学习更多关于如何在threejs中做某些事情的知识。对于发光的例子,如何为复合对象执行此操作,例如我有由缓冲合并几何体组成的分子结构,我正在尝试创建类似于下图所示的电荷云。任何指针应该如何处理?变形球体?如果是这样,怎么做?还有其他方法吗? - Ravi Gidwani

3
由于您没有具体的问题,我无法给您具体的答案。不过您似乎有点迷失,以下是您可能缺少的内容:要使某物看起来像光源,它必须做两件事:
  1. 照明:通过在其中创建一个新的Light对象来实现。最好将您的对象和光线都放在一个新的THREE.Object3D中。
  2. 发光:您需要创建一个着色器来模糊该物体周围的像素。我为您找到了一个特定于three.js的教程:Three.js glow tutorial

还有一些更高级的技术,您可以尝试添加神光等。

祝您好运。

3

meshPhong材质有“emissive”和“shininess”参数,它们会影响材质着色器内部的计算,但它们并不能给出你想要的效果,它们只是用于计算最终颜色。

例如,您可以将聚光灯放置在与球体完全相同的位置,以使其周围的对象变亮。但是,如果您想要实现发光球体的效果,则需要编写后处理着色器:

  • 将球体渲染到帧缓冲区1中。
  • 将相同的黄色(或其他明亮的颜色)球体渲染到帧缓冲区2中。
  • 将帧缓冲区2中的内容作为后处理效果进行模糊处理。
  • 将原始图像(帧缓冲区1)和模糊的帧缓冲区2混合在一起,生成最终图像。

此外,有些示例并未使用实际的后处理来实现发光效果,而是使用了技巧。

您可以渲染球体,然后在背景中渲染一些具有“发光光环”的纹理的四边形。 访问:http://threegraphs.com/charts/sample/world/ 以了解如何模拟发光并在球体周围创建类似日食的圆圈。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接