本發(fā)明屬于3D虛擬現(xiàn)實建模的技術(shù)領(lǐng)域,具體地說,涉及一種基于移動探測器以控制3D模型移動的系統(tǒng)及方法。
背景技術(shù):
隨著人們追求更加逼真的虛擬現(xiàn)實的體驗的欲望的愈發(fā)強烈,3D的虛擬現(xiàn)實技術(shù)也隨之普及。尤其在現(xiàn)有的居室3D模型建模技術(shù)中,常常涉及對家具的平移操作,對于某些特殊的家具的位置是時常依賴于支撐物的,即其平移后不能脫離支撐物,如:茶幾上的茶具、電視柜上的電視等;但在現(xiàn)在的技術(shù)中,都是通過人工檢測與人工糾正的方法以控制平移正確性,即當(dāng)操作者發(fā)現(xiàn)3D模型經(jīng)過平移后已離開支撐物時,需要操作者再將按原來的平移路線將其恢復(fù)到支撐物上;這種人工檢測與人工糾正的方式既不方便也不準(zhǔn)確,大大增加了用戶對3D建模的操作成本。
技術(shù)實現(xiàn)要素:
1、要解決的問題
針對現(xiàn)有3D模型建模時采用人工對3D模型平移操作復(fù)雜、精度差的問題,本發(fā)明提供一種基于移動探測器以控制3D模型移動的系統(tǒng),以及通過該系統(tǒng)控制3D模型移動的方法,降低了人工對3D模型平移的操作難度,提高了移動精度。
2、技術(shù)方案
為解決上述問題,本發(fā)明采用如下的技術(shù)方案。
一種基于移動探測器以控制3D模型移動的系統(tǒng),包括3D模型建立器、3D模型位移捕捉器、3D模型移動探測器和3D模型節(jié)點坐標(biāo)計算器;所述的3D模型建立器單向連接所述的3D模型移動探測器;所述的3D模型位移捕捉器單向連接所述的3D模型移動探測器;所述的3D模型移動探測器單向連接所述的3D模型節(jié)點坐標(biāo)計算器。
優(yōu)選地,所述的3D模型建立器用于計算3D模型的OBB包圍盒各節(jié)點坐標(biāo)和移動物參考點坐標(biāo),并將所述的OBB包圍盒各節(jié)點坐標(biāo)和移動物參考點坐標(biāo)傳輸給所述的3D模型移動探測器。
優(yōu)選地,所述的3D模型位移捕捉器是一種用于捕捉控制所述的移動物3D模型的位移的坐標(biāo),并將此控制所述的移動物3D模型的位移的坐標(biāo)傳輸給所述的3D模型移動探測器的模塊。
優(yōu)選地,所述的3D模型移動探測器是一種探測移動物3D模型的位移的合理性的模塊。
優(yōu)選地,所述的3D模型節(jié)點坐標(biāo)計算器是一種根據(jù)探測值判斷是否對移動物3D模型各節(jié)點坐標(biāo)進行平移的模塊。
一種基于移動探測器以控制3D模型移動的方法,包括如下步驟:
步驟1.初始化3D模型;通過3D模型建立器將支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)和移動物的參考點的坐標(biāo)一并傳輸給所述的3D模型移動探測器;
步驟2.捕捉控制移動物3D模型的位移的坐標(biāo);通過所述的3D模型位移捕捉器從屏幕中捕捉控制所述的移動物3D模型的位移的坐標(biāo),并將控制所述的移動物3D模型的位移的坐標(biāo)傳輸給所述的3D模型移動探測器;
步驟3.探測控制移動物3D模型的位移的合理性;通過3D模型移動探測器將移動物3D模型的位移的合理性的探測值傳輸給所述的3D模型節(jié)點坐標(biāo)計算器;
步驟4.根據(jù)步驟3中所述的探測值移動移動物3D模型。
優(yōu)選地,步驟1中所述的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)的獲取方法是:首先通過所述的3D模型建立器獲取支撐物3D模型各節(jié)點的坐標(biāo),再根據(jù)所述的支撐物3D模型各節(jié)點的坐標(biāo)計算出所述的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)。
優(yōu)選地,步驟1中所述的參考點的坐標(biāo)的獲取方法是:首先通過所述的3D模型建立器獲取移動物3D模型各節(jié)點的坐標(biāo),根據(jù)所述的移動物3D模型各節(jié)點的坐標(biāo)計算所述的移動物3D模型的OBB包圍盒各節(jié)點坐標(biāo);再從所述的移動物3D模型的OBB包圍盒中選取一點作為參考點。
優(yōu)選地,步驟3中所述的控制移動物3D模型的位移的合理性的探測的具體方法是:
(一)所述的3D模型移動探測器接收步驟1中所述的3D模型建立器獲取的所述的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)和所述的參考點的坐標(biāo)、接收步驟2中3D模型位移捕捉器獲取的控制所述的移動物3D模型的位移的坐標(biāo);
(二)從支撐物3D模型的OBB包圍盒平面中獲取支撐面的多邊形各節(jié)點坐標(biāo),即支撐物3D模型的OBB包圍盒的6個平面中正對著移動物3D模型的那個平面即為支撐面,設(shè)此支撐面的多邊形的各節(jié)點坐標(biāo)為group_brace_flat;
(三)上述步驟(一)中所述的參考點設(shè)為P,P在XYZ軸上的坐標(biāo)為(Xp,Yp,Zp),控制所述的移動物3D模型的位移的坐標(biāo)在XYZ軸上為(Xt,Yt,Zt),P經(jīng)過控制所述的移動物3D模型的位移進行移動后的點設(shè)為P1,P1的坐標(biāo)為P的坐標(biāo)加上控制所述的移動物3D模型的位移的坐標(biāo),即P1的坐標(biāo)為(Xp+Xt,Yp+Yt,Zp+Zt);
(四)將上述步驟(三)中P1的坐標(biāo)向步驟(二)中所述的支撐面進行垂直投影,投影后的點設(shè)為P2,對P2是否在所述的group_brace_flat中進行判斷,獲得判斷值,所述的判斷值即為移動物3D模型的位移的合理性的探測值;將所述的探測值傳輸給所述的3D模型節(jié)點坐標(biāo)計算器。
優(yōu)選地,步驟4中根據(jù)探測值移動移動物3D模型的具體方法是:所述的P2落在所述的group_brace_flat中,則對移動物3D模型所有節(jié)點坐標(biāo)進行平移,否則不對移動物3D模型各節(jié)點坐標(biāo)進行平移。
3、有益效果
相比于現(xiàn)有技術(shù),本發(fā)明的有益效果為:
(1)本發(fā)明提供了3D模型移動探測器,即發(fā)明了一種全新的自動探測信息模型,基于這種自動探測的信息模型可以做到對出移動物3D模型的移動合理性進行提前探測,解決了現(xiàn)有技術(shù)中都是通過人工檢測與人工糾正的方法以控制平移正確性的問題;
(2)本發(fā)明提供了3D模型節(jié)點坐標(biāo)計算器,即根據(jù)移動合理性探測值控制移動物3D模型各節(jié)點坐標(biāo)平移計算的方法,是對現(xiàn)有3D模型節(jié)點坐標(biāo)計算器的增強,解決了現(xiàn)有技術(shù)中不能根據(jù)移動合理性探測值控制移動的問題;
(3)本發(fā)明在居室3D模型中對一個支撐物上的家具3D模型進行平移時,能夠做到對3D家具模型是否滿足平移條件進行自動預(yù)先探測,大大降低了用戶對3D建模的操作成本,提升了用戶對3D模型的操作體驗。
附圖說明
圖1為本發(fā)明的3D模型平移示意圖;
圖中:1、參考點;2、移動物3D模型;3、支撐物3D模型;4、支撐平面。
圖2為本發(fā)明系統(tǒng)模塊連接結(jié)構(gòu)圖;
圖3為本發(fā)明的算法流程圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明進行詳細描述。
一種基于移動探測器以控制3D模型移動的系統(tǒng),包括3D模型建立器、3D模型位移捕捉器、3D模型移動探測器、3D模型節(jié)點坐標(biāo)計算器四個模塊;
如圖2所示,所述的3D模型建立器單向連接所述的3D模型移動探測器;所述的3D模型位移捕捉器單向連接所述的3D模型移動探測器;所述的3D模型移動探測器單向連接所述的3D模型節(jié)點坐標(biāo)計算器;
所述的3D模型建立器是一種如下模塊:根據(jù)支撐物3D模型各節(jié)點的坐標(biāo)計算OBB包圍盒各節(jié)點坐標(biāo);根據(jù)移動物3D模型各節(jié)點的坐標(biāo)計算OBB包圍盒各節(jié)點坐標(biāo),并在此OBB包圍盒內(nèi)選取一點作為移動物的參考點;將支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)和移動物參考點坐標(biāo)一并傳輸給3D模型移動探測器;如圖1展示了在移動物3D模型2的OBB包圍盒內(nèi)選取一點作為參考點1;圖1同時展示了支撐物3D模型3和移動物3D模型2以及支撐平面4的位置關(guān)系;
所述的3D模型位移捕捉器是一種如下模塊:用于捕捉控制所述的移動物3D模型的位移的坐標(biāo),并將此控制所述的移動物3D模型的位移的坐標(biāo)傳輸給所述的3D模型移動探測器;
所述的3D模型移動探測器是一種如下模塊:根據(jù)從3D模型建立器獲取的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)和移動物參考點坐標(biāo)以及從3D模型位移捕捉器獲取的控制所述的移動物3D模型的位移的坐標(biāo)探測移動物3D模型的位移的合理性;并將計算后的位移的合理性的探測結(jié)果傳輸給3D模型節(jié)點坐標(biāo)計算器;
所述的3D模型節(jié)點坐標(biāo)計算器是一種如下模塊:根據(jù)從3D模型移動探測器獲取的位移的合理性探測結(jié)果判斷是否對移動物3D模型各節(jié)點坐標(biāo)進行平移。
一種基于移動探測器以控制3D模型移動的方法,如圖3所示,包括如下步驟:
步驟1.初始化3D模型;
首先通過所述的3D模型建立器獲取支撐物3D模型各節(jié)點的坐標(biāo),根據(jù)所述的支撐物3D模型各節(jié)點的坐標(biāo)計算出所述的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo);通過所述的3D模型建立器獲取移動物3D模型各節(jié)點的坐標(biāo),根據(jù)所述的移動物3D模型各節(jié)點的坐標(biāo)計算所述的移動物3D模型的OBB包圍盒各節(jié)點坐標(biāo);再從所述的移動物3D模型的OBB包圍盒中選取一點作為參考點;將所述的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)和所述的參考點的坐標(biāo)一并傳輸給所述的3D模型移動探測器;
步驟2.捕捉控制移動物3D模型的位移的坐標(biāo);
通過所述的3D模型位移捕捉器從屏幕中捕捉控制所述的移動物3D模型的位移的坐標(biāo),并將控制所述的移動物3D模型的位移的坐標(biāo)傳輸給所述的3D模型移動探測器;
步驟3.探測控制移動物3D模型的位移的合理性;具體包括如下步驟:
(一)所述的3D模型移動探測器接收步驟1中所述的3D模型建立器獲取的所述的支撐物3D模型的OBB包圍盒各節(jié)點坐標(biāo)和所述的參考點的坐標(biāo)、接收步驟2中3D模型位移捕捉器獲取的控制所述的移動物3D模型的位移的坐標(biāo);
(二)從支撐物3D模型的OBB包圍盒平面中獲取支撐面的多邊形各節(jié)點坐標(biāo),即支撐物3D模型的OBB包圍盒的6個平面中正對著移動物3D模型的那個平面即為支撐面,設(shè)此支撐面的多邊形的各節(jié)點坐標(biāo)為group_brace_flat;
(三)上述步驟(一)中所述的參考點設(shè)為P,P在XYZ軸上的坐標(biāo)為(Xp,Yp,Zp),控制所述的移動物3D模型的位移的坐標(biāo)在XYZ軸上為(Xt,Yt,Zt),P經(jīng)過控制所述的移動物3D模型的位移進行移動后的點設(shè)為P1,P1的坐標(biāo)為P的坐標(biāo)加上控制所述的移動物3D模型的位移的坐標(biāo),即P1的坐標(biāo)為(Xp+Xt,Yp+Yt,Zp+Zt);
(四)將上述步驟(三)中P1的坐標(biāo)向步驟(二)中所述的支撐面進行垂直投影,投影后的點設(shè)為P2,對P2是否在所述的group_brace_flat中進行判斷,獲得判斷值,所述的判斷值即為移動物3D模型的位移的合理性的探測值,此探測值記錄了P2是否落在group_brace_flat中;將所述的探測值傳輸給所述的3D模型節(jié)點坐標(biāo)計算器;
步驟4.根據(jù)步驟3中所述的探測值移動移動物3D模型;
所述的3D模型節(jié)點坐標(biāo)計算器接收從所述的3D模型移動探測器獲取的所述的探測值,如果所述的探測值表示P2仍落在所述的group_brace_flat中,則對移動物3D模型所有節(jié)點坐標(biāo)進行平移,如果所述的探測值表示P2未落在所述的group_brace_flat中,則不對移動物3D模型各節(jié)點坐標(biāo)進行平移。
下面結(jié)合具體實施例對本發(fā)明進一步進行描述。
實施例1
本實施例以電視柜上的電視的平移為說明如下。
一種基于移動探測器以控制3D模型移動的方法,包括如下步驟:
步驟1.初始化3D模型;
首先通過所述的3D模型建立器獲取電視柜3D模型各節(jié)點的坐標(biāo),根據(jù)所述的電視柜3D模型各節(jié)點的坐標(biāo)計算出所述的電視柜3D模型的OBB包圍盒各節(jié)點坐標(biāo);通過所述的3D模型建立器獲取電視3D模型各節(jié)點的坐標(biāo),根據(jù)所述的電視3D模型各節(jié)點的坐標(biāo)計算所述的電視3D模型的OBB包圍盒各節(jié)點坐標(biāo);再從所述的電視3D模型的OBB包圍盒中選取一點作為參考點;將所述的電視柜3D模型的OBB包圍盒各節(jié)點坐標(biāo)和所述的參考點的坐標(biāo)一并傳輸給所述的3D模型移動探測器;
步驟2.捕捉控制移動物3D模型的位移的坐標(biāo);
通過所述的3D模型位移捕捉器從屏幕中捕捉控制所述的電視3D模型的位移的坐標(biāo),并將控制所述的電視3D模型的位移的坐標(biāo)傳輸給所述的3D模型移動探測器;
步驟3.探測控制移動物3D模型的位移的合理性;具體包括如下步驟:
(一)所述的3D模型移動探測器接收步驟1中所述的3D模型建立器獲取的所述的電視柜3D模型的OBB包圍盒各節(jié)點坐標(biāo)和所述的參考點的坐標(biāo)、接收步驟2中3D模型位移捕捉器獲取的控制所述的電視3D模型的位移的坐標(biāo);
(二)從電視柜3D模型的OBB包圍盒平面中獲取支撐面的多邊形各節(jié)點坐標(biāo),即電視柜3D模型的OBB包圍盒的6個平面中正對著電視3D模型的那個平面即為支撐面,設(shè)此支撐面的多邊形的各節(jié)點坐標(biāo)為group_brace_flat;此多邊形的各節(jié)點坐標(biāo)的存儲方式可以但不限于數(shù)組或鏈表;
(三)步驟(一)中所述的參考點設(shè)為P,P在XYZ軸上的坐標(biāo)為(Xp,Yp,Zp),控制所述的電視3D模型的位移的坐標(biāo)在XYZ軸上為(Xt,Yt,Zt),P經(jīng)過控制所述的電視3D模型的位移進行移動后的點設(shè)為P1,P1的坐標(biāo)為P的坐標(biāo)加上控制所述的電視3D模型的位移的坐標(biāo),即P1的坐標(biāo)為(Xp+Xt,Yp+Yt,Zp+Zt);
(四)將步驟(三)中P1的坐標(biāo)向步驟(二)中所述的支撐面進行垂直投影,投影后的點設(shè)為P2,對P2是否在所述的group_brace_flat中進行判斷,獲得判斷值,所述的判斷值即為電視3D模型的位移的合理性的探測值;將所述的探測值傳輸給所述的3D模型節(jié)點坐標(biāo)計算器;所述的探測值存儲類型可以但不限于枚舉型或者整數(shù)型或者字符串型;
步驟4.根據(jù)步驟3中所述的探測值移動移動物3D模型;
所述的3D模型節(jié)點坐標(biāo)計算器接收從所述的3D模型移動探測器獲取的所述的探測值,如果所述的探測值表示P2仍落在所述的group_brace_flat中,則對電視3D模型所有節(jié)點坐標(biāo)進行平移,如果所述的探測值表示P2未落在所述的group_brace_flat中,則不對電視3D模型各節(jié)點坐標(biāo)進行平移。