2017-04-14 130 views
0

我試圖讓lensflare在ThreeJS中工作。 當距離相機有距離時,它似乎可以正常工作,但如果我將相機移動到距離lensflare大約50個單位或更少的距離,則耀斑消失!爲什麼?lensflare消除和渲染太慢

更新: 進一步調查之後我注意到,鏡頭光暈工作在webgl_lensflares.html例如罰款。問題是當我嘗試將它添加到ThreeJS編輯器。將它添加到編輯器會導致3個問題:

  1. 渲染變得非常緩慢。
  2. 當我旋轉場景時,lensflare可以很好地旋轉,但是當我移動場景時,lensflare會移向相反的方向。
  3. 如果我把鏡頭光標放在(0,0,0)處,當它離我們太近時它會消失,但是如果我把它放在遠離原點的位置(如(0,10,0)),它沒有那個問題。

這裏是我加入到編輯器中Viewport.js代碼:

var textureLoader = new THREE.TextureLoader(); 
    var textureFlare0 = textureLoader.load("textures/lensflare/lensflare0.png"); 
    var flareColor = new THREE.Color(0xffffff); 
    flareColor.setHSL(0.55, 0.9, 0.5 + 0.5); 
    var lensFlare = new THREE.LensFlare(textureFlare0, 100, 1.0, THREE.AdditiveBlending, flareColor); 
    lensFlare.position.set(0, 0, -10); 
    scene.add(lensFlare); 
+0

什麼鏡頭光暈?你在使用THREE.js的例子嗎?或者您是否編寫/下載/複製自定義後期着色器?請包括您擁有的內容,您嘗試糾正問題的內容以及幫助我​​們重現您所看到內容的示例代碼等詳細信息。 – TheJim01

+0

我正在使用這個Three.js示例:webgl_lensflares.html –

+0

我無法重現您看到的問題。也就是說,更新鏡頭耀斑的代碼就在這個例子中,所以你可以看到相機四處移動時會發生什麼。比較相機在遠處的結果,而相機與您描述的非常接近。我的猜測是其中一個結果值變成了「NaN」,這導致耀斑位置變得不確定。 – TheJim01

回答

0

我想通了,回答我的所有3個問題:

  1. Netbean調試器減緩渲染。一旦我關閉了Netbean調試器,它變得更快。我仍然注意到耀斑渲染會減慢渲染效果,但現在至少可以使用。
  2. 鏡頭會移動反對方向的原因是因爲我通過了1.0作爲第三個參數。應該是0.0
  3. 在(0,0,0)我沒有看到耀斑的原因是因爲在該位置上有另一個形狀。如果它位於另一個形狀的內部,顯然耀斑是不可見的。我錯誤地認爲耀斑是最後呈現的,因此始終可見。