簡體   English   中英

GLSL隨時間平滑地改變網格的溫度(顏色)

[英]GLSL Smoothly change temperature(color) of mesh over time

我正在使用three.js編寫一個小程序。

我已經從PLY對象渲染了網格。 我想加熱靠近鼠標位置的多邊形。 當我移動鼠標時,附近的所有多邊形必須將顏色平滑地更改為紅色,其他多邊形必須隨時間平滑地恢復為其正常顏色。

我已經成功獲取了鼠標位置並更改了最近的多邊形的顏色,但是我不知道如何解決其他多邊形隨時間的平滑褪色問題。

我應該在着色器中執行此操作還是應該將任何其他數據傳遞給着色器?

我會做一個簡單的事情(在計時器中):

dtemp = Vertex_temp - background_temp;
Vertex_temp -= temp_transfer*dtemp*T/dt;

其中temp_transfer=<0,1>為無單位系數將調整熱傳遞的速度。 dt [sec]是經過的時間(計時器或更新例程的間隔), T [sec]temp_transfer系數的時間標度。

因此,如果您的鼠標遠不如讓background_temp=0.0 [C]且如果未將其設置為background_temp=255.0 [C]現在可以直接使用Vertex_temp來計算顏色...將其用作紅色通道<0,255>

但是,正如您所看到的,這更適合在CPU端而不是在GLSL中執行,因為您需要使用其先前的值更新每個幀的顏色VBO ...在GLSL中,您需要將其編碼為紋理或某種東西並進行渲染將新值轉換為另一個值,然后將其轉換回VBO,這太復雜了……也許計算着色器可以單次通過它,但我對這些並不熟悉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM