国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于WPF的三維仿真系統(tǒng)的研究與應(yīng)用

2016-01-02 09:18尚旭明張立成
計算機技術(shù)與發(fā)展 2016年9期
關(guān)鍵詞:視點光源坐標(biāo)系

尚旭明,張立成

(長安大學(xué)信息工程學(xué)院,陜西西安 710064)

基于WPF的三維仿真系統(tǒng)的研究與應(yīng)用

尚旭明,張立成

(長安大學(xué)信息工程學(xué)院,陜西西安 710064)

為了快速開發(fā)三維模型,通過研究Windows中基于XAML技術(shù)的WPF編程方法,實現(xiàn)對實體的應(yīng)變能力的檢測以及直觀顯示效果。通過建立的WPF模型數(shù)據(jù)對采集數(shù)據(jù)或者直接導(dǎo)入3DMAX模型進(jìn)行轉(zhuǎn)換,然后對模型應(yīng)用紋理、覆蓋頂點、三角定義模型外觀以及投影變換技術(shù)實現(xiàn)三維圖像,從而確定了模型特征。對模型進(jìn)行組合以及視點變化,實現(xiàn)模型的多視角查看,通過前幀顯示,后幀繪制技術(shù)實現(xiàn)動態(tài)顯示三維模型的流暢性,最終建立實物的三維監(jiān)測系統(tǒng)。該方法已經(jīng)成功應(yīng)用于三維仿真監(jiān)測系統(tǒng)中,基于WPF編程不僅通過仿真計算的模擬和圖形顯示分離的策略提高了系統(tǒng)的交互性,而且采用XAML技術(shù)實現(xiàn)開發(fā)速度快,易于實現(xiàn)3D模型的動態(tài)展示,具有很好的效果。

WPF;XAML;三維仿真;監(jiān)測系統(tǒng)

0 引言

隨著計算機圖形學(xué)技術(shù)的發(fā)展,近年來三維仿真技術(shù)成為國內(nèi)外關(guān)注的熱點,人們對于計算機仿真的要求也越來越高,特別是GIS、虛擬現(xiàn)實、增強現(xiàn)實、漫游視景仿真等技術(shù),將計算機視覺模擬逐漸帶入了一個更高的水平[1]。三維仿真技術(shù)簡單來說就是用計算機技術(shù)模擬一個真實系統(tǒng)的技術(shù),通過模擬系統(tǒng)來發(fā)現(xiàn)、解決以及優(yōu)化真實系統(tǒng)中出現(xiàn)的問題。三維仿真技術(shù)被廣泛應(yīng)用于城市規(guī)劃、地產(chǎn)行業(yè)、電子地圖、娛樂教育、虛擬現(xiàn)實[2]等多個領(lǐng)域。在過去,三維場景的計算機呈現(xiàn)需要掌握圖形學(xué)的基本知識,Direct3D或OpenGL編程技術(shù),通過編寫大量的代碼才能實現(xiàn),是一件非常復(fù)雜的事情[3]?,F(xiàn)在使用WPF顯示三維場景非常簡單,甚至基于WPF中XAML[4]技術(shù)不需要寫太多的代碼就可以實現(xiàn)一個簡單的三維場景,以及與三維場景進(jìn)行交互。

基于三維仿真技術(shù)的需求,文中提出一種基于WPF的三維仿真監(jiān)測系統(tǒng)的研究與實現(xiàn)方案,以實例的形式介紹如何使用WPF呈現(xiàn)一個三維場景,驗證了該方法的直觀性、有效性。

1 WPF簡介

WPF(Windows Presentation Foundation)是微軟新一代圖形系統(tǒng),屬于.NET Framework 3.0的一部分,為用戶界面、2D/3D圖形、文檔和媒體提供了統(tǒng)一的描述和操作方法[5],是一個理念先進(jìn)的gui庫。它提供了超豐富的.NET UI框架,3D視覺效果和強大無比的控件模型框架[6]。微軟還提供了專門的界面開發(fā)語言-XAML(eXtensible Application Markup Language,可擴展應(yīng)用程序標(biāo)記語言)[7]。通過在XAML標(biāo)記中添加可見UI元素,如按鈕、文本框等,然后通過代碼轉(zhuǎn)換文件將UI的定義與運行時的邏輯完全分開。XAML與大多數(shù)標(biāo)記語言不一樣,一般標(biāo)記語言是與后備類型系統(tǒng)沒有直接關(guān)系的解釋語言,而XAML語言直接以程序定義的一組特定的后備類型來表示對象的實例化。XAML可以對整個界面布局進(jìn)行合理調(diào)整,而且簡化用戶界面的開發(fā)過程,開發(fā)人員可以通過XAML對用戶界面進(jìn)行定制。一般情況下,都是通過使用相關(guān)的軟件來制作 XAML文件。Microsoft Expression Blend是常用生成XAML的工具。XAML所能做的也可以用代碼實現(xiàn)[8]。使用XAML來實現(xiàn)WPF 3D仿真模型有以下優(yōu)點:

(1)代碼編寫簡單、易讀性高;

(2)可以使用工具生成XAML文件;

(3)XAML提供了一種便于擴展和定位的語法來定義和程序邏輯分離的用戶界面[9],XAML中界面表現(xiàn)和邏輯功能的分離使得界面開發(fā)和功能開發(fā)代碼分離,有利于開發(fā)團(tuán)隊的合理分工,提高了開發(fā)效率。

2 系統(tǒng)結(jié)構(gòu)

在Windows平臺上,以vs2010為開發(fā)工具進(jìn)行WPF編程,可以通過直接采集數(shù)據(jù)建立實物模型,或者通過3DMAX建立模型,然后將3D模型仿真數(shù)據(jù)轉(zhuǎn)換或者導(dǎo)入到WPF中,從而完成模型建立。接著給模型添加色彩、材質(zhì)、紋理等屬性,以及確定合適的視點,再對模型進(jìn)行投影變換,并動態(tài)仿真監(jiān)測系統(tǒng)中變量的變化,從而實現(xiàn)對實體和過程的三維仿真。系統(tǒng)總體結(jié)構(gòu)如圖1所示。

3 具體功能實現(xiàn)

3.1 模型建立

在三維工業(yè)仿真中,要對許多復(fù)雜的模塊建立3D模型。對于三維圖像,可以利用WPF庫提供的基本幾何體進(jìn)行建模。常用的三維模型數(shù)據(jù)是通過多邊形來構(gòu)建出實體模型的外觀,而且多邊形的數(shù)據(jù)信息以文件的形式存儲。模型的數(shù)據(jù)主要包括四個關(guān)鍵的數(shù)據(jù)集合:

(1)頂點集:由實物的頂點坐標(biāo)及其法向量構(gòu)成的集合;

(2)朝向集:朝向是指物體相對于光源的方向,根據(jù)這些朝向來計算三維模型的明亮度,面向光源的圖面比背離光源的圖面表現(xiàn)明亮;

(3)紋理集:確定紋理繪制方式的坐標(biāo)映射到網(wǎng)格的頂點;

(4)相關(guān)三角形列表集:實物網(wǎng)格都是由很多三角形構(gòu)建的,所以要保存每一個三角形頂點,即構(gòu)成了三角形集合。

因為通過WPF和OpenGL來創(chuàng)建精細(xì)實體模型相對復(fù)雜,所以文中采用3DMAX構(gòu)建實物模型,然后將模型導(dǎo)入WPF中。OpenGL導(dǎo)入模型文件比較復(fù)雜,需要編寫特定的程序才可以導(dǎo)入,因此每次導(dǎo)入模型都很耗時;與 OpenGL相比,WPF可以直接將3DMAX的.OBJ文件轉(zhuǎn)換為XAML文件,然后表示為模型數(shù)據(jù)。

3.2 色彩、光照以及紋理的處理

對網(wǎng)格應(yīng)用紋理、覆蓋頂點以及三角形定義的模型外觀,通過照相機照明及投影變換來實現(xiàn)三維對象。在二維中通過Brush類來設(shè)置區(qū)域的顏色、圖形或漸變等功能。三維對象不僅僅是應(yīng)用實體外觀的顏色和圖案,而且要實現(xiàn)三維效果,需要照明模型。實際生活中,實物的外觀、形狀是不同的,因此它們對光的反射以及吸收也是不同的,一些實物可以吸收光,使其顯示暗淡,一些實物反射光,使其顯得明亮。為了達(dá)到這樣的效果,需要對三維圖像應(yīng)用畫筆。WPF使用Materi-al[10-11]抽象類來定義模型圖面的特征。Material類用來確定三維模型外觀特性,它有很多繼承類,每個繼承子類有一些共有的屬性,比如 SolidColorBrush、Tile-Brush或VisualBrush的Brush屬性[12-13]。通過紋理覆蓋使得網(wǎng)格外觀更像3D實物,通過MeshGeometry3D 的Normals屬性和TextureCoordinates屬性設(shè)置3D模型外觀紋理。

