2017-09-23 6 views
0

Ici: https://jsfiddle.net/q703Lzsu/, avec image jpg pour flare et appareil photo à camera.position.z=80 ou moins tout fonctionne très bien.Lens flare disparaissant - three.js (LensFlare)

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); 
}); 

Mais si j'utilise camera.position.z=110 ou flare plus élevé ne semble pas!

Si j'utilise un nombre entre 80 et 110 (par exemple 100) flare obtient invisible quand on regarde vers elle aux petits angles (caméra y-rotation cca. <-0.4, 0.4>).

Répondre

0

Les caméras de three.js ont un tronc de clipping proche et lointain.

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. 

Essayez d'augmenter la valeur du dernier paramètre.

+0

Dans le violon que j'utilise la caméra de perspective, avec 1300 paramètres de loin, donc cela devrait suffire. – croraf

0

C'est juste une éclipse :) Vous ne voyez pas le lensflare quand vous mettez camera.position.z=110 parce qu'il est caché par le soleil. Commentez la ligne qui ajoute la maille du soleil à la scène et vous comprendrez mieux. Le point source lensflare ne doit pas être positionné derrière un objet pour être visible.

+0

La lumière parasite est à z = 10, et le soleil à z = 0 avec un rayon de 5. La lumière parasite n'est donc pas éclipsée par le soleil. – croraf

+0

C'est ... Avez-vous commenté la ligne pour voir ce que je veux dire ...? Vous devez savoir que l'origine du lensflare est le point central de votre texture, pas toute la texture elle-même. – ClassikD

+0

Je sais que s'il n'y a pas de soleil derrière, alors il n'y a pas un tel comportement. Il y a une sorte de bug s'il y a un objet derrière la fusée éclairante. Je ne comprends vraiment pas comment l'éclipse de soleil peut éclater si la fusée est en face du soleil de 5 unités. Si je déplace la caméra sur z = 70, il n'y a pas de disparition de la lumière parasite. – croraf

0

Cela a été trouvé être un bug dans three.js. Il est résolu dans la version de développement actuelle de la bibliothèque three.js.