从物体发出光

时间:2018-06-20 12:14:02

标签: three.js

我正在制作一个Three.js场景,其中有星星对象,我希望能够使它们“发光”。

通过发光,我的意思是使它们真正发光,而不仅仅是在它们周围施加“光晕”效果。

我试图将PointLight对象放置在与恒星相同的位置,这会使该对象发出光,但是如您所见,它不会使该对象“发光”,从而产生怪异的效果。 enter image description here

我当前的代码如下:

class Marker extends THREE.Object3D {
  constructor() {
    super();
    // load obj model
    const loader = new OBJLoader();
    loader.load(
      "https://supersecretdomain.com/star.obj",
      object => {
        object.traverse(child => {
          if (child instanceof THREE.Mesh) {
            // child.material.map = texture;
            child.material = new THREE.MeshLambertMaterial({
              color: 0xffff00
            });
            child.scale.set(0.01, 0.01, 0.01);
          }
        });
        this.add(object);
      }
    );
    const light = new THREE.PointLight(0xffff00, 0.5, 5);
    this.add(light);
  }
}

关于如何执行此操作的任何想法? ;)

2 个答案:

答案 0 :(得分:3)

为恒星添加点光源是使其他物体受到其光影响的正确方法。为了使星星本身发光,可以将材质的emissive颜色设置为黑色以外的颜色(为达到最佳效果,您可能希望它与灯光具有相同的颜色)。

答案 1 :(得分:1)

除了设置灯光和设置材质的发射特性外,如上文Jave所述。

您可能想研究三个后处理示例。.特别是虚幻Bloom传递...如果您能使它起作用,那么它确实可以卖出效果。

https://threejs.org/examples/webgl_postprocessing_unreal_bloom.html

注意高光发光实际上是如何渗入物体周围的场景中的...

enter image description here