《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 倉儲仿真三維圖元管理平臺
倉儲仿真三維圖元管理平臺
來源:微型機與應用2013年第19期
張世辰,,張翔立,,黃金國
(華中科技大學 機械科學與工程學院 工業(yè)工程系,湖北 武漢 430074)
摘要: 在倉儲仿真項目的開發(fā)中,,圖元的創(chuàng)建和三維場景的布置是重要的步驟,。為了簡化倉儲仿真項目的開發(fā),,提出一種倉儲三維仿真圖元管理的平臺方案。該平臺模型由4個關鍵模塊組成,。并在WPF下實現(xiàn)了關鍵模塊,,結果表明采用該平臺的相應模塊能夠?qū)崿F(xiàn)仿真圖元對象的快速創(chuàng)建、仿真圖元的高效管理,,方便地為開發(fā)基于WPF平臺的倉儲仿真項目提供合適的圖元對象,。因此該平臺能夠簡化倉儲仿真項目的開發(fā)步驟,節(jié)省開發(fā)時間,。
Abstract:
Key words :

摘  要:倉儲仿真項目的開發(fā)中,,圖元的創(chuàng)建和三維場景的布置是重要的步驟。為了簡化倉儲仿真項目的開發(fā),,提出一種倉儲三維仿真圖元管理的平臺方案,。該平臺模型由4個關鍵模塊組成。并在WPF下實現(xiàn)了關鍵模塊,,結果表明采用該平臺的相應模塊能夠?qū)崿F(xiàn)仿真圖元對象的快速創(chuàng)建,、仿真圖元的高效管理,方便地為開發(fā)基于WPF平臺的倉儲仿真項目提供合適的圖元對象,。因此該平臺能夠簡化倉儲仿真項目的開發(fā)步驟,,節(jié)省開發(fā)時間。
關鍵詞: 倉儲仿真,;三維仿真,;圖元管理

 計算機仿真是應用電子計算機對系統(tǒng)的結構,、功能和行為以及參與系統(tǒng)控制的人的思維過程和行為進行動態(tài)地模仿,進而得出數(shù)量指標,,為決策者提供有關這一過程或系統(tǒng)的定量分析結果,,作為決策的理論依據(jù)。
以倉庫仿真為例,,倉庫管理人員可實時掌握貨物信息,,直觀地了解當前倉庫的狀態(tài)。相較于二維圖表,,三維模型在仿真方面有著很大的優(yōu)勢,。三維的圖元需要有圖形用戶界面GUI(Graphic User Interface)的支持,在Windows系統(tǒng)平臺上從事圖形用戶界面程序開發(fā)的工具歷經(jīng)了Win32->MFC(及同類產(chǎn)品)->ActiveX/COM/Visual Basic->Windows Forms的變遷,,從2007年開始微軟推出了新一代GUI開發(fā)工具Windows Presentation Foundation,并把它作為未來十年Windows平臺GUI開發(fā)的主要技術,。
1 平臺設計思想
1.1 平臺設計的出發(fā)點

 在倉儲物流系統(tǒng)中,,包括入庫臺、傳送帶,、叉車,、堆垛機、AVG小車,、貨架,、貨物、緩沖區(qū)臨時堆場等資源,。倉儲仿真應用既需要展現(xiàn)實際倉庫動作的動態(tài)信息(例如:堆垛機的實時運動,,貨架上是否有貨物,當前入庫,、出庫的貨物),;也要能夠顯示倉庫的靜態(tài)信息(例如貨物的數(shù)量信息、供應商/客戶信息等),。因此,,仿真應用的圖元不僅僅包含要顯示的模型信息,從面向?qū)ο蟮慕嵌纫褢弥械膱D元對象化,,增加相應的屬性使之能夠描述現(xiàn)實中的倉庫資源[1],。
 開發(fā)仿真應用首先需要創(chuàng)建圖元,一般通過三維軟件建模獲得,,根據(jù)圖形用戶界面——GUI的標準不同,,直接使用或者進行轉換生成符合要求的圖元文件,此時的圖元只具有幾何信息,,為了實現(xiàn)應用中的功能,,還需要增加相應的屬性,,使之成為一個完整的圖元對象,得到所有圖元對象后需要設置每個模型的位置,,即完成場景布置,。完成這些步驟往往需要多個工具的參與,工具的切換增加了開發(fā)的繁瑣,,更重要的是這些步驟中缺乏對已有圖元的管理,,對于一些相似的圖元,重復制作浪費時間和精力,,故需要將這些圖元管理起來,,建立圖元庫。因此,,本文提出的平臺模型將這些步驟封裝成相應模塊,,并與其他模塊聯(lián)合簡化開發(fā)步驟。
1.2 平臺的功能分析
 仿真圖元的加載,。單獨開發(fā)出繪圖模塊工作量較大,,現(xiàn)有的三維軟件造型功能已十分完整,并能支持如obj等中間圖形文件,,使用三維軟件(pro/e,、SolidWorks、3DMax等)創(chuàng)建圖元,,生成的圖形文件需要由平臺的相應模塊將其轉換為平臺可用圖元,。
 仿真圖元的對象化。被模擬的對象除了幾何信息外,,應具有很多特有的屬性,,比如貨物的基本信息,因此平臺中需要創(chuàng)建圖元對象,,使之更貼近現(xiàn)實倉儲資源,。
 仿真圖元對象的編輯與管理。平臺需要實現(xiàn)圖元對象的存儲及屬性修改以滿足相似圖元的重復利用提高開發(fā)效率,,對于已保存的圖元,,平臺也需要提供基本管理的功能模塊[2]。
圖元輸出功能,,平臺的最終目的是為倉儲仿真應用提供圖元,,因此需要輸出完整的圖元文件。該圖元文件中包含了圖元的幾何信息確保模型的準確外形,;包含了坐標屬性使模型顯示在場景的正確位置,;包含圖元的屬性定義,使圖元對象攜帶現(xiàn)實倉庫中資源的信息。
2 平臺結構及模塊分析
2.1 平臺結構

 平臺采用典型的三層架構,,圖1是平臺的內(nèi)部結構,,表示層負責把仿真數(shù)據(jù)和操作工具展示給用戶。在該平臺中,,表示層的主要作用是顯示三維模型,,提供屬性的可視化編輯等工具,管理數(shù)據(jù)層的圖元,。

    業(yè)務邏輯層中需要實現(xiàn)表示層中各個工具的功能,,為表示層展現(xiàn)的場景提供模型數(shù)據(jù),調(diào)用和處理數(shù)據(jù)層的圖元信息,。
 數(shù)據(jù)層使用數(shù)據(jù)庫軟件來保存三維圖元的屬性信息,,圖元對象是在程序運行的時候創(chuàng)建出來的,保存圖元對象就是將圖元對象的所有屬性保存數(shù)據(jù)庫表中,,通過相應模塊能夠?qū)⑦@些信息快速還原為圖元對象,,通過數(shù)據(jù)庫操作,能夠修改表中圖元的屬性信息,,提高幾何相似圖元的利用率,。
2.2 模塊分析
 邏輯層是平臺的核心層,參照圖1平臺內(nèi)部結構,,邏輯層按照功能分為4個模塊[3],。
?。?)圖元加載模塊
    圖元加載工具調(diào)用加載模塊的相應功能加載圖元,,圖元的加載有兩種方式:一種是從外部導入三維圖形軟件生成的中間文件,并將其轉換為平臺可用的圖元,;另一種方式是從數(shù)據(jù)庫中獲取保存的圖元,。加載模塊將圖元的幾何信息傳遞給圖元對象模塊。
?。?)圖元對象生成模塊
該模塊生成一個圖元對象,,此對象的幾何屬性來自圖元加載模塊,同時將幾何信息顯示于表示層場景中,,此時的對象只具有幾何屬性,,只能在場景中顯示,不能承載信息,,故還需要使用圖元編輯模塊完成屬性編輯,。
 (3)圖元屬性編輯模塊
 表示層的屬性編輯工具調(diào)用屬性編輯模塊的相應功能對前一模塊生成的圖元對象進行屬性的創(chuàng)建和編輯,,完成屬性編輯的圖元對象存入數(shù)據(jù)庫中,。
 (4)圖元管理模塊
 此模塊的作用主要有兩個:對數(shù)據(jù)庫中的圖元進行管理,比如圖元的刪除,、重命名,、以及部分屬性的直接修改;圖元的輸出,,將數(shù)據(jù)庫中的圖元對象輸出,,為脫離本平臺的仿真應用的開發(fā)提供可用圖元。
3 平臺的關鍵模塊實現(xiàn)
3.1 圖元加載模塊

 XAML是WPF技術中專門用于設計UI的語言,,用ViewPort3D標簽定義一個三維場景,,其中幾何信息定義在標記<GeometryModel3D.Geometry>的子標記<MeshGeometry3D>中,其中主要由Positions,、TriangleIndices這兩個屬性決定模型的形狀,,Positions屬性的值為一系列點的三維坐標,每3個點構成1個三角形面作為構成模型表面的最小單元,,Positions屬性中按照3個坐標一組,,分別對應第i個點(i=0,1,,2,,3,…),,TriangleIndices屬性保存Positions中點的索引i,,每3個索引為一組,構成1個三角形面,,簡單的三維模型表面分割成三角形時,,Positions的點坐標及TriangleIndices中索引的數(shù)量不多,但遇到稍微復雜的圖元,,此時Positions中的點以及TriangleIndices中索引的數(shù)量將大大增加,。這將大大增加XAML代碼的篇幅。
 obj文件作為大多數(shù)三維軟件支持的輸出文件,,包含了模型的全部幾何信息,。obj文件定義三維模型的方式與positions屬性不同,不能直接使用,,在WPF中使用展現(xiàn)三維模型通常需要使用微軟提供的Blend軟件的圖形導入功能,,使用Blend軟件在WPF項目中導入obj文件就是按照上文描述的這種規(guī)則將表面劃分成很多的三角形,并將三角形的頂點坐標按照指定的規(guī)則寫入Positions屬性中,,造成XAML代碼的大量增加[4],。因此在Blend中加載obj文件的方式并不理想。
 由于Positions屬性中點的坐標冗長,,通過改變坐標達到改變模型形狀或位置的做法并不可取,,通過三維軟件重新編輯obj文件相對方便,因此完全可以將Positions及TriangleIndices的屬性賦值放在邏輯層完成。在平臺界面上通過圖元加載工具通過文件對話框選擇相應的obj文件,,此時加載模塊調(diào)用轉換功能將obj文件的幾何信息提取,,生成一系列點的坐標,在邏輯層將這些點的數(shù)據(jù)添加到Positions屬性中,,這樣在XAML代碼中就避免了加入ModelVisual3D標簽,,這種方式既保留了Blend軟件加載obj文件的方便性又減少了XAML代碼的篇幅,使其便于維護,。
3.2 圖元對象生成模塊
 obj文件中的幾何信息被轉換為符合Positions屬性值規(guī)則的點的集合后賦給GeometryModel3D的Geometry屬性,,并將此GeometryModel3D對象賦給ModelVisual3D對象的Content屬性,該ModelVisual3D對象將被添加到一個繼承自ModelVisual3D的ModelVisual3DWithName類的Children屬性中,。Viewport3D對象的Children屬性添加ModelVisual3D類型對象,。此時完成了一個圖元對象的創(chuàng)建,此對象只包含幾何信息等一些內(nèi)置屬性,,再設置好相機,、光線等屬性即可顯示三維模型。
3.3 圖元屬性編輯模塊
?。?)內(nèi)置屬性的編輯
 內(nèi)置屬性主要包含位置信息,、顏色信息。位置信息只反映出了模型的空間坐標及姿態(tài),,ModelVisual3D對象中通過Transform屬性來改變模型的位置屬性,、旋轉屬性、放縮屬性,;GeometryModel3D.Meterial屬性表示模型的材質(zhì)屬性,。
 Transform屬性值是Transform類型,TranslateTransform3D繼承自Transform類,,TranslateTransform3D類有3個表示位置信息的屬性OffsetX,、OffsetY,、OffsetZ,。每個都有相應的依賴屬性:OffsetXProperty、OffsetYProperty,、OffsetZProperty,。依賴屬性就是一種可以自己沒有值,并能夠通過Binding從數(shù)據(jù)源獲得值的屬性[5],。因此可以將模型的依賴屬性OffsetXProperty等屬性綁定到界面上Slider(滾動條)控件的Value屬性,,這樣就可以控制模型的位置。自定義的圖元對象ModelVisual3DWithName有一個location屬性,,表示模型固定點的空間坐標,,該點為模型邊界立方體的固定頂點[5]。通過該點的坐標,可以確定模型的空間位置,,進而確定模型間的相對位置,。其余內(nèi)置屬性的編輯方式可以參照上述過程。
?。?)自定義屬性的編輯
 ModelVisual3D對象擁有最基本的三維模型的屬性,,比如上文提到的顏色、位置等屬性,。但在實際應用中,,針對不同的模型還需要用到一些自定義屬性。比如說貨物的重量屬性,、生產(chǎn)日期屬性,、客戶屬性等。
自定義的屬性是某個圖元所特有的屬性,,不必要為所有圖元對象都加上這樣的屬性否則會在應用程序中產(chǎn)生一些不必要的內(nèi)存空間浪費,,于是在本模塊中只將自定義的屬性保存在數(shù)據(jù)庫中[6],并與特定的圖元對象相關聯(lián),。將自定義的屬性添加到圖元對象這一步驟在下一模塊中完成,。
3.4 圖元管理模塊
 圖元管理模塊實現(xiàn)數(shù)據(jù)庫中已有圖元數(shù)據(jù)的管理??梢詣h除圖元,,修改圖元的部分屬性信息。對于需要輸出的圖元,,為了實現(xiàn)其自定義屬性,,平臺通過動態(tài)代碼為每個圖元定制一個類型。該類型繼承自ModelVisual3D類,,根據(jù)數(shù)據(jù)庫中的圖元信息添加自定義的CLR屬性或依賴屬性,,最終將動態(tài)編譯成.dll文件保存。
 在應用中,,只需要引入所需圖元對象的.dll文件及名稱空間并實例化該類就可以得到圖元對象,。可以通過該對象的CLR屬性獲得自定義的屬性信息,,將依賴屬性綁定到相應的數(shù)據(jù)源,,或者將此類型作為父類型,擴展方法,、事件等操作,。
4 已完成模塊的測試
 以一個鋼卷倉庫為例,使用該平臺布置倉庫場景,。首先用Pro/e軟件做出三維模型:立柱,、橫梁,、鋼索、鋼卷,、抓手,。并導出各個模型的obj文件。通過平臺圖元加載模塊加載這些obj文件,,通過圖元生成模塊生成圖元對象,,顯示場景如圖2所示。

 使用平臺的屬性編輯模塊調(diào)整各模型的相對位置及各個模型的材質(zhì),,并將圖元信息保存,,再使用圖元管理模塊導出dll文件。在新的WPF項目中引用dll及相應名稱空間,,實例化各個圖元及場景,,效果如圖3所示:布置好場景后后臺可以控制場景中的每一個模型,獲得圖元屬性,,根據(jù)邏輯需求實現(xiàn)模型的仿真動作,。

    本文提出了一個倉儲仿真及三維圖元管理平臺的模型,并在WPF下實現(xiàn)了平臺關鍵模塊,,通過對平臺模塊的測試可以看出這些模塊可以簡化倉儲仿真的開發(fā)步驟,,提高相似圖元的利用率,節(jié)省開發(fā)時間,。后期任務:增加仿真模塊,,即從數(shù)據(jù)庫中獲取指定場景的所有圖元,自動完成場景布置,,通過設定參數(shù)仿真場景,,或者對于簡單的項目直接將圖元相應的屬性與實時數(shù)據(jù)相關聯(lián),以完成場景的實時仿真,。
參考文獻
[1] 蔡靖,,申婷婷,王海丹.基于Flexsim的某自動化倉儲系統(tǒng)的仿真結果和分析[J].制造業(yè)自動化,,2012,,34(7):107-122.
[2] 張建奇,李墨翰,,鄭偉.基于WPF的工廠物流管理系統(tǒng)界面設計[J].自動化技術與應用,,2011,,30(12):17-20.
[3] 李成剛,,馮靜,凌玲.基于WPF的交互繪圖系統(tǒng)的開發(fā)[J].微型機與應用,,2011,,30(6):50-52.
[4] 張洪定,,孟冬梅.基于Expression Blend4中文版WPF和Silverlight項目設計基礎[M].北京:清華大學出版社,2011.
[5] 劉鐵錳.深入淺出WPF[M].北京:中國水利水電出版社,,2010.
[6] 石怡.WPF使用XAML實現(xiàn)對SQL Server數(shù)據(jù)庫綁定的方法[J].電腦開發(fā)與應用,,2011,24(10):70-74.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。