蘇靜 龔翱 楊赳赳 陳澤強


關鍵詞:虛擬現實;解剖學;神經通路;仿真教學;Unity
中圖分類號:TP399 文獻標識碼:A
文章編號:1009-3044(2023)21-0015-03
1 概述
1.1 背景與意義
在傳統人體運動解剖教學中,教師一般通過圖片、模型或視頻展示,方法單一也不夠直觀,且缺乏靈活性,還不能夠交互[1-2];而實驗設施方面也受到標本資源、相關設施缺乏等因素的影響;使學生積極性和主動性較低,導致學習效果欠佳[3-4]。因此引入基于Unity 3D的神經傳導學習系統,提供可視化的實驗教學平臺,優化教學設計以適應教學需求,能夠極大地激發學生學習解剖的信心和興趣。系統緊扣教材,能夠將教學中的復雜過程簡單化、抽象概念具體化、平面結構立體化,開啟虛實結合、軟件輔助的數字化解剖教學新模式;解決傳統教學模式的短板,增強了交互性,極大地提高了教學效率,給學生帶來一種舒適、高效的實驗環境,推進數字解剖系統與傳統教學相結合,必將引領醫學教育領域產生新的變革。
2 神經通路教學演示中的相關技術
2.1 交互式動畫
Unity內部自帶動畫制作功能TimeLine,為醫學解剖學提高了更多的可操作性。對于復雜的操作,可使用錄制動畫的方式,對解剖的操作,身體器官的變化,物體的改變等,做出了更加細膩的操作。TimeLine是一套多軌道動畫系統,支持可視化編輯,預覽動畫,實時操作等,可以實現動作或行為演示的功能,實現電影級演示,將各種行為轉變成完整流程,然后將全過程展示在使用者眼前,達到解剖學教學所需要的效果。
2.2 三維場景仿真
多角度觀察:實現攝像機的多角度旋轉是對于三維場景的視角仿真,對于攝像機的三維軸進行控制,增加多角度的觀察下對場景中細節的展示有更加具體的視覺印象。
動畫控制技術:Unity內部附帶動畫控制系統,對動畫系統內部功能進行開放使用,動畫片段中參數有播放時間,播放速度,播放位置,動畫內部實體,通過對動畫片段內參數的控制,使得對每個場景動畫內細節的觀察更加細致,讓學生有更多的印象,亦可反復觀察。
多系統選擇:多個場景聚合為對應系統內的部分,使得抽象的系統擁有實際存在的場景,達到系統的實例化,使系統靈活變化,具有延展性,可操作性。
2.3 文本與系統分離
JSON文本具有特殊格式,Unity內部有與JSON文本對接的API,對接后可在外部編輯JSON文本對系統內部各類命名物件進行更改。JSON文本編輯更改具有靈活性,可操作性,可拓展性,便利的命名,完全獨立于編輯語言的文本格式,通過更改文本內容,使得使用JSON文本的內容進行動態更改,獨立于內容。
3 系統實現
3.1 觀察視角控制
為了能夠從任意視角清楚地觀察到場景中每一個物體的細節,系統設計了視角控制,通過旋轉攝像機父物體的Y值來改變相機的左右方向改變,通過改變相機的Y軸的位置來改變相機的上下位置實現相機的旋轉和視角改變,分為3D視角的旋轉和2D視角的平移,同時也可調整攝像機的旋轉是否反向旋轉。
//通過控制x,y 軸的旋轉來控制攝像機的方向
x = Mathf.Clamp(transform.localPosition.x+DRight*Time.deltaTime,-MaxXOffset,MaxXOffset);
y= Mathf.Clamp(transform.localPosition.y + DUp *Time.deltaTime,-MaxYOffset,MaxYOffset);
transform.localPosition = new Vector3(x,y,transform.localPosition.z);
3.2 場景切換以及GUI管理
控制場景的切換以及各種按鈕事件的觸發是使用的設計模式中的單例模式[5]制作,在各個場景中保持唯一,在第一場景創建,在其他場景內保持單例,使其與上一場景保持一致。并且可以在其他場景更改該腳本內部的值,在手動切換場景的時候取消全局播放,并且可繼承到其他場景使用原有值,并使用策略模式在切換場景函數內選擇切換的場景,達到場景的前后切換以及主菜單的返回。
3.3 文本分離系統控制場景內容顯示
通過JSON文本的特殊書寫方式來控制所需要的文本內容,防止更改代碼,滿足設計模式的開放原則,以數字表示出所需要的文本內容,并且可以篩選出所需要的文本內容。在項目中,該JSON文本控制眼球處各個組織的名字的輸入,可進行更加方便的更改,只需在JSON文本中添加相應組織的名字,然后在項目窗口添加箭頭和UI文本, UI文本則會按照順序尋找所屬組織的名字并賦值。
3.4 場景播放設置
場景初始化時創建guiManager單例類,內部賦值一個參數控制各個場景內的播放,以及暫停的判斷參數。場景內狀態發生變化時改變單例類內的參數,并可在下一場景內使用相同值的參數。對于場景的播放模式,有單場景循環播放,和多場景的順序播放,以及循環播放時場景復原。代碼通過判斷當前場景所在的位置以及是否在單場景循環模式下,如果是單循環模式下guiManager的isPlay參數為True,則會在播放結束時恢復場景并循環播放。
場景內動畫的播放與暫停,如果不是單場景播放便會在播放結束后跳轉至下一場景,并播放下一場景動畫直至整個系統播放結束。
if (!guiManager.Instance.pauseOrStart) {//單例類中的控制動畫播放的參數
pd.Play();//如果單例類中參數允許播放,便會播放加入腳本內的劇本
}
else {
pd.Pause();//如果參數為否,則代表按下了空格鍵暫停,此時劇本同樣暫停
}
通過導演劇本控制實現場景內光線,聲波,電信號等的移動和轉化,例如在視覺傳導通路中,光線首先經過眼球時,通過角膜、房水、晶狀體,玻璃體部位折光,投射到視網膜上,然后進入視網膜后四層細胞,視網膜上的視錐細胞和視桿細胞把光信號轉換為電信號,傳給視網膜上的雙極細胞,再傳給節細胞,節細胞的神經纖維匯集在一起,穿出眼球,形成視神經。聽覺神經通路系統內則依次通過外耳道、鼓膜、耳蝸,聲音在鼓膜轉換成振動,振動在耳蝸轉換成神經沖動,經由聽覺神經傳導到大腦聽覺中樞,再由脊髓傳到肌肉,最后引起人體反應的演示。這些都是由導演控制劇本來完成演示的,其中包括切換到下一場景劇本,以及劇本的播放和局部暫停。
各類系統中具有相應的場景,在順序排序的場景中劃分場景給對應的系統,通過公式:
Current = End – Start + 1
Index = Order – Start + 1
其中,Current 是當前系統的總場景數,End是設置的結束場景位置,Start 是設置的開始場景,index 是當前處于該系統的場景位置,Order 是該場景的順序位置。update中進行全局和單場景的判斷,各類參數在GUIManager內的變化,以及按鍵的觸發判斷。
3.5 信號傳遞的錄制
通過PlayableDirector錄制相關信息傳遞,如視覺傳導中,光信號的傳導以及光電信號轉變及傳遞[6]。在PlayableDirector中逐幀對所需的信號傳遞的位置,如何轉變,以及是否還存在進行設定,然后通過場景播放中的代碼進行相應的播放和暫停提供相應的劇本,在視覺傳導的第五場景中,左下角的小窗口演示也是有劇本來控制第二攝像頭的移動達到同步播放左邊各個器官內信號傳導路線的放大。
4 使用結果與分析
測試環境:CPU Intel i7-4790,3.60GHz主頻,內存16G,顯卡GTX1080,操作系統:Windows 10。
4.1 測試結果
選擇場景進入神經模擬系統,通過右上角的“上一個”和“下一個”調節場景的轉換及“返回界面”來返回主界面。“開始播放”按鈕可以控制神經模擬系統演示的播放,在不同的場景點擊“開始播放”會產生相應演示結果。例如在第一場景點擊“開始播放”將會進行全局播放,播放到最后一個場景,其間不會進行場景循環,在除了第一個場景下點擊播放按鈕,將會進行單場景循環播放。此外,按空格鍵也可以暫停神經通路演示,再次點擊繼續播放。左上角標注有場景序號,方便用戶的使用。序號下是對此場景的說明,為了不遮擋神經通路的演示,場景說明可折疊或展開所有場景說明,通過長按鼠標右鍵移動轉換視角。結果如圖2所示。
4.2 性能分析
在使用時,場景正常播放,前后場景切換流暢,視角正常轉換,在該測試環境的配置下,正常運行,無閃退,反應遲緩等現象。使用時掉幀少只有在操作瞬間發生幀率變化,如圖3所示。
5 結束語
本文研究并實現了基于Unity3D的神經通路傳導系統,從視覺、聽覺、觸覺和本體感覺四個方面進行開發。系統實現了在神經通路傳導方面課程的虛擬化教學,解決了傳統教學演示的短板,增強了交互性,極大地提高了教學效率,使教師在教學過程中具有更高的靈活性,也能夠給學生帶來一種高效、趣味的實驗環境,推進數字解剖系統與傳統教學相結合,將引領醫學教育領域產生新的變革。