999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于firemonkey 技術的3D動畫設計

2017-11-09 17:02:13張翔宇蔡文齋劉劍鋒
電子技術與軟件工程 2017年19期
關鍵詞:動畫界面效果

張翔宇++蔡文齋++劉劍鋒

摘 要該天線仿真工程需要制作一款監控軟件,當設備運行時能夠在計算機屏幕上展現出簡單的3D動畫效果。使用Delphi開發工具設計并制作了該軟件。利用新版工具中的firemonkey技術實現了動畫效果。利用布局組件技術設計了3D界面上2D組件顯示效果。使用光及光源材質,照相機控件、3D模型等一系列組件渲染出3D圖形,使用動畫組件施作用于3D模型,通過網絡數據讀取得到另外計算機傳來的輸入數據。當程序發生變化后驅動3D模型運動,最終制作出實用的工程3D動畫軟件。

【關鍵詞】仿真測試 照相機 材質源 3D模型 網絡通信

要求開發一套天線仿真訓練系統,訓練操作員操作真實設備的能力。要求制作出與原測控設備外形一樣的全套仿真系統。某承研單位負責地面天線類設備的全套研發,其中某功能要求能在某臺計算機上制作出具有3D效果的天線3D動畫。分析了該種需求后,開發組成員討論各實現途徑。經查詢各種資料,常用的3D類開發軟件開發方法為:微軟的Direct Draw技術、Delphi開發工具的第三方組件類DelphiX技術、Delphi開發工具之GLScence庫技術、虛擬現實開發工具unity 3D技術。一般3D類開發需要學習的相關知識較多,程序員短期內很難達到正式開發的技術水平,工程任務緊,短期內較難完成工程任務。

1 網絡通信問題

通過分析Rad Studio新版工具,firemonkey技術已從XE2版本處于不斷完善中,雖然這方面資料不多,查電子文檔發現英文版例子看起來開發一個簡單的3D動畫類軟件較之其它開發工具要便捷。于是決定使用該技術實現工程項目中3D展示需求。firemonkey技術是Embarcadero公司推向全球的跨平臺的開發技術,使用Delphi或C++builder開發Android、OS X、IOS、Windows平臺下任何應用軟件。新版XE10.2.1已支持LINUX開發。工程中的需求轉化為軟件需求后需要解決兩個問題:網絡通信和3D展示。

firemonkey下的很多組件屬性特性已同平時2D下的開發組件特性不大一樣。需要按例子認真試驗。工程用3D展示主要設計思路為:由天線控制計算機通過網絡接口傳來天線實時位置信息:方位、俯仰值,在3D展示進程(另外獨立軟件)收網絡數據完成3D展示。Firemonkey技術下的網絡通信不同于一般的windows 網絡編程,最好使用該工具軟件下的組件開發,這樣編程既簡單有快捷,在3D進程中,使用indy(Internet direct socked)UDP服務器組件實現網絡數據收。indy組件庫是開源組織提供的全套網絡組件庫。該組件庫提供了幾十個網絡組件,支持各種網絡協議通信,indy庫已經內嵌在Rad Studio 開發工具中。網絡通訊部分開發與2D開發相當。重載IdUDPServer1組件的服務器讀函數。IdUDPServer1組件需要設置DefaultPort參數,設置該參數數值后,再將網絡組件Active激活,則網絡服務器已處于自動收狀態,該組件是基于線程通信的,一旦網絡上有數據到來,則該組件的procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;

const AData: TIdBytes; ABinding: TIdSocketHandle)函數(回調函數)則自動讀到數據并放置于AData緩沖區,ABinding中可以得到發送方的地址, 開發者是看不到真正網絡讀語句的,從緩沖區直接取數據即可。

從網絡AData緩沖區復制內容到自己的緩沖區是不能夠使用CopyMemory函數的,該函數屬于Win32API,在該處是無法使用的,只有使用循環賦值語句。從內存數據到浮點數的轉換使用Delphi的內存對齊技術,在聲明中寫為

Var

B4:Array[0..3] of Byte;

F:single absolute b4;

則表示浮點數f與內存B4共享同一內存空間。將從網絡緩沖區傳來的數據Data首先傳給B4,則f中直接得到浮點數f。這與C語言的聯合是一樣的,使用了該技術后,則3D進程就得到了天線控制機傳來的方位、俯仰變量值了。

2 3D效果展示

建立3D工程,建立后應用界面就是一個3D類窗中,在XE10開發工具中,直接拖Firemonker組件到該界面,注意,這不同于2D界面設計,當首次使用界面可視組件放置在窗口時你可能有時看不到。第一個需要解決的問題是,怎樣在3D界面中設計出2D界面。拖一個Layer3D組件,設置投影效果為Projection=screen,這時Layer3D會出現一個白色的邊框,將對齊方式設為MostRight,此時你的窗口右側即出現一個2D組件容器區,這樣2D組件就有了一個容器,界面中其它2D組件就可以放置在該容器上了。注意3D Form中是放不進2D組件的。

