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:法向量是與定義網格的每個三角形的面垂直的向量。 法向量用於確定是否亮顯給定三角形面。如果指定了三角形索引,則將考慮相鄰面來生成法向量。

本文摘自:http://www.cnblogs.com/Watson/archive/2012/05/26/2518774.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM