第14章 三維圖形與三維呈現(xiàn)_第1頁
第14章 三維圖形與三維呈現(xiàn)_第2頁
第14章 三維圖形與三維呈現(xiàn)_第3頁
第14章 三維圖形與三維呈現(xiàn)_第4頁
第14章 三維圖形與三維呈現(xiàn)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、教育部普通高等教育十二五國家級規(guī)劃教材教育部普通高等教育十二五國家級規(guī)劃教材C#程序設(shè)計及應(yīng)用教程程序設(shè)計及應(yīng)用教程第第3版版(包括簡化版:(包括簡化版:C#程序設(shè)計教程程序設(shè)計教程第第3版)版)第第14章章 三維圖形和三維圖形和三維呈現(xiàn)三維呈現(xiàn)2Ch14三維圖形和三維呈現(xiàn)三維圖形和三維呈現(xiàn)14.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識14.2 在窗口或頁面中呈現(xiàn)三維場景在窗口或頁面中呈現(xiàn)三維場景14.3 三維建模和自定義三維模型類三維建模和自定義三維模型類14.4 對模型進(jìn)行變換和動畫處理對模型進(jìn)行變換和動畫處理314.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l在在WPF應(yīng)用程序中,可直

2、接創(chuàng)建三維幾何圖形模型,也可以用應(yīng)用程序中,可直接創(chuàng)建三維幾何圖形模型,也可以用其他三維建模軟件建模并在其他三維建模軟件建模并在WPF中將其呈現(xiàn)出來。中將其呈現(xiàn)出來。WPF與三維相關(guān)的類和結(jié)構(gòu)大部分都在與三維相關(guān)的類和結(jié)構(gòu)大部分都在System.Windows.Media.Media3D命名空間下。命名空間下。lViewport3D控件控件System.Windows.Controls命名空間下的命名空間下的Viewport3D控件是在控件是在二維平面上呈現(xiàn)三維場景的容器控件。二維平面上呈現(xiàn)三維場景的容器控件。414.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識lViewport3D控件控件1W

3、PF三維坐標(biāo)系三維坐標(biāo)系u如果如果X X軸正方向朝右,軸正方向朝右,Y Y軸的正方向朝上,則軸的正方向朝上,則Z Z軸的正方向從原點指向軸的正方向從原點指向屏幕外。屏幕外。2Viewport3D類類u(1 1)CameraCamera屬性屬性u(2 2)ChildrenChildren屬性屬性3ModelVisual3D對象對象u(1 1)ContentContent屬性屬性u(2 2)ChildrenChildren屬性屬性u(3 3)TransformTransform屬性屬性514.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識lViewport3D控件控件4Viewport3D基本用法基本

4、用法例例14-1 演示演示Viewport3D的基本用法的基本用法614.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l照相機(照相機(Camera)在屏幕上繪制在屏幕上繪制3D場景相當(dāng)于用照相機的攝像功能去拍攝大自然的場景相當(dāng)于用照相機的攝像功能去拍攝大自然的場景場景uWPFWPF提供了多種類型的相機,其中最常用的有兩種:透視相機提供了多種類型的相機,其中最常用的有兩種:透視相機(PerspectiveCameraPerspectiveCamera類)和正交相機(類)和正交相機(OrthographicCameraOrthographicCamera類)類)1Camera類和類和Project

