專(zhuān)利名稱(chēng):一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及廣電領(lǐng)域的字幕制作技術(shù)領(lǐng)域,尤其涉及一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法。
背景技術(shù):
在視頻制作過(guò)程中對(duì)于圖元的操作是避免不了的,然而在圖元操作的過(guò)程中往往會(huì)對(duì)物體進(jìn)行拖動(dòng)旋轉(zhuǎn)等操作?,F(xiàn)有技術(shù)中,在場(chǎng)景中當(dāng)鼠標(biāo)選中物體某個(gè)位置拖動(dòng)或進(jìn)行旋轉(zhuǎn)時(shí)候,只能實(shí)現(xiàn)單一繞X軸,Y軸或Z軸旋轉(zhuǎn),不能實(shí)現(xiàn)拖動(dòng)物體的球面包圍盒進(jìn)行旋轉(zhuǎn)的效果,要實(shí)現(xiàn)一 個(gè)空間姿態(tài),一般需要經(jīng)過(guò)繞X旋轉(zhuǎn),繞Y旋轉(zhuǎn),繞Z旋轉(zhuǎn)三次拖拽操作,比較繁瑣,且因需要經(jīng)過(guò)三步操作才能看到結(jié)果,不能實(shí)時(shí)做調(diào)整。發(fā)明人在實(shí)施本發(fā)明的過(guò)程中,發(fā)現(xiàn)現(xiàn)有技術(shù)存在以下技術(shù)問(wèn)題(I)經(jīng)過(guò)多次拖拽旋轉(zhuǎn)物體才可以實(shí)現(xiàn)物體的任何一個(gè)空間姿態(tài),操作繁瑣;(2)多步操作看到旋轉(zhuǎn)結(jié)果不能實(shí)時(shí)調(diào)整。
發(fā)明內(nèi)容
為了解決上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的主要目的是提供一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法以解決現(xiàn)有技術(shù)中不能實(shí)現(xiàn)三維場(chǎng)景中拖拽物體的球面包圍盒改變物體的空間姿態(tài),實(shí)現(xiàn)物體的旋轉(zhuǎn)的技術(shù)問(wèn)題。為了達(dá)到上述目的,本發(fā)明提供了一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,具體包括計(jì)算拖拽物體的起點(diǎn)和終點(diǎn)的三維空間向量;計(jì)算所述物體起點(diǎn)到終點(diǎn)向量的旋轉(zhuǎn)軸和旋轉(zhuǎn)角度;計(jì)算旋轉(zhuǎn)矩陣及X,Y, z方向的旋轉(zhuǎn)角度。本發(fā)明采用的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法通過(guò)先計(jì)算起點(diǎn)與終點(diǎn)三維空間向量進(jìn)而計(jì)算向量的旋轉(zhuǎn)軸及旋轉(zhuǎn)角度的方式可以計(jì)算出旋轉(zhuǎn)矩陣及與X,y,z方向的旋轉(zhuǎn)角度實(shí)現(xiàn)三維場(chǎng)景中拖拽物體的球面包圍盒改變物體的空間姿態(tài),實(shí)現(xiàn)物體的旋轉(zhuǎn)。
為了更清楚的說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見(jiàn)的,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例一種三維場(chǎng)景中實(shí)現(xiàn)拖拽物體旋轉(zhuǎn)操作的方法流程圖;圖2為本發(fā)明實(shí)施例三維場(chǎng)景中實(shí)現(xiàn)拖拽物體旋轉(zhuǎn)操作的示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例一方面提供了一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,如圖I所示為本發(fā)明實(shí)施例三維場(chǎng)景中實(shí)現(xiàn)拖拽物體旋轉(zhuǎn)球面效果的方法流程圖,具體包括以下步驟步驟SI :計(jì)算拖拽物體的起點(diǎn)和終點(diǎn)在三維空間中的向量。首先由包圍盒確定物體中心的屏幕坐標(biāo),然后根據(jù)拖拽前后的屏幕坐標(biāo)計(jì)算相對(duì)物體中心的相對(duì)坐標(biāo)記SptFrom, ptTo。將上述拖拽前后的相對(duì)坐標(biāo)轉(zhuǎn)換為極坐標(biāo)角度再轉(zhuǎn)為三維向量,記為vecFrom, vecTo。 步驟S2 :計(jì)算拖拽物體起點(diǎn)到終點(diǎn)向量的旋轉(zhuǎn)軸和旋轉(zhuǎn)角度。當(dāng)vecFrom和vecTo長(zhǎng)度之積flength不為O即拖拽有效的情況下計(jì)算vecFrom與vecTo的外積記為vCross并將此外積向量作為旋轉(zhuǎn)軸。計(jì)算vecFrom 與 vecTo 的內(nèi)積 fDot,將 fDot 除以 flength 記為 fcos ;計(jì)算 vecFrom與vecTo的外積vCross長(zhǎng)度并除以flength記為fSin。通過(guò)fCos和fSin計(jì)算旋轉(zhuǎn)角度。通過(guò)fCos和fSin計(jì)算旋轉(zhuǎn)角度具體步驟如下步驟S201 :如果fSin大于等于I. 0,旋轉(zhuǎn)角度為90度;如果fSin小于等于-I. 0,旋轉(zhuǎn)角度為270度;如果不屬于上述兩種情況則執(zhí)行步驟S202 ;步驟S202 :求fSin的反正弦角度arcsin (fSin),并將弧度轉(zhuǎn)為角度記為fAngle ;步驟S203 :如果fCos小于0,則將180-fAngle的值賦給fAngle以得到新的旋轉(zhuǎn)角度;步驟S204 :如果fSin小于O,則將fAngle+360的值賦給fAngle得到新的旋轉(zhuǎn)角度;步驟S3 :通過(guò)旋轉(zhuǎn)軸和旋轉(zhuǎn)角度計(jì)算旋轉(zhuǎn)矩陣,通過(guò)旋轉(zhuǎn)矩陣分解得到X,y,z方向的旋轉(zhuǎn)角度,將這三個(gè)角度與旋轉(zhuǎn)前物體空間中的xyz方向的角度分別相加,得到當(dāng)前物體的旋轉(zhuǎn)角度,實(shí)現(xiàn)物體的旋轉(zhuǎn)。通過(guò)以上的方法計(jì)算得到當(dāng)前物體的旋轉(zhuǎn)角度后,當(dāng)鼠標(biāo)拖拽球面包圍盒任意角度運(yùn)動(dòng)時(shí)物體就可以跟隨鼠標(biāo)拖拽的球面包圍盒運(yùn)動(dòng),也就是說(shuō)鼠標(biāo)拖著球面在動(dòng),里面的物體跟著同步運(yùn)動(dòng),實(shí)現(xiàn)旋轉(zhuǎn)效果。如圖2所示舉例說(shuō)明,圓3圍成的球面為與X軸垂直的YZ平面,以X軸為旋轉(zhuǎn)軸可以實(shí)現(xiàn)繞X旋轉(zhuǎn),也就是YZ平面以X軸為中心旋轉(zhuǎn)。本發(fā)明可以實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊1、2、3三個(gè)圓圍成的球面的任何位置進(jìn)行拖動(dòng),物體跟著旋轉(zhuǎn)。本發(fā)明采用的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法通過(guò)先計(jì)算起點(diǎn)與終點(diǎn)三維空間向量進(jìn)而計(jì)算向量的旋轉(zhuǎn)軸及旋轉(zhuǎn)角度的方式可以計(jì)算出旋轉(zhuǎn)矩陣及與X,y,z方向的旋轉(zhuǎn)角度實(shí)現(xiàn)三維場(chǎng)景中拖拽物體的球面包圍盒改變物體的空間姿態(tài),實(shí)現(xiàn)物體的旋轉(zhuǎn)。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過(guò)軟件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是⑶-ROM,U盤(pán),移動(dòng)硬盤(pán)等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。以上所述,僅為本發(fā)明的一個(gè)最佳具體實(shí)施例,但本發(fā)明的特征并不局限于此,任何熟悉該項(xiàng)技術(shù)的人在本發(fā)明領(lǐng)域內(nèi),可輕 易想到的變化或修飾,都應(yīng)涵蓋在以下本發(fā)明的申請(qǐng)專(zhuān)利范圍中。
權(quán)利要求
1.一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,包括 計(jì)算拖拽物體的起點(diǎn)和終點(diǎn)的三維空間向量; 計(jì)算所述物體起點(diǎn)到終點(diǎn)向量的旋轉(zhuǎn)軸和旋轉(zhuǎn)角度; 計(jì)算物體的旋轉(zhuǎn)矩陣及X,I,Z方向的旋轉(zhuǎn)角度。
2.如權(quán)利要求I所述的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,所述三維空間向量的計(jì)算方法為 首先,由包圍盒確定物體中心的屏幕坐標(biāo); 其次,根據(jù)拖拽前后的屏幕坐標(biāo)計(jì)算相對(duì)物體中心的相對(duì)坐標(biāo); 最后,將上述拖拽前后的相對(duì)坐標(biāo)轉(zhuǎn)換為極坐標(biāo)角度再轉(zhuǎn)為三維空間向量。
3.如權(quán)利要求I所述的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,所述起點(diǎn)到終點(diǎn)的旋轉(zhuǎn)軸是拖拽有效的情況下計(jì)算的拖拽前后的三維空間向量的外積向量。
4.如權(quán)利要求3所述的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,所述拖拽有效是指拖拽前后的三維空間向量的長(zhǎng)度之積不為O的情況。
5.如權(quán)利要求I所述的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,所述起點(diǎn)到終點(diǎn)的旋轉(zhuǎn)角度是通過(guò)拖拽前后的三維空間向量的內(nèi)積與外積分別除以拖拽前后的三維空間向量長(zhǎng)度之積計(jì)算得到的。
6.如權(quán)利要求5所述的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,所述起點(diǎn)到終點(diǎn)的旋轉(zhuǎn)角度的具體計(jì)算方法為 如果拖拽前后的三維空間向量的外積除以所述拖拽前后的三維空間向量長(zhǎng)度之積得到的fSin大于等于I. O,旋轉(zhuǎn)角度為90度;如果fSin小于等于-I. 0,旋轉(zhuǎn)角度為270度;如果fSin不屬于大于等于I. O和小于等于-I. O的情況則求fSin的反正弦角度arcsin(fSin),并將弧度轉(zhuǎn)為角度記為fAngle ; 如果拖拽前后的三維空間向量的內(nèi)積除以所述拖拽前后的三維空間向量長(zhǎng)度之積得到fCos小于O,則將180-fAngle的值賦給fAngle以得到新的旋轉(zhuǎn)角度; 如果fSin小于O,則將fAngle+360的值賦給fAngle得到新的旋轉(zhuǎn)角度。
7.如權(quán)利要求I所述的三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法,其特征在于,所述物體的旋轉(zhuǎn)角度是由旋轉(zhuǎn)矩陣分解得到X,y,z方向的旋轉(zhuǎn)角度,將所述三個(gè)角度與旋轉(zhuǎn)前物體空間中的X,y,z方向的角度分別相加得到的。
全文摘要
本發(fā)明公開(kāi)了一種三維場(chǎng)景中實(shí)現(xiàn)物體旋轉(zhuǎn)操作的方法。通過(guò)先計(jì)算起點(diǎn)與終點(diǎn)三維空間向量進(jìn)而計(jì)算向量的旋轉(zhuǎn)軸及旋轉(zhuǎn)角度的方式可以計(jì)算出旋轉(zhuǎn)矩陣及與x,y,z方向的旋轉(zhuǎn)角度實(shí)現(xiàn)三維場(chǎng)景中拖拽物體的球面包圍盒并改變物體的空間姿態(tài),實(shí)現(xiàn)物體的旋轉(zhuǎn)。
文檔編號(hào)H04N5/278GK102724440SQ201110121669
公開(kāi)日2012年10月10日 申請(qǐng)日期2011年5月11日 優(yōu)先權(quán)日2011年5月11日
發(fā)明者劉衡娜, 沈季, 蔡歡, 鄭培楓 申請(qǐng)人:新奧特(北京)視頻技術(shù)有限公司