三維建模中的光與生活中的光類似,光照到的面可見。也就是說,光源的位置確定了場景中模型表現(xiàn)的明亮或者暗淡。WPF中的光對象包含了設(shè)置光種類和陰影效果的屬性,這些屬性值是根據(jù)各種光的表現(xiàn)創(chuàng)建的,從而可以看到創(chuàng)建的三維模型,還可以通過轉(zhuǎn)換場景中放置的光源并對光源屬性進(jìn)行動畫處理,實現(xiàn)三維對象的顯示與交互。光源屬性包括光源的位置、顏色、朝向和范圍大小。

<ModelVisual3D.Content>

<AmbientLight Color="#333333"/>

</ModelVisual3D.Content>

DirectionalLight myDirLight=new DirectionalLight();

myDirLight.Color=Colors.White;

myDirLight.Direction=new Vector3D(-3,-4,-5);

modelGroup.Children.Add(myDirLight);

3.3 三維實體在二維屏幕上顯示的變換過程

三維實體是在三維坐標(biāo)中定義的,但是三維物體要在二維的顯示器上顯示,需要經(jīng)過一些變換。所以將三維實體的三維坐標(biāo)映射到二維屏幕上,需要經(jīng)過以下步驟:

3.3.1 視點變換

視點變換是指調(diào)整視點的位置,WPF中的視點就像拍照攝像機的位置,視點對應(yīng)的是三維場景??梢酝ㄟ^改變實體的位置,也可以通過視點變換即調(diào)整視點的位置,來改變觀察物體的角度和形狀。

XAML文件中的相機位置設(shè)置如下:

<Viewport3D.Camera>

<OrthographicCamera x:Name="mainCamera"Width="3.5"

FarPlaneDistance="10"

NearPlaneDistance="0.125"

LookDirection="0,0,-1"

UpDirection="0,1,0"

Position="0,0,1"/>

</Viewport3D.Camer>

還可以通過mainCamera.Position屬性設(shè)置視點的位置。

3.3.2 模型變換

在WPF中,模型變換(Modeling Transformation)是指對物體位置、方向的設(shè)置,是從模型坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換。模型坐標(biāo)系是指模型繪制時使用的坐標(biāo)系。當(dāng)模型發(fā)生旋轉(zhuǎn)平移等變化時,模型坐標(biāo)系本身不會變化,變化的是模型在世界坐標(biāo)系中的位置。世界坐標(biāo)系是指以屏幕中心為原點(0,0,0),用來描述場景的坐標(biāo),這個坐標(biāo)系可以用來描述物體及光源的位置。世界坐標(biāo)系是不會被改變的??梢酝ㄟ^保持相機位置不變,將物體移動到適當(dāng)位置來進(jìn)行模型變換,也可以固定物體不變,移動相機位置從而實現(xiàn)模型變換。不管使用哪種方式,物體是在當(dāng)前的繪圖坐標(biāo)系中構(gòu)建,物體的位置由當(dāng)前的繪圖坐標(biāo)系決定,所以模型變換歸根到底就是對當(dāng)前繪圖坐標(biāo)系位置的變換,這一變換是在世界坐標(biāo)系下進(jìn)行的。實體位置的變換可以通過模型的旋轉(zhuǎn)、平移和縮放來實現(xiàn)。

WPF中與模型變換相關(guān)的類為:

RotateTransform3D myRotateTransform=new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0,1,0),90))

第一個參數(shù)為旋轉(zhuǎn)中心,第二個參數(shù)為旋轉(zhuǎn)角度。3.3.3 透視投影