5、ionCamera類類uCameraCamera類是所有相機的基類,其作用是為三維場景指定觀察位置等類是所有相機的基類,其作用是為三維場景指定觀察位置等基本信息。基本信息。uProjectionCameraProjectionCamera類的作用是指定不同的投影方式以及其他屬性來類的作用是指定不同的投影方式以及其他屬性來更改觀察者查看三維模型的方式。更改觀察者查看三維模型的方式。714.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l照相機(照相機(Camera)2透視相機(透視相機(PerspectiveCamera)u透視相機也叫遠(yuǎn)景相機,這種相機提供消失點透視功能,是在實際透視相機也叫遠(yuǎn)景相

6、機,這種相機提供消失點透視功能,是在實際應(yīng)用項目中最常用的相機。應(yīng)用項目中最常用的相機。PerspectiveCameraPerspectiveCamera的常用屬性及其含義的常用屬性及其含義814.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l照相機(照相機(Camera)3正交相機(正交相機(OrthographicCamera)u正交相機只是描述了一個側(cè)面平行的取景框,而不是側(cè)面匯集在場正交相機只是描述了一個側(cè)面平行的取景框,而不是側(cè)面匯集在場景中某一點的取景框,因此對觀察的對象沒有透視感,觀察目標(biāo)也景中某一點的取景框,因此對觀察的對象沒有透視感,觀察目標(biāo)也不會隨著距離的變化而變小或變形。

7、不會隨著距離的變化而變小或變形。l三維幾何模型(三維幾何模型(GeometryModel3D)uWPFWPF用用GeometryGeometry來構(gòu)造三維模型,稱為三維幾何模型來構(gòu)造三維模型,稱為三維幾何模型(GeometryModel3DGeometryModel3D類)。類)。914.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l三維幾何模型(三維幾何模型(GeometryModel3D)1Geometry屬性。屬性。uGeometryGeometry屬性用于獲取或設(shè)置三維幾何圖形的形狀,該類是從屬性用于獲取或設(shè)置三維幾何圖形的形狀,該類是從Geometry3DGeometry3D繼承而來的

8、。繼承而來的。uTriangleIndicesTriangleIndices屬性指定構(gòu)造三角形時頂點的順序。屬性指定構(gòu)造三角形時頂點的順序。2Material屬性和屬性和BackMaterial屬性屬性uMaterialMaterial屬性表示繪制屬性表示繪制3D3D模型的正面時使用的材料,模型的正面時使用的材料,BackMaterialBackMaterial屬性表示繪制屬性表示繪制3D3D模型的背面時使用的材料。模型的背面時使用的材料。1014.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l光照類型光照類型uWPFWPF三維圖形中的光照效果與實際的光照效果相似,其作用是照亮場三維圖形中的光照

9、效果與實際的光照效果相似,其作用是照亮場景中的景中的3D3D模型。模型。1環(huán)境光(環(huán)境光(AmbientLight)u環(huán)境光將光投向三維場景中的各個方向,它能使所有環(huán)境光將光投向三維場景中的各個方向,它能使所有3D3D對象都能均對象都能均勻受光,與被光照的勻受光,與被光照的3D3D對象的位置或方向無關(guān)。對象的位置或方向無關(guān)。2錐形投射光(錐形投射光(SpotLight)uInnerConeAngleInnerConeAngle屬性:內(nèi)部錐角。表示光最亮的中心部分的角度。屬性:內(nèi)部錐角。表示光最亮的中心部分的角度。uOuterConeAngleOuterConeAngle屬性:外部錐角。表示光較

10、暗的外圍部分的角度。屬性:外部錐角。表示光較暗的外圍部分的角度。1114.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l光照類型光照類型3定向直射光(定向直射光(DirectionalLight)u定向直射光沿著特定的方向均勻地投射到定向直射光沿著特定的方向均勻地投射到3D3D對象,其效果與地球上對象,其效果與地球上的陽光照射效果相似,即光的強度衰減可以忽略不計。的陽光照射效果相似,即光的強度衰減可以忽略不計。4點光(點光(PointLight)u點光從一個點向所有方向投射光,其效果與普通的燈泡照明效果相點光從一個點向所有方向投射光,其效果與普通的燈泡照明效果相似。似。1214.1 WPF三維設(shè)

11、計基本知識三維設(shè)計基本知識l材料(材料(Meterial)u材料也叫材質(zhì),用于描述材料也叫材質(zhì),用于描述3D3D模型表面的特征,包括顏色、紋理和總模型表面的特征,包括顏色、紋理和總體外觀。體外觀。1漫反射材料(漫反射材料(DiffuseMaterial)uDiffuseMaterialDiffuseMaterial類用于確定三維對象在環(huán)境光(類用于確定三維對象在環(huán)境光(AmbientLightAmbientLight)照)照射下材料的顏色,其效果和墻面的噴漆相似。射下材料的顏色,其效果和墻面的噴漆相似。uAmbientColorAmbientColor屬性:獲取或設(shè)置一種顏色,該顏色表示材料在

12、屬性:獲取或設(shè)置一種顏色,該顏色表示材料在AmbientLightAmbientLight指定的某種顏色照射下材料本身的反射顏色。指定的某種顏色照射下材料本身的反射顏色。uColorColor屬性:獲取或設(shè)置應(yīng)用到材料的顏色。屬性:獲取或設(shè)置應(yīng)用到材料的顏色。uBrushBrush屬性:獲取或設(shè)置應(yīng)用到材料的畫筆。屬性:獲取或設(shè)置應(yīng)用到材料的畫筆。1314.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l材料(材料(Meterial)2高光反射材料(高光反射材料(SpecularMaterial)uSpecularMaterialSpecularMaterial類使對象自身產(chǎn)生對強光的反射,從而產(chǎn)

13、生表面類使對象自身產(chǎn)生對強光的反射,從而產(chǎn)生表面堅硬、發(fā)亮等效果。堅硬、發(fā)亮等效果。uColorColor屬性:獲取或設(shè)置應(yīng)用到材料的顏色。屬性:獲取或設(shè)置應(yīng)用到材料的顏色。uBrushBrush屬性:獲取或設(shè)置應(yīng)用到材料的畫筆。屬性:獲取或設(shè)置應(yīng)用到材料的畫筆。uSpecularPowerSpecularPower屬性:獲取或設(shè)置材料反射光照的角度值,值越大,屬性:獲取或設(shè)置材料反射光照的角度值,值越大,反射閃光的大小和銳度也越大。反射閃光的大小和銳度也越大。1414.1 WPF三維設(shè)計基本知識三維設(shè)計基本知識l材料(材料(Meterial)3自發(fā)光材料(自發(fā)光材料(EmissiveMate

14、rial)uEmissiveMaterialEmissiveMaterial類使模型表面所發(fā)出的光與畫筆設(shè)置的顏色相同,類使模型表面所發(fā)出的光與畫筆設(shè)置的顏色相同,其效果就像材料正在發(fā)射與其效果就像材料正在發(fā)射與BrushBrush的顏色相同的光一樣。的顏色相同的光一樣。uColorColor屬性:獲取或設(shè)置材料的顏色。屬性:獲取或設(shè)置材料的顏色。uBrushBrush屬性:獲取或設(shè)置材料的畫筆。屬性:獲取或設(shè)置材料的畫筆。1514.2 在窗口或頁面中呈現(xiàn)三維場景在窗口或頁面中呈現(xiàn)三維場景l(fā)利用相機變換制作利用相機變換制作3D場景觀察器場景觀察器1V3dView控件控件u自定義的自定義的3D3

15、D場景觀察器在場景觀察器在V3dView.csV3dView.cs文件中,這是一個可在其中包文件中,這是一個可在其中包含含Viewport3DViewport3D的容器控件。的容器控件。2V3dView的基本用法的基本用法uV3dViewV3dView顯示鼠標(biāo)操作幫助信息。顯示鼠標(biāo)操作幫助信息。1614.2 在窗口或頁面中呈現(xiàn)三維場景在窗口或頁面中呈現(xiàn)三維場景l(fā)動態(tài)顯示相機的屬性動態(tài)顯示相機的屬性u利用利用V3dLibraryV3dLibrary的的V3dViewV3dView可以可以縮放和旋轉(zhuǎn)縮放和旋轉(zhuǎn)3D3D場景,動態(tài)顯示透視相場景,動態(tài)顯示透視相機各種屬性的變化情況。機各種屬性的變化情況

16、。例例14-2 演示演示3D場景觀察器的基本用法場景觀察器的基本用法。1714.2 在窗口或頁面中呈現(xiàn)三維場景在窗口或頁面中呈現(xiàn)三維場景l(fā)三維網(wǎng)格幾何(三維網(wǎng)格幾何(MeshGeometry3D)WPF提供的提供的MeshGeometry3D類用于指定構(gòu)造三維幾何形狀的類用于指定構(gòu)造三維幾何形狀的頂點集合,頂點集合,還可以還可以指定構(gòu)造三角形網(wǎng)格的法線(指定構(gòu)造三角形網(wǎng)格的法線(Normals屬性)、屬性)、紋理坐標(biāo)(紋理坐標(biāo)(TextureCoordinates屬性)以及三角形頂點索引屬性)以及三角形頂點索引(TriangleIndices屬性)等信息。屬性)等信息。1定義頂點(定義頂點(P

17、ositions)u(1 1)Point3DPoint3D結(jié)構(gòu)結(jié)構(gòu):WPF:WPF用用Point3DPoint3D結(jié)構(gòu)來描述三維空間中的一個頂點。結(jié)構(gòu)來描述三維空間中的一個頂點。該結(jié)構(gòu)提供了對頂點進(jìn)行運算的基本方法。該結(jié)構(gòu)提供了對頂點進(jìn)行運算的基本方法。u(2 2)PositionsPositions屬性屬性:MeshGeometry3D:MeshGeometry3D的的PositionsPositions屬性用于獲取或?qū)傩杂糜讷@取或設(shè)置該設(shè)置該3D3D模型的使用的頂點集合。模型的使用的頂點集合。1814.2 在窗口或頁面中呈現(xiàn)三維場景在窗口或頁面中呈現(xiàn)三維場景l(fā)三維網(wǎng)格幾何(三維網(wǎng)格幾何(M

18、eshGeometry3D)2定義頂點法線(定義頂點法線(Normals)u(1 1)Vector3DVector3D結(jié)構(gòu)結(jié)構(gòu)u(2 2)NormalsNormals屬性屬性3指定三角形索引(指定三角形索引(TriangleIndices)u(1 1)三角形環(huán)繞順序)三角形環(huán)繞順序u(2 2)背面消隱)背面消隱u(3 3)TriangleIndicesTriangleIndices屬性屬性1914.2 在窗口或頁面中呈現(xiàn)三維場景在窗口或頁面中呈現(xiàn)三維場景l(fā)三維網(wǎng)格幾何(三維網(wǎng)格幾何(MeshGeometry3D)4指定紋理坐標(biāo)(指定紋理坐標(biāo)(TextureCoordinates)u紋理(紋理(

19、TextureTexture)是指三維表面的貼圖,貼圖的范圍由紋理坐標(biāo))是指三維表面的貼圖,貼圖的范圍由紋理坐標(biāo)(TextureCoordinatesTextureCoordinates)來指定。)來指定。5在在Viewport3D中定義和呈現(xiàn)三維幾何模型中定義和呈現(xiàn)三維幾何模型例例14-3 演示三維幾何模型的基本呈現(xiàn)方法。演示三維幾何模型的基本呈現(xiàn)方法。2014.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l利用模型編輯器創(chuàng)建和編輯三維模型利用模型編輯器創(chuàng)建和編輯三維模型1創(chuàng)建創(chuàng)建FBX文件文件u運行運行VS2012VS2012(或者打開(或者打開ch14ch14項目),選擇主菜

20、單的【文件】項目),選擇主菜單的【文件】【新【新建】建】【文件】命令【文件】命令。u在彈出的界面中,選擇左側(cè)的在彈出的界面中,選擇左側(cè)的“圖形圖形”,然后選擇,然后選擇“3D3D場景場景(.fbx)(.fbx)”,單擊【打開】按鈕,單擊【打開】按鈕。2114.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l利用模型編輯器創(chuàng)建和編輯三維模型利用模型編輯器創(chuàng)建和編輯三維模型2打開和編輯打開和編輯FBX文件文件u如果如果FBXFBX文件保存在項目中的某個文件夾下,在【解決方案資源管理文件保存在項目中的某個文件夾下,在【解決方案資源管理器】中,雙擊器】中,雙擊.fbx.fbx文件可直接打開該

21、文件并進(jìn)入模型編輯模式。文件可直接打開該文件并進(jìn)入模型編輯模式。3細(xì)分面和延伸面細(xì)分面和延伸面u(1 1)從【工具箱】中向模型編輯器中拖放一個立方體。)從【工具箱】中向模型編輯器中拖放一個立方體。u(2 2)利用細(xì)分面分割模型表面。)利用細(xì)分面分割模型表面。u(3 3)利用延伸面加長模型。)利用延伸面加長模型。4三角化三角化u通過對模型的邊、面或者頂點進(jìn)行三角化處理,可將模型進(jìn)行各種通過對模型的邊、面或者頂點進(jìn)行三角化處理,可將模型進(jìn)行各種變形處理。變形處理。14.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l利用模型編輯器創(chuàng)建和編輯三維模型利用模型編輯器創(chuàng)建和編輯三維模型5反轉(zhuǎn)多

22、邊形繞組反轉(zhuǎn)多邊形繞組6平面著色平面著色u平面著色用于將對象顯示為某種顏色或者紋理。通過【屬性】窗口平面著色用于將對象顯示為某種顏色或者紋理。通過【屬性】窗口可更改材質(zhì)的顏色,或者選擇圖像文件作為紋理。可更改材質(zhì)的顏色,或者選擇圖像文件作為紋理。222314.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l創(chuàng)建自定義三維模型類創(chuàng)建自定義三維模型類通過通過VS2012的模型編輯器創(chuàng)建模型后,即可利用的模型編輯器創(chuàng)建模型后,即可利用Blend for VS2012將其轉(zhuǎn)換為將其轉(zhuǎn)換為XAML表示形式,然后再利用它創(chuàng)建自定義表示形式,然后再利用它創(chuàng)建自定義的的3D模型庫,即可大大簡化直接用

23、模型庫,即可大大簡化直接用XAML定義模型的復(fù)雜度。定義模型的復(fù)雜度。l基本實現(xiàn)思路如下?;緦崿F(xiàn)思路如下。1通過通過OBJ格式將格式將FBX模型轉(zhuǎn)換為模型轉(zhuǎn)換為XAML2抽取三維網(wǎng)格幾何到抽取三維網(wǎng)格幾何到V3dLibrary模型庫中模型庫中3顯示模型顯示模型2414.3 三維建模和自定義三維模型類三維建模和自定義三維模型類例例14-4 演示在演示在WPF應(yīng)用程序中調(diào)用應(yīng)用程序中調(diào)用Model1模型基本用法。模型基本用法。2514.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l利用三維模型庫簡化場景構(gòu)建利用三維模型庫簡化場景構(gòu)建1球體球體u用用XAMLXAML實現(xiàn)的球體模型在實現(xiàn)

24、的球體模型在V3dLibraryV3dLibrary的的ModelsModels文件夾下的文件夾下的Sphere.csSphere.cs文件中。文件中。例例14-5 演示在演示在WPF應(yīng)用程序中調(diào)用球體模型的基本用法。應(yīng)用程序中調(diào)用球體模型的基本用法。2614.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l利用三維模型庫簡化場景構(gòu)建利用三維模型庫簡化場景構(gòu)建2立方體立方體u用用XAMLXAML實現(xiàn)的立方體模型在實現(xiàn)的立方體模型在V3dLibraryV3dLibrary的的ModelsModels文件夾下的文件夾下的Box.csBox.cs文件中。文件中。例例14-6 演示立方體模型

25、的基本用法。演示立方體模型的基本用法。2714.3 三維建模和自定義三維模型類三維建模和自定義三維模型類l利用三維模型庫簡化場景構(gòu)建利用三維模型庫簡化場景構(gòu)建3其他模型其他模型例例14-7 演示在演示在WPF應(yīng)用程序中各種基本模型的用法。應(yīng)用程序中各種基本模型的用法。2814.4 對模型進(jìn)行變換和動畫處理對模型進(jìn)行變換和動畫處理l三維變換處理基礎(chǔ)三維變換處理基礎(chǔ)在在WPF中,每個模型都對應(yīng)有一個中,每個模型都對應(yīng)有一個Transform屬性。利用該屬性,屬性。利用該屬性,即可實現(xiàn)對模型進(jìn)行移動、縮放、旋轉(zhuǎn)或調(diào)整大小等處理即可實現(xiàn)對模型進(jìn)行移動、縮放、旋轉(zhuǎn)或調(diào)整大小等處理。lWPF提供了提供了T

26、ranslateTransform3D、ScaleTransform3D和和RotateTransform3D類類來實現(xiàn)三維變換。來實現(xiàn)三維變換。1平移變換(平移變換(TranslateTransform3D)uTranslateTransform3DTranslateTransform3D提供了沿著提供了沿著OffsetXOffsetX、OffsetYOffsetY和和OffsetZOffsetZ屬性屬性所指定的偏移向量來移動所指定的偏移向量來移動Model3DModel3D中的所有點的辦法。中的所有點的辦法。2914.4 對模型進(jìn)行變換和動畫處理對模型進(jìn)行變換和動畫處理l三維變換處理基礎(chǔ)三維變換處理基礎(chǔ)2縮放變換(縮放變換(ScaleTransform3D)uScaleTransform3DScaleTransform3D沿著指定的縮放向量,相對于中心點來更改模型沿著指定的縮放向量,相對于中心點來更改模型的縮放比例。的縮放比例。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論