2014-09-03 37 views
3

想象一下,您有一個非常大的THREE.PlaneGeometry模擬地板的場景,並且您有一個相機隨機添加到場景中。Three.js可以將霧應用於區域而不是距離相機的距離?

如果我手動調整霧的近遠值,我可以以某種方式隱藏飛機的外部,使無限的印象。 到目前爲止,這麼好。

問題是,如果我讓我的相機在現場飛到飛機內的任意位置怎麼辦?如果隨機點足夠接近飛機外部,則霧不會掩蓋飛機的末端,因爲霧始終基於相機位置。

所以我的問題是,只有當你接近飛機的極限時,我們如何才能達到霧效果?

+0

這裏是一個[的jsfiddle](http://jsfiddle.net/andrevenancio/t3mtb8wv/)來說明我的主意。 – andrevenancio 2014-09-03 11:13:59

+0

用相機移動飛機怎麼樣,所以相機總是在飛機的中心? – WestLangley 2014-09-03 15:02:00

+0

如果我這樣做,雖然相機和飛機正在移動,這是因爲沒有發生正確的事情?它的目的是使它看起來像你在地形上飛行,但如果你超出界限,你只需進入一個「霧」區。我想要創建一個PointCloud粒子系統,在離場景越遠的地方,粒子系統的密度越高......但是這對GPU來說太多了吧? – andrevenancio 2014-09-03 15:57:37

回答

2

我對霧系統的工作原理沒有足夠的深入瞭解,所以如果有人能糾正我,那將是驚人的。

我猜霧只在相機上渲染,你不能將它應用到,比方說,一個對象,或者既不可以創建一個霧對象(例如由霧製成的立方體),除非你使用可以使對象看起來的着色器像「霧」,但是如果你進入的對象,你就無法看到了霧(或它不會呈現如預期)

什麼,但是你可以做的是動態的霧渲染基於改變您的相機位置,遠離中心的距離越遠,霧氣越接近相機。通過做一個簡單的減法(距離平面中心的X距離),X等於相機可以達到的最大距離,這很容易實現。

如果將平面的中心定位在0,0處,則會自動獲取相機所在的X和Y座標,因此距離XY平面中心的距離也很容易。然後你可以計算相對於X軸和Y軸的斜邊(參見下面我的gif)。

Hypotenuse on XY