我有个问题。我想制作一个像光源(太阳)一样工作的球体。我发现meshPhongMaterial
有一个选项emissive: color
,shininess: intensity
但我没有设法编写太阳代码。有谁知道该怎么做?谢谢你的回答!
3 回答
如果您正在寻找创建发光风格的效果,我在http://stemkoski.github.io/Three.js/上写了一些示例,这些示例可能会有所帮助,包括:
http://stemkoski.github.io/Three.js/Selective-Glow.html
附带博客文章
http://stemkoski.blogspot.com/2013/03/using-shaders-and-selective-glow.html
以及更大气的辉光效果
http://stemkoski.github.io/Three.js/Atmosphere.html
和
http://stemkoski.github.io/Three.js/Shader-Halo.html
希望这可以帮助!
由于您没有具体的问题,我无法给您具体的答案。不过,您似乎有点迷茫,因此您可能会缺少以下内容:为了使某物看起来像光源,它必须做两件事:
- 照亮:您可以通过在其中创建一个新的 Light 对象来实现此目的。将您的对象和灯光都放在一个新的 THREE.Object3D 中是个好主意。
- 发光:您需要创建一个着色器来模糊该对象周围的像素。我在这里为您找到了专门针对three.js 的教程:Three.js 发光教程。
您可以尝试更高级的技术,例如添加Godrays。
祝你好运。
meshPhong 材质具有影响材质着色器内计算的参数“发射”和“光泽”,但这些参数不会给您想要的效果,它们仅用于计算最终颜色。
例如,您可以将聚光灯放在球体的确切位置,这样它就会照亮它周围的物体。但是,如果要实现发光球体的效果,则必须编写后处理着色器:
- 将球体渲染到帧缓冲区 1。
- 将相同的黄色(或其他亮色)球体渲染到帧缓冲区 2。
- 将帧缓冲区 2 中的内容模糊为后处理效果。
- 将原始图像(帧缓冲区 1)和模糊帧缓冲区 2 混合在一起以生成最终图像。
此外,一些示例没有使用实际的后处理来实现发光,但它们使用了技巧。
您渲染球体,然后在后面渲染一些带有“发光光环”纹理的四边形。访问:http ://threegraphs.com/charts/sample/world/了解如何模拟发光并围绕球体创建类似日食的圆圈。