許玉龍,張佩江,王忠義,盛夢(mèng)園,趙玉梅,王兵營
(1.河南中醫(yī)藥大學(xué)信息技術(shù)學(xué)院,河南 鄭州 450046; 2.鄭州大學(xué)信息工程學(xué)院,河南 鄭州 450003;3.河南中醫(yī)藥大學(xué)第三附屬醫(yī)院,河南 鄭州 450046)
中醫(yī)是中國文化的國粹之一,而人體經(jīng)絡(luò)穴位是中醫(yī)最具特色的內(nèi)容。但人體經(jīng)絡(luò)穴位數(shù)目龐大,在學(xué)習(xí)實(shí)踐中難于記憶。為此,中醫(yī)學(xué)者們制作了人體穴位的模擬實(shí)物及掛圖,準(zhǔn)確標(biāo)出穴位的位置和名稱,這樣對(duì)記憶起到了一定輔助作用,但由于較為枯燥,還是存在學(xué)習(xí)難、記憶難問題。隨著計(jì)算機(jī)、三維仿真技術(shù)的發(fā)展[1],相關(guān)專業(yè)人員不斷地研究,試圖制作出更具形象化的經(jīng)絡(luò)穴位人體模型。
相關(guān)學(xué)者提出將數(shù)字化引入針灸學(xué)領(lǐng)域,使針灸學(xué)三維立體表達(dá)模式歷經(jīng)數(shù)代得以實(shí)現(xiàn)[2]。并以此為平臺(tái),促進(jìn)針灸學(xué)在經(jīng)絡(luò)、腧穴實(shí)質(zhì)研究,使得針灸治療機(jī)理探討及臨床教學(xué)方面有新的突破[3]。
鄭紹華等人[4]通過樣條曲線在計(jì)算機(jī)中擬合了人體經(jīng)絡(luò)線,并利用VC++和OpenGL(Open Graphics Library)三維圖形庫,設(shè)計(jì)了一種在三維環(huán)境下人機(jī)交互式的操作來引導(dǎo)經(jīng)絡(luò)循行動(dòng)畫,達(dá)到實(shí)時(shí)仿真的效果,但只是對(duì)人體經(jīng)絡(luò)線進(jìn)行了三維仿真。黃詠等人[5]將經(jīng)絡(luò)研究成果與圖形學(xué)結(jié)合,使用Maya軟件和微軟工具包,構(gòu)建了動(dòng)態(tài)演示的三維虛擬人體模型。該模型具有良好的視覺效果,為經(jīng)絡(luò)和針灸的教學(xué)演示提供幫助。類似地,楊宇航等人[6]將虛擬現(xiàn)實(shí)應(yīng)用于針灸的教學(xué)與訓(xùn)練,他們使用三維掃描和逆向工程方法,建立三維人體模型VRML文件,然后建立VRML格式小球表示模型上的穴位點(diǎn),最后將人體模型、穴位小球、經(jīng)絡(luò)線以及穴位說明文件整合,實(shí)現(xiàn)了針灸教學(xué)輔助系統(tǒng)。
現(xiàn)有虛擬人體技術(shù)反映了解剖學(xué)上的細(xì)節(jié),但未能對(duì)經(jīng)絡(luò)和中醫(yī)人體穴位解剖進(jìn)行描述。針對(duì)該問題,羅群芳等人[7]以人體穴位真實(shí)標(biāo)本為基礎(chǔ),用3DMAX技術(shù)建立穴位定位及針刺方向描述模型,以及層次型文本知識(shí)體系解釋模型。類似地,在三維人體模型數(shù)據(jù)的讀取、顯示、穴位信息顯示,皮膚變形仿真及虛擬針灸過程仿真設(shè)計(jì)方面,相關(guān)學(xué)者[8-9]進(jìn)行了深入研究與探索。陳沁[8]把中醫(yī)經(jīng)絡(luò)和計(jì)算機(jī)可視化技術(shù)相結(jié)合,開發(fā)了三維人體經(jīng)絡(luò)可視化展示系統(tǒng),并將模型顯示、經(jīng)絡(luò)顯示等功能移植到移動(dòng)設(shè)備。毛燁[9]結(jié)合圖形學(xué)和三維動(dòng)畫技術(shù),在虛擬人體經(jīng)絡(luò)系統(tǒng)中對(duì)針灸操作過程進(jìn)行仿真,尤其是通過皮膚變形效果來模擬針灸過程中力的作用。長期以來,在中醫(yī)經(jīng)絡(luò)腧穴學(xué)實(shí)驗(yàn)教學(xué)中,所用掛圖和模型缺乏交互性,孫杰等人[10]針對(duì)該問題,采用三維虛擬場景描述的VRML語言,開發(fā)了可直觀、形象、多視角展示的人體經(jīng)絡(luò)腧穴系統(tǒng)。最近,張季等人[11]在Unity3D平臺(tái)上設(shè)計(jì)了數(shù)字人體腧穴教學(xué)信息系統(tǒng),為經(jīng)絡(luò)、腧穴教學(xué)提供了新的方法和手段,也為中醫(yī)針刺知識(shí)普及提供了新的途徑。
利用信息技術(shù)對(duì)人體經(jīng)絡(luò)穴位的研究屬于交叉學(xué)科研究領(lǐng)域,也是近年來研究的熱點(diǎn)。但總結(jié)上述成果發(fā)現(xiàn):1)現(xiàn)有的虛擬人體經(jīng)絡(luò)模型主要用于教學(xué),經(jīng)絡(luò)和穴位都是以明文的方式在模型表面顯示,較少模型具有穴位測試與練習(xí)功能。2)模型較少具有交互功能,目前,隨著觸控一體機(jī)、展示機(jī)等觸摸式設(shè)備的普及,如果模型能夠運(yùn)行在大型的觸摸展示設(shè)備,并具有較好的人機(jī)交互功能,則將有較高的應(yīng)用和推廣價(jià)值。
針對(duì)上述存在問題,本文基于OpenGL和MFC(Microsoft Foundation Classes)技術(shù),設(shè)計(jì)開發(fā)可交互式的虛擬人體經(jīng)絡(luò)穴位模型。首先采用3DMAX建立人體模型以及穴位點(diǎn)、經(jīng)絡(luò)線段,然后利用OpenGL結(jié)合MFC類庫開發(fā),對(duì)模型、穴位點(diǎn)、經(jīng)絡(luò)線加載和渲染,并部署運(yùn)行到觸摸式一體機(jī)上。并且詳細(xì)闡述系統(tǒng)實(shí)現(xiàn)的框架和流程,以及在開發(fā)過程中涉及的關(guān)鍵技術(shù),如使用動(dòng)態(tài)方向調(diào)整來顯示穴位點(diǎn)名稱,使用全局函數(shù)傳遞消息來提高模型加載響應(yīng)的效率,給出觸摸點(diǎn)坐標(biāo)快速獲取的方法。模型具有動(dòng)態(tài)人機(jī)交互功能,用手指觸摸能夠?qū)崿F(xiàn)模型的放大、縮小、旋轉(zhuǎn)、定穴、經(jīng)絡(luò)循環(huán)等操作。模型具有穴位測試功能,該功能下所有穴位信息在人體表面均不顯示,當(dāng)手指觸發(fā)到正確的穴位位置時(shí),其名稱才顯示并播放穴位信息。模型系統(tǒng)具有較好的交互性,能夠幫助針灸專業(yè)學(xué)生、醫(yī)療人員學(xué)習(xí)和測試經(jīng)絡(luò)穴位信息。
在對(duì)經(jīng)絡(luò)穴位定位時(shí),選取標(biāo)準(zhǔn)亞洲男性作為基礎(chǔ)模型,依據(jù)“同身寸”概念建立與基礎(chǔ)模型密切相關(guān)的三維坐標(biāo)[12]。該坐標(biāo)系是一個(gè)絕對(duì)坐標(biāo)系,它與實(shí)際尺寸的對(duì)應(yīng)關(guān)系與三維數(shù)據(jù)分辨率有關(guān),與圖像的具體內(nèi)容無關(guān)。同時(shí),嚴(yán)格依照經(jīng)絡(luò)腧穴的國家標(biāo)準(zhǔn),對(duì)經(jīng)絡(luò)和穴位進(jìn)行定位及標(biāo)注[13-14]。
MFC是微軟的類庫,以C++類形式封裝了Windows的API,且包含應(yīng)用程序框架,減少開發(fā)人員的工作量。它包含大量Windows句柄封裝類、內(nèi)建控件和組件封裝類[15]。讓用戶容易地使用微軟專業(yè)的SDK來進(jìn)行應(yīng)用程序開發(fā),同時(shí)又集成了C++運(yùn)行高效的優(yōu)勢。因此,本文采用MFC類庫開發(fā)用戶交互界面模塊,并利用函數(shù)回調(diào)機(jī)制實(shí)現(xiàn)模塊間的通信,相關(guān)實(shí)例證明該方法可有效提高軟件的效率和穩(wěn)定性[16]。
但是,僅有界面交互模塊不能滿足三維人體模型的動(dòng)態(tài)渲染,本文采用OpenGL來實(shí)現(xiàn)模型的渲染。OpenGL是一個(gè)跨編程語言、跨平臺(tái)的編程接口,也是一個(gè)功能強(qiáng)大、調(diào)用方便的底層圖形庫[17-18]。它可以與Visual C++緊密對(duì)接,保證算法的正確性和可靠性。它能實(shí)現(xiàn)點(diǎn)、線、復(fù)雜的三維物體建模,也可以實(shí)現(xiàn)平移、旋轉(zhuǎn)等變換,其變換方法有利于減少算法的運(yùn)行時(shí)間,提高三維圖形的顯示速度。
因此,本文在Visual Studio開發(fā)環(huán)境下,利用OpenGL和MFC優(yōu)勢互補(bǔ)實(shí)現(xiàn)人體模型的構(gòu)建和交互,仿真實(shí)現(xiàn)三維人體模型并高效加載渲染模型以及動(dòng)態(tài)人機(jī)交互的目的。
建立初始模型是一個(gè)三維的亞洲裸體男性,使用3DMAX建立初始人體模型,人體模型的表面光滑如圖1所示。注意初始模型表面沒有穴位點(diǎn)等任何信息。
圖1 三維人體模型圖
在中醫(yī)腧穴專業(yè)教師的指導(dǎo)下,依據(jù)經(jīng)絡(luò)穴位國家標(biāo)準(zhǔn)[12],利用Maya軟件建立穴位點(diǎn)和經(jīng)絡(luò)線段,建立方法如下:
1)導(dǎo)入人體基礎(chǔ)模型,建立穴位點(diǎn)—打開場景—找到文件people模型,選中人物模型,激活選定對(duì)象,如圖2所示。
圖2 激活選定對(duì)象
2)點(diǎn)擊菜單欄—?jiǎng)?chuàng)建—多邊形基本體—球體,如圖3所示(注意:交互式創(chuàng)建處于勾選狀態(tài))。
圖3 創(chuàng)建多邊形球體
3)調(diào)整球體大小,按下鼠標(biāo)左鍵進(jìn)行拖拽,調(diào)整球體(即穴位點(diǎn))大小至合適為止,如圖4所示。操作快捷鍵分別為q選擇目標(biāo)、w移動(dòng)目標(biāo)、e旋轉(zhuǎn)目標(biāo)、r調(diào)整目標(biāo)大小。
圖4 調(diào)整穴位點(diǎn)大小及位置
穴位點(diǎn)圓球和角色為父子關(guān)系,即身體變大穴位球會(huì)跟著變大。
1)點(diǎn)擊菜單欄—?jiǎng)?chuàng)建—多邊形基本體—圓柱體,如圖5所示(注意:交互式創(chuàng)建選項(xiàng)為不勾選狀態(tài))。
圖5 創(chuàng)建圓柱體的經(jīng)絡(luò)線段
2)用工具架的縮放工具對(duì)圓柱體縮小到適合的大小,用移動(dòng)工具移動(dòng)到合適的位置,如圖6所示。
圖6 調(diào)整經(jīng)絡(luò)線段位置和大小
3)對(duì)線段分片,即調(diào)整細(xì)分?jǐn)?shù)。在工作區(qū)通道欄—輸入—polyCylinder1—將高度細(xì)分?jǐn)?shù)調(diào)大到8或10,如圖7所示。
圖7 調(diào)整高度細(xì)分?jǐn)?shù)
4)將經(jīng)絡(luò)線調(diào)整彎曲,以便緊貼在人體模型皮膚的表面。選擇圓柱體模型—點(diǎn)擊鼠標(biāo)右鍵—選擇頂點(diǎn),如圖8所示。
5)用移動(dòng)工具和旋轉(zhuǎn)工具分別調(diào)整每一圈的頂點(diǎn)使其與皮膚表面貼合,如圖9所示。
圖9 調(diào)整每一圈頂點(diǎn)
6)在圓柱體上鼠標(biāo)右鍵切換到對(duì)象模式,如圖10所示。
圖10 切換到對(duì)象模式
7)在圓柱體選中狀態(tài)下,執(zhí)行菜單欄—法線—軟化邊。圓柱體形狀會(huì)更加平滑,如圖11所示。
圖11 軟化邊
依上述方法,建立其他穴位點(diǎn)之間的經(jīng)絡(luò)線段。需要注意的是,在創(chuàng)建穴位點(diǎn)時(shí)需勾選“交互式創(chuàng)建”選框,但創(chuàng)建經(jīng)絡(luò)線段時(shí),不需勾選該項(xiàng)。
基于中醫(yī)經(jīng)絡(luò)穴位理論和國家標(biāo)準(zhǔn)[14],按照上述方法創(chuàng)建人體模型、所有穴位點(diǎn)、穴位點(diǎn)之間線段等基礎(chǔ)工作后,分別將其導(dǎo)出為obj格式文件,供后期程序調(diào)用。共創(chuàng)建1個(gè)人體模型(body.obj)和12條經(jīng)絡(luò),每條經(jīng)絡(luò)中包含若干個(gè)穴位點(diǎn)、點(diǎn)間線段。每個(gè)經(jīng)絡(luò)包含的所有文件存到一個(gè)文件夾中,命名為該經(jīng)絡(luò)的拼音首字母,如圖12所示,其中1_styfj文件夾存儲(chǔ)的是手太陰肺經(jīng)穴所包含的所有穴位點(diǎn)、線段、錄音文件。打開手太陰肺經(jīng)文件夾,其包含的穴位點(diǎn)、經(jīng)絡(luò)線段如圖13所示,其中point是穴位點(diǎn)、segment是線段、wav文件是對(duì)應(yīng)穴位點(diǎn)的語音,用于點(diǎn)擊穴位點(diǎn)時(shí)播放該穴位信息。
圖12 創(chuàng)建的人體經(jīng)穴模型文件夾
圖13 手太陰肺經(jīng)穴位點(diǎn)和經(jīng)絡(luò)線模型文件
三維人體經(jīng)絡(luò)穴位模型采用MFC和OpenGL進(jìn)行實(shí)現(xiàn)。在VS工程中創(chuàng)建以下幾個(gè)類:類CBodyRenderDlg實(shí)現(xiàn)整個(gè)模型的調(diào)用及框架,是工程功能的主要文件;類CObjLoadModel實(shí)現(xiàn)模型的加載功能;類CObjModelRender實(shí)現(xiàn)模型的渲染及處理,是顯示模型的具體方法;類CControlPanelDlg實(shí)現(xiàn)不同功能之間切換。
穴位顯示功能實(shí)現(xiàn)過程為:程序運(yùn)行時(shí),初始化InitInstance()函數(shù),創(chuàng)建CBodyRenderDlg類實(shí)例dlg。
1)類CBodyRenderDlg是工程實(shí)現(xiàn)功能的主要實(shí)現(xiàn)文件,進(jìn)入類的構(gòu)造函數(shù)。構(gòu)造時(shí)分別構(gòu)造類CObjModelRende實(shí)例m_openglRender,類CObjLoadModel實(shí)例m_model,類CControlPanelDlg實(shí)例m_ctrlPanelDlg。
2)依次進(jìn)入上述實(shí)例的構(gòu)造函數(shù),上述全部初始化完成,返回類CBodyRenderDlg中,進(jìn)入OnInitDialog()函數(shù),在此函數(shù)中調(diào)用OnPaint()函數(shù)。
3)然后執(zhí)行m_openglRender.Render,即調(diào)用類CObjModelRender中的Render函數(shù)。其功能是渲染模型,依據(jù)傳遞的模型和功能選擇值,調(diào)用OpenGL函數(shù)渲染顯示模型,默認(rèn)功能值是穴位顯示功能。
4)渲染模型和穴位,進(jìn)入穴位顯示功能。
穴位記憶功能實(shí)現(xiàn)方法:系統(tǒng)運(yùn)行時(shí)默認(rèn)進(jìn)入穴位顯示功能。
1)點(diǎn)擊穴位記憶功能時(shí),類CControlPanelDlg中的函數(shù)OnBnClickedAcupointsLearnBtn()被響應(yīng)。
2)::PostMessageW(GetParent()->GetSafeHwnd(), WM_ACUPOINT_LEARN, 0, 0)函數(shù)被調(diào)用,功能是向窗體BodyRenderDlg發(fā)送消息,到CBodyRenderDlg類中的OnAcupointsLearn函數(shù),實(shí)現(xiàn)具體功能。
3)然后進(jìn)入類CBodyRenderDlg中的OnAcupointsLearn()函數(shù),修改功能參數(shù)為記憶功能。
4)調(diào)用m_openglRender.Render()函數(shù)。渲染、傳遞模型obj和rp.DisplayModel值,依據(jù)DisplayMode值進(jìn)行功能選擇。在Render函數(shù)中調(diào)用CObjModelRender::DisplayAcupoints()函數(shù)。
5)進(jìn)入DisplayAcupoints()函數(shù),它是顯示穴位最底層的實(shí)現(xiàn)函數(shù)。注意,它可在各種功能下被調(diào)用,依據(jù)rp.nDisplayModel的值來判斷具體某個(gè)功能。
6)切換到穴位記憶功能結(jié)束,屏幕上只顯示穴位點(diǎn),不顯示穴位名稱。
在穴位記憶功能中,當(dāng)點(diǎn)擊穴位點(diǎn)時(shí)該穴位名稱即被顯示出來,具體實(shí)現(xiàn)過程如下。
7)點(diǎn)擊穴位點(diǎn)時(shí),函數(shù)OnLButtonDown()被響應(yīng),發(fā)現(xiàn)m_renderParam.nDisplayModel的值為穴位記憶功能,即在此功能下,調(diào)用獲取指針光標(biāo)的函數(shù)CObjModelRender::DisplayNameAccordCoor(),判斷點(diǎn)擊的光標(biāo)是否在穴位點(diǎn)上。
8)CObjModelRender::DisplayNameAccordCoor()函數(shù)被執(zhí)行,確定光標(biāo)在穴位點(diǎn)上,然后調(diào)用Render(pObj, rp)函數(shù),OpenGL渲染。
9)進(jìn)入函數(shù)Render()實(shí)現(xiàn)渲染。判斷在穴位記憶功能下,調(diào)用函數(shù)DisplayAcupoints(),顯示該穴位的名稱,實(shí)現(xiàn)功能。
經(jīng)絡(luò)學(xué)習(xí)功能的實(shí)現(xiàn)過程與上述2個(gè)功能類似,在此不再詳述。
在模型仿真實(shí)現(xiàn)過程中,遇到諸多問題和困難,通過對(duì)問題分析研究,本文采用一些關(guān)鍵技術(shù)來解決遇到的問題,主要有以下3個(gè)方面。
技術(shù)1解決穴位名顯示問題。現(xiàn)有實(shí)體模型在顯示穴位名時(shí),都直接顯示于模型皮膚表面。本文的三維虛擬人體經(jīng)絡(luò)穴位模型在初始版本中,將穴位名字顯示于模型表面。但是,由于模型具有放大、縮小功能,且模型表面不平整,存在起伏,使得穴位名稱在顯示時(shí),出現(xiàn)重疊、顯示不完整、部分文字內(nèi)嵌到皮膚內(nèi)等問題。
為解決該問題,本文使用延長線動(dòng)態(tài)調(diào)整方法來顯示穴位名稱,使得在不同視角下,穴位名稱都能完整正常地顯示。具體算法如算法1所示。
算法1
輸入:人體模型和穴位點(diǎn)模型
輸出:穴位點(diǎn)延長線及穴位名
1 定義穴位點(diǎn)的6種顯示方向,分別為前、后、左、右、上、下
2 For當(dāng)前視角中,計(jì)算視角度數(shù)及包括的穴位點(diǎn)
3 For每一個(gè)穴位點(diǎn)
4 計(jì)算穴位點(diǎn)視角與當(dāng)前屏幕視角的差異
5 If視角方向差異同向
6 延長線顯示穴位名
7 調(diào)整顯示方向?yàn)樯舷?/p>
8 If視角方向差異為垂直
9 延長線顯示穴位名
10 調(diào)整顯示方向?yàn)樽笥?/p>
11 If視角方向差異為逆向
12 延長線顯示穴位名
13 調(diào)整顯示方向?yàn)榍昂?/p>
14 End
15 End
技術(shù)2穴位、經(jīng)絡(luò)線段數(shù)量較大。不包含奇穴,人體共有14經(jīng)脈361穴位,即建立了361個(gè)穴位點(diǎn)模型,約350個(gè)點(diǎn)間線段模型,上述每個(gè)模型都是一個(gè)用文本存儲(chǔ)的obj文件,存儲(chǔ)了模型的頂點(diǎn)、法線、紋理坐標(biāo)和材質(zhì)信息,系統(tǒng)需要對(duì)所有的模型進(jìn)行加載渲染。
在加載渲染時(shí),全部使用指針、指針數(shù)組、指針向量來操作,提高加載運(yùn)行的效率。特別是在功能切換時(shí),為提高加載速度,使用全局函數(shù)來傳遞消息。如::PostMessageW(GetParent()->GetSafeHwnd(),WM_ACUPOINT_L, 0, 0)。WM_ACUPOINT_L是功能的選項(xiàng)值。
技術(shù)3觸摸響應(yīng)的實(shí)現(xiàn)方法。觸摸屏為42吋以上的大屏幕。觸摸控制的實(shí)現(xiàn)見圖14~圖15。當(dāng)在電極施加電壓時(shí),導(dǎo)電層會(huì)形成均勻的電壓分布。計(jì)算觸摸點(diǎn)的X軸、Y軸坐標(biāo)的方法如下:若在X方向的電極對(duì)上施加電壓,而Y方向電極對(duì)不加電壓,在X平行電壓場中,觸點(diǎn)處電壓值可在Y+(或Y-)電極上得出,測量Y+電極對(duì)地的電壓值,便可得觸點(diǎn)的X坐標(biāo)值。同理,當(dāng)在Y電極對(duì)上施加電壓,X電極對(duì)上不施加電壓,測量X+電極電壓,可得知觸點(diǎn)的Y坐標(biāo)。測量原理如圖16~圖17所示。
圖14 觸摸控制實(shí)現(xiàn)電路圖
圖15 觸摸點(diǎn)示意圖
圖16 觸摸點(diǎn)X坐標(biāo)值
圖17 觸摸點(diǎn)Y坐標(biāo)值
依據(jù)圖16~圖17,使用以下公式計(jì)算出其坐標(biāo)值,計(jì)算X坐標(biāo)值如式(1)所示:
(1)
計(jì)算Y坐標(biāo)值如式(2)所示:
(2)
取得X和Y的坐標(biāo)值以后,交由消息響應(yīng)函數(shù),根據(jù)功能需要來進(jìn)行下一步處理。
如前所述,本仿真人體模型系統(tǒng)主要有3個(gè)功能,詳見圖18所示。
圖18 模型系統(tǒng)功能模塊
1)穴位顯示功能。點(diǎn)擊該功能,人體模型表面顯示所有穴位點(diǎn),同時(shí)顯示穴位名稱,模型能夠放大、縮小、旋轉(zhuǎn),如圖19所示。
圖19 穴位顯示功能
2)穴位記憶功能。該功能的模型表面只顯示穴位點(diǎn),不顯示穴位名稱。當(dāng)點(diǎn)擊某個(gè)穴位點(diǎn)時(shí),屏幕上會(huì)顯示出該穴位的名稱、位置信息,并播放該穴位錄音。如圖20所示。
3)經(jīng)絡(luò)學(xué)習(xí)功能。選擇該功能時(shí),系統(tǒng)給出所有經(jīng)絡(luò)的名稱和顏色(類似于地鐵售票時(shí)所有站點(diǎn)展示),用戶選擇某一個(gè)經(jīng)絡(luò)時(shí),模型表面僅僅顯示出該經(jīng)絡(luò)的所有穴位,并且從該經(jīng)絡(luò)的初始穴位開始,逐一連線動(dòng)畫顯示每個(gè)穴位點(diǎn)和穴位名,直到最后的穴位被顯示,同時(shí)播放經(jīng)絡(luò)介紹的錄音,如圖21所示。
圖21 經(jīng)絡(luò)學(xué)習(xí)功能
系統(tǒng)的所有功能,都能夠?qū)崿F(xiàn)對(duì)模型的旋轉(zhuǎn)、放大、縮小、移動(dòng)等操作。系統(tǒng)能夠安裝在立式一體機(jī)中,實(shí)現(xiàn)用手指完全觸控屏幕操作,具有良好的交互性和展示效果,目前該系統(tǒng)產(chǎn)品已經(jīng)開發(fā)完成,且在河南中醫(yī)藥大學(xué)第三附屬醫(yī)院內(nèi)部的展覽館投入使用,現(xiàn)處于商業(yè)推廣階段。系統(tǒng)的動(dòng)態(tài)展示視頻見網(wǎng)址www.xuyulong.com頁面最底部,點(diǎn)擊成果展示視頻。
本文介紹了交互式三維虛擬人體經(jīng)絡(luò)穴位模型系統(tǒng)的實(shí)現(xiàn)方法。首先建立人體模型以及穴位點(diǎn)、經(jīng)絡(luò)線段,然后利用MFC和OpenGL對(duì)模型、穴位點(diǎn)、經(jīng)絡(luò)線加載和渲染,并部署到觸摸式一體機(jī)上。并且,詳細(xì)闡述了系統(tǒng)實(shí)現(xiàn)的框架和流程,以及在開發(fā)過程中涉及的關(guān)鍵技術(shù),如使用動(dòng)態(tài)方向調(diào)整來顯示穴位點(diǎn)名稱、使用全局函數(shù)傳遞消息來提高模型加載響應(yīng)的效率、給出觸摸點(diǎn)坐標(biāo)快速獲取的方法。模型系統(tǒng)具有動(dòng)態(tài)人機(jī)交互功能,用手指觸摸能夠?qū)崿F(xiàn)模型的放大、縮小、旋轉(zhuǎn)、定穴、經(jīng)絡(luò)循環(huán)等操作。模型系統(tǒng)較好的交互性能幫助針灸師學(xué)習(xí)和測試穴位掌握情況,也為穴位愛好者提供較真實(shí)的穴位知識(shí)。
目前該系統(tǒng)產(chǎn)品第一個(gè)版本已經(jīng)開發(fā)完成。下一步將繼續(xù)完善修復(fù)系統(tǒng)存在的漏洞,以及加快推廣到實(shí)際有需求的部門。
[1] 張偉江. 人體經(jīng)絡(luò)、數(shù)學(xué)建模與仿真研究[J]. 自然雜志, 1992(9):643-646.
[2] 畢思文,吳廣林. 數(shù)字人體與中醫(yī)藥現(xiàn)代化[J]. 中醫(yī)藥學(xué)刊, 2004,10(z1):584-588.
[3] 肖田元. 仿真是信息時(shí)代認(rèn)識(shí)與改造世界的第三種方法嗎[C]//中國系統(tǒng)仿真學(xué)會(huì)2007年仿真科學(xué)技術(shù)發(fā)展及應(yīng)用研討會(huì)論文集, 2007.
[4] 鄭紹華,陳國棟,林偉明,等. 人體經(jīng)絡(luò)循經(jīng)感傳的三維虛擬仿真研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)仿真, 2008,25(11):251-255.
[5] 黃詠,李建微,鄭紹華,等. 計(jì)算機(jī)三維人體經(jīng)絡(luò)模型構(gòu)建研究[J]. 計(jì)算機(jī)與數(shù)字工程, 2007,35(11):33-35.
[6] 楊宇航,李志忠,任曉丹,等. 基于虛擬現(xiàn)實(shí)技術(shù)的中醫(yī)針灸教學(xué)系統(tǒng)[J]. 系統(tǒng)仿真學(xué)報(bào), 2007,19(10):2379-2383.
[7] 羅群芳,盧林瀟,方慧,等. 3DMAX在虛擬人穴位模型三維重建中的應(yīng)用[J]. 計(jì)算機(jī)時(shí)代, 2012(5):16-17.
[8] 陳沁. 基于3D人體模型的中醫(yī)經(jīng)絡(luò)可視化展示系統(tǒng)[D]. 廣州:華南理工大學(xué), 2012.
[9] 毛燁. 基于OpenGL虛擬針灸的三維仿真設(shè)計(jì)與實(shí)現(xiàn)[D]. 成都:電子科技大學(xué), 2012.
[10] 孫杰,吳春雨. 基于Web的經(jīng)絡(luò)腧穴學(xué)三維虛擬實(shí)驗(yàn)設(shè)計(jì)與開發(fā)[J]. 中國醫(yī)學(xué)教育技術(shù), 2016,30(3):277-281.
[11] 張季,張宏如,董海艷,等. 基于Unity3D技術(shù)的數(shù)字人體腧穴教學(xué)信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國醫(yī)學(xué)教育技術(shù), 2014(2):139-142.
[12] 方進(jìn),邱峰朝. 人體腧穴體表定位比例尺的研制和應(yīng)用[J]. 上海針灸雜志, 2014(12):1183-1184.
[13] 侯書偉,馬祖彬,李永春. 論腧穴分類教學(xué):《經(jīng)絡(luò)腧穴學(xué)》腧穴規(guī)范化教學(xué)方法探討[J]. 中國針灸, 2010,30(10):865-869.
[14] GB/T 12346-2006, 腧穴名稱與定位[S].
[15] 范志先,孫殿柱,李延瑞,等. 采用MFC開發(fā)用戶交互界面的新方法[J]. 工程圖學(xué)學(xué)報(bào), 2008,29(4):160-163.
[16] 劉軍,金耀. 基于VC 6.0和OpenGL的三維試衣系統(tǒng)研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2008,25(12):3824-3825.
[17] 呂珍,謝倩,祝雙武,等. OpenGL導(dǎo)入3DS模型模擬服裝試穿[J]. 西安工程大學(xué)學(xué)報(bào), 2014(4):440-444.
[18] 李素芳,谷林. 基于3DS與OpenGL的三維人體模型構(gòu)建方法[J]. 軟件導(dǎo)刊, 2013(12):158-160.