何昌偉, 賈小平, 劉大偉, 劉 媛
(青島遠洋船員職業(yè)學(xué)院, 山東 青島 266071)
增強現(xiàn)實技術(shù)在船舶液壓領(lǐng)域中的應(yīng)用
何昌偉, 賈小平, 劉大偉, 劉 媛
(青島遠洋船員職業(yè)學(xué)院, 山東 青島 266071)
以便攜移動終端上使用的增強現(xiàn)實技術(shù)為研究對象,利用Unity 3d驅(qū)動引擎及高通SDK開發(fā)工具包,研究和實現(xiàn)基于智能手機平臺的船舶液壓設(shè)備技術(shù)手冊增強現(xiàn)實系統(tǒng)。該系統(tǒng)能根據(jù)圖像識別的結(jié)果在智能手機的視頻影像中實時疊加相應(yīng)的三維動畫等多媒體擴增內(nèi)容,使輪機員更直觀、全面、深入地理解設(shè)備的結(jié)構(gòu)和工作原理,從而有效提高其業(yè)務(wù)能力和設(shè)備管理水平。
船舶工程; 增強現(xiàn)實; 船舶液壓; 輪機工程; Unity 3d
增強現(xiàn)實(Augmented Reality,AR)是一種新穎的體驗形式,是虛擬現(xiàn)實研究中的一個重要分支。與傳統(tǒng)的沉浸式虛擬現(xiàn)實不同,AR把虛擬場景與現(xiàn)實影像無縫融合在一起。[1]圖1展示了利用AR技術(shù)給一張卡片疊加虛擬汽車的情形:把圖1(a)中的一張原始卡片放在圖1(b)中的電腦攝像頭下,攝像頭采集到的影像經(jīng)識別后,在電腦屏幕上顯示為圖1(c)的效果,并且隨著卡片的轉(zhuǎn)動和移動,虛擬的汽車也隨之轉(zhuǎn)動和移動,就像卡片上真的停放了一輛汽車一樣。該技術(shù)可實時地計算攝像機采集到的圖像的位置及角度,并利用視覺跟蹤技術(shù)疊加上相應(yīng)的擴增內(nèi)容(Augmented Content)將擴增的虛擬物體與攝像頭所拍攝的周圍環(huán)境從視覺上完美地融合在一起,以達到擴張實境的效果。擴增內(nèi)容可以是二維及三維模型、音頻及視頻素材、文本信息等。
AR技術(shù)在視覺上把虛擬世界嵌入現(xiàn)實世界并進行互動,可以幫助觀察者更全面地了解背景、獲取信息、擴充知識,以達到更深入理解的效果。[2-3]目前,圍繞該技術(shù)的各種應(yīng)用研究正在蓬勃開展,其在醫(yī)學(xué)研究、教育培訓(xùn)、文化娛樂等諸多領(lǐng)域已有成功應(yīng)用的實例。[4]本文探討的“基于智能手機的技術(shù)在船舶液壓系統(tǒng)中的應(yīng)用”屬于新的嘗試,以期給船舶液壓設(shè)備說明書加入擴增的三維零件模型,使輪機員能夠更廣泛深入地理解設(shè)備結(jié)構(gòu)原理,提高其管理水平。
1.1系統(tǒng)架構(gòu)設(shè)計
(a) 一張原始卡片
(b) 通過攝像頭看到的擴增場景
(c) 加入擴增內(nèi)容后的場景
船舶液壓設(shè)備手冊增強現(xiàn)實系統(tǒng)的整體架構(gòu)見圖2,該系統(tǒng)在開發(fā)過程中針對智能手機的特點專門進行了優(yōu)化,以期在不影響視覺效果的前提下盡量降低三維模型面數(shù)和貼圖分辨率;吸收了面向?qū)ο蟮木幊趟枷?,將可重?fù)使用的對象定義為預(yù)制體(prefab),以盡量優(yōu)化代碼、提高效率。該系統(tǒng)可對船舶液壓設(shè)備手冊中常見的圖形、文字對象以及自定義標記(marker)進行識別追蹤,然后將擴增內(nèi)容與識別結(jié)果進行匹配,實現(xiàn)增強現(xiàn)實的效果。
圖2 系統(tǒng)架構(gòu)
1.2系統(tǒng)開發(fā)實現(xiàn)
1.2.1開發(fā)工具選擇
增強現(xiàn)實系統(tǒng)的開發(fā)平臺及工具包有很多,如AR ToolKit、MR Platform以及Coin 3D等,它們有其各自的優(yōu)點和適合的領(lǐng)域,但直接利用這些工具開發(fā)針對智能手機的應(yīng)用程序會比較復(fù)雜,需針對不同的手機操作系統(tǒng)(比如Android或iOS)做大量的代碼遷移工作。[5-7]Unity 3d是由丹麥Unity Technologies公司開發(fā)的一種多平臺三維引擎,其最大特點是具有出色的夸平臺性,用Unity 3d制作的軟件或增強現(xiàn)實系統(tǒng)可以發(fā)布在Windows PC、Mac、Android、iOS以及微軟、任天堂、索尼等公司推出的家用掌機平臺上,甚至可以發(fā)布成Flash文件,這就意味著一次開發(fā)可以無憂發(fā)布。而高通公司提供的AR SDK包作為Unity 3d的擴展,可以讓我們快速構(gòu)建自己的增強現(xiàn)實應(yīng)用。選擇Unity 3d及高通AR SDK擴展包組合作為開發(fā)工具,不僅避免了針對不同平臺開發(fā)多種版本,也避免了代碼遷移工作帶來的重復(fù)勞動,同時能讓我們把更多的精力集中到增強現(xiàn)實應(yīng)用本身。
1.2.2開發(fā)環(huán)境配置
以在Windows環(huán)境中開發(fā)Android版應(yīng)用為例,Android是內(nèi)核基于linux的開源移動設(shè)備操作系統(tǒng),其支持的高級編程語言為Java,在開發(fā)船舶液壓設(shè)備手冊增強現(xiàn)實系統(tǒng)之前,先要到Oracle和Android官方網(wǎng)站下載JDK與Android SDK,并進行安裝,然后配置系統(tǒng)變量,具體為
(1) 變量名為JAVA_HOME, 變量值為JDK安裝目錄;
(2) 變量名為CLASSPATH,變量值為.;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%in;
(3) 變量名為Path,變量值為JDK安裝目錄in;Android SDK安裝目錄sdkplatform-tools。
如果系統(tǒng)中以上變量名已存在,則在原變量值末尾加上分號后再插入新的值;如果不存在則新建并賦值。經(jīng)過配置后,程序編譯發(fā)布過程中就能夠找到對應(yīng)的系統(tǒng)文件。
若想讓系統(tǒng)運行在iPhone或iPad上(都為iOS系統(tǒng)),必須在蘋果Mac OS桌面系統(tǒng)環(huán)境中編譯Unity 3d發(fā)布的xCode工程文件,并將生成的應(yīng)用程序上傳至蘋果APP Store,供下載使用。
1.2.3Unity 3d坐標系
如何有效地定位并驅(qū)動模型是增強現(xiàn)實系統(tǒng)需要解決的主要問題之一,比如最基本的平移、旋轉(zhuǎn)、縮放等,需用到坐標系及仿射變換的相關(guān)內(nèi)容。Unity 3d中大致有4種常用坐標系,分別為:
(1) 世界坐標(World Space):即物體在場景中的全局坐標,可通過transform.position獲得;
(2) 屏幕坐標(Screen Space):以像素為單位,屏幕的左下角為原點(0,0),右上角為(pixel Width,pixel Height);Z的位置是以世界單位衡量的到相機的距離。注意鼠標定位屬于屏幕坐標,可通過Input.mouse Position獲得;通過Input.Get Touch(0).position可以獲得單個手指觸摸的屏幕坐標;
(3) 視口坐標(View Port Space):視口坐標是歸一化的和相對于相機的,相機視口的左下角為(0,0),右上角為(1,1);Z的位置是以世界單位衡量的到相機的距離;
(4) 圖形界面坐標(Graphical User Interface):該坐標系與屏幕坐標系類似,不同之處為該坐標系以屏幕的左上角為原點(0,0),右下角為(Screen.width,Screen.height)。
物體的變換則是通過向量或坐標乘以4×4的仿射變換矩陣[8]實現(xiàn)的,所以向量及坐標需要擴展到齊次空間中。向量表示為(x,y,z, 0),坐標表示為(x,y,z, 1)。第4項之所以不同,是因為對于向量,其值為0,可以使矩陣的平移變換失效而不影響旋轉(zhuǎn)和縮放變換;對于坐標,其值為1,可使平移有效且變換過程中比例不會改變。
1.2.4擴增內(nèi)容的實現(xiàn)
擴增內(nèi)容是指在真實場景中附加的虛擬內(nèi)容,包括三維模型及動畫、語音、視頻等素材,其中工作量最大的當屬三維模型。本系統(tǒng)使用的建模工具為Inventor和3ds max,利用Inventor強大的二維草圖、掃掠、拉伸等功能,可生成高精度的設(shè)備零件三維模型,經(jīng)3ds max美化及補充后,導(dǎo)出后綴名為FBX的資源文件,最后導(dǎo)入Unity 3d平臺。[9-10]建好的油泵模型見圖3。
此外,為了更生動地表現(xiàn)設(shè)備的工作過程,比如油泵及閥件內(nèi)部的流道及連通關(guān)系,使用3ds max建立和流道貼合的三維箭頭模型,配合流動液體效果的貼圖,通過GPU編程的方法實現(xiàn)自定義Shader,從而達到利用帶貼圖動畫的三維箭頭來表現(xiàn)液壓油走向的目的(見圖3)。
CGPROGRAM
……
v2f vert (appdata_base v) //頂點函數(shù)
{
v2f o;
o.pos=mul (UNITY_MATRIX_MVP,v.vertex);
//利用投影矩陣進行視口變換
o.uv=TRANSFORM_TEX(v.texcoord,_MainTex); //貼圖紋理坐標
return o;
}
float4 frag (v2f i) : COLOR //片元函數(shù)
{
float4 outp;
float4 defaultcolor = float4 (0.6,0.6,0.6,0.26);
//定義貼圖隱藏時顯示的默認顏色
float4 texCol = tex2D (_MainTex,i.uv);
//定義貼圖顏色并賦值
//箭頭方向為Y用i.uv.y,_MainTex_ST.xy對應(yīng)Tiling ,_MainTex_ST.zw對應(yīng)Offset
//通過外部腳本改變_Lenth變量便可實現(xiàn)貼圖動畫效果
if (i.uv.y lt;_Lenth*_MainTex_ST.y)
outp =texCol;
//_Lenth指定長度以內(nèi)顯示貼圖顏色
else
outp =default color;
//_Lenth指定長度以外顯示默認顏色
return outp;
}
ENDCG
圖3 油泵三維模型
1.2.5圖像識別及注冊
(1) 制作識別對象。高通ARSDK支持本地識別數(shù)據(jù)庫和云識別數(shù)據(jù)庫,這兩種方式各有所長。本地數(shù)據(jù)庫無需網(wǎng)絡(luò)支持而且識別速度更快,但可識別的對象個數(shù)有限且必須提前制作;云識別可以支持多于100萬個對象,但必須依賴高速的網(wǎng)絡(luò)連接。綜合考慮船舶的使用條件,決定采用本地識別方式,把設(shè)備手冊上需要關(guān)聯(lián)擴增內(nèi)容的圖片掃描后上傳至高通“目標管理器”生成本地識別數(shù)據(jù)集;
(2) 根據(jù)需要,將AR Camera、Image Target等預(yù)制體放入場景中,刪除原有的Main Camera對象,把對應(yīng)擴增內(nèi)容拖放為Image Target對象的子物體,并調(diào)整世界坐標和縮放比例。這樣,當目標圖像被識別后,擴增內(nèi)容將根據(jù)場景中定義的相對位置被注冊,設(shè)置適當?shù)臒艄庹彰骱嫱袣夥眨?/p>
(3) 配置各項參數(shù)并編寫或修改C#腳本完成想要的功能。
1.3效果驗證
系統(tǒng)開發(fā)完成后,可發(fā)布成后綴名為.apk的Android安裝包,并可安裝在手機上。當手機對準手冊上的油泵圖像時,油泵的三維動畫立刻疊加在真實的說明書背景上,用戶可以通過移動和偏轉(zhuǎn)手機,從不同角度對其進行觀察,就像一個真的動態(tài)三維油泵模型放在說明書上一樣(見圖4)。
圖4 液壓設(shè)備手冊增強現(xiàn)實系統(tǒng)運行演示
基于智能手機平臺的船舶液壓設(shè)備使用手冊增強現(xiàn)實系統(tǒng)的開發(fā),使得輪機員只要掏出手機,打開攝像頭對準設(shè)備手冊或說明書,與之相關(guān)的三維模型動畫、解說、視頻等擴增內(nèi)容就可以立刻呈現(xiàn)并疊加在攝像頭的真實影像上。這有助于輔助輪機員理解并掌握文檔內(nèi)容,提高業(yè)務(wù)能力和設(shè)備管理水平。應(yīng)當指出,增強現(xiàn)實技術(shù)在船舶液壓設(shè)備中的應(yīng)用僅僅是初步嘗試,未來在輪機工程領(lǐng)域?qū)⒂懈鼜V闊的開發(fā)應(yīng)用空間,必將對提升整個輪機管理水平起到更大作用。
[1] 陳靖, 王涌天, 林精敦, 等. 基于增強現(xiàn)實技術(shù)的圓明園景觀數(shù)字重現(xiàn)[J]. 系統(tǒng)仿真學(xué)報, 2010, 22(2): 424-428.
[2] 蔣中望. 增強現(xiàn)實教育游戲的開發(fā)[D]. 上海: 華東師范大學(xué), 2012.
[3] 朱淼良, 姚遠, 蔣云良. 增強現(xiàn)實綜述[J]. 中國圖象圖形學(xué)報, 2004, 9(7).
[4] 周一舟. 移動增強現(xiàn)實技術(shù)的應(yīng)用研究[D]. 成都: 電子科技大學(xué), 2011.
[5] 任波, 管濤, 李利軍, 等. 基于ARToolKit 的增強現(xiàn)實系統(tǒng)開發(fā)與應(yīng)用[J]. 計算機系統(tǒng)應(yīng)用, 2006, 1(1): 81-84.
[6] UCHIYAMA S, TAKEMOTO K, SATOH K, et al. MR Platform: A Basic Body on Which Mixed Reality Applications Are Built[C]//Proceedings of the 1st International Symposium on Mixed and Augmented Reality. IEEE Computer Society, 2002.
[7] Wikipedia.Coin3D [EB/OL].(2013-10)[2013-11].http://en.wikipedia.org/wiki/Coin3D.
[8] 史國友, 賈傳熒. 基于仿射變換的雙克令吊裝卸動態(tài)仿真算法[J]. 系統(tǒng)仿真學(xué)報, 2005, 17(8): 1840-1844.
[9] AutoDesk. Inventor 中文教程[EB/OL].(2013-04)[2013-11].http://wikihelp.autodesk.com/Inventor/chs/2014/Help/0082-degegbhc82.
[10] BOARDMAN T.Getting Started in 3D with 3ds Max: Model,Texture[M].Focal Press,2012.
AugmentedRealityTechniqueAppliedtoMarineHydraulicField
HEChangwei,JIAXiaoping,LIUDawei,LIUYuan
(Qingdao Ocean Shipping Mariners College, Qingdao 266071, China)
Focusing on mobile terminal application of AR, the smart phone AR system of marine hydraulic device user manual is developed by means of Unity 3d drives and SDK. The system superinposes augmented multimedia objects such as 3D animation to the smart phone video stream in real time according to the result of image recognition. The AR display of the device structures and operating principles of the hydraulic system on the smart phone allows engineers to understand them easily and thoroughly, which will improve the competence of the engineers and the system management.
ship engineering; augmented reality technique; marine hydraulic; marine engineering; Unity 3d
2014-02-26
中遠集團科技計劃項目(2011-1-H-009)
何昌偉(1970-),男,山東滕州人,副教授,研究方向為輪機工程、船舶與海洋工程。E-mail: hechw@coscoqmc.com.cn.
1000-4653(2014)02-0024-03
TP391.9
A