3D圖形在界面上要顯示需要以下幾個要素:

一個或多臺照相機組件,

一個或者多個光源組件(光源分方向,點光源、聚光燈),

材質源組件,材質源分為顏色材質源,紋理材質源,光材質源

3D模型組件(基本的3D模型在Rad Studio開發工具已具備,比如TCube等),復雜的3D模型需要使用3D Max,Maya等工具制作,或者從AutoCAD軟件中導入,該工程中天線模型我們是從結構研究室的AutoCAD軟件直接導入的*.obj文件,3D模型文件有很多種格式各不相同,但可借助3D模型轉換軟件互相轉換。當導入界面后,你會發現有時看不見,將放大比例放大,調整燈光方向,調整照相機角度將會最終看到該3D物體,在3D世界,人眼看到的東西實際是照相機鏡頭看到的東西,所以適當調節光,照相機、材質才能看到3D效果。選中3D模型組件,調整位置與旋轉參數(全是三維向量)會發現3D模型在運動,簡單的3D動畫效果就制作出來了,用一組變化的網絡數據注入數據,觀察3D接收程序執行的效果,發現天線運動并不是想象的形式,終查證分析,可能問題出在坐標系統中,網絡傳來的是極坐標值(A、E),而轉動參數為三維向量(x、y、z),這樣顯然是給不出正確的結果的。一想到要進行坐標轉換,又需要很多試驗要做,很多參數不知道怎么確定。只有另辟思路了,天線3D模型旋轉在真實世界中是天線頭安裝在一個底座上,方位負責水平運動,俯仰負責垂直運動,只要想出一種方法,將這兩種運動分離就可能出現預期效果。

3d動畫制作是較復雜的,要作出象Unity 3D一樣的效果需要學習的知識較多,但制作一個簡單的動畫對Rad Studio工具而言并非難事,動畫表現有兩大類,一類為照相機動,一類為3D模型在動,運動又分為位置和旋轉,在開發工具內這些運動參數表現為向量(x,y,z),動畫可以使用兩種方式實現,一種你自己控制時序改變向量值,一種方法為使用動畫組件定制動作即可。該開發工具已經內置了動畫組件,驅動一個簡單的3D模型運動幾乎使用很少代碼就可實現,在試驗階段,作者試用了BitmapAnimation1,ColorAnimation1,TFloatAnimation,GradientAnimation1等等動畫組件制作了許多例子程序,發現TFloatAnimation功能強勁,一般的各種動態方式都支持(PropertyName),在3D界面中放置一個TCube組件,在該組件的depth屬性值內右擊鼠標產生一個TFloatAnimation,在TFloatAnimation的屬性頁定制動畫參數并激活,你沒有寫一句代碼,簡單的動畫就制作完成了。

3 3D模型定位

查資料后,發現Dummy組件有可能會達到目的。Dummy是個虛擬3D模型,英文字面上為仿制品,經試驗,將Dummy作為Model3D1的父組件。組件父子關系的建立與關聯,使用開發工具中的Structure頁面直接拖動,呼出界面,使用鼠標拖動方式,改變組件之間的隸屬關系,子組件位于父組件的下一層,如圖2所示。

將model3d組件放置在Dummy組件上后,發現光材質源又不起作用了,再試驗,發現材質源只能作用于mesh(網格),再加一個mesh組件,在Form 創建時加

procedure TForm1.Form3DCreate(Sender: TObject);

var

Mesh : TMesh;

begin

for Mesh in Model3D1.MeshCollection do

Mesh.MaterialSource := LightMaterialSource1;

Mesh:=Mesh1;

這樣3D模型才被賦予了材質。這樣在運動時天線模型在不同位置光照是不同的,渲染效果才能夠出現,在該工程項目中,天線3D模型的運動是受另外計算機控制的[6],在網絡收函數內,分別旋轉Dummy和Model3D組件則達到工程制作目的,不使用動畫組件一樣可以達到效果。

4 其它設計

為了使3D效果展示部分獨立于監控程序本身,需要設計網絡配置端口為變量,軟件執行后,如果改變該參數則網絡重新激活。為了觀察從天線控制機傳來的數據變化,又設計了值顯示組件TMemo,定時清除時鐘,否則使用TMemo組件顯示讀取到的數值時如果運行時間過長將會超出內存,定時清除,是一種保護性設計。

5 結束語

firemonkey技術是近年引入的新技術,雖然在Delphi開發工具中仿佛與VCL基礎庫一樣提供了面向對象的高效組件,但底層已由開發公司全部重寫,支持多平臺開發。原Borland公司經典的Delphi曾經給業界Windows應用程序開發帶來過驚喜,使用新版Rad Studio后,制作3D類簡單應用項目同樣使人感到新意滿滿,所見即所得的開發方式使程序員節約了許多時間,較之其它3D開發技術入門門檻不太高。文中以一個具體工程項目為例演示了3D相關開發技術,望對讀者有益。

