2013-02-16 29 views
-2

如何做一個三角形或一個平面的gourad陰影,其中三個點用相應的顏色給出?如何做一個三角形或平面的Gourad陰影,其中三個點用各自的顏色給出?

黃金三角ABC

點A的座標爲X1,Y1和顏色R1,G1,B1

點B的座標爲X2,Y2和色R2,G2,B2

C點的座標爲X3,Y3和顏色R3,G3,B3

任何人可以幫助

使用JavaScript只

+0

Gouraud着色模型及其實現已經有數十年的歷史。在創建帖子時,您似乎已經顯示了比您在研究答案時顯示的「Enter」按鈕更多的努力。我的-1。 – enhzflep 2013-02-16 03:15:34

+0

好的。如果是這樣,你可以提供一個鏈接,因爲我沒有得到它。 – user1982147 2013-02-16 03:29:03

回答

1

好的,當然。以下是C中的一個實現:http://www.nbb.cornell.edu/neurobio/land/oldstudentprojects/cs490-95to96/guo/report.html

如果內存正確地爲我提供服務,那麼您還會在Quake & /或Quake2源代碼版本中找到一個。

說實話,距離我上次實現它已經有18年了。早在消費電腦開始出現3d卡時,當然,即使在DirectX和OpenGL上都可以使用板載圖形芯片,也可以實現硬件實現。 當然,有能力使用WebGL在網頁中利用OpenGL。

算法真的很簡單直接。你渲染水平線。每一行都有一個開始顏色和一個結束顏色。您只需在這兩點之間插入顏色。爲了獲得每條水平線的起始顏色和結束顏色,可以對每個頂點給出的顏色進行插值。

它的顏色本身的只是線性插值 - 顏色僅在每個頂點從面部正常和光矢量計算,不像的Phong模型,其內插的入射角,然後將其用於計算每個像素處的顏色。 (Phong允許多邊形中間的鏡面高光,Gouraud在頂點包含在高亮區域時允許它們,Gouraud的計算明顯要便宜得多,因爲每個三角形的點積爲3點,而每個像素的點積爲蓬)

使用1個部件,ragther大於3

?...? 
..... 
..... 
..... 
?...? 

1...? 
..... 
..... 
..... 
5...? 

1...2 
..... 
..... 
..... 
5...3 

11122 
22222 
33322 
44433 
55433 

這是相當令人滿意的僅來自算法的描述來實現粗略的例子。 一對夫婦,你可以找到有用的資源:

shaderToy(WebGL的演示) - 洛德着色的http://www.iquilezles.org/apps/shadertoy/

JS例子 - http://eng-przemelek.blogspot.com.au/2010/05/gouraud-shading-in-javascript.html

玩得開心!