直接上乾貨
vector3 normals = line.getcomponent
().mesh
.normals
; for (int i = 0
; i < normals.length; i++)
line.getcomponent
().mesh
.normals = normals;
int ********s = line.getcomponent
().mesh
.********s
; for (int i = 0
; i < ********s.length; i += 3)
line.getcomponent
().mesh
.********s = ********s;
剛開始想到做法線翻轉,只想到了直接把法線取負值,就是第一段**
vector3 normals = line.getcomponent
().mesh
.normals
; for (int i = 0
; i < normals.length; i++)
line.getcomponent
().mesh
.normals = normals;
結果是這樣子:
就是乙個沒有任何光線資訊的樣子(純黑)
然後轉戰google,5分鐘後解決問題= =
int ********s = line.getcomponent
().mesh
.********s
; for (int i = 0
; i < ********s.length; i += 3)
line.getcomponent
().mesh
.********s = ********s;
加上了第二段**之後,是這樣子的:
(是的,我做的是**渲染的描邊,沒使用shader)
mesh.vertices
中,儲存的是圖形的頂點資訊。
mesh.********s
中,儲存的是對應於mesh.vertices
的頂點的索引。就是乙個三角形在渲染中的三個頂點的順序,所以mesh.********s
的長度應該是3的倍數(mesh.********s
的型別為int)
那為什麼要交換第一點跟第三點的位置呢?
假如現在乙個三角形是由p0、p1、p2,三個點組成的乙個三角形。
那麼,他的繪製的順序應該是這樣子的:
呈現乙個逆時針的樣子。圖形學中(前幾天看藍寶書看到的,忘了是opengl中的還是說圖形學中都是這樣,請指正。ps. 應該是逆時針吧)將擁有逆時針環繞的多邊形為正面。
即上面這個三角形為正面
若我們從螢幕後面那個方向看這個三角形的話,那你看到的是他的背面。
當我們交換三角形的第一點跟第三點後,他的渲染順序將變成這樣子:
變成了從p2到p1再到p0的這麼乙個順序。即這個三角形現在是乙個順時針環繞,我們看到的這個面,是他的背面。
在unity中,預設的渲染是不會渲染背面的。
這樣子就會出現剛才的這個效果
頂點法線和面法線
在3d世界中每乙個頂點都有顏色,除了使用光源和物體的材質資訊之外,還需要知道每個頂點的法向量,根據光照入射方向和法向量的夾角,計算頂點的最終顏色.那麼我們來了解下頂點法線.頂點法線 每乙個頂點都有法向量,就能知道光線到達物體表面的入射角.面法線 垂直乙個平面的直線叫麵法線 一般情況下頂點法線和面法線...
程式設計題 翻轉翻轉
時間限制 1秒 空間限制 262144k 給定乙個n m的矩陣,在矩陣中每一塊有一張牌,我們假定剛開始的時候所有牌的牌面向上。現在對於每個塊進行如下操作 翻轉某個塊中的牌,並且與之相鄰的其餘八張牌也會被翻轉。如上矩陣所示,翻轉中間那塊時,這九塊中的牌都會被翻轉一次。請輸出在對矩陣中每一塊進行如上操作...
Bent Normal 環境法線
前段時間讀 看到了bent normal這個概念,找了些相關的資料學習了一下。bent normal常見於離線的ambient occlusion渲染中 中文翻譯過來應該叫做環境法線?網上搜尋看有些地方是這麼叫的 從它的字面意思中即可以看出其同樣是一種normal,只不過是做了修改變形 bent 這...