WPF 3D開發教程(一)

2021-10-02 06:09:43 字數 1179 閱讀 4113

我們知道,在2d平面繪圖時,wpf使用的座標系(其實計算機上的圖形處理一般都是這樣)是以螢幕左上角為原點,向右為x軸正方向,向下為y軸正方向。而wpf的3d座標系,取區域中心為原點,向右為x軸正方向,向上為y軸正方向,z軸正方向垂直於螢幕指向我們。

這是乙個右手系,讀者可以伸出自己的右手,做下圖所示動作。拇指、食指、中指分別代表x、y、z軸。

事實上,電腦螢幕是乙個2d平面,3d物體要在此平面中顯示,需要有乙個投影。投影的方式很多,我們後面會談到。wpf中使用viewport3d作為3d物體的顯示容器,我們可以把它理解為2d繪圖時的canvas。

除此之外,我們還需要一些額外的屬性,才能描述乙個3d世界的物體。

首先,如果世界沒有光,我們就看不到任何東西,所以我們需要乙個光源。

有了光源,如果物體是透明的,我們同樣看不到它。所以物體上面有紋理,最簡單的就是一種顏色。

我們看物體時,近大遠小,岑桑畫楊桃畫出五角星,這說明,從不同的距離、不同的角度去看物體,會得到不同的畫面。我們用乙個叫做相機的元素去描述這些。

3d物體有點雲、體素網格、三角網格、多檢視表示等表示方法,wpf採用三角網格法,如下圖所示:

顯而易見,乙個物體使用越多三角形去表示,表面就會越細膩,但這會增加渲染的計算量。

在三維空間,乙個表是有正反之分的。wpf只會渲染「正面」,「反面」都是一片漆黑的。那正面和反面是怎麼定義的呢?

乙個三角形有三個頂點,這三個頂點有乙個排列順序。同樣利用右手定則,我們的四指(除拇指外)沿著頂點旋轉,則大拇指的指向就是正面。如上面所示,如果三角形的頂點定義是0、1、2,那麼朝向我們的那個面就是正面。相反,如果定義是0、2、1,那麼我們只看到三角形的底面,是沒有被渲染的。

WPF 3D開發教程(三)

3d模型就是物體,是3d開發中的主角。我們在第一部分提過,使用三角網格法表示面。而三角形由頂點組成,每個面又有一定的材質,這些都是怎麼表示的呢?三角形面由positions和 indices兩個屬性確定,而材質的顯示主要由texturecoordinates和material兩個屬性確定。我們具體解...

WPF 3D相機基本座標簡介

基本概念 wpf中3d空間基本座標系是右手座標系。wpf中3d空間的原點是 0,0,0 position 這個引數用來表示相機在空間內的座標。引數是 x,y,z 當修改相機的這個引數時,這個座標是根據原點修改。這個概念是最為簡單理解的 綠色方塊為相機 lookdirection 這個引數表示相機看的...

Unity3D嵌入WPF教程

建立乙個 類庫工程 新增 windowform 使用者控制項 usercontrol 1 引入 untiywebplayer com 元件 在工具 選擇工具箱中找到unitywebplayer.dll並新增 2 在使用者控制項中新增unitywedplayer控制項 在工具箱中直接拖拉即可 2 將 ...