原文:
WPF MeshGeometry3D說說 MeshGeometry3D 裡 常用的 四個屬性。
先看看 MSDN 的 簡介

先說說 Positions,介紹說 是頂點位置的集合,什麼意思,看張圖檔。
這張簡單描述了一個三位坐标系,裡面有四個坐标點,也就是頂點位置,都已标出,也就組成了集合(Positions)。
它所标示的是一個正方形,先放在這裡,下面說一下TriangleIndices。
往往分不清 TriangleIndices 和 Positions 的關系。
舉個例子:
TriangleIndices="0 1 2 2 3 0"
它所表示的是什麼。每個數字什麼意思。
先講一下概念,字面意思是三角形索引的集合。為什麼要用到三角形呢,因為在3D圖形的世界裡,所有物體都可以被描述成為一系列三角形的集合。
比如我們現在畫的這個正方形,可以有兩個三角形組成。
那麼TriangleIndices="0 1 2 2 3 0" 按照圖檔顯示的可以翻譯成 “P0 P1 P2,P2 P3 P0”,或者 0 對應 (-1,1,0),1 對應 (-1,-1,0),以此類推。
這裡面的每個數字對應這圖檔裡的每個點。可是為什麼這樣對應呢。
這關系到三角形呈現的是有正反面區分的,可以看出上面每三個點組成的一個三角形都是逆時針順序的,這是因為WPF采用逆時針的環繞方式來顯示正面,
或者用右手定則:握住右手,伸出拇指,四指為逆時針方向,拇指指向正面。
如果你那順序反過來,會顯示一片黑。因為你沒描述背面。
到這裡基本就搞清了TriangleIndices 和 Positions 的關系。
這兩個也是比較主要的屬性,因為另兩個屬性,不寫的話,會自動判斷來給出預設值。
來說說 Normals 和 TextureCoordinates。
TextureCoordinates:紋理坐标用于确定将
Material映射到構成網格的三角形的頂點的方式。
這個比較好了解,比如
TextureCoordinates="0,0 0,1 1,1 1,0"
一般材質的的正常坐标按照上圖來說順序依次是 P0,P3,P2,P1。也就是說 0,0 0,1 1,1 1,0 這是一個正常順序,是按照本來畫面顯示的。
但如果換成TextureCoordinates="1 0, 0 0, 0 1, 1 1",你會發現顯示的畫面向左倒了。
這也和你定義的坐标集合有關系。
最後是
Normals:法向量是與定義網格的每個三角形的面垂直的向量。 法向量用于确定是否亮顯給定三角形面。如果指定了三角形索引,則将考慮相鄰面來生成法向量。