如人眼所看,離眼睛近的物體顯得大,而離眼睛遠(yuǎn)的物體顯得小。透視投影通常用于反映現(xiàn)實的真實性,比如動畫、視覺仿真等。投影包括透視投影(Perspective Projection)和正視投影(Orthographic Projection)兩種[14]。WPF投影設(shè)置是通過設(shè)置攝像機類型實現(xiàn)。Orthographic Camera(正射攝像機)是指沒有透視效果,即三維模型到二維圖像的正投影,正投影的邏輯寬度在左,右,前,后,頂,底都是相等的;而Perspective Camera(透視攝像機)指實現(xiàn)三維模型到二位模型的透視投影,也就是看到的實體前端和后端的可視寬度不同。

3.4 實時仿真

3D仿真檢測系統(tǒng)是指根據(jù)實際情況實時檢測真實世界實體受到外界影響發(fā)生的變化。此系統(tǒng)中實時顯示物體的應(yīng)變值,是指物體在受到外界環(huán)境影響下的內(nèi)部結(jié)構(gòu)所表現(xiàn)的狀態(tài)。根據(jù)傳感器實時采集的數(shù)據(jù),對3D模型的數(shù)據(jù)進(jìn)行重新處理,生成當(dāng)前時刻的模型數(shù)據(jù),根據(jù)數(shù)據(jù)重新設(shè)置模型的材質(zhì),實現(xiàn)3D模型的實時動態(tài)顯示。動態(tài)顯示就涉及UI刷新問題,在Windows Form程序開發(fā)過程中,更新UI非常簡單,使用application.DoEvents就可以更新。雖然WPF沒有提供這樣的功能,但是可以通過下面兩種方式實現(xiàn)UI刷新:

(1)通過引入system.windows.forms.dll動態(tài)庫就可以直接調(diào)用application.DoEvents。

(2)使用backgroundworker來實現(xiàn)異步更新UI,通過backgroundworker來執(zhí)行需要消耗很長時間的工作,然后異步更新UI內(nèi)容。實現(xiàn)原理是通過建立一個新的線程來執(zhí)行消耗大量時間的工作,此線程執(zhí)行完畢后,通過Dispatcher來更新UI,WPF會根據(jù)Dispatcher的優(yōu)先順序來更新UI。

4 仿真結(jié)果顯示及分析

在WPF的理論基礎(chǔ)上,實現(xiàn)了基于WPF的3D仿真監(jiān)測系統(tǒng)。WPF能夠很好地實現(xiàn)三維仿真?;赪PF的3D仿真監(jiān)測系統(tǒng)的分析有以下幾點:

(1)WPF仿真計算的模擬和圖形顯示分離的策略便于開發(fā)人員對項目的開發(fā),提高了系統(tǒng)的交互性。

(2)結(jié)果的顯示在實體應(yīng)變上以不同顏色呈現(xiàn),形象直觀,畫面清晰。

(3)模型顯示操作支持多種視圖效果,可以全方位地預(yù)覽和設(shè)計模型,同時支持上、下、左、右、前、后等運動操作,有利于實體的改進(jìn)與優(yōu)化。

(4)對于同樣的3D模型不需要進(jìn)行重新構(gòu)建和導(dǎo)入,可以把之前導(dǎo)入的模型添加到模板,從而實現(xiàn)模型復(fù)用,有利于快速開發(fā)。

5 結(jié)束語

文中著重論述了在Windows環(huán)境下基于WPF的3D模型仿真的研究與實現(xiàn),介紹了通過XAML技術(shù)實現(xiàn)界面與邏輯完全分離,可以使用少量的代碼實現(xiàn),開發(fā)過程簡單,分析了構(gòu)建3D仿真監(jiān)測系統(tǒng)中涉及到的關(guān)鍵技術(shù)。該方法已應(yīng)用于三維仿真監(jiān)測系統(tǒng)中。結(jié)果表明,基于WPF的三維仿真系統(tǒng)的研究與實現(xiàn)具有很好的效果。

[1] 曲 嘯.基于OpenGL的空間仿真可視化技術(shù)研究[D].西安:西安電子科技大學(xué),2013.

[2] 彭曉軍,李 焱,賀漢根.3Ds模型在虛擬現(xiàn)實幾何建模中的應(yīng)用[J].計算機仿真,2003,20(3):52-55.

[3] 郭成操.圖形仿真加工系統(tǒng)的研究與開發(fā)[D].成都:四川大學(xué),2003.

[4] MacVittie L A.XAML in a Nutshell[M].[s.l.]:O’Reilly Media,2006.

[5] 張景仁.WPF模擬三維消防場景的技術(shù)實現(xiàn)[J].武警學(xué)院學(xué)報,2009(6):87-89.

[6] Anderson C.WPF核心技術(shù)[M].朱永光,譯.北京:人民郵電出版社,2009.

[7] 李 響.葵花寶典:WPF自學(xué)手冊[M].北京:電子工業(yè)出版社,2010.

[8] 徐 寧,杜維剛.對 Windows Vista中新一代標(biāo)記語言XAML的研究[J].電腦知識與技術(shù),2007,1(3):774-775.

[9] Evjen B,Hanselman S,Rader D.ASP.NET 2.0高級編程特別版[M].北京:清華大學(xué)出版社,2007.

[10]Sells C,Griffiths I.Programming WPF[M].[s.l.]:O’Reilly Media,2007.

[11] Eisenberg R,Bennage C.Teach yourself WPF in 24 hours [M].American:SASM,2008.

[12] MacDonald M.Pro WPF in C#2010:windows presentation foundation in.NET 4[M].[s.l.]:Apress,2014.

[13] Andrade C,Livermore S,Meyers M,et al.Professional WPF programming:NET developmentwith the windows presentation foundation[M].[s.l.]:Wiley Publishing,2007.

[14]鐘紅梅,簡興祥,彭瑪麗,等.三維可視化物探數(shù)據(jù)分析系統(tǒng)研究[J].硅谷,2014(22):41-42.

Research and Application of 3D Simulation System Based on WPF

SHANG Xu-ming,ZHANG Li-cheng
(School of Information Engineering,Chang’an University,Xi’an 710064,China)

In order to speed up the development of 3D model,the detection ability of the strain and intuitive display entity is realized by studying the WPF programming method based on XAML technology in Windows.The data of building the WPF model is transformed for acquisition data or into 3DMAX,then texture,covering vertices,triangles appearance of the model,and projection transformation technique is applied to realize 3D image for determining the model features.Multi-view model is realized by model combination,as well as viewpoint changes.Through the front frame display,the back frame drawing technology,the dynamic display fluency of three-dimensional model is realized.A kind of three-dimensional monitoring system is established finally.The method has been successfully applied in the 3D simulation and monitoring system,programming based on WPF not only improves the interactivity of the system through the strategy of separation between simulation calculation and graphics display,but also accelerates the development speed with easy realization by using XAML technology,which has a very good effect.

WPF;XAML;3D;monitoring system

TP302

A

1673-629X(2016)09-0039-04

10.3969/j.issn.1673-629X.2016.09.009

2015-12-04

2016-04-06< class="emphasis_bold">網(wǎng)絡(luò)出版時間:

時間:2016-08-23

國家自然科學(xué)基金資助項目(51278058);中央高?;究蒲袠I(yè)務(wù)費專項資金項目(310824151033)

尚旭明(1990-),男,助教,研究方向為數(shù)字圖像處理。

http://www.cnki.net/kcms/detail/61.1450.TP.20160823.1359.050.html

猜你喜歡
視點光源坐標(biāo)系
獨立坐標(biāo)系橢球變換與坐標(biāo)換算
光源改變光環(huán)境
享受LED光源的卓越色彩 Acer(宏碁)PD1530i
鮮艷迷人的HLD光源4K HDR新貴 BenQ(明基)X12000H
LED照明光源的溫升與散熱分析
坐標(biāo)系背后的故事
三角函數(shù)的坐標(biāo)系模型
求坐標(biāo)系內(nèi)三角形的面積
環(huán)境視點
讓你每天一元錢,物超所值——《今日視點—2014精萃》序
怀化市| 伊宁市| 周宁县| 上高县| 安顺市| 六安市| 彩票| 偃师市| 类乌齐县| 宁阳县| 永兴县| 仲巴县| 股票| 巢湖市| 宜兴市| 苏州市| 辉南县| 正蓝旗| 建德市| 乌拉特后旗| 信宜市| 广德县| 淳安县| 关岭| 宁明县| 射阳县| 石阡县| 七台河市| 丘北县| 桦甸市| 建水县| 农安县| 灌阳县| 和静县| 孙吴县| 休宁县| 息烽县| 大邑县| 彝良县| 蓝山县| 梅河口市|