天天看點

WPF中的三維空間(1)

WPF中可以建立三維幾何圖形,支援3D對象的應用,支援從3D Max等軟體将3D檔案obj導入設計中,但是目前還不支援将材質同時導入,這樣需要在WPF中對3D對象重新設定顔色或貼圖。

<b>2.10.1 WPF</b><b>中的三維空間</b>

1.三維空間坐标

WPF中二維圖形的坐标系原點定位在呈現區域(螢幕)的左上角,其X 軸上的正方向朝右,Y軸的正向朝下。 在WPF的三維坐标系中,原點一般位于在WPF中建立的三維對象的中心(導入的三維對象的情況就不一定了,比如從3DMax中導入的obj檔案),三維坐标的X 軸正方向朝右,Y軸的正方向朝上,Z軸的正方向從原點向外朝向觀察者。

WPF中的三維空間(1)

圖2-191

三維空間坐标

圖2-191給出了WPF三維空間坐标系(X:紅色,Y:綠色,Z:藍色),兩個坐标軸之間的弧線表示可以旋轉,其中:

Y-Z之間的弧線(紅色)表示可以圍繞X軸旋轉;

X-Z之間的弧線(綠色)表示可以圍繞Y軸旋轉;

X-Y之間的弧線(藍色)表示可以圍繞Z軸旋轉。

2.照相機及典型位置

照相機的位置坐标是可以變化的,一個典型的透視相機位置設定如圖2-192所示。

WPF中的三維空間(1)

圖2-192

典型的透視相機位置設定

圖2-192中,當相機位置靠近Z軸中心時,即Z坐标值變小,觀察到的對象變大,當相機位置遠離Z軸中心時,即Z坐标值變大,觀察到的對象變小。

照相機的位置就是觀察者的位置,相機的位置可以任意設定,這樣觀察到的三維對象的“形象”就會發生變化,在三維場景中正确設定相機位置很重要,圖2-192是一個典型設定。

3.材料

三維對象使用的材料分三類:

漫射材料:确定三維對象在直射光(白光)照射下的顔色,其作用就如同牆面噴漆一樣。

放射材料:使對象産生發光效果。光的顔色由材料的顔色決定。

反射材料:控制三維對象上高光反射區域的顔色。高光反射區域指在金屬鉻等光滑亮澤表面上看到的光亮區域。

4.光的分類

照射在三維對象上的光線分為4類,如圖2-193所示。

WPF中的三維空間(1)

圖2-193

光的分類

(1)環境光:環境光将光投向各個方向,使所有對象均勻受光。如果隻用環境光,則

對象可能會顯得褪色,而且顔色單一。為了獲得最佳效果,需要使用其他光。如圖2-193左一圖。

(2)投射光:投射光所投射的光如同聚光燈一般,光從發光位置發出,并在錐形區域内傳播。投射光不會影響到位于錐形發光區域以外的那部分三維對象。如圖2-193左二圖。 

(3)定向光:定向光沿着特定的方向均勻平行投射,就像太陽光一樣。如圖2-193左三圖。

(4)點光:點光從一個點向所有方向投射光,就像普通的燈泡一樣。如圖2-193右圖。

<b>2.10.2 WPF</b><b>三維空間的元素</b>

(1) Camera:相機,可以在【屬性】面闆選擇以下屬性設定:

相機類型:遠景相機、正交相機及有關參數;

Position:照相機在三維空間中的位置;

Direction:照相機在三維空間中的拍攝方向;

UP Vector:正向矢量,指定此照相機的“上方”所指的方向。

Perspective Field of

View:透視視野,僅适用于遠景相機,較小的數值會減少對象因遠景拍攝而變形的程度。較大的數值會像使用魚眼鏡頭一樣導緻對象大幅變形。

Near Clipping Plane/Far Clipping Plane:近點/遠點剪切平面,可控制對象與照相機之間的最近或最遠距離,超出上述距離的對象将從所呈現的視圖中消失。

(2)AmbientLight:環境光色彩設定,可以在上述的光類型中選擇需要的光源。

(3)DirectionLight:定向光色彩設定,可以在上述的光類型中選擇需要的光源。

(4)DefaultMaterial:材質設定,可以在前面介紹的材料類型中選擇,可以選擇圖形刷資源。

2.ModelVisual3D元素

三維元素ModelVisual3D可以再包含多個ModelVisual3D子元素,比如燈光,三維造型。

3.GeometryModel3D元素

GeometryModel3D是ModelVisual3D子元素内的三維造型元素,材質是其屬性,而三維圖形建構又由最底層網格元素MeshGeometry3D完成。

4.MeshGeometry3D元素

這是1個若幹3D點(Point3D)的集合,每3個3D點按一定環繞方向組成1個三角形,WPF采用逆時針的環繞方向,符合所謂“右手法則”,即垂直豎起右手的大拇指,彎曲其餘4指,其餘4指指向正是三角形的環繞方向,大拇指的指向是三角形的正面,反向是其背面,如圖2-194所示,正是這些三角形構成了WPF中的三維造型世界。

WPF中的三維空間(1)

圖2-194

MeshGeometry3D圖

圖2-195是【對象和時間線】面闆呈現的1個三維對象元素的清單,可以看出上面所說的三維元素之間的關系。

WPF中的三維空間(1)

圖2-195

三維對象元素

圖2-195中有1個Viewport3D控件,其中有1個Camera元素,1個名為“World”的三維元素ModelVisual3D,這是多個ModelVisual3D元素的集合,“AmbientLightContainer”、“DirectionalLightContainer”和“RootGeometryContainer”均屬于ModelVisual3D元素,其中“RootGeometryContainer”元素又包含多個ModelVisual3D子元素,如“Cylinder01”、“Cylinder02”等。“Cylinder01”中又包含GeometryModel3D

元素。