镜头光晕消失 - three.js(LensFlare)

时间:2017-09-23 08:43:45

标签: 3d three.js

在这里:https://jsfiddle.net/q703Lzsu/,jpg图像用于耀斑,相机在camera.position.z=80或更少,一切正常。

camera.position.z = 80;

new THREE.TextureLoader().load( 
    /*"https://ibin.co/3apA1ybsZXgx.png"*/
    "https://upload.wikimedia.org/wikipedia/commons/9/99/Map_of_the_full_sun.jpg", (texture3) => {

    console.log('hereAAA');
    var flareColor = new THREE.Color( 0xffffff );

    var lensFlare = new THREE.LensFlare( texture3, 200, 0.0, THREE.AddieAAA');
    var flareColor = new THREE.Color( 0xffffff );

    var lensFlare = new THREE.LensFlare( texture3, 200, 0.0, THREE.AdditiveBlending, flareColor );
    lensFlare.position.set( 0,0,10 );

    scene.add( lensFlare );
});

但是,如果我使用camera.position.z=110或更高级别的闪光没有出现!

如果我在80到110之间使用某个数字(例如100),那么当以小角度(相机y-rotation cca。<-0.4, 0.4>)观察时,闪光会变得不可见。

3 个答案:

答案 0 :(得分:0)

three.js中的摄像机有近距离和远距离剪切。

OrthographicCamera( left, right, top, bottom, near, far )

left — Camera frustum left plane.
right — Camera frustum right plane.
top — Camera frustum top plane.
bottom — Camera frustum bottom plane.
near — Camera frustum near plane.
far — Camera frustum far plane.

尝试增加最后一个参数的值。

答案 1 :(得分:0)

那只是一次日食:) 当你放置camera.position.z=110因为被太阳隐藏时,你不会看到镜片褶皱。 注释将太阳网格添加到场景的线条,您将更好地理解。 lensflare源点不得位于任何可见的对象后面。

答案 2 :(得分:0)

这被发现是three.js中的一个错误。它在当前开发版本的three.js库中解决。