1. 程式人生 > >WPF三維圖形

WPF三維圖形

wpf 三維圖形基礎
生成三維圖形的基本思想是能得到一個物體的三維立體模型(model)。由於我們的螢幕只有二維,因而我們定義了一個用於給物體拍照的照相機(Camera)。拍到的照片其實是物體到一個平坦表面的投影。這個投影由3D渲染引擎渲染成點陣圖。引擎通過計算所有光源對3D空間中物體的投影面反射的光量,來決定點陣圖中每個畫素點的顏色。
物體的每一個表面都有一種材質(material)和一個畫刷(brush)。材質定義了一個具體角度的光的反射量,而畫刷定義了表面的顏色。畫刷可以是一種單純的顏色,也可以是漸變的,甚至可以是一幅圖片,這些稱為紋理(texture)。
wps_clip_image-1450
一個三角形的世界
在3D圖形的世界裡,所有物體都被描述成為一系列三角形的集合。可為什麼是三角形呢?這是因為三角形是用來描述平面最小的幾何體。在場景中,渲染引擎可以計算出每一個三角形的顏色,取決於它的材質和它與光線的角度。

假如我們用矩形來構建我們這個世界,並且這些點不一定在同一平面上,這種表面計算和渲染起來將會變得更復雜。
3D物體的一個表面稱為一個網格(mesh)。一個網格被定義為許多3D點。這些點成為頂點(vertices)。這些頂點通過環繞方式連線起來來形成三角形。每一個三角形有個正面和反面,只有正面才會被渲染。三角形的正面可以通過點的環繞順序來確定。WPF採用逆時針的環繞方式。你可以通過一個簡單的“ 右手定則”來幫助記憶。也就是說,如果合上你的右手並且豎起大拇指,讓你的四指順著逆時針方向,那麼大拇指指示方向便是三角形的正面。
wps_clip_image-12263
wps_clip_image-3557
右手座標系系統
WPF 採用右手座標系系統。也就是說,如果你伸出你的手指如下圖所示,各手指指示的是三條座標軸的正向。

wps_clip_image-17140
3D場景中的元素
1.Viewport3D
這個viewport是建立連線2D和3D世界大門的一個控制元件。
2.Camera
每一個3D場景都有一個攝像機。攝像機定義了Position,LookDirection和UpDirection屬性。WPF支援正交(orthographical )和透視(perspective )攝像機。
3.3D Models
一個3D模型定義了場景中的一個物體。它包含一個Geometry物件 ,這個物件是一個網格,和一個材質(Material )物件,材質具有漫反射(diffuse),鏡面(specular )或放射(emmisive )幾種型別。材質本身具有一個畫刷。
4.Lights

沒有光源你將什麼也看不到。因此我們需要在我們的場景當中至少放置一個光源來照亮我們的模型。WPF支援各種不同的光源,比如:
AmbientLight (自然光)
DirectionalLight (方向光)
PointLight (點光源)
SpotLight (聚光源)
Hello 3D-World – 一個簡單的立方體