說說 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:法向量是與定義網格的每個三角形的面垂直的向量。 法向量用於確定是否亮顯給定三角形面。如果指定了三角形索引,則將考慮相鄰面來生成法向量。
本文摘自:http://www.cnblogs.com/Watson/archive/2012/05/26/2518774.html
