本發明涉及一種在多個3D模型中精準選擇指定模型的方法及裝置,具體涉及一種在復雜細小3D模型組合中準確選擇單一或多個指定模型的方法及裝置。
背景技術:
對于擁有3D模型操作功能的軟件,通常具備選擇模型或定位模型部位的功能。尤其在醫學教學軟件中,需要對教學的人體結構進行準確的定位和選擇。現有技術中,該功能的實現方式為使用鼠標或手指點擊模型,所點中的模型變為被選擇狀態。參見圖1,以鼠標點擊或觸摸操作體(通常為手指)觸擊觸摸屏為起點,從點擊處發射一條“碰撞檢測射線”射向模型,當射線碰撞到模型后,即向程序返回其碰到的第一個模型的名稱,并停止碰撞檢測,從而使程序選中該模型。此外,專利文獻(公開號:CN102637116A)公開了一種3D場景交互方法,其提出了從用戶輸入區域內選取若干個均勻分布的發射點,并從選取的發射點中引出多條射線對模型進行選擇。然而在該方案中,其碰撞檢測射線同樣是一條射線只能檢測到一個模型,多條射線的目的在于當足夠數量的射線碰撞到同一3D物體時判定該3D物體為用戶選擇的物體,當判定有多個待選模型時僅選取其中一條射線碰撞到的模型作為目標模型,因此,該方法同樣無法選擇出被覆蓋和遮擋的模型。同時其僅根據用戶輸入區域內均勻分布的若干點進行檢測,容易造成模型選擇的漏檢以及誤檢,使得模型的檢測準確率以及用戶體驗度不高。
同時,在醫學教學軟件中,人體結構復雜,通常由多個細小的模型組合而成。在模型較為細小、聚集在一起或相互產生交疊遮擋的情況下,用戶便很難選中自己希望選擇的對象模型,尤其是該模型被遮擋或周圍有大量其他模型的時候,此時,可能產生多次誤點,或須將其他模型進行移動或者旋轉之后才能進行選擇,甚至根本無法選中目標模型。同時,使用傳統方式一次只能選中第一個檢測到的模型,而不能選擇到射線方向上能夠碰撞到的所有模型,因此模型內部的精細模型很難被選擇到。為了解決該問題,并提高用戶體驗度,需要引入一種更方便、更準確的在復雜細小模型組合中準確選擇單一或多個指定模型的方法及裝置。
技術實現要素:
針對現有技術中模型選擇方法的不足,本發明提出一種在復雜細小3D模型組合中準確選擇單一或多個指定模型的方法及裝置,通過向目標所在區域發射碰撞檢測面,形成碰撞檢測體,將碰撞檢測到的所有模型輸出,供用戶預覽選擇,以準確選擇和定位用戶需要查看的模型。
一種3D模型選擇方法,該方法包括以下步驟:
步驟S1:發射碰撞檢測面;
具體地,觸摸屏將待選擇模型顯示在顯示平面上,當鼠標點擊或觸摸操作體觸擊觸摸屏觸發點擊事件后,以點擊處為起點發射一個以碰撞檢測射線為法向且面積大于0的碰撞檢測面射向目標模型所在區域,使目標模型包含在檢測范圍當中,該檢測面沿直線向顯示平面內側移動;
優選地,該檢測面形狀設置為圓形或矩形或其他面積大于0的閉合圖形,其大小可根據模型精細度進行設置和調整;
步驟S2:返回碰撞檢測到的所有模型名稱;
具體地,碰撞檢測面碰撞到任一模型后,記錄碰撞到的模型名稱,且碰撞檢測面碰撞到模型后不會停止檢測,而是繼續沿著射線方向移動,直到穿透在射線方向上碰撞到的所有模型,形成碰撞檢測體,返回所有碰撞檢測到的模型的名稱;
步驟S3:將步驟S2檢測并返回的模型顯示給用戶以供用戶選擇;
具體地,分析在步驟S2獲得的模型名稱,將對應的模型進行簡單或高精度的渲染,并展示在預覽窗口中。預覽窗口中的模型自動以一定的速率旋轉,方便用戶查看。預覽窗口也可僅展示簡化模型。模型名稱及其對應的預覽模型同時出現且共同構成一個列表項顯示給用戶。
優選地,所有檢測到的模型按照體積由小到大的順序自上而下排列在列表中。并且,在列表區域內可以按住鼠標或用手指按住上下滑動,以顯示更多的列表內容,列表右側以滑動條表示列表內容的總量以及目前所顯示內容的位置。由此,用戶通過瀏覽模型列表,獲得模型名稱及其預覽信息,從而找到目標模型,點擊對應列表項便可完成對目標模型的選擇。
優選地,列表具備多項選擇的功能,點擊某個列表項時,該列表項高亮,表示已經選中,再次點擊該項后取消選中狀態。
步驟S4:當選中所有希望選擇的模型后,點擊確定按鈕,完成選擇,列表自動關閉,所選模型變為選中狀態。當未獲得目標模型需要重新檢測模型或放棄選擇目標模型時,點擊列表以外的區域或點擊列表上的“關閉”或“取消”按鈕,關閉模型列表,以進行下一步操作。
一種3D模型選擇裝置,該裝置包括以下單元:
發射單元,用于觸發點擊事件后發射碰撞檢測面;
具體地,觸摸屏將待選擇模型顯示在顯示平面上,當鼠標點擊或觸摸操作體觸擊觸摸屏觸發點擊事件后,以點擊處為起點發射一個以碰撞檢測射線為法向且面積大于0的碰撞檢測面射向目標模型所在區域,使目標模型包含在檢測范圍當中,該檢測面沿直線向顯示平面內側移動;
優選地,該檢測面形狀設置為圓形或矩形或其他面積大于0的閉合圖形,其大小可根據模型精細度進行設置和調整;
檢測單元,用于返回所述碰撞檢測面碰撞檢測到的所有模型名稱;
具體地,碰撞檢測面碰撞到任一模型后,記錄碰撞到的模型名稱,且碰撞檢測面碰撞到模型后不會停止檢測,而是繼續沿著射線方向移動,直到穿透在射線方向上碰撞到的所有模型,形成碰撞檢測體,返回所有碰撞檢測到的模型的名稱;
輸出單元,用于將檢測單元檢測并返回的模型顯示給用戶以供用戶選擇;
具體地,分析在檢測單元獲得的模型名稱,將對應的模型進行簡單或高精度的渲染,并展示在預覽窗口中。預覽窗口中的模型自動以一定的速率旋轉,方便用戶查看。預覽窗口也可僅展示簡化模型。模型名稱及其對應的預覽模型同時出現且共同構成一個列表項顯示給用戶。
優選地,所有檢測到的模型按照體積由小到大的順序自上而下排列在列表中。并且,在列表區域內可以按住鼠標或用手指按住上下滑動,以顯示更多的列表內容,列表右側以滑動條表示列表內容的總量以及目前所顯示內容的位置。由此,用戶通過瀏覽模型列表,獲得模型名稱及其預覽信息,從而找到目標模型,點擊對應列表項便可完成對目標模型的選擇。
優選地,列表具備多項選擇的功能,點擊某個列表項時,該列表項高亮,表示已經選中,再次點擊該項后取消選中狀態。
選定單元,用于執行以下功能:當選中所有希望選擇的模型后,點擊確定按鈕,完成選擇,列表自動關閉,所選模型變為選中狀態。當未獲得目標模型需要重新檢測模型或放棄選擇目標模型時,點擊列表以外的區域或點擊列表上的“關閉”或“取消”按鈕,關閉模型列表,以進行下一步操作。
根據上述技術方案,本發明有益的技術效果在于:
1.舍棄了傳統碰撞檢測射線的檢測方式,使用面積大于0的閉合圖形碰撞檢測面沿碰撞檢測射線方向前進形成碰撞檢測體,并且碰撞檢測面碰撞到模型后不會停止檢測,而是繼續沿著射線方向移動,直到穿透在射線方向上碰撞到的所有模型并返回給用戶以供選擇,解決了多個細小模型聚集遮擋時無法準確選擇的問題,尤其是在3D人體教學軟件中,使得用戶在使用軟件時有更大的概率使細小或遮擋目標模型包含在檢測范圍當中,提高了在3D模型選擇中的精準性和易用性。
2.采用本方法選擇模型的對象主要針對體積更為細小的3D模型,通過顯示被選中的模型的列表,并在列表中的預覽窗口顯示對應的預覽模型,在列表中對模型進行體積由小到大的排序,以方便用戶對待選模型進行單項或多項的選擇,使得用戶可以更加直觀的選擇細小模型,進一步提高了3D軟件在模型選擇上的易用性,進而提高了用戶體驗。
附圖說明
圖1為現有技術模型選擇方式原理圖。
圖2為本發明模型選擇方式原理圖。
圖3為本發明方法的操作流程圖。
具體實施方式
以下,將參照附圖來詳細說明本發明的實施例。
圖1為現有技術模型選擇方式原理圖。在現有技術中,當觸發點擊事件后,從點擊處為起點發射一條碰撞檢測射線射向多個3D模型;當射線碰撞到模型后,返回其碰到的第一個模型或最早接觸到的模型名稱,并停止碰撞檢測,從而選中該模型。然而,在模型較為細小、聚集在一起或相互產生交疊遮擋的情況下,用戶便很難選中自己希望選擇的對象模型,尤其是該模型被遮擋或周圍有大量其他模型的時候,此時,可能產生多次誤點,或須將其他模型進行移動或者旋轉之后才能進行選擇,甚至根本無法選中目標模型。同時,使用傳統方式一條射線一次只能選中一個檢測到的模型,而不能選擇到射線方向上碰撞到的所有模型,也即一條射線不能選擇多個模型,模型內部的精細模型很難被選擇到。
圖2為本發明模型選擇方式原理圖。
步驟S1:發射碰撞檢測面。
在傳統方案中,當觸發點擊事件后,從點擊處為起點發射一條碰撞檢測射線射向目標模型,并且,當碰撞檢測射線一旦碰撞到模型,便返回所碰撞到的模型名稱,并停止碰撞檢測,也就是說使用傳統方式一條碰撞檢測射線一次只能選中一個檢測到的模型。而在本方案中,觸摸屏將待選擇模型顯示在顯示平面上,當鼠標點擊或觸摸操作體(通常為手指)觸擊觸摸屏觸發點擊事件后,以點擊處為起點發射一個以碰撞檢測射線為法向且面積大于0的碰撞檢測面射向目標模型所在區域,擴大所選的模型范圍,使目標模型盡可能包含在檢測范圍內。該檢測面沿直線向前移動,形狀設置為圓形或矩形或其他面積大于0的閉合圖形,其大小可根據模型精細度進行設置和調整。
步驟S2:返回碰撞檢測到的所有模型名稱。
碰撞檢測面碰撞到任一模型后,記錄碰撞到的模型名稱,且碰撞檢測面碰到模型后并不會停止檢測,而是沿著射線方向繼續向前移動,直到穿透在射線方向上碰撞到的所有模型,形成碰撞檢測體,并返回所有碰撞檢測到的模型的名稱。
步驟S3:將步驟S2檢測并返回的模型顯示給用戶以供用戶選擇。
為了更直觀的選擇模型,分析在步驟S2獲得的模型名稱,將對應的模型進行簡單或高精度的渲染,并展示在預覽窗口中,且預覽窗口中的模型自動以一定的速率旋轉,方便用戶查看。預覽窗口也可僅展示簡化模型。模型名稱與其對應的預覽模型同時出現且共同構成一個列表項,組成模型列表。用戶通過瀏覽模型列表,獲得模型名稱及其預覽信息,從而找到目標模型,點擊對應列表項便可完成對目標模型的選擇。
本發明側重對細小或有遮擋且難以選擇的模型的選擇,當檢測面檢測模型時不可避免的同時檢測到體型較大或處在較為明顯位置的模型。然而使用環境而言,這樣的模型是目標模型的幾率較小。也就是說,采用本發明方法選擇模型的首要目標是體積更為細小或有遮擋的模型。可通過模型列表中模型按照體積大小排序,將模型按照體積由小到大的順序自上而下排列在列表當中,方便用戶選擇細小或有遮擋的模型。
對于檢測到模型較多的情況,列表默認長度可能不足以顯示完所有需要列出的模型,可采用滑動條的方式,在列表區域內按住鼠標或用手指按住上下滑動,顯示更多的列表內容,列表右側以滑動條表示列表內容的總量以及目前所顯示內容的位置。
步驟S4:模型選擇。用戶通過瀏覽模型列表,獲得模型名稱及其預覽信息,從而找到目標模型,點擊對應列表項即可完成對目標模型的選擇。
選擇完成后,列表自動關閉,以免影響下一步操作,且所選模型變為選中狀態;如未獲得目標模型,需重新檢測模型或放棄選擇目標模型,可點擊列表以外的區域或點擊列表上的“關閉”或“取消”按鈕,取消模型選擇,關閉模型列表,以進行下一步操作。
列表具備單一選擇和多項選擇的功能。單一選擇僅選擇一個目標模型即可,而為了解決同時選擇多個細小模型的問題,可設置一“多項選擇”功能,同時使多個模型變為選中狀態。在“多項選擇”模式下,點擊某個列表項時,該列表項高亮,表示已經選中,也可再次點擊該項后取消選中狀態;當選中所有希望選擇的模型后,點擊確定按鈕,完成選擇,所選模型變為選中狀態。
為豐富本方法具備的功能,可集成兩種選擇方法,即傳統選擇方式和本發明細小模型的“精準選擇”方式,可以按鈕或其他形式實現上述兩種方法的切換。在普通選擇狀態下,點擊模型便為傳統選擇方式,采用圖1所示方法進行選擇。在“精準選擇”狀態下,使用為本發明圖2所述的模型選擇方式。
本發明方法具體操作流程如圖3所示:
1.通過點擊“精準選擇”按鈕或是其他方式開啟“精準選擇”狀態;
2.鼠標點擊或用手指觸擊觸摸屏,確定目標模型所在區域;
3.此時,程序發射一個“碰撞檢測面”射向模型,該檢測面可設置為圓形或矩形或其他面積不為0的閉合圖形,其大小也可根據模型精細度進行設置和調整,該檢測面沿碰撞檢測射線為法向以直線向前移動,直到穿透所有的模型,形成一個碰撞檢測體;
4.將所有檢測面碰撞到的模型羅列出來,并按照模型體積從小到大的順序,以列表的形式顯示;
5.在列表中的模型名稱旁設置一模型預覽窗口,顯示模型對應的預覽圖,預覽模型可自動旋轉展示;
6.用戶通過瀏覽模型列表,在列表中選擇單個或多個目標模型,選擇完成后列表自動關閉,目標模型變為被選中狀態;若點擊列表外區域或點擊列表上的“關閉”或“取消”按鈕,則取消模型選擇,關閉模型列表,取消模型選擇操作。
通過上述操作,即可實現對復雜細小模型組合的單一或多個指定模型準確選擇。
以上實施例僅表達了本發明的典型實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬于本發明的保護范圍。因此,本發明專利的保護范圍應以所附權利要求為準。