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

基于firemonkey 技術(shù)的3D動畫設(shè)計

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

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

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

【關(guān)鍵詞】仿真測試 照相機(jī) 材質(zhì)源 3D模型 網(wǎng)絡(luò)通信

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

1 網(wǎng)絡(luò)通信問題

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

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

const AData: TIdBytes; ABinding: TIdSocketHandle)函數(shù)(回調(diào)函數(shù))則自動讀到數(shù)據(jù)并放置于AData緩沖區(qū),ABinding中可以得到發(fā)送方的地址, 開發(fā)者是看不到真正網(wǎng)絡(luò)讀語句的,從緩沖區(qū)直接取數(shù)據(jù)即可。

從網(wǎng)絡(luò)AData緩沖區(qū)復(fù)制內(nèi)容到自己的緩沖區(qū)是不能夠使用CopyMemory函數(shù)的,該函數(shù)屬于Win32API,在該處是無法使用的,只有使用循環(huán)賦值語句。從內(nèi)存數(shù)據(jù)到浮點(diǎn)數(shù)的轉(zhuǎn)換使用Delphi的內(nèi)存對齊技術(shù),在聲明中寫為

Var

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

F:single absolute b4;

則表示浮點(diǎn)數(shù)f與內(nèi)存B4共享同一內(nèi)存空間。將從網(wǎng)絡(luò)緩沖區(qū)傳來的數(shù)據(jù)Data首先傳給B4,則f中直接得到浮點(diǎn)數(shù)f。這與C語言的聯(lián)合是一樣的,使用了該技術(shù)后,則3D進(jìn)程就得到了天線控制機(jī)傳來的方位、俯仰變量值了。

2 3D效果展示

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

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

一個或多臺照相機(jī)組件,

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

材質(zhì)源組件,材質(zhì)源分為顏色材質(zhì)源,紋理材質(zhì)源,光材質(zhì)源

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

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

3 3D模型定位

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

將model3d組件放置在Dummy組件上后,發(fā)現(xiàn)光材質(zhì)源又不起作用了,再試驗(yàn),發(fā)現(xiàn)材質(zhì)源只能作用于mesh(網(wǎng)格),再加一個mesh組件,在Form 創(chuàng)建時加

procedure TForm1.Form3DCreate(Sender: TObject);

var

Mesh : TMesh;

begin

for Mesh in Model3D1.MeshCollection do

Mesh.MaterialSource := LightMaterialSource1;

Mesh:=Mesh1;

這樣3D模型才被賦予了材質(zhì)。這樣在運(yùn)動時天線模型在不同位置光照是不同的,渲染效果才能夠出現(xiàn),在該工程項(xiàng)目中,天線3D模型的運(yùn)動是受另外計算機(jī)控制的[6],在網(wǎng)絡(luò)收函數(shù)內(nèi),分別旋轉(zhuǎn)Dummy和Model3D組件則達(dá)到工程制作目的,不使用動畫組件一樣可以達(dá)到效果。

4 其它設(shè)計

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

5 結(jié)束語

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

參考文獻(xiàn)

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

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

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

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

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

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

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

作者簡介

張翔宇(1983-),河北省秦皇島市人。碩士學(xué)位。工程師。主要研究方向?yàn)檫b感信息接收與處理、計算機(jī)仿真等。

蔡文齋(1962-),陜西省西安市人。工程碩士。高級工程師。主要研究方向?yàn)楹教鞙y控工程開發(fā)研究、工程控制類應(yīng)用開發(fā)研究,軟件測試等。

劉劍鋒(1972-),黑龍江省綏化市人。博士學(xué)歷。高級工程師。主要研究方向?yàn)檫b感信息接收與處理、系統(tǒng)仿真。

作者單位

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

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

猜你喜歡
動畫界面效果
按摩效果確有理論依據(jù)
做個動畫給你看
動畫發(fā)展史
國企黨委前置研究的“四個界面”
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
迅速制造慢門虛化效果
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
人機(jī)交互界面發(fā)展趨勢研究
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
主站蜘蛛池模板: 日韩中文无码av超清| 日韩欧美国产另类| 在线免费不卡视频| 乱色熟女综合一区二区| 视频一区亚洲| 亚洲bt欧美bt精品| 国产精品九九视频| 谁有在线观看日韩亚洲最新视频 | 亚洲乱码在线视频| 亚洲国产成人无码AV在线影院L| 亚洲天堂精品在线观看| 亚洲成人精品久久| 日韩精品一区二区三区中文无码| 一级毛片在线免费看| 99视频精品全国免费品| 黄色网在线| 91成人免费观看在线观看| 97成人在线视频| 国产精品网址在线观看你懂的| 国产精品密蕾丝视频| 久久中文字幕不卡一二区| 毛片免费在线视频| 91精品国产91欠久久久久| 亚洲男人在线| 91在线精品免费免费播放| JIZZ亚洲国产| 黄色网页在线播放| 国产剧情国内精品原创| 国产一级视频在线观看网站| 国产91视频观看| 免费99精品国产自在现线| 欧美一级夜夜爽www| 亚洲女同欧美在线| 日韩在线播放中文字幕| 日本成人不卡视频| 国产亚洲现在一区二区中文| 3p叠罗汉国产精品久久| 国产在线观看成人91| 国产欧美日韩视频怡春院| 国产精品久久久久久久久kt| 国产欧美自拍视频| 日韩欧美中文| 天堂岛国av无码免费无禁网站| 亚洲av色吊丝无码| 欧美黄网在线| 秘书高跟黑色丝袜国产91在线| 色悠久久久| 日韩欧美综合在线制服| 国产电话自拍伊人| 免费看一级毛片波多结衣| 无遮挡国产高潮视频免费观看| 2020亚洲精品无码| 国产精品福利社| 亚洲大尺码专区影院| 九九香蕉视频| 国产一区在线视频观看| 亚洲国产午夜精华无码福利| 国产剧情国内精品原创| 波多野结衣视频一区二区| 久久成人18免费| 青青草原国产av福利网站| 国产成人久久综合777777麻豆| 全免费a级毛片免费看不卡| 67194亚洲无码| 色播五月婷婷| 国产日韩欧美视频| 亚洲水蜜桃久久综合网站 | 四虎国产精品永久一区| 在线视频亚洲色图| 波多野结衣在线se| 亚洲欧美不卡| 国产不卡国语在线| 国产精品视频猛进猛出| 免费在线视频a| 婷婷丁香在线观看| 国产一国产一有一级毛片视频| 国产性生大片免费观看性欧美| 久久精品人妻中文视频| 婷婷六月激情综合一区| 久久国产亚洲偷自| 国产成人成人一区二区| 71pao成人国产永久免费视频|