參考文獻

[1]王艷平.Windows網絡與通信程序設計(第2版)[M].人民郵電出版社,2009(01):203-210.

[2](美)Jeffrey Richter著.王書洪,劉光明譯.Windows高級編程指南[M].清華大學出版社,1999:263-269.

[3](美)拉西諾維奇等著,深入解析Windows操作系統(第5版·英文版)[M].人民郵電出版社,2009(09):161-170.

[4]周愛民著.Delphi源代碼分析[M].電子工業出版社,2004(09):193-205.

[5]Rad Studio Topics.Embarcadero Rad studio 10.2 Help system (2017).http://www.Embarcadero.com

[6]蘇春曉,王鵬等.基于網絡的數字示波器遠程集中軟件平臺[J].太赫茲科學與電子信息學報,2014,12(06):884-889.

[7](美)Scott Myrers,侯捷譯 More Effctive c++ 55個改善編程與設計的有效方法[M].北京工業出版社,2017(04):151-158.

作者簡介

張翔宇(1983-),河北省秦皇島市人。碩士學位。工程師。主要研究方向為遙感信息接收與處理、計算機仿真等。

蔡文齋(1962-),陜西省西安市人。工程碩士。高級工程師。主要研究方向為航天測控工程開發研究、工程控制類應用開發研究,軟件測試等。

劉劍鋒(1972-),黑龍江省綏化市人。博士學歷。高級工程師。主要研究方向為遙感信息接收與處理、系統仿真。

作者單位

1.北京市遙感信息研究所 北京市 100011

2.中國電子科技集團公司第39研究所 陜西省西安市 710065

猜你喜歡
動畫界面效果
按摩效果確有理論依據
做個動畫給你看
動畫發展史
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
迅速制造慢門虛化效果
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
人機交互界面發展趨勢研究
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
主站蜘蛛池模板: 亚洲欧洲美色一区二区三区| 午夜一级做a爰片久久毛片| 亚洲视频影院| 波多野结衣视频网站| 亚洲黄网视频| 成人夜夜嗨| 中文字幕伦视频| 亚洲三级电影在线播放| 一级毛片免费观看不卡视频| 色亚洲成人| 免费看av在线网站网址| 欧美另类精品一区二区三区| 伊人激情综合网| 免费中文字幕在在线不卡| 国产精品久久久久久久久久久久| 一本久道热中字伊人| 亚洲自偷自拍另类小说| 成人va亚洲va欧美天堂| 欧美激情视频一区| 国产成人盗摄精品| 秘书高跟黑色丝袜国产91在线 | 亚洲av无码牛牛影视在线二区| 在线观看欧美国产| 欧美日韩第二页| 日韩av无码精品专区| 超碰免费91| 国内毛片视频| 日韩欧美中文在线| WWW丫丫国产成人精品| 国产成人a毛片在线| 亚洲欧洲日韩综合| 亚洲综合天堂网| 午夜精品久久久久久久无码软件| 99er这里只有精品| 国产女人水多毛片18| 国产精品污视频| 欧美一级夜夜爽| 亚洲国产精品日韩av专区| 欧美区一区| 久久综合亚洲色一区二区三区| 77777亚洲午夜久久多人| 成人福利在线看| 国产三级国产精品国产普男人| 热99精品视频| 国产人在线成免费视频| 欧美黄色a| 九九久久精品国产av片囯产区| 婷婷在线网站| 精品人妻系列无码专区久久| 国产一区二区三区免费观看| 亚洲成人网在线播放| 国内99精品激情视频精品| 免费久久一级欧美特大黄| 国产黄在线免费观看| 成人综合在线观看| 亚洲欧美不卡视频| 亚洲人成日本在线观看| 波多野结衣视频一区二区| 中文字幕永久视频| 日韩在线播放欧美字幕| 亚洲国产日韩视频观看| 毛片免费视频| 国产91透明丝袜美腿在线| 日本黄色a视频| 亚洲一区二区在线无码| 国产一区亚洲一区| 视频一区视频二区中文精品| 国产精品精品视频| 婷婷色中文网| 欧美一区二区自偷自拍视频| 亚洲成a∧人片在线观看无码| 欧美乱妇高清无乱码免费| 99在线观看视频免费| 色网站在线免费观看| 精品小视频在线观看| 女人18毛片水真多国产| 亚洲欧美日韩成人在线| 亚洲欧美精品日韩欧美| 一级全免费视频播放| 久久午夜夜伦鲁鲁片无码免费| 欧美一级黄片一区2区| 中文字幕 欧美日韩|