本發(fā)明涉及虛擬現(xiàn)實(shí)技術(shù)領(lǐng)域,具體涉及一種三維模型的設(shè)計(jì)方法和設(shè)計(jì)裝置。
背景技術(shù):
虛擬現(xiàn)實(shí)系統(tǒng)是一種可以創(chuàng)建、體驗(yàn)虛擬世界的計(jì)算機(jī)仿真系統(tǒng),涉及到計(jì)算機(jī)圖形學(xué)、人機(jī)交互技術(shù)、傳感技術(shù)以及人工智能等領(lǐng)域,通過計(jì)算機(jī)產(chǎn)生逼真的視聽等感覺來使用戶產(chǎn)生沉浸式體驗(yàn)仿佛真的身處于虛擬世界之中。
現(xiàn)有的三維模型設(shè)計(jì)方案是通過二維平面方式來進(jìn)行三維的模型設(shè)計(jì),一般利用PC機(jī)的二維平面屏幕通過操作轉(zhuǎn)換不同的視角來觀察三維模型并進(jìn)行設(shè)計(jì),設(shè)計(jì)者不能夠直接觀察到設(shè)計(jì)的最終三維立體效果,設(shè)計(jì)過程不夠直觀、便捷。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種三維模型的設(shè)計(jì)方法和設(shè)計(jì)裝置,以便于更加直觀、便捷地進(jìn)行三維模型的設(shè)計(jì)工作。
根據(jù)本發(fā)明的一個方面,本發(fā)明提供了一種三維模型的設(shè)計(jì)方法,包括:
將三維模型導(dǎo)入到虛擬現(xiàn)實(shí)場景中;
在虛擬現(xiàn)實(shí)場景中展示所述三維模型,并對所述三維模型進(jìn)行修改以得到所需的三維模型;
將修改后的三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存。
可選地,所述將三維模型導(dǎo)入到虛擬現(xiàn)實(shí)場景中,具體包括:
使用Unity-VR的Resource.Load()方法讀取保存有三維模型的模型文件,將所述模型文件中的三維模型加載到內(nèi)存中;
將所述三維模型在虛擬現(xiàn)實(shí)場景中的預(yù)設(shè)位置實(shí)例化。
可選地,所述在虛擬現(xiàn)實(shí)場景中展示所述三維模型,具體包括:
調(diào)整Unity-VR中分別用于模擬左眼視角和右眼視角的左相機(jī)和右相機(jī)的位置,使所述三維模型位于所述左相機(jī)和右相機(jī)的視野中;
將所述左相機(jī)和右相機(jī)與用戶頭部的位置跟蹤數(shù)據(jù)相關(guān)聯(lián),使所述左相機(jī)和右相機(jī)隨用戶頭部運(yùn)動。
可選地,所述對所述三維模型進(jìn)行修改以得到所需的三維模型,具體包括:
根據(jù)虛擬現(xiàn)實(shí)設(shè)備的外設(shè)數(shù)據(jù),獲取用戶的操作;
根據(jù)用戶的操作對所述三維模型進(jìn)行相應(yīng)的修改。
可選地,所述將所述三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存,具體包括:
將所述三維模型通過FBX SDK打包,輸出FBX格式的模型文件;
或者,根據(jù)所述三維模型的幾何信息以及OBJ模型文件格式的標(biāo)準(zhǔn),將所述三維模型保存為OBJ格式的模型文件。
根據(jù)本發(fā)明的另一個方面,本發(fā)明提供了一種三維模型的設(shè)計(jì)裝置,包括:模型導(dǎo)入單元、模型設(shè)計(jì)單元和模型導(dǎo)出單元;
所述模型導(dǎo)入單元,用于將三維模型導(dǎo)入到虛擬現(xiàn)實(shí)場景中;
所述模型設(shè)計(jì)單元,用于在虛擬現(xiàn)實(shí)場景中展示所述三維模型,并對所述三維模型進(jìn)行修改以得到所需的三維模型;
所述模型導(dǎo)出單元,用于將修改后的三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存。
可選地,所述模型導(dǎo)入單元具體用于:使用Unity-VR的Resource.Load()方法讀取保存有三維模型的模型文件,將所述模型文件中的三維模型加載到內(nèi)存中,并將所述三維模型在虛擬現(xiàn)實(shí)場景中的預(yù)設(shè)位置實(shí)例化。
可選地,所述模型設(shè)計(jì)單元包括展示模塊,用于調(diào)整Unity-VR中分別用于模擬左眼視角和右眼視角的左相機(jī)和右相機(jī)的位置,使所述三維模型位于所述左相機(jī)和右相機(jī)的視野中,并將所述左相機(jī)和右相機(jī)與用戶頭部的位置跟蹤數(shù)據(jù)相關(guān)聯(lián),使所述左相機(jī)和右相機(jī)隨用戶頭部運(yùn)動。
可選地,所述模型設(shè)計(jì)單元還包括修改模塊,用于根據(jù)虛擬現(xiàn)實(shí)設(shè)備的外設(shè)數(shù)據(jù),獲取用戶的操作,并根據(jù)用戶的操作對所述三維模型進(jìn)行相應(yīng)的修改。
可選地,所述模型導(dǎo)出單元具體用于:將所述三維模型通過FBX SDK打包,輸出FBX格式的模型文件;或者根據(jù)所述三維模型的幾何信息以及OBJ模型文件格式的標(biāo)準(zhǔn),將所述三維模型保存為OBJ格式的模型文件。
本發(fā)明的有益效果是:本發(fā)明實(shí)施例通過將三維模型導(dǎo)入到已有的虛擬現(xiàn)實(shí)場景中,在虛擬現(xiàn)實(shí)場景中展示三維模型并進(jìn)行修改,最后將修改后的三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存,使用戶可以在虛擬現(xiàn)實(shí)場景中,一邊對三維模型進(jìn)行修改,一邊實(shí)時觀察三維模型在虛擬現(xiàn)實(shí)環(huán)境中的立體視覺效果,直觀、便捷地對三維模型進(jìn)行讀取、修改、導(dǎo)出等工作。
附圖說明
圖1是本發(fā)明一個實(shí)施例提供的一種三維模型的設(shè)計(jì)方法的流程圖;
圖2是本發(fā)明一個實(shí)施例提供的一種三維模型的設(shè)計(jì)裝置的功能框圖。
具體實(shí)施方式
本發(fā)明的設(shè)計(jì)構(gòu)思是:現(xiàn)有的三維模型設(shè)計(jì)方案是通過二維平面方式來進(jìn)行三維的模型設(shè)計(jì),一般利用PC機(jī)的二維平面屏幕通過操作轉(zhuǎn)換不同的視角來觀察三維模型并進(jìn)行設(shè)計(jì),不夠直觀、便捷。本發(fā)明從傳統(tǒng)二維平面的設(shè)計(jì)模式轉(zhuǎn)向虛擬現(xiàn)實(shí)三維空間的設(shè)計(jì)模式,通過將三維模型導(dǎo)入到已有的虛擬現(xiàn)實(shí)場景中,在虛擬現(xiàn)實(shí)場景中展示三維模型并進(jìn)行修改,最后將修改后的三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存,使用戶可以在虛擬現(xiàn)實(shí)場景中,一邊對三維模型進(jìn)行修改,一邊實(shí)時觀察三維模型在虛擬現(xiàn)實(shí)環(huán)境中的立體視覺效果,直觀、便捷地對三維模型進(jìn)行讀取、修改、導(dǎo)出等工作。
實(shí)施例一
圖1是本發(fā)明一個實(shí)施例提供的一種三維模型的設(shè)計(jì)方法的流程圖,如圖1所示,本實(shí)施例提供的三維模型的設(shè)計(jì)方法包括:
步驟S110:將三維模型導(dǎo)入到虛擬現(xiàn)實(shí)場景中。
Unity是Unity Technologies開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時三維動畫等類型互動內(nèi)容的多平臺的游戲開發(fā)平臺。通常,三維模型以模型文件的形式保存,應(yīng)當(dāng)首先動態(tài)加載三維模型,獲取模型數(shù)據(jù),即將模型文件中保存的三維模型導(dǎo)入到虛擬現(xiàn)實(shí)場景中。
本實(shí)施例利用Untiy-VR應(yīng)用通過Unity自身的本地資源動態(tài)加載方法Resource.Load(),根據(jù)指定的文件名讀取模型文件,將模型文件中的三維模型加載到內(nèi)存中,然后指定三維模型在Unity場景坐標(biāo)系中的坐標(biāo),即可讀取三維模型將其實(shí)例化,并在已有的虛擬現(xiàn)實(shí)場景中的預(yù)設(shè)位置展示。
步驟S120:在虛擬現(xiàn)實(shí)場景中展示三維模型,并對三維模型進(jìn)行修改以得到所需的三維模型。
Unity-VR通過左相機(jī)和右相機(jī)來模擬對應(yīng)的左右眼視角,根據(jù)步驟S120中動態(tài)加載的三維模型在Unity場景坐標(biāo)系中的坐標(biāo),調(diào)整左相機(jī)和右相機(jī)的位置,以便于模型出現(xiàn)在左相機(jī)和右相機(jī)的視野中,然后設(shè)置左相機(jī)和右相機(jī)的相對位置模擬雙眼的視差,在Unity坐標(biāo)系中一般為0.063,用戶便可以在虛擬現(xiàn)實(shí)場景中直觀地獲取三維模型的立體視覺效果。為了使用戶能夠從不同的距離、不同的角度觀察三維模型的立體效果,本實(shí)施例將左相機(jī)和右相機(jī)與用戶頭部的位置跟蹤數(shù)據(jù)相關(guān)聯(lián),使左相機(jī)和右相機(jī)可以隨用戶頭部運(yùn)動,用戶可以通過佩戴虛擬現(xiàn)實(shí)頭戴設(shè)備,進(jìn)行旋轉(zhuǎn)位移,此時虛擬現(xiàn)實(shí)頭戴設(shè)備上報的位置跟蹤數(shù)據(jù)將同步作用于Unity的左相機(jī)和右相機(jī),這樣便可使用戶通過虛擬現(xiàn)實(shí)設(shè)備自由地觀察虛擬場景以及其中的三維模型了。
在進(jìn)行三維模型設(shè)計(jì)的過程中,Unity需要接收用戶修改模型的指令,在現(xiàn)有的設(shè)計(jì)方案中,用戶通常是通過鼠標(biāo)、鍵盤等設(shè)備向Unity發(fā)送指令,不便于在虛擬現(xiàn)實(shí)場景中進(jìn)行操作。因此本實(shí)施例通過虛擬現(xiàn)實(shí)設(shè)備的外設(shè)進(jìn)行交互數(shù)據(jù)輸入,根據(jù)虛擬現(xiàn)實(shí)設(shè)備的外設(shè)數(shù)據(jù),獲取用戶的操作,對三維模型進(jìn)行相應(yīng)的修改。例如當(dāng)用戶操作虛擬現(xiàn)實(shí)設(shè)備的手柄的方向鍵時,系統(tǒng)控制鼠標(biāo)指針相應(yīng)地移動;當(dāng)用戶按下手柄上的“確定”按鍵時,對三維模型進(jìn)行某一項(xiàng)修改等。
步驟S130:將修改后的三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存。
對三維模型修改完畢得到目標(biāo)三維模型之后,本實(shí)施例通過FBX SDK對目標(biāo)三維模型進(jìn)行打包,輸出生成為FBX格式的模型文件。FBX SDK是一款用于跨平臺的免費(fèi)三維創(chuàng)作與交換格式的軟件,通過FBX用戶能訪問大多數(shù)三維供應(yīng)商的三維文件。或者,也可以導(dǎo)出為OBJ格式的模型文件,只需要對目標(biāo)三維模型進(jìn)行解析,參照OBJ文件格式的標(biāo)準(zhǔn),將目標(biāo)三維模型對應(yīng)的法線向量、頂點(diǎn)等模型解析結(jié)果寫入文件即可。
本實(shí)施例從傳統(tǒng)二維平面的設(shè)計(jì)模式轉(zhuǎn)向虛擬現(xiàn)實(shí)三維空間的設(shè)計(jì)模式,用戶可以在虛擬現(xiàn)實(shí)場景中,一邊對三維模型進(jìn)行修改,一邊實(shí)時觀察三維模型在虛擬現(xiàn)實(shí)環(huán)境中的立體視覺效果,直觀、便捷地對三維模型進(jìn)行讀取、修改、導(dǎo)出等工作。
實(shí)施例二
圖2是本發(fā)明一個實(shí)施例提供的一種三維模型的設(shè)計(jì)裝置的功能框圖。如圖2所示,本實(shí)施例提供的三維模型的設(shè)計(jì)裝置包括:模型導(dǎo)入單元210、模型設(shè)計(jì)單元220和模型導(dǎo)出單元230。
模型導(dǎo)入單元210將三維模型導(dǎo)入到虛擬現(xiàn)實(shí)場景中,模型設(shè)計(jì)單元220在虛擬現(xiàn)實(shí)場景中展示三維模型,并對三維模型進(jìn)行修改以得到所需的三維模型,模型導(dǎo)出單元230將修改后的三維模型從虛擬現(xiàn)實(shí)場景中導(dǎo)出并保存。用戶可以在虛擬現(xiàn)實(shí)場景中,一邊對三維模型進(jìn)行修改,一邊實(shí)時觀察三維模型在虛擬現(xiàn)實(shí)環(huán)境中的立體視覺效果,直觀、便捷地對三維模型進(jìn)行讀取、修改、導(dǎo)出等工作。
在一個優(yōu)選實(shí)施例中,模型導(dǎo)入單元210具體用于:使用Unity-VR的Resource.Load()方法讀取保存有三維模型的模型文件,將模型文件中的三維模型加載到內(nèi)存中,并將三維模型在虛擬現(xiàn)實(shí)場景中的預(yù)設(shè)位置實(shí)例化。
在另一個優(yōu)選實(shí)施例中,模型設(shè)計(jì)單元220包括展示模塊221和修改模塊222。展示模塊221用于調(diào)整Unity-VR中分別用于模擬左眼視角和右眼視角的左相機(jī)和右相機(jī)的位置,使三維模型位于左相機(jī)和右相機(jī)的視野中,并將左相機(jī)和右相機(jī)與用戶頭部的位置跟蹤數(shù)據(jù)相關(guān)聯(lián),使左相機(jī)和右相機(jī)隨用戶頭部運(yùn)動。修改模塊222用于根據(jù)虛擬現(xiàn)實(shí)設(shè)備的外設(shè)數(shù)據(jù),獲取用戶的操作,并根據(jù)用戶的操作對三維模型進(jìn)行相應(yīng)的修改。
在又一個優(yōu)選實(shí)施例中,模型導(dǎo)出單元230具體用于:將三維模型通過FBX SDK打包,輸出FBX格式的模型文件;或者根據(jù)三維模型的幾何信息以及OBJ模型文件格式的標(biāo)準(zhǔn),將三維模型保存為OBJ格式的模型文件。
以上所述,僅為本發(fā)明的具體實(shí)施方式,在本發(fā)明的上述教導(dǎo)下,本領(lǐng)域技術(shù)人員可以在上述實(shí)施例的基礎(chǔ)上進(jìn)行其他的改進(jìn)或變形。本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的具體描述只是更好的解釋本發(fā)明的目的,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
需要說明的是:
本發(fā)明的各個部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
本發(fā)明的三維模型的設(shè)計(jì)裝置傳統(tǒng)上包括處理器和以存儲器形式的計(jì)算機(jī)程序產(chǎn)品或者計(jì)算機(jī)可讀介質(zhì)。存儲器可以是諸如閃存、EEPROM(電可擦除可編程只讀存儲器)、EPROM、硬盤或者ROM之類的電子存儲器。存儲器具有用于執(zhí)行上述方法中的任何方法步驟的程序代碼的存儲空間。例如,用于程序代碼的存儲空間可以包括分別用于實(shí)現(xiàn)上面的方法中的各種步驟的各個程序代碼。這些程序代碼可以從一個或者多個計(jì)算機(jī)程序產(chǎn)品中讀出或者寫入到這一個或者多個計(jì)算機(jī)程序產(chǎn)品中。這些計(jì)算機(jī)程序產(chǎn)品包括諸如硬盤,緊致盤(CD)、存儲卡或者軟盤之類的程序代碼載體。這樣的計(jì)算機(jī)程序產(chǎn)品通常為便攜式或者固定存儲單元。該存儲單元可以類似布置的存儲段、存儲空間等。程序代碼可以例如以適當(dāng)形式進(jìn)行壓縮。通常,存儲單元包括用于執(zhí)行根據(jù)本發(fā)明的方法步驟的計(jì)算機(jī)可讀代碼,即可以由例如處理器讀取的代碼,這些代碼被運(yùn)行時,導(dǎo)致該三維模型的設(shè)計(jì)裝置執(zhí)行上面所描述的方法中的各個步驟。
應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。單詞“包括”不排除存在未列在權(quán)利要求中的元件或步驟。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項(xiàng)來具體體現(xiàn)。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下被實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。本說明書中使用的語言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。