2017-09-23 60 views
0

在這裏:https://jsfiddle.net/q703Lzsu/,與耀斑和相機在camera.position.z=80或以下的JPG圖像一切工作正常。鏡頭光暈消失 - 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); 
}); 

但是,如果使用camera.position.z=110以上耀斑不會出現!

如果使用在一些數量的80和110之間(例如100)在小角度(攝像機y-rotation CCA。<-0.4, 0.4>)看往它當光斑變得不可見。

回答

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. 

嘗試增加最後一個參數的值。

+0

在小提琴中,我使用了透視相機,其中1300作爲參數,所以它應該足夠了。 – croraf

0

這只是一個日食:) 當你把camera.position.z=110,因爲它被太陽隱藏,你不會看到lensflare。 評論添加太陽網格到場景的線條,你會更好地理解。 lensflare源點不得放置在任何可見物體的後面。

+0

鏡頭光暈在z = 10處,太陽在z = 0處半徑爲5.因此鏡頭光斑不會被太陽遮擋。 – croraf

+0

這是....你有評論線看到我的意思...?你必須知道lensflare的起源是紋理的中心點,而不是整個紋理本身。 – ClassikD

+0

我知道如果沒有太陽落後,那麼就沒有這樣的行爲。如果在耀斑後面有物體存在某種錯誤。我真的不明白,如果太陽前的耀斑在5個單位之內,日食會發生什麼。如果我將相機移動到z = 70,那麼沒有耀斑消失。 – croraf

0

這被發現是three.js中的一個錯誤。它是在three.js庫的當前開發版本中解決的。