本發(fā)明涉及一種三維人體模型的旋轉(zhuǎn)系統(tǒng)及方法,特別是涉及一種基于經(jīng)絡(luò)穴位的三維人體模型的旋轉(zhuǎn)系統(tǒng)及方法。
背景技術(shù):
根據(jù)中醫(yī)學(xué)說(shuō),經(jīng)絡(luò)是運(yùn)行氣血、聯(lián)系臟腑和體表及全身各部的通道,是人體功能的調(diào)控系統(tǒng)。經(jīng)絡(luò)學(xué)也是人體針灸和按摩的基礎(chǔ),是中醫(yī)學(xué)的重要組成部分。經(jīng)絡(luò)學(xué)說(shuō)是祖國(guó)醫(yī)學(xué)基礎(chǔ)理論的核心之一,源于遠(yuǎn)古,服務(wù)當(dāng)今。在兩千多年的醫(yī)學(xué)長(zhǎng)河中,一直為保障中華民族的健康發(fā)揮著重要的作用。
傳統(tǒng)醫(yī)學(xué)對(duì)經(jīng)絡(luò)的說(shuō)明與展示最早采用的是文字描述、圖形表現(xiàn)、和針灸銅人等三種方法。
目前對(duì)經(jīng)絡(luò)的系統(tǒng)性的文字描述可追溯至《黃帝內(nèi)經(jīng)》,其中的《靈樞經(jīng)》,也稱為《針經(jīng)》,就是專門論述用微針治療經(jīng)絡(luò)的著作。宋代開始用圖形手段和人體模型表現(xiàn)人體經(jīng)絡(luò)。王惟一奉宋仁宗詔命,鑄造針灸銅人,并根據(jù)銅人,寫出《銅人腧穴針灸圖經(jīng)》,又名《新鑄銅人腧穴針灸圖經(jīng)》,簡(jiǎn)稱《銅人經(jīng)》或《銅人》。在1027年由宋醫(yī)官院木板刊行,并刻于四壁石碑上,同時(shí)補(bǔ)入《穴腧都數(shù)》一卷。針灸銅人是中國(guó)古代漢族醫(yī)學(xué)家發(fā)明的供針灸教學(xué)用的青銅澆鑄而成的人體經(jīng)絡(luò)穴位模型。針灸銅人是傳統(tǒng)中醫(yī)學(xué)史上的稀世奇珍,對(duì)中國(guó)醫(yī)學(xué)的發(fā)展起到了舉足輕重的作用。自北宋天圣年以來(lái),明清及現(xiàn)代均有制作,是經(jīng)絡(luò)穴位教學(xué)不可缺少的教具。
隨著計(jì)算機(jī)普及以后,利用計(jì)算機(jī)技術(shù)進(jìn)行中醫(yī)人體模型表現(xiàn)的努力日益廣泛。計(jì)算機(jī)制圖技術(shù)在表現(xiàn)經(jīng)絡(luò)方面的應(yīng)用越來(lái)越廣泛,平面制圖和立體制圖均被應(yīng)用在中醫(yī)經(jīng)絡(luò)穴位展示領(lǐng)域。
當(dāng)前以紙媒為載體的經(jīng)絡(luò)掛圖、插圖是采用計(jì)算機(jī)平面制圖技術(shù)生成的;電腦、智能終端設(shè)備、互聯(lián)網(wǎng)絡(luò)的平面經(jīng)絡(luò)圖形也是采用計(jì)算機(jī)平面制圖技術(shù) 生成的。它們都是由電腦技術(shù)人員按照傳統(tǒng)的平面展示技術(shù),利用adobephotoshop,coreldraw,cad等輔助制圖軟件開發(fā)的電子圖形展示產(chǎn)品。
隨著計(jì)算機(jī)3d技術(shù)的發(fā)展,立體制圖技術(shù)開始應(yīng)用于中醫(yī)經(jīng)絡(luò)展示領(lǐng)域。采用ug,type3,3dmax等技術(shù),或者將平面圖形轉(zhuǎn)換為半立體圖形,或者在對(duì)定的軟件環(huán)境中,如3dmax,繪制三維立體的人體圖形,并按照中醫(yī)穴位的說(shuō)明,在其上標(biāo)示具體的穴位和經(jīng)絡(luò)走向。
傳統(tǒng)的文字說(shuō)明、平面圖形展示經(jīng)絡(luò)穴位具有一定的直觀性,但由于人體表面并非理想平面,而是不規(guī)則的平面,所以在展示上具有失真的特征。采用三維制圖技術(shù)制作的三維立體人體圖形,在一定程度上彌補(bǔ)了平面展示失真的缺陷。但是,現(xiàn)有技術(shù)的開發(fā)的方法或技術(shù)的核心目標(biāo)在于展示,只是一個(gè)單向的立體圖形傳遞,并沒有注重展示過程中展示對(duì)象與參觀者之間的互動(dòng)關(guān)系,參觀者無(wú)法根據(jù)自己的意愿調(diào)整展示對(duì)象,無(wú)法更清晰地理解經(jīng)絡(luò)穴位之間的關(guān)系。
技術(shù)實(shí)現(xiàn)要素:
為克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明提供一種三維人體模型的旋轉(zhuǎn)系統(tǒng)及方法以使用戶上下或者左右操作就可以進(jìn)行多個(gè)維度旋轉(zhuǎn),使用戶可更加直觀清晰的找到經(jīng)絡(luò)與穴位之間的關(guān)系。
為了解決上述技術(shù)問題本發(fā)明提供了一種三維人體模型的旋轉(zhuǎn)系統(tǒng)包括三維人體模型生成單元,獲取用于構(gòu)建三維人體模型的人體數(shù)據(jù)構(gòu)成的數(shù)據(jù)信息,并根據(jù)所獲得的人體數(shù)據(jù)信息,基于數(shù)字圖像三維構(gòu)建技術(shù),構(gòu)建人體的三維仿真模型;坐標(biāo)位置獲取單元,用于獲取用戶操作所述三維人體模型時(shí)點(diǎn)擊的坐標(biāo)位置;
旋轉(zhuǎn)角度確定單元,根據(jù)所述坐標(biāo)位置獲取單元先后時(shí)刻獲取的兩個(gè)坐標(biāo)位置確定所述三維人體模型的旋轉(zhuǎn)方向,并根據(jù)操作所述坐標(biāo)位置間的距離確定旋轉(zhuǎn)角度;
模型旋轉(zhuǎn)控制單元,根據(jù)確定的所述旋轉(zhuǎn)方向和旋轉(zhuǎn)角度來(lái)控制所述三維人體模型進(jìn)行相應(yīng)的旋轉(zhuǎn)。
較佳的,所述旋轉(zhuǎn)角度確定單元獲得先后時(shí)刻用戶操作的兩個(gè)坐標(biāo)位置后,分別計(jì)算x軸方向與y軸方向的兩個(gè)坐標(biāo)位置間的距離差值,根據(jù)x軸方向和y軸方向上的兩個(gè)坐標(biāo)位置間的距離差值確定所述三維人體模型的旋轉(zhuǎn)方向。
較佳的,所述旋轉(zhuǎn)角度確定單元根據(jù)確定的旋轉(zhuǎn)方向上的兩個(gè)坐標(biāo)位置間的差值確定所述三維人體模型的旋轉(zhuǎn)角度。
較佳的,所述三維人體模型的旋轉(zhuǎn)角度確定如下:
如果(abs(δx)>abs(δy)),則ax=δx/tx*180,否則,ay=δy/ty*180,其中所述δx為用戶操作x軸兩個(gè)坐標(biāo)位置間的距離,所述δy為用戶操作y軸兩個(gè)坐標(biāo)位置間的距離,所述abs(δx)表示對(duì)δx取絕對(duì)值,所述abs(δy)表示對(duì)δy取絕對(duì)值,所述ax為x軸旋轉(zhuǎn)角度,所述ay為y軸旋轉(zhuǎn)角度,所述tx為應(yīng)用設(shè)備的x軸總長(zhǎng)度,所述ty為應(yīng)用設(shè)備的y軸總長(zhǎng)度。
較佳的,所述模型旋轉(zhuǎn)控制單元對(duì)所述三維人體模型進(jìn)行旋轉(zhuǎn)時(shí),通過四元數(shù)方法控制所述三維人體模型的角度,并采用萬(wàn)向鎖回避算法防止所述三維人體模型在旋轉(zhuǎn)過程出現(xiàn)萬(wàn)向鎖現(xiàn)象。
較佳的,所述萬(wàn)向鎖回避算法為:在根據(jù)旋轉(zhuǎn)角度實(shí)現(xiàn)所述三維人體模型旋轉(zhuǎn)后,將當(dāng)前的絕對(duì)旋轉(zhuǎn)角度賦值給父節(jié)點(diǎn),并歸零所述三維人體模型的旋轉(zhuǎn)角度。
為達(dá)到發(fā)明目的,本發(fā)明還提供一種三維人體模型的旋轉(zhuǎn)方法,包括如下步驟:
步驟一,獲取用于構(gòu)建三維人體模型的人體數(shù)據(jù)構(gòu)成的數(shù)據(jù)信息,并根據(jù)所獲得的人體數(shù)據(jù)信息,基于數(shù)字圖像三維構(gòu)建技術(shù),構(gòu)建人體的三維仿真模型;
步驟二,獲取用戶操作所述三維人體模型時(shí)點(diǎn)擊的坐標(biāo)位置;
步驟三,根據(jù)步驟二先后時(shí)刻獲取的坐標(biāo)位置確定所述三維人體模型的旋轉(zhuǎn)方向,并根據(jù)操作兩個(gè)坐標(biāo)位置間的距離確定所述三維人體模型的旋轉(zhuǎn)角度;
步驟四,根據(jù)確定的所述旋轉(zhuǎn)方向和旋轉(zhuǎn)角度來(lái)控制所述三維人體模型進(jìn)行相應(yīng)的旋轉(zhuǎn)。
較佳的,于所述步驟三中,于獲得先后時(shí)刻用戶操作的兩個(gè)坐標(biāo)位置后,分別計(jì)算x軸方向與y軸方向的兩個(gè)坐標(biāo)位置間的距離差值,根據(jù)x軸方向和y軸方向上的兩個(gè)坐標(biāo)位置間的距離差值確定所述三維人體模型的旋轉(zhuǎn)方向。
較佳的,于所述步驟三中,所述三維人體模型的旋轉(zhuǎn)角度確定如下:
如果(abs(δx)>abs(δy)),則ax=δx/tx*180,否則,ay=δy/ty*180,其中所述δx為用戶操作x軸兩個(gè)坐標(biāo)位置間的距離,所述δy為用戶操作y軸兩個(gè)坐標(biāo)位置間的距離,所述abs(δx)表示對(duì)δx取絕對(duì)值,所述abs(δy)表示對(duì)δy取絕對(duì)值,所述ax為x軸旋轉(zhuǎn)角度,所述ay為y軸旋轉(zhuǎn)角度,所述tx為應(yīng)用設(shè)備的x軸總長(zhǎng)度,所述ty為應(yīng)用設(shè)備的y軸總長(zhǎng)度。
較佳的,于所述步驟四中,通過四元數(shù)方法控制所述三維人體模型的角度,并采用萬(wàn)向鎖回避算法防止所述三維人體模型在旋轉(zhuǎn)過程出現(xiàn)萬(wàn)向鎖現(xiàn)象。
本發(fā)明的有益效果是通過提供一種三維人體模型的旋轉(zhuǎn)系統(tǒng)及方法,且在所述系統(tǒng)中設(shè)置三維人體模型生成單元、坐標(biāo)位置獲取單元、旋轉(zhuǎn)角度確定單元和模型旋轉(zhuǎn)控制單元,使用戶可以通過第三視角進(jìn)行觀察,并在選擇的操作上進(jìn)行優(yōu)化,讓用戶只需要上下或者左右操作就可以進(jìn)行多個(gè)維度旋轉(zhuǎn),使用戶可更加直觀的找到自己想看的內(nèi)容,同時(shí),本發(fā)明通過采用四元素控制旋轉(zhuǎn)
角度,并采用萬(wàn)向鎖回避算法防止了旋轉(zhuǎn)過程中出現(xiàn)萬(wàn)向鎖的現(xiàn)象。
附圖說(shuō)明
圖1為本發(fā)明的所述三維人體模型的旋轉(zhuǎn)系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明的所述三維人體模型的旋轉(zhuǎn)方法的步驟流程示意圖;
圖3為本發(fā)明較佳實(shí)施例中三維人體模型于旋轉(zhuǎn)前的示意圖;
圖4為圖3的所示實(shí)施例中的三維人體模型于旋轉(zhuǎn)后的示意圖。
具體實(shí)施方式
以下通過特定的具體實(shí)例并結(jié)合附圖說(shuō)明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說(shuō)明書所揭示的內(nèi)容輕易地了解本發(fā)明的其它優(yōu)點(diǎn)與功效。本發(fā)明 亦可通過其它不同的具體實(shí)例加以施行或應(yīng)用,本說(shuō)明書中的各項(xiàng)細(xì)節(jié)亦可基于不同觀點(diǎn)與應(yīng)用,在不背離本發(fā)明的精神下進(jìn)行各種修飾與變更。
如圖1所示,本發(fā)明較佳實(shí)施例的三維人體模型的旋轉(zhuǎn)系統(tǒng),包括三維人體模型生成單元101、坐標(biāo)位置獲取單元102、旋轉(zhuǎn)角度確定單元103以及模型旋轉(zhuǎn)控制單元104。
在本發(fā)明較佳實(shí)施方式中,所述三維人體模型生成單元101,獲取由人體的皮膚、肌肉、組織、器官、骨骼、穴位等數(shù)據(jù)構(gòu)建成的數(shù)據(jù)信息,并根據(jù)所獲得的人體數(shù)據(jù)信息,基于數(shù)字圖像三維構(gòu)建技術(shù),構(gòu)建人體的三維仿真模型。具體地,三維人體模型生成單元101基于數(shù)字圖像三維構(gòu)建技術(shù),精確地繪制了三維虛擬人體的骨骼系統(tǒng)、肌肉系統(tǒng)以及皮膚系統(tǒng)的三維仿真模型。所述骨骼系統(tǒng)的包括23種骨骼,所述23種骨骼包括脊椎、頭顱、上肢、下肢、肩骨、腰胯、腳趾、手指,所述脊椎包括椎骨,所述頭顱包括額骨、枕骨、頂骨,所述上肢包括肱骨、尺骨、橈骨,所述下肢包括股骨、髕骨、脛骨、腓骨,所述肩骨包括鎖骨、肩胛骨、肋骨、胸骨,所述腰胯包括髖骨、骶骨,所述腳趾包括跖骨、趾骨,所述手指包括腕骨、掌骨、指骨;所述肌肉系統(tǒng)包括14種頭部前后肌肉、9種胸背部肌肉、5種腹腚部肌肉、18種上肢肌肉、19種下肢肌肉;所述皮膚系統(tǒng)可看作一個(gè)整體,于構(gòu)建完三維人體模型后,三維人體模型生成單元利用所述三維人體模型,構(gòu)建三維經(jīng)絡(luò)、穴位模型,將穴位與經(jīng)絡(luò)立體展現(xiàn)在三維人體模型的骨骼、肌肉、血管、神經(jīng)、淋巴及臟器的相關(guān)位置。本發(fā)明不以此為限。
在本發(fā)明較佳實(shí)施方式中,所述坐標(biāo)位置獲取單元102,用于獲取用戶操作所述三維人體模型時(shí)點(diǎn)擊的坐標(biāo)位置。本發(fā)明的所述系統(tǒng)可設(shè)置于應(yīng)用設(shè)備,所述應(yīng)用設(shè)備包括智能移動(dòng)設(shè)備和pc端。若所述系統(tǒng)應(yīng)用于所述智能移動(dòng)設(shè)備,則用戶是通過手指或電容筆觸摸所述智能移動(dòng)設(shè)備的觸屏上獲得所需坐標(biāo)位置;若所述系統(tǒng)應(yīng)用于所述pc端,則用戶是通過鼠標(biāo)點(diǎn)擊所述pc端獲得所需坐標(biāo)位置。用戶通過所述操作方法,達(dá)到以第三視角的方法進(jìn)行觀察,獲取的 用戶操作的所述坐標(biāo)位置為包含(x、y)的二維坐標(biāo),但本發(fā)明不以此為限。
在本發(fā)明較佳實(shí)施方式中,所述旋轉(zhuǎn)角度確定單元103,根據(jù)坐標(biāo)位置獲取單元102先后時(shí)刻獲取的兩個(gè)坐標(biāo)位置確定所述三維人體模型的旋轉(zhuǎn)方向,所述旋轉(zhuǎn)方向包括水平旋轉(zhuǎn)和垂直旋轉(zhuǎn),并根據(jù)兩個(gè)所述坐標(biāo)間的距離確定旋轉(zhuǎn)角度,所述兩個(gè)所述坐標(biāo)間的距離指的是先后時(shí)刻的坐標(biāo)位置差值。本發(fā)明所述旋轉(zhuǎn)角度確定單元可以使用戶通過第三視角進(jìn)行觀察,并在選擇的操作上進(jìn)行優(yōu)化,讓用戶只需要上下或者左右操作就可以進(jìn)行多個(gè)維度旋轉(zhuǎn),使用戶可更加直觀的找到自己想看的內(nèi)容。
進(jìn)一步的,用戶操作所述三維人體模型獲得先后時(shí)刻的兩個(gè)坐標(biāo)位置,所述坐標(biāo)所在的坐標(biāo)軸為x軸與y軸,分別計(jì)算所述x軸與所述y軸方向的先后兩個(gè)坐標(biāo)位置間的距離差值,根據(jù)所述x軸和所述y軸上方向上的兩個(gè)坐標(biāo)位置間的所述距離差值確定所述三維人體模型的旋轉(zhuǎn)方向?yàn)樗叫D(zhuǎn)還是垂直旋轉(zhuǎn),具體說(shuō),當(dāng)所述x軸上的操作距離差值的絕對(duì)值大于所述y軸上的操作距離差值,則確定所述三維人體模型的旋轉(zhuǎn)方向?yàn)樗叫D(zhuǎn),否則為垂直旋轉(zhuǎn),然后根據(jù)旋轉(zhuǎn)方向上的操作距離差值確定所述三維人體模型的旋轉(zhuǎn)角度。
進(jìn)一步的,所述旋轉(zhuǎn)角度的確定如下所述。
具體的,所述x軸方向所述兩點(diǎn)的距離差值記為δx,所述δx等于ox1減去ox2,記為δx=ox1-ox2,所述δx為用戶操作x軸距離,所述ox1為用戶操作上次x軸坐標(biāo)位置,所述ox2為用戶當(dāng)前操作x軸坐標(biāo)位置,對(duì)所述δx取絕對(duì)值的記為abs(δx);y軸方向所述兩點(diǎn)的距離差值記為δy,所述δy等于oy1減去oy2,記為δy=oy1-oy2,所述δy為用戶操作y軸距離;所述oy1為用戶操作上次y軸坐標(biāo)位置,所述oy2為用戶當(dāng)前操作y軸坐標(biāo)位置,對(duì)所述δy取絕對(duì)值的記為abs(δy)。如果abs(δx)>abs(δy),即所述δx的絕對(duì)值大于所述δy的絕對(duì)值,則所述三維人體模型的旋轉(zhuǎn)是x軸的旋轉(zhuǎn)角度,記為ax,所述x軸旋轉(zhuǎn)角度ax=δx/tx*180,所述tx為應(yīng)用設(shè)備x軸總長(zhǎng)度,所述應(yīng)用設(shè)備總長(zhǎng)度是所述智能移動(dòng)設(shè)備的屏幕寬度或是所述pc端的應(yīng)用占用寬度;否 則是y軸的旋轉(zhuǎn)角度,記為ay,所述y軸旋轉(zhuǎn)角度ay=δy/ty*180,所述ty為應(yīng)用設(shè)備的y軸總長(zhǎng)度,所述tx為應(yīng)用設(shè)備的x軸總長(zhǎng)度,所述應(yīng)用設(shè)備的總長(zhǎng)度包括智能移動(dòng)設(shè)備的屏幕寬度,pc端的應(yīng)用占用寬度,應(yīng)用設(shè)備的總長(zhǎng)度是所述智能移動(dòng)設(shè)備的屏幕寬度或是pc端的應(yīng)用占用寬度。以上所述模型旋轉(zhuǎn)控制單元可以防止旋轉(zhuǎn)過程出現(xiàn)萬(wàn)向鎖的現(xiàn)象。
在本發(fā)明較佳實(shí)施方式中,所述模型旋轉(zhuǎn)控制單元104,根據(jù)確定的旋轉(zhuǎn)角度控制三維人體模型進(jìn)行相應(yīng)的旋轉(zhuǎn)。在本發(fā)明較佳實(shí)施例中,所述模型旋轉(zhuǎn)控制單元104對(duì)三維人體模型進(jìn)行旋轉(zhuǎn)時(shí),通過四元數(shù)方法控制三維人體模型的角度,并采用萬(wàn)向鎖回避算法防止旋轉(zhuǎn)過程出現(xiàn)萬(wàn)向鎖的現(xiàn)象,選擇后并更新節(jié)點(diǎn)的顯示狀態(tài)。具體地說(shuō),所述模型旋轉(zhuǎn)控制單元104在獲得當(dāng)前的旋轉(zhuǎn)角度后,通過unity3d引擎自帶的api函數(shù)轉(zhuǎn)換成四元數(shù),然后把所述四元數(shù)賦值給所述三維人體模型,通過四元數(shù)控制三維人體模型的角度,實(shí)現(xiàn)模型的旋轉(zhuǎn)。
所述四元數(shù)是簡(jiǎn)單的超復(fù)數(shù)。所述復(fù)數(shù)是由實(shí)數(shù)加上虛數(shù)單位i組成,其中i^2=-1。相似地,所述四元數(shù)都是由所述實(shí)數(shù)加上三個(gè)所述虛數(shù)單位i、j、k組成,而且它們有如下的關(guān)系:i^2=j(luò)^2=k^2=-1,i^0=j(luò)^0=k^0=1,每個(gè)四元數(shù)都是1、i、j和k的線性組合,即是所述四元數(shù)一般可表示為a+bk+cj+di,其中a、b、c、d是所述實(shí)數(shù)。對(duì)于i、j、k本身的幾何意義可以理解為一種旋轉(zhuǎn),其中i旋轉(zhuǎn)代表x軸與y軸相交平面中x軸正向向y軸正向的旋轉(zhuǎn),j旋轉(zhuǎn)代表z軸與x軸相交平面中z軸正向向x軸正向的旋轉(zhuǎn),k旋轉(zhuǎn)代表y軸與z軸相交平面中y軸正向向z軸正向的旋轉(zhuǎn),-i、-j、-k分別代表i、j、k旋轉(zhuǎn)的反向旋轉(zhuǎn)。本發(fā)明較佳實(shí)施方式的所述三維人體模型的角度就是采用以上所述的四元數(shù)方法計(jì)算,在此不再詳述其具體的計(jì)算過程。
本發(fā)明較佳實(shí)施例中,所述萬(wàn)向鎖回避算法是在根據(jù)旋轉(zhuǎn)角度實(shí)現(xiàn)三維人體模型旋轉(zhuǎn)后,將當(dāng)前的絕對(duì)旋轉(zhuǎn)角度賦值給父節(jié)點(diǎn),并歸零三維人體模型的 旋轉(zhuǎn)角度,具體步驟如下:
nlx=ax
nly=ay
pax=nax
pay=nay
nlx=0
nly=0
其中,所述ax為x軸旋轉(zhuǎn)角度;
所述ay為y軸旋轉(zhuǎn)角度;
所述nlx為模型x軸相對(duì)角度;
所述nly為模型y軸相對(duì)角度;
所述pax為模型父節(jié)點(diǎn)x軸絕對(duì)角度;
所述pay為模型父節(jié)點(diǎn)y軸絕對(duì)角度;
所述nax為模型x軸絕對(duì)角度;
所述nay為模型y軸絕對(duì)角度。
圖2為本發(fā)明一種三維人體模型的旋轉(zhuǎn)方法的步驟流程圖。所述方法包括構(gòu)建三維人體模型的步驟201,獲取用戶操作的坐標(biāo)位置的步驟202,確定三維人體模型的旋轉(zhuǎn)方向及旋轉(zhuǎn)角度的步驟203,控制所述三維人體模型旋轉(zhuǎn)的步驟204。
在步驟201中,獲取用于構(gòu)建三維人體模型的人體數(shù)據(jù)構(gòu)成的數(shù)據(jù)信息,并根據(jù)所獲得的人體數(shù)據(jù)信息,基于數(shù)字圖像三維構(gòu)建技術(shù),構(gòu)建人體的三維仿真模型,具體地,本步驟基于數(shù)字圖像三維構(gòu)建技術(shù),精確地繪制了三維虛擬人體的骨骼系統(tǒng)、肌肉系統(tǒng)以及皮膚系統(tǒng)的三維仿真模型,較佳地,于構(gòu)建完三維人體模型后,本步驟還可利用所述三維人體模型,構(gòu)建三維經(jīng)絡(luò)、穴位模型,將穴位與經(jīng)絡(luò)立體展現(xiàn)在三維人體模型的骨骼、肌肉、血管、神經(jīng)、淋巴及臟器的相關(guān)位置,但本發(fā)明不以此為限。
在步驟202中,獲取用戶操作所述三維人體模型時(shí)點(diǎn)擊的坐標(biāo)位置。若本發(fā)明應(yīng)用于智能移動(dòng)設(shè)備,則本步驟獲取的坐標(biāo)位置為用戶通過手指或電容筆于觸屏上觸摸獲得的坐標(biāo)位置,若本發(fā)明應(yīng)用于pc端,則獲取的坐標(biāo)位置為用戶通過鼠標(biāo)操作獲取的坐標(biāo)位置。這里需說(shuō)明的是,本發(fā)明以第三視角進(jìn)行觀察,獲取的用戶操作的坐標(biāo)位置則為包含(x、y)的二維坐標(biāo),但本發(fā)明不以此為限。
在步驟203中,根據(jù)步驟二先后時(shí)刻獲取的坐標(biāo)位置確定所述三維人體模型的旋轉(zhuǎn)方向,并根據(jù)操作兩個(gè)坐標(biāo)位置間的距離確定所述三維人體模型的旋轉(zhuǎn)角度,即,判斷當(dāng)前三維人體模型擬進(jìn)行水平旋轉(zhuǎn)還是垂直旋轉(zhuǎn),并根據(jù)操作距離確定旋轉(zhuǎn)角度,這里的操作距離指的是先后時(shí)刻的坐標(biāo)位置差值,具體的說(shuō),用戶操作所述三維人體模型獲得先后時(shí)刻的兩個(gè)坐標(biāo)位置,所述坐標(biāo)所在的坐標(biāo)軸為x軸與y軸,分別計(jì)算所述x軸與所述y軸方向的先后兩個(gè)坐標(biāo)位置間的距離差值,根據(jù)所述x軸和所述y軸上方向上的兩個(gè)坐標(biāo)位置間的所述距離差值確定所述三維人體模型的旋轉(zhuǎn)方向?yàn)樗叫D(zhuǎn)還是垂直旋轉(zhuǎn),具體說(shuō),當(dāng)所述x軸上的操作距離差值的絕對(duì)值大于所述y軸上的操作距離差值,則確定所述三維人體模型的旋轉(zhuǎn)方向?yàn)樗叫D(zhuǎn),否則為垂直旋轉(zhuǎn),然后根據(jù)旋轉(zhuǎn)方向上的操作距離差值確定所述三維人體模型的旋轉(zhuǎn)角度。
進(jìn)一步的,所述旋轉(zhuǎn)角度的確定如下所述。
具體的,所述x軸方向所述兩點(diǎn)的距離差值記為δx,所述δx等于ox1減去ox2,記為δx=ox1-ox2,所述δx為用戶操作x軸距離,所述ox1為用戶操作上次x軸坐標(biāo)位置,所述ox2為用戶當(dāng)前操作x軸坐標(biāo)位置,對(duì)所述δx取絕對(duì)值的記為abs(δx);y軸方向所述兩點(diǎn)的距離差值記為δy,所述δy等于oy1減去oy2,記為δy=oy1-oy2,所述δy為用戶操作y軸距離;所述oy1為用戶操作上次y軸坐標(biāo)位置,所述oy2為用戶當(dāng)前操作y軸坐標(biāo)位置,對(duì)所述δy取絕對(duì)值的記為abs(δy)。如果abs(δx)>abs(δy),即所述δx的絕對(duì)值大于所述δy的絕對(duì)值,則所述三維人體模型的旋轉(zhuǎn)是x軸的旋轉(zhuǎn)角度,記為ax, 所述x軸旋轉(zhuǎn)角度ax=δx/tx*180,所述tx為應(yīng)用設(shè)備x軸總長(zhǎng)度,所述應(yīng)用設(shè)備總長(zhǎng)度是所述智能移動(dòng)設(shè)備的屏幕寬度或是所述pc端的應(yīng)用占用寬度;否則是y軸的旋轉(zhuǎn)角度,記為ay,所述y軸旋轉(zhuǎn)角度ay=δy/ty*180,所述ty為應(yīng)用設(shè)備的y軸總長(zhǎng)度,所述tx為應(yīng)用設(shè)備的x軸總長(zhǎng)度,所述應(yīng)用設(shè)備的總長(zhǎng)度包括智能移動(dòng)設(shè)備的屏幕寬度,pc端的應(yīng)用占用寬度,應(yīng)用設(shè)備的總長(zhǎng)度是所述智能移動(dòng)設(shè)備的屏幕寬度或是pc端的應(yīng)用占用寬度。以上所述模型旋轉(zhuǎn)控制單元可以防止旋轉(zhuǎn)過程出現(xiàn)萬(wàn)向鎖的現(xiàn)象。
在步驟四204中,根據(jù)確定的所述旋轉(zhuǎn)方向和旋轉(zhuǎn)角度來(lái)控制所述三維人體模型進(jìn)行相應(yīng)的旋轉(zhuǎn)。在本發(fā)明較佳實(shí)施例中,本步驟對(duì)三維人體模型進(jìn)行旋轉(zhuǎn)時(shí),通過四元數(shù)方法控制三維人體模型的角度,并采用萬(wàn)向鎖回避算法防止旋轉(zhuǎn)過程出現(xiàn)萬(wàn)向鎖的現(xiàn)象,選擇后并更新節(jié)點(diǎn)的顯示狀態(tài)。具體地說(shuō),所述模型旋轉(zhuǎn)控制單元104在獲得當(dāng)前的旋轉(zhuǎn)角度后,通過unity3d引擎自帶的api函數(shù)轉(zhuǎn)換成四元數(shù),然后把所述四元數(shù)賦值給所述三維人體模型,通過四元數(shù)控制三維人體模型的角度,實(shí)現(xiàn)模型的旋轉(zhuǎn)。
所述四元數(shù)是簡(jiǎn)單的超復(fù)數(shù)。所述復(fù)數(shù)是由實(shí)數(shù)加上虛數(shù)單位i組成,其中i^2=-1。相似地,所述四元數(shù)都是由所述實(shí)數(shù)加上三個(gè)所述虛數(shù)單位i、j、k組成,而且它們有如下的關(guān)系:i^2=j(luò)^2=k^2=-1,i^0=j(luò)^0=k^0=1,每個(gè)四元數(shù)都是1、i、j和k的線性組合,即是所述四元數(shù)一般可表示為a+bk+cj+di,其中a、b、c、d是所述實(shí)數(shù)。對(duì)于i、j、k本身的幾何意義可以理解為一種旋轉(zhuǎn),其中i旋轉(zhuǎn)代表x軸與y軸相交平面中x軸正向向y軸正向的旋轉(zhuǎn),j旋轉(zhuǎn)代表z軸與x軸相交平面中z軸正向向x軸正向的旋轉(zhuǎn),k旋轉(zhuǎn)代表y軸與z軸相交平面中y軸正向向z軸正向的旋轉(zhuǎn),-i、-j、-k分別代表i、j、k旋轉(zhuǎn)的反向旋轉(zhuǎn)。本發(fā)明較佳實(shí)施方式的所述三維人體模型的角度就是采用以上所述的四元數(shù)方法計(jì)算,在此不再詳述其具體的計(jì)算過程。
本發(fā)明較佳實(shí)施例中,萬(wàn)向鎖回避算法是在根據(jù)旋轉(zhuǎn)角度實(shí)現(xiàn)三維人體模 型旋轉(zhuǎn)后,將當(dāng)前的絕對(duì)旋轉(zhuǎn)角度賦值給父節(jié)點(diǎn),并歸零三維人體模型的旋轉(zhuǎn)角度,具體步驟如下:
nlx=ax
nly=ay
pax=nax
pay=nay
nlx=0
nly=0
其中,所述x為x軸旋轉(zhuǎn)角度;
所述ay為y軸旋轉(zhuǎn)角度;
所述nlx為模型x軸相對(duì)角度;
所述nly為模型y軸相對(duì)角度;
所述pax為模型父節(jié)點(diǎn)x軸絕對(duì)角度;
所述pay為模型父節(jié)點(diǎn)y軸絕對(duì)角度;
所述nax為模型x軸絕對(duì)角度;
所述nay為模型y軸絕對(duì)角度。
圖3為本發(fā)明較佳實(shí)施例中三維人體模型于旋轉(zhuǎn)前的示意圖;圖4為圖3的所示實(shí)施例中的三維人體模型于旋轉(zhuǎn)后的示意圖??梢姡ㄟ^本發(fā)明,用戶只需要上下或者左右操作就可以進(jìn)行多個(gè)維度旋轉(zhuǎn),可更加直觀的找到自己想看的內(nèi)容。
綜上所述,本發(fā)明一種三維人體模型的旋轉(zhuǎn)系統(tǒng)及方法通過第三視角進(jìn)行觀察,并在選擇的操作上進(jìn)行優(yōu)化,讓用戶只需要上下或者左右操作就可以進(jìn)行多個(gè)維度旋轉(zhuǎn),使用戶可更加直觀的找到自己想看的內(nèi)容,同時(shí),本發(fā)明通過采用四元素控制旋轉(zhuǎn)角度,并采用萬(wàn)向鎖回避算法防止了旋轉(zhuǎn)過程中出現(xiàn)萬(wàn)向鎖的現(xiàn)象。
任何本領(lǐng)域技術(shù)人員均可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例 進(jìn)行修飾與改變。因此,本發(fā)明的權(quán)利保護(hù)范圍,應(yīng)如權(quán)利要求書所列。