賈建峰 史新偉 郜超軍 宋平新 王新昌
(鄭州大學(xué)物理學(xué)院 河南 鄭州 450052)
等厚干涉實驗是大學(xué)物理實驗中一項重要的基礎(chǔ)性光學(xué)實驗,該實驗儀器結(jié)構(gòu)復(fù)雜,實驗操作過程繁瑣,是大學(xué)物理實驗中的重點與難點之一.受實驗講義篇幅限制,對等厚干涉的實驗原理、讀數(shù)顯微鏡的結(jié)構(gòu)、操作方法等內(nèi)容的闡述是簡略的,僅通過閱讀講義、撰寫預(yù)習(xí)報告等方式對實驗進行預(yù)習(xí)往往達不到希望的效果;另外,由于讀數(shù)顯微鏡的視場范圍很小,課堂上教師無法給學(xué)生進行儀器調(diào)整、實驗技巧的直觀演示,因此,學(xué)生對教師課堂講解的接受效果也不理想.
虛擬現(xiàn)實技術(shù)(Virtual Reality,縮寫為VR)是20世紀才發(fā)展起來的以計算機技術(shù)、電子傳感器技術(shù)以及信息技術(shù)等為支撐的一項全新科學(xué)技術(shù).VR技術(shù)既能夠以現(xiàn)實世界的數(shù)據(jù)為藍本,通過計算機的一系列數(shù)值運算處理,再借助各種終端設(shè)備的渲染,呈現(xiàn)給人們以非常逼真的、現(xiàn)實世界的仿真景象(虛擬現(xiàn)實);也可以做到超越現(xiàn)實,既在一定的設(shè)定條件下,計算機按照一定的邏輯規(guī)則運算后讓終端設(shè)備上顯現(xiàn)出肉眼看不見的、甚至現(xiàn)實世界中不存在的景象(超現(xiàn)實).VR技術(shù)在效果上具有逼真的3D立體特效以及非常好的沉浸性、交互性等體驗,已廣泛應(yīng)用在影視娛樂、教育、醫(yī)學(xué)等領(lǐng)域[1].在生產(chǎn)、教育以及生活方式革新需求的推動下,各行各業(yè)對VR技術(shù)的興趣更加旺盛.如今,VR技術(shù)已經(jīng)成為了一種新穎的教育手段.相比傳統(tǒng)的被動灌輸,這種教學(xué)方式提供了生動、逼真的學(xué)習(xí)環(huán)境,身臨其境般的體驗,不僅能夠激發(fā)學(xué)習(xí)興趣,更有助于增強學(xué)生對知識的理解與記憶[2].國家教育部根據(jù)《教育信息化“十三五”規(guī)劃》的總體部署,也在大力推動各大中院校積極開展虛擬仿真實驗教學(xué)項目[3].2018年,教育部公布了首批104項國家級虛擬仿真實驗教學(xué)項目,讓“網(wǎng)上做實驗 ”和“虛擬做真實驗”成為現(xiàn)實[4].
為滿足學(xué)生課前預(yù)習(xí)、課后復(fù)習(xí)的需求,方便授課教師課堂上進行實驗教學(xué)演示,本文開發(fā)了基于Unity 3D技術(shù)的三維交互式等厚干涉虛擬仿真實驗平臺.學(xué)生在課前預(yù)習(xí)實驗講義的同時,可以在自己電腦上運行等厚干涉虛擬仿真程序,在虛擬的環(huán)境中嘗試實驗設(shè)備調(diào)整、進行虛擬實驗操作,檢驗預(yù)習(xí)效果;課堂上教師可以借助該平臺演示實體讀數(shù)顯微鏡有限視場中無法展示的實驗現(xiàn)象,提高授課效果;課后學(xué)生還可以在該平臺上進行一些拓展實驗,比如研究波長、曲率半徑等實驗參數(shù)改變對干涉的影響,加深對知識的理解.
Unity 3D是全球應(yīng)用非常廣泛的三維視頻游戲、建筑可視化、實時三維動畫的跨平臺游戲開發(fā)引擎[5],但是其內(nèi)置的3D對象只有幾種簡單幾何體,不能構(gòu)建復(fù)雜的3D模型.為了構(gòu)建盡可能逼真的實驗儀器3D模型,還要借助第三方3D建模軟件.3Ds Max是當前一款應(yīng)用非常廣泛的三維建模軟件,可以進行3D建模、圖像渲染和三維動畫創(chuàng)作,在動畫影視與廣告制作、工業(yè)仿真以及教學(xué)演示等行業(yè)都有廣泛應(yīng)用[6].本仿真實驗平臺中各種3D模型的建模就是在3Ds Max軟件中完成.
首先,我們對等厚干涉實驗用到的讀數(shù)顯微鏡、牛頓環(huán)儀、鈉光燈等分別進行分解與測繪,獲得各個部件幾何尺寸參數(shù).利用這些數(shù)據(jù)在三維建模軟件3Ds Max中建立與實體儀器設(shè)備各個部件相對應(yīng)的3D模型,并賦予其與實物近可能相似的表面材質(zhì)與貼圖.調(diào)整、設(shè)置各部件旋轉(zhuǎn)軸與中心,并按照真實設(shè)備結(jié)構(gòu)關(guān)系對這些部件進行組合與關(guān)聯(lián),組裝成讀數(shù)顯微鏡、牛頓環(huán)儀等實驗器材的3D模型(見圖1).為了在Unity 3D引擎中可以使用這些模型,將它們從3Ds Max中導(dǎo)出為相應(yīng)的FBX格式文件.
圖1 在3Ds Max中構(gòu)建的部分實驗設(shè)備3D模型
啟動Unity 3D的游戲開發(fā)界面,建立并保存一個3D虛擬場景(Scene),在該場景中建立一個Plane平面,并賦予其木紋性質(zhì)的貼圖,作為放置實驗設(shè)備的虛擬桌面.在資源管理器視窗中導(dǎo)入由3Ds Max生成的3D模型FBX文件,將各個虛擬實驗器械布置在虛擬桌面上,并調(diào)整好大小與相對位置.
在Unity 3D的游戲開發(fā)場景中還要重新調(diào)整各部件材質(zhì),例如顯微鏡主體設(shè)為淺灰色,螺釘頭為銀灰金屬色澤.為了實現(xiàn)顯微鏡底座上兩塊玻璃板的半透明效果,編寫了一段著色器程序命名為GlassShader.Shader,主要代碼如下:
_MainColor("Main Color", Color) = (1, 1, 1, 1)
_AlphaVal("Alpha", Range(0, 1)) = 0.1
Tags { "Queue" = "Transparent" "RenderType"=
"Transparent" }
o.Albedo = _MainColor.rgb;
o.Alpha = _AlphaVal;
新建一個材質(zhì)球修改名字為Glass,選擇其著色器上面名為GlassShader.Shader的自定義著色器,在檢視面板中將主顏色(Main Color)設(shè)為水綠色,阿爾法(Alpha)通道取0~1之間的值以獲得較理想的透明效果.最后將該材質(zhì)賦予顯微鏡底座上的兩塊玻璃板,實現(xiàn)如圖2所示效果.
圖2 底座上透明玻璃板效果
同樣的,對仿真顯微鏡上其他部件如反光鏡、45°透反鏡等需要的特效也是通過對著色器的編程、材質(zhì)顏色等相關(guān)屬性的設(shè)置來達到希望的效果.
3.2.1 攝像機與視角控制
為了方便操作,本仿真平臺通過鼠標來控制攝像機的觀察視野與視角:既按著鼠標右鍵左右滑動實現(xiàn)視野的旋轉(zhuǎn);按著鼠標右鍵上下滑動可以使視角上下移動;鼠標滾輪縮放視野的遠近.
3.2.2 反光鏡與45°透反鏡的人機交互
真實實驗中,首先需要學(xué)生做的是調(diào)整顯微鏡載物臺下方的反光鏡角度,使其不反射鈉光;接著調(diào)節(jié)物鏡下方的45°透反鏡的角度,將來自鈉光燈的光線經(jīng)過其反射后垂直投射到載物臺上的牛頓環(huán)儀上表面,達到滿足實驗必須的、均勻照明的光線條件.下面我們要在虛擬環(huán)境中模擬這個動態(tài)交互效果.
(1)角色的拾取
Unity 3D游戲場景中用戶可以操控特定物體在3D虛擬環(huán)境中實現(xiàn)一些動作,這些物體叫做角色.用戶要實現(xiàn)對角色的操作首先是拾取該角色物體.Unity 3D通常采用射線Ray碰撞檢測的方式拾取物體,就是從攝像機向鼠標位置發(fā)射一條射線,通過檢查與射線碰撞的物體來選擇將要操控的角色.本實驗中某些需要操作的物體處于另一種物體內(nèi)部(如反光鏡位于底座里面),利用射線碰撞檢測來拾取物體就不太方便了.采取另外的方式拾取操作對象:我們給需要交互的物體賦予特定的按鍵名,通過在鍵盤上按下特定按鍵來選取場景中需要交互的對象.例如這里,我們通過字母鍵R來拾取反光鏡,字母鍵H來選擇45°透反鏡.
(2)實現(xiàn)虛擬環(huán)境中對反光鏡、45°透反鏡的可調(diào)節(jié)功能
Unity 3D游戲場景中,角色回應(yīng)用戶的具體動作可以由C#語言編譯的腳本程序決定.例如,在我們事先編譯好的腳本程序控制下,按下鍵盤字母鍵R時反光鏡就被拾取,然后如果用戶按動鍵盤上的上/下箭頭按鍵就可以看到,反光鏡繞其轉(zhuǎn)軸做順時針或逆時針旋轉(zhuǎn),實現(xiàn)對反光鏡角度的調(diào)整.對45°透反鏡的操控也是這種情況.
(3)實現(xiàn)模擬環(huán)境中目鏡、物鏡的動態(tài)聚焦調(diào)節(jié)功能
在腳本程序的控制下,通過字母鍵E來拾取目鏡組件,按下上/下箭頭按鍵時,虛擬場景中的目鏡調(diào)焦手輪緩慢正/反旋轉(zhuǎn),模擬調(diào)焦的動作.同時,在視場右上角出現(xiàn)畫中畫1,用來模擬目鏡視野中圖像在調(diào)焦過程的變化,可以看到分劃板上十字線在接近焦點時從無到有,失去焦點后再次消失的過程.此處,視野中的十字叉絲實際上是由兩根細長的相互垂直的黑色圓柱體模擬的.為實現(xiàn)畫中畫效果,專門創(chuàng)建了1號副攝像機正對該十字線.為了避免主、副畫面景物沖突,需要設(shè)置主、副攝像機的Culling Mask參數(shù),并且主、副畫面圖層不能相同.另外,鏡頭失焦-聚焦-失焦過程的圖像變化效果,是通過在腳本程序中改變十字線著色器中阿爾法通道值,讓材質(zhì)在透明與不透明之間發(fā)生變化來模擬的.
通過字母鍵O來拾取物鏡組件.為實現(xiàn)物鏡聚焦調(diào)節(jié)中,干涉圖案從無到有,然后又從有到無的圖像變化效果,在副攝像機1視場中,十字叉絲后方又依次創(chuàng)建了兩個長寬都為1 m,厚度僅為0.1 m的Cube體,分別命名為mask板、image板.位置關(guān)系是mask板正好遮蓋了image板.
牛頓環(huán)干涉條紋強度分布函數(shù)為
(1)
其中,I0為入射光強,R為曲率半徑,λ為入射光波長,r為干涉條紋半徑[7].根據(jù)公式(1),設(shè)定曲率半徑R=1 m,入射波長λ=589.3 nm,可以利用Unity 3D Shader程序模擬出較逼真的牛頓環(huán)干涉圖樣. 具體實現(xiàn)方法是,新建一個自定義著色器,命名為Newtonring.shader,主要代碼如下:
float r = distance(_Center, IN.worldPos);
if(sin(3140*r*r/(_RCurvature*_Lambda))*
sin(3140*r*r/(_RCurvature*_Lambda))<
0.3)//根據(jù)公式(1),判斷干涉暗條紋位置
o.Albedo = _RadiusColor;//暗條紋所在位置像素點顏色取自定義值
elseo.Albedo = _Color;//暗條紋以外位置像素點顏色為默認背景色
新建一個材質(zhì)球給image板,選擇材質(zhì)球的著色器為Newtonring.shader,在檢視面板中選擇背景顏色為黃色(模擬鈉光顏色),選擇衍射環(huán)顏色為自定義灰黑色,此時image板呈現(xiàn)出牛頓環(huán)干涉圖樣,可以通過副攝像機1投射到屏幕上.
另外,由于mask板位于image板前方,在副畫面1中,通過改變mask板材質(zhì)透明度的方式,可以讓image板上的干涉圖樣在“顯示-消失”狀態(tài)間發(fā)生變化,實現(xiàn)了物鏡動態(tài)調(diào)焦的視野圖像交互效果.同時,顯微鏡鏡筒也會隨之上/下移動,模擬物鏡調(diào)焦的顯微鏡外部動作.
(4)測量操作過程的仿真
等厚干涉實驗中一個重要的實驗內(nèi)容是,學(xué)生要使用讀數(shù)顯微鏡測量一組干涉環(huán)的直徑,然后通過公式計算出平凸透鏡的曲率半徑.該仿真實驗平臺的一個主要目標就是在虛擬環(huán)境中實現(xiàn)測量操作的交互功能,幫助學(xué)生做好實驗預(yù)習(xí).
通過字母鍵M來選擇測量操作仿真.為了實現(xiàn)模擬讀數(shù),啟用了第二個副攝像機.這樣,按下母鍵M時,在主視野右下角另外開辟一個畫中畫顯示區(qū)域2,顯示出主刻度尺與副刻度鼓輪.
進行仿真測量時,按動鍵盤上的上/下方向鍵,除了主視野中可以看到讀數(shù)顯微鏡的鏡筒做水平移動、副刻度鼓輪做相應(yīng)旋轉(zhuǎn)外,在副視野1(顯微鏡視場)中會看到干涉條紋的移動,在副視野2(讀數(shù)區(qū))中同時也將看到主刻度尺、副刻度鼓輪讀數(shù)值做相應(yīng)變化,如圖3所示.學(xué)生借助該模式可以反復(fù)練習(xí)讀數(shù)顯微鏡的測量方法.
圖3 仿真實驗平臺總體效果
(5)實驗拓展
本仿真實驗平臺,牛頓環(huán)干涉圖樣的默認條件是平凸透鏡曲率半徑R=1 m,入射波長=589.3 nm,但是這些參數(shù)是可以改變的.仿真實驗中學(xué)生可以通過鼠標左鍵分別拖動視場中曲率半徑滑動條或者波長滑動條來連續(xù)改變曲率半徑、波長,觀察干涉圖樣的變化,探索曲率半徑、波長對等厚干涉的影響.真實實驗中,光源只有一兩種,所以,在真實實驗中是很難做到對光源波長的連續(xù)改變.
(6)應(yīng)用程序打包
為了使仿真實驗平臺可以脫離 Unity 3D 開發(fā)環(huán)境在其他電腦運行,使用Unity 3D的打包工具生成可以在PC客戶端獨立運行的程序包,它包含一個.exe可執(zhí)行文件,以及一個運行必須的DATA數(shù)據(jù)文件夾.
為提高等厚干涉實驗教學(xué)效果,本文設(shè)計制作了一套基于Unity 3D虛擬現(xiàn)實開發(fā)引擎的等厚干涉實驗仿真平臺,逼真再現(xiàn)了等厚干涉實驗的環(huán)境、設(shè)備與操作過程.借助該平臺,學(xué)生在課前預(yù)習(xí)實驗講義的同時,可以進入虛擬環(huán)境中練習(xí)虛擬儀器調(diào)節(jié)、進行仿真實驗操作,反復(fù)訓(xùn)練實驗步驟;課堂上教師可以借助該虛擬實驗平臺演示真實讀數(shù)顯微鏡有限視場中所無法展示的實驗現(xiàn)象,提高教學(xué)效果;課后學(xué)生還可以在該平臺上開展拓展實驗.
另外,本仿真實驗平臺的交互功能采用事件響應(yīng)方式,實驗操作不要求按照固定的順序進行,不同的操作過程會產(chǎn)生不同的結(jié)果組態(tài),較好地再現(xiàn)了真實實驗可能出現(xiàn)的各種狀況.