平滑操縱三維對象的制作方法
【專利摘要】本發(fā)明提供了在一個(gè)虛擬三維空間操縱一個(gè)虛擬三維(3D)對象的系統(tǒng)和方法。在顯示器上顯示3D對象的呈現(xiàn)。確定一個(gè)有表面的非半球形軌跡球。非半球形軌跡球與3D對象的呈現(xiàn)相關(guān)聯(lián)。檢測定位裝置的第一定位和第二定位。定位裝置的第一定位轉(zhuǎn)換到非半球形軌跡球表面的第一位置。定位裝置的第二定位轉(zhuǎn)換到非半球形軌跡球表面的第二位置。在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),旋轉(zhuǎn)基于非半球形軌跡球表面的第一位置和第二位置之間的行進(jìn)路徑。
【專利說明】平滑操縱三維對象
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及如何操縱虛擬三維(3D)對象,并且以一個(gè)特定實(shí)例解釋如何使用非半球形軌跡球操縱虛擬三維對象的方向。
【背景技術(shù)】
[0002]3D場景的開發(fā)和動畫需要放置和移動虛擬三維對象。這通常需要在虛擬場景或?qū)ο缶庉嫮h(huán)境中改變對象的方向、位置和大小。對象的方向、位置和大小是通過旋轉(zhuǎn)、平移和縮放技術(shù)來操作的。
[0003]用戶可通過一個(gè)方法來實(shí)現(xiàn)這些操縱,即直接輸入對應(yīng)于所需操作的數(shù)值。例如,通過選擇對象,并指定三個(gè)旋轉(zhuǎn)屬性的值,其中每個(gè)值控制單個(gè)軸X、Y或Z的旋轉(zhuǎn),用戶可以在一個(gè)計(jì)算機(jī)程序中改變該對象在三維空間的方向。盡管直接輸入旋轉(zhuǎn)數(shù)值為操縱三維對象的方向提供了一個(gè)精確方法,但也提出了許多挑戰(zhàn)。例如,對不是非常熟悉旋轉(zhuǎn)設(shè)置的用戶來說,界面也許不是很友好。
[0004]用戶也可使用一個(gè)指向裝置操縱虛擬三維對象。該指向裝置沿探測表面的位置變化可以用來改變?nèi)S空間中對象的方向。當(dāng)用戶使用該指向裝置選擇檢測表面上的兩個(gè)位置,計(jì)算機(jī)程序可以使用這兩個(gè)位置的坐標(biāo)旋轉(zhuǎn)三維對象。相對于直接輸入數(shù)值來說,使用指向裝置操縱三維對象對用戶更友好,但操作對象的精確度如果很高,對用戶是個(gè)挑戰(zhàn)。
[0005]現(xiàn)有的系統(tǒng)對提供高精確度的虛擬三維對象的操作沒有用戶友好性。因此,我們急需用戶友好的、直觀的和精確的技術(shù),用來在三維空間中平穩(wěn)地操縱三維對象。
[0006]發(fā)明概述
[0007]描述了在虛擬三維空間中操縱虛擬三維(3D)對象的過程。一個(gè)示例方法可包括在顯示器上顯示三維對象的呈現(xiàn)。確定了具有表面的非半球形軌跡球。非半球形軌跡球與三維對象的呈現(xiàn)相關(guān)。在第一位置和在第二位置檢測到一種指向裝置。該指向裝置的所述第一位置被轉(zhuǎn)換到非半球形軌跡球表面上的第一位置。該指向裝置的第二個(gè)位置被轉(zhuǎn)換到非半球形軌跡球的表面上的第二位置。三維對象呈現(xiàn)的旋轉(zhuǎn)被顯示在顯示器上,該旋轉(zhuǎn)基于沿非半球形軌跡球表面所述第一位置和第二位置之間的行程路徑。
[0008]用于在虛擬三維空間中操縱虛擬三維對象的系統(tǒng)和計(jì)算機(jī)可讀存儲媒介也有所說明。
[0009]附圖簡述
[0010]通過參考下述附圖可以最好地理解本申請,附圖中相同的部分通過相同的數(shù)字引用。
[0011]圖1顯示一個(gè)常規(guī)半球形軌跡球。
[0012]圖2顯示一個(gè)常規(guī)半球形軌跡球和一個(gè)非半球形軌跡球之間的比較。
[0013]圖3顯示三維非半球形軌跡球的示例。
[0014]圖4顯示使用非半球形軌跡球旋轉(zhuǎn)對象的示例性程序。
[0015]圖5顯示使用非半球形軌跡球旋轉(zhuǎn)對象的另一個(gè)示例性程序。
[0016]圖6描繪了一個(gè)示例性計(jì)算系統(tǒng),該系統(tǒng)可根據(jù)各種實(shí)施例被用于在虛擬三維環(huán)境中操縱三維對象。
[0017]發(fā)明詳述
[0018]下面的描述解釋如何讓一個(gè)本領(lǐng)域的普通技術(shù)人員建立和使用各種不同實(shí)施例。具體設(shè)備、技術(shù)和應(yīng)用的描述僅作為示例提供。對于一個(gè)本領(lǐng)域的普通技術(shù)人員來說,對本文所描述實(shí)施例的各種不同修改都顯而易見,并且本文定義的一般原理可以應(yīng)用于其它實(shí)施例和應(yīng)用,而不脫離本發(fā)明技術(shù)的精神和范圍。因此,本發(fā)明所公開的技術(shù)并不限于本文描述和展示的實(shí)施例,而是應(yīng)與權(quán)利要求的范圍相一致。
[0019]下面描述了有關(guān)在虛擬三維空間中操縱虛擬三維(3D)對象過程的各種實(shí)施例。一個(gè)示例方法可包括在顯示器上顯示三維對象的呈現(xiàn)。確定了具有表面的非半球形軌跡球。非半球形軌跡球與三維對象的呈現(xiàn)相關(guān)。在第一位置和在第二位置檢測到一種指向裝置。指向裝置的所述第一位置被轉(zhuǎn)換到非半球形軌跡球表面上的第一位置。該指向裝置的第二個(gè)位置被轉(zhuǎn)換到非半球形軌跡球的表面上的第二位置。三維對象呈現(xiàn)的旋轉(zhuǎn)被顯示在顯示器上,該旋轉(zhuǎn)基于沿非半球形軌跡球表面所述第一位置和第二位置之間的行程路徑。
[0020]圖1展示一個(gè)常規(guī)半球形軌跡球104。常規(guī)半球形軌跡球104的說明通過參照計(jì)算機(jī)屏幕表面102描述。常規(guī)半球形軌跡球104提供一種在三維空間中旋轉(zhuǎn)對象的不精確方法。在一個(gè)較高水平,可通過圍繞一個(gè)虛擬3D對象創(chuàng)建虛擬球體,來實(shí)施半球形軌跡球。3D對象通常會顯示在屏幕上。在任一時(shí)刻,用戶都可以訪問球形即半球形軌跡球104的二分之一。由于軌跡球104的半球形狀,該軌跡球與屏幕表面102的虛擬交叉點(diǎn)的橫截面是一個(gè)圓,該半球形軌跡球104在屏幕表面102的虛擬交叉點(diǎn)附近的衰減幾乎是垂直的。
[0021]一個(gè)用戶使用鼠標(biāo)指向光標(biāo)在半球形軌跡球104上選擇一個(gè)點(diǎn)106。然后,該用戶把光標(biāo)拖動到半球形軌跡球104的一個(gè)不同的位置上,如點(diǎn)110。用戶沿著球體表面在屏幕上拖拉該點(diǎn)時(shí),該對象旋轉(zhuǎn),以跟隨球體的等效轉(zhuǎn)動。此旋轉(zhuǎn)可使用分別對應(yīng)于點(diǎn)106和110的矢量108和112進(jìn)行計(jì)算。
[0022]盡管該技術(shù)提供了直觀和用戶友好的體驗(yàn),用戶旋轉(zhuǎn)對象獲得的精度只是一個(gè)較低水平。精確度的缺乏對于沿半球形軌跡球的邊緣附近進(jìn)行的旋轉(zhuǎn)則更加明顯。當(dāng)指向光標(biāo)到達(dá)半球邊緣時(shí),根據(jù)二維(2D)空間中光標(biāo)位置的增量變化而產(chǎn)生的對象在三維空間的旋轉(zhuǎn)角度迅速增加。因此,在半球形軌跡球104的邊緣,光標(biāo)沿屏幕表面102的運(yùn)動的微小變化會極大地改變與半球形軌跡球104相關(guān)聯(lián)的對象的旋轉(zhuǎn)。這種現(xiàn)象在下文中得到更詳細(xì)描述。
[0023]圖2顯示一個(gè)常規(guī)半球形軌跡球和一個(gè)非半球形軌跡球之間的比較。常規(guī)半球形軌跡球104以2D顯示,以便于理解,如半球形軌跡球204 —樣。用戶可被定位成從位置208觀看屏幕表面206。當(dāng)用戶沿屏幕表面206把光標(biāo)從點(diǎn)210拖動到點(diǎn)212,與半球形軌跡球204相關(guān)聯(lián)的對象被旋轉(zhuǎn)。光標(biāo)沿屏幕表面206的示例性運(yùn)動開始于半球形軌跡球206的邊緣,并結(jié)束于該半球形軌跡球204內(nèi)的10像素處。為清楚起見,10像素運(yùn)動沿屏幕表面206測量。
[0024]當(dāng)沿屏幕表面206的該10像素光標(biāo)運(yùn)動被投影到半球形軌跡球204上時(shí),它導(dǎo)致從X軸到矢量214的旋轉(zhuǎn)218的角度為2D中的18度。這樣,10像素的光標(biāo)從點(diǎn)210運(yùn)動到點(diǎn)212時(shí),與半球形軌跡球204相關(guān)聯(lián)的對象將被旋轉(zhuǎn)18度。請注意,沿屏幕表面206(不是在半球形軌跡球204的邊緣附近)的像素運(yùn)動將產(chǎn)生顯著小于18度的旋轉(zhuǎn)角度。尤其是,與在半球形軌跡球204的中心附近拖動光標(biāo)相比,沿半球形軌跡球204的邊緣附近拖動光標(biāo)能更迅速地旋轉(zhuǎn)相關(guān)聯(lián)的對象。在半球形軌跡球204的邊緣附近的快速旋轉(zhuǎn)使對半球形軌跡球204相關(guān)聯(lián)的對象操縱難以平滑,也阻礙對相關(guān)聯(lián)對象的旋轉(zhuǎn)的精確控制。
[0025]與半球形軌跡球204相反的是,圖2顯示可提供額外精確度的非半球形軌跡球202。用戶沿相同的屏幕表面206把光標(biāo)從點(diǎn)210拖動至點(diǎn)212時(shí),與非半球形軌跡球202相關(guān)聯(lián)的對象的旋轉(zhuǎn)顯著小于與半球形軌跡球204相關(guān)聯(lián)的對象。特別是,對非半球形軌跡球202來說,10像素光標(biāo)在屏幕表面206上從點(diǎn)210到點(diǎn)212的運(yùn)動使旋轉(zhuǎn)220從x軸到矢量216的角度在二維中只有5度。
[0026]在本示例中,5度的旋轉(zhuǎn)是通過10像素光標(biāo)在屏幕表面206的運(yùn)動獲得的,該運(yùn)動與半球形軌跡球204所描述的運(yùn)動相同。請注意,沿屏幕表面206的10像素運(yùn)動如果不是在非半球形軌跡球202的邊緣附近,其旋轉(zhuǎn)角度接近5度。因?yàn)榕c沿半球形軌跡球204邊緣和中心的旋轉(zhuǎn)角度相比,沿非半球形軌跡球202的邊緣和中心的旋轉(zhuǎn)角度更一致,所以非半球形軌跡球202提供更高的精確度和更好的用戶體驗(yàn)。
[0027]圖3顯示三維中的非半球形軌跡球304的示例。圖2中相對于非半球形軌跡球描述的概念可以擴(kuò)展到三維,讓對象在三維空間中旋轉(zhuǎn),如在Χ、Y和Z軸上。軌跡球參照顯示屏幕302進(jìn)行說明。與常規(guī)半球不同的是,用戶與軌跡球互動時(shí),非半球形軌跡球使用能緩和對象所體驗(yàn)的旋轉(zhuǎn)角度的衰減技術(shù)。
[0028]參考圖3,可以將具有不同衰減屬性范圍的各種形狀用于三維非半球形軌跡球,以實(shí)現(xiàn)期望的結(jié)果。一個(gè)非半球形軌跡球具有一個(gè)二維底部。此底部為圓形,并且有一個(gè)中心點(diǎn)。和半球不同的是,從底部中心點(diǎn)到非半球形軌跡球的表面所測得的該三維非半球形軌跡球的半徑在非半球形軌跡球的表面不是恒定不變的。
[0029]在一個(gè)示例性實(shí)施方式中,用戶使用觸摸屏顯示裝置來操縱一個(gè)虛擬三維空間內(nèi)的虛擬三維對象。對象的表示顯示在屏幕上。用戶把裝置設(shè)置成“操縱模式”,方法是選擇切換,把指向裝置的運(yùn)動解釋為對象的旋轉(zhuǎn),而不是轉(zhuǎn)換、調(diào)整大小或其它操縱。啟動操縱模式導(dǎo)致系統(tǒng)確定一個(gè)非半球形軌跡球的形狀、尺寸和位置,并把軌跡球與所述對象的表示進(jìn)行關(guān)聯(lián)。用戶把如手指之類的指向裝置放在屏幕上一個(gè)位置處的對象之上或附近,并在屏幕上把指向裝置拖動到另一位置。系統(tǒng)檢測到這兩個(gè)位置(或兩點(diǎn)之間的過渡),并把位置轉(zhuǎn)換成非半球形軌跡球表面上的兩個(gè)位置。軌跡球的表面上的這兩個(gè)位置然后用于確定應(yīng)該施加到對象的旋轉(zhuǎn)角度。施加到與非半球形軌跡球相關(guān)聯(lián)的對象的旋轉(zhuǎn)可以是一維、二維或三維。顯示得到更新,以使用指向裝置根據(jù)輸入旋轉(zhuǎn)顯示旋轉(zhuǎn)后的對象。在視覺上,對象響應(yīng)用戶輸入的旋轉(zhuǎn)可以很接近實(shí)時(shí)。
[0030]作為通過啟動操縱模式而確定非半球形軌跡球的形狀、大小以及位置的一種替代方法,所述非半球形軌跡球可以作為對用戶把指向裝置最初放置于顯示屏幕上的對象之上或附近的響應(yīng)而確定。非半球形軌跡球的形狀、大小和/或位置特征基于相對于所述對象在觸摸屏上的初始觸碰位置而選擇。例如,軌跡球的尺寸和形狀的選擇要完全或部分包圍對象。
[0031] 在一個(gè)實(shí)施例中,與某個(gè)對象相關(guān)聯(lián)的非半球形軌跡球不完全包圍該對象。當(dāng)用戶在對象上選擇一個(gè)位置以旋轉(zhuǎn)該對象時(shí),所述非半球形軌跡球尺寸增大,使得所選擇的位置處于軌跡球范圍之內(nèi)。這允許用戶操縱對象,即使當(dāng)軌跡球未以可視方式顯示在顯示器上時(shí)也是如此。
[0032]圖2所示的非半球形軌跡球的例子說明,二維軌跡球用y=cos ((x~ 1.3) * ( π /2))(其中-1 < X < I)生成。該公式可擴(kuò)展成三維,以在三維中生成一個(gè)非半球形軌跡球。
[0033]常規(guī)的半球形軌跡球可由下面的公式描述:
[0034]di stFromCircIeCenter=Sqrt (xXx+yXy)
[0035]z=sqrt(1.0-distFromCircIeCenter)
[0036]其中z可被概念化為從顯示屏幕正交擴(kuò)展。注意,sqrt(l.0_x)是半徑為I的圓的函數(shù)。這導(dǎo)致可以繪制一個(gè)矢量vectorV(x, y, z)。需要注意的是半球形軌跡球?yàn)檐壽E球邊緣附近、坡度大約90度的斜面。
[0037]下面的等式說明了非半球形軌跡球的一個(gè)實(shí)例:
[0038]di stFromCirc IeCenter=Sqrt (xXx+yXy)
[0039]Z=Cos (distFromCircleCenterL3X π /2) ? 這導(dǎo)致可以繪制一個(gè)矢量 vectorV(X,y, z)。本領(lǐng)域內(nèi)的普通技術(shù)人員能夠理解,distFromCircleCenter變量可以提升到各種功率值。例如,功率值可以在1.2到1.4的范圍之間選擇。
[0040]本領(lǐng)域內(nèi)的普通技術(shù)人員還能夠理解,這些僅是非半球形軌跡球的一組方程式,且其它方程和變型也可以被實(shí)現(xiàn)。在一些實(shí)例中,非半球形軌跡球方程在軌跡球邊緣導(dǎo)致小于90度的斜率(例如在x=l時(shí))。而在另一些實(shí)例中,一個(gè)非半球形軌跡球在軌跡球邊緣具有在70度和85度之間的斜面。在另一個(gè)實(shí)例中,一個(gè)非半球形軌跡球在軌跡球邊緣具有45度和70度之間的斜面。而在又一實(shí)例中,所述非半球形軌跡球在軌跡球邊緣具有25度和45度之間的斜面。在該軌跡球的邊緣附近的斜面越陡,與軌跡球關(guān)聯(lián)的對象會因軌跡球邊緣附近的運(yùn)動而更迅速地旋轉(zhuǎn)。
[0041]此外,軌跡球可以使用兩個(gè)或以上的段(例如樣條曲線)為不容易用單個(gè)方程式建模的非半球形軌跡球創(chuàng)建一個(gè)衰減曲線。這兩個(gè)或多個(gè)段可用來為使用非半球形軌跡球的旋轉(zhuǎn)創(chuàng)建更一致的外觀或感覺。
[0042]圖4顯示了使用非半球形軌跡球旋轉(zhuǎn)一對象的示例性過程。例如,該方法使用電子硬件或存儲在非臨時(shí)性計(jì)算機(jī)可讀存儲媒介(即可被計(jì)算機(jī)處理器讀取)內(nèi)的指令來實(shí)現(xiàn)。該方法用于在虛擬三維空間中操縱虛擬三維對象。在模塊400中,一 3D對象的表示被顯示在顯示器上。該三維對象基于存儲在計(jì)算機(jī)存儲器中的多邊形網(wǎng)格。多邊形網(wǎng)格定義了對象的形狀。
[0043]非半球形軌跡球在模塊402處被確定。非半球形軌跡球具有一個(gè)表面,該表面可以是很光滑的。該非半球形軌跡球可以用可視方式顯示在顯示器上。在其它實(shí)施例中,軌跡球可以是部分透明或不可視方式顯示。在模塊404中,非半球形軌跡球與三維對象的表示相關(guān)聯(lián)。通過將非半球形軌跡球與三維對象的表示相關(guān)聯(lián),多個(gè)三維對象可以顯示在一臺計(jì)算機(jī)屏幕上,且每個(gè)三維對象有其自己的相關(guān)聯(lián)的軌跡球。
[0044]在模塊406中,在第一位置檢測到一個(gè)指向裝置。如果例子中使用了計(jì)算機(jī)鼠標(biāo),當(dāng)用戶點(diǎn)擊鼠標(biāo)上的按鈕時(shí),該指向裝置的位置可被檢測并存儲在存儲器中。另一實(shí)例中使用了一個(gè)觸摸屏?xí)r,那么當(dāng)用戶用手指或指針觸碰觸摸屏?xí)r,該指向裝置的位置可被檢測到并存儲在存儲器中。在模塊408中,指向裝置的第二位置被檢測并存儲在存儲器中。例如,當(dāng)用戶用計(jì)算機(jī)鼠標(biāo)再點(diǎn)擊一次,或當(dāng)用戶把計(jì)算機(jī)鼠標(biāo)拖動到一個(gè)不同的位置然后釋放時(shí),第二個(gè)位置可以被檢測到并存儲。在另一個(gè)例子中,如果用戶觸摸該觸摸屏上的第二位置,或把手指或指針拖動到觸摸屏上的第二位置然后釋放,第二個(gè)位置可以被檢測到。
[0045]在模塊410中,所述第一位置被轉(zhuǎn)換到非半球形軌跡球表面上的第一位置。第一位置可以是具有X、Y和Z軸值的三維位置。在模塊412中,第二位置被轉(zhuǎn)換到非半球形軌跡球表面上的第二位置。所述第二位置也可以是具有X、Y和Z軸值的三維位置。普通技術(shù)人員能夠理解,三維空間的位置也可以使用其它技術(shù)存儲,。
[0046]在模塊414中,對象的旋轉(zhuǎn)顯示和記錄在計(jì)算機(jī)存儲器中。例如,該旋轉(zhuǎn)可以是流體型的動畫旋轉(zhuǎn),也可以是從對象的原始方向跳轉(zhuǎn)到該對象旋轉(zhuǎn)后的方向。對象的旋轉(zhuǎn)基于第一位置和第二位置。更具體地說,所述旋轉(zhuǎn)可以基于沿非半球形軌跡球表面的、在所述第一位置和第二位置之間的行程路徑。因此,半球形軌跡球的形狀在對象旋轉(zhuǎn)運(yùn)動中起到了重要作用。
[0047]圖5顯示使用非半球形軌跡球旋轉(zhuǎn)對象的另一示例性過程。該方法用于在虛擬三維空間中操縱虛擬三維對象。在模塊500中,一個(gè)三維對象的表示顯示在顯示器上。例如,三維對象可以基于存儲在計(jì)算機(jī)存儲器中的多邊形網(wǎng)格。該多邊形網(wǎng)格定義了對象的形狀。
[0048]模塊502中確定了非半球形軌跡球。該非半球形軌跡球具有一個(gè)可以很光滑的表面。該非半球形軌跡球可以用可視方式顯示在顯示器上,也可以用不可視方式顯示。非半球形軌跡球的底部有一個(gè)圓形的周邊和一個(gè)中心點(diǎn),該中心點(diǎn)和底部圓形周邊上的所有點(diǎn)的距離相等。從底部的中心點(diǎn)到非半球形軌跡球表面所測得的非半球形軌跡球半徑各不相同。例如,非半球形軌跡球的半徑在所述非半球形軌跡球邊緣附近可能更長,而在靠近非半球形軌跡球表面的中心處要短一點(diǎn)。
[0049]在模塊504中,非半球形軌跡球與三維對象的表示相關(guān)聯(lián)。非半球形軌跡球可以被放置在三維空間內(nèi)所確定的三維空間置放位置。該置放位置可以基于三維對象在三維空間中的表示的中心點(diǎn)。這樣,非半球形軌跡球可以定位成與三維對象的中心一致。
[0050]在模塊506中,指向裝置在第一位置檢測到。對于使用計(jì)算機(jī)鼠標(biāo)的例子而言,用戶點(diǎn)擊鼠標(biāo)上的一個(gè)按鈕時(shí),該指向裝置的位置可被檢測并存儲在存儲器中。在使用觸摸屏的另一個(gè)實(shí)例中,當(dāng)用戶用手指或指針觸碰觸摸屏?xí)r,該指向裝置的位置可被檢測到并存儲在存儲器中。在模塊508中,指向裝置在第二位置被檢測到并存儲在存儲器中。例如,當(dāng)用戶用計(jì)算機(jī)鼠標(biāo)再點(diǎn)擊一次,或當(dāng)用戶把計(jì)算機(jī)鼠標(biāo)拖動到一個(gè)不同的位置然后釋放時(shí),第二個(gè)位置可以被檢測到并存儲。在另一個(gè)例子中,如果用戶觸摸該觸摸屏上的第二位置,或把手指或指針拖動到觸摸屏上的第二位置然后釋放,第二個(gè)位置可以被檢測到。如下所述,非半球形軌跡球的形狀和尺寸可以基于該第一位置。因此,可基于所述第一位置調(diào)整非半球形軌跡球大小或生成該非半球形軌跡球。
[0051]在模塊510中,非半球形軌跡球的尺寸被確定。非半球形軌跡球的尺寸可以基于指向裝置的所述第一位置。例如,非半球形軌跡球的尺寸可以確定為使其底部擴(kuò)展到二維空間內(nèi)三維對象的表示的投影范圍之外。所選擇的非半球形軌跡球的大小和/或形狀也可以完全包覆所述三維對象的表示。
[0052]在模塊512中,所述第一位置被轉(zhuǎn)換到非半球形軌跡球表面上的第一位置。第一位置可以是具有X、Y和Z軸值的三維位置。在模塊512中,第二個(gè)位置也被轉(zhuǎn)換到非半球形軌跡球表面上的第二位置。所述第二位置也可以是具有X、Y和Z軸值的三維位置。普通技術(shù)人員能夠理解,三維空間的一個(gè)位置可以使用其它技術(shù)存儲。
[0053]在模塊514中,第一矢量被確定。第一矢量從非半球形軌跡球底部的中心延伸到非半球形軌跡球表面上的第一位置。在模塊516中,第二矢量被確定。第二矢量從非半球形軌跡球底部的中心延伸到非半球形軌跡球表面上的第二位置。
[0054]在模塊518中,第一旋轉(zhuǎn)度數(shù)在第一維度中計(jì)算。第一旋轉(zhuǎn)度數(shù)通過確定第一矢量和第二矢量之間的第一角度來計(jì)算。在模塊520中,第二旋轉(zhuǎn)度數(shù)在第二維度中計(jì)算。第二旋轉(zhuǎn)度數(shù)通過確定第一矢量和第二矢量之間的第二角度來計(jì)算。在模塊522中,第三旋轉(zhuǎn)度數(shù)在第三維度中計(jì)算。第三旋轉(zhuǎn)度數(shù)通過確定第一矢量和第二矢量之間的第三角度來計(jì)算。例如,第一、第二、第三維度可以是三維空間中的χ、υ、ζ。
[0055]在模塊524中,對象的旋轉(zhuǎn)被記錄在計(jì)算機(jī)存儲器中。對象的旋轉(zhuǎn)也可顯示在屏幕上讓用戶觀看。旋轉(zhuǎn)三維對象的呈現(xiàn)是基于第一旋轉(zhuǎn)度數(shù)、第二旋轉(zhuǎn)度數(shù)和第三旋轉(zhuǎn)度數(shù)的其中一個(gè)或多個(gè)。對象的旋轉(zhuǎn)值可以存儲在相關(guān)聯(lián)的網(wǎng)格數(shù)據(jù)結(jié)構(gòu)中,該結(jié)構(gòu)與對象相關(guān)聯(lián)。
[0056]在一個(gè)示例中,旋轉(zhuǎn)可以是流動的、動畫片式旋轉(zhuǎn),或者可以是從對象的初始方向跳轉(zhuǎn)到對象的旋轉(zhuǎn)方向。對象的旋轉(zhuǎn)基于第一位置和第二位置。更具體地來說,所述旋轉(zhuǎn)可以基于非半球形形軌跡球表面的第一位置和第二位置之間的行進(jìn)路徑。因此,非半球形軌跡球的形狀在對象的旋轉(zhuǎn)運(yùn)動中起著重要作用。
[0057]在另一個(gè)示例中,在輸入鼠標(biāo)指針沿顯示屏的表面移動過程中,將輸入鼠標(biāo)指針的一個(gè)按鈕按下移到不同位置時(shí),系統(tǒng)不斷地從屏幕上檢測到的位置重新計(jì)算對象的旋轉(zhuǎn)。
[0058]在本示例中,與非半球形軌跡球相關(guān)聯(lián)的對象的當(dāng)前3D旋轉(zhuǎn)被保存在存儲器中。系統(tǒng)檢測到指針的按鈕按下。在按下按鈕時(shí)指針的位置被轉(zhuǎn)換到非半球形軌跡球的表面。從軌跡球底部的中心到軌跡球表面轉(zhuǎn)換的位置計(jì)算出一個(gè)3D矢量。這個(gè)矢量作為初始3D矢量存在存儲器中。當(dāng)系統(tǒng)檢測到指針的移動時(shí),系統(tǒng)計(jì)算從軌跡球底部的中心到鼠標(biāo)指針被轉(zhuǎn)換到的軌跡球表面位置的附加3D矢量。對于這些附加3D矢量的其中一個(gè)或多個(gè),系統(tǒng)根據(jù)原始3D矢量和附加3D矢量計(jì)算出3D旋轉(zhuǎn)。對象基于該旋轉(zhuǎn)進(jìn)行顯示,并且對象的新3D旋轉(zhuǎn)值存儲在存儲器中。這個(gè)過程的特性是讓旋轉(zhuǎn)非常穩(wěn)定。例如,如果用戶將指針移回到顯示屏上最初的起始位置,該對象將顯示為旋轉(zhuǎn)之前的對象。
[0059]下文提供了一份示例性的計(jì)算機(jī)源代碼,其中包括了許多所描述的技術(shù)。源代碼可以進(jìn)一步修改,以包括其它特征或者改變基于上面所描述的技術(shù)。
[0060]
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)現(xiàn)的在虛擬三維空間內(nèi)操縱虛擬三維(3D)對象的方法,所述方法包括: 在顯示器上顯示3D對象的呈現(xiàn); 確定有表面的非半球形軌跡球; 將所述非半球形軌跡球與所述3D對象的呈現(xiàn)相關(guān)聯(lián); 檢測定位裝置的第一定位和第二定位; 將所述定位裝置的所述第一定位轉(zhuǎn)換到所述非半球形軌跡球所述表面的第一位置;將所述定位裝置的所述第二定位轉(zhuǎn)換到所述非半球形軌跡球所述表面的第二位置;及在所述顯示器上顯示3D對象呈現(xiàn)的旋轉(zhuǎn),所述旋轉(zhuǎn)基于所述非半球形軌跡球表面的所述第一位置和所述第二位置之間的行進(jìn)路徑。
2.如權(quán)利要求1所述的計(jì)算機(jī)執(zhí)行方法,其特征在于: 所述非半球形軌跡球有一帶圓形周邊的底部,所述底部有一中心;并且從所述底部中心到所述非半球形軌跡球所述表面測量到的所述非半球形軌跡球的半徑各不相同。
3.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,進(jìn)一步包括: 確定第一矢量,所述第一矢量從所述底部中心延伸到所述非半球形軌跡球表面的所述第一位置; 確定第二矢量,所述第二矢量從所述底部中心延伸到所述非半球形軌跡球表面的所述第二位置; 計(jì)算第一維度中的第一旋轉(zhuǎn)度數(shù),所述第一旋轉(zhuǎn)度數(shù)通過確定第一矢量和第二矢量之間的第一角度來計(jì)算;并且 其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)所述計(jì)算出的第一旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第一維度中3D對象的呈現(xiàn)。
4.如權(quán)利要求3所述的計(jì)算機(jī)執(zhí)行方法,進(jìn)一步包括: 計(jì)算第二維度中的第二旋轉(zhuǎn)度數(shù),所述第二旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第二角度來計(jì)算; 其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)所述計(jì)算出的第二旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第二維度中3D對象的呈現(xiàn); 計(jì)算第三維度中的第三旋轉(zhuǎn)度數(shù),所述第三旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第三角度來計(jì)算;及 其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)所述計(jì)算出的第三旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第三維度中3D對象的呈現(xiàn)。
5.如權(quán)利要求2所述所述的計(jì)算機(jī)執(zhí)行方法,進(jìn)一步包括: 確定三維空間中的放置位置,所述放置位置基于三維空間中3D對象的呈現(xiàn)的中心;及 根據(jù)所述放置位置將所述非半球形軌跡球置于所述3D空間中。
6.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,進(jìn)一步包括: 確定非半球形軌跡球的尺寸,所述尺寸基于所述定位裝置的所述第一定位;及 其中,所述非半球形軌跡球的所述底部擴(kuò)展超出二維空間中3D對象的呈現(xiàn)的投影。
7.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,進(jìn)一步包括:確定所述非半球形軌跡球的尺寸,所述尺寸基于所述定位裝置的所述第一定位;及 其中,所述非半球形軌跡球完全包裹了所述3D對象的呈現(xiàn)。
8.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,進(jìn)一步包括: 在計(jì)算機(jī)存儲器中存儲旋轉(zhuǎn)值,其中,所述旋轉(zhuǎn)值基于第一定位和第二定位 '及將所述旋轉(zhuǎn)值與網(wǎng)格數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián),其中,在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn)使用了所述網(wǎng)格數(shù)據(jù)結(jié)構(gòu)和旋轉(zhuǎn)值。
9.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,其特征在于,檢測定位裝置包括檢測用戶與觸敏裝置的交互。
10.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,其特征在于,確定有表面的非半球形軌跡球包括根據(jù)第一定位選擇非半球形軌跡球的形狀。
11.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,其特征在于,確定有表面的非半球形軌跡球包括確定在非半球形軌跡球的邊緣有個(gè)小于90度的坡度的非半球形軌跡球。
12.如權(quán)利要求11所述的計(jì)算機(jī)執(zhí)行方法,其特征在于,確定有表面的非半球形軌跡球包括確定在非半球形軌跡球的邊緣有個(gè)70到85度的坡度的非半球形軌跡球。
13.如權(quán)利要求2所述的計(jì)算機(jī)執(zhí)行方法,其特征在于,確定有表面的非半球形軌跡球,包括使用基 于(a)半徑的乘方值和(b) pi除以2的乘積的余弦的一個(gè)方程式。
14.如權(quán)利要求13所述的計(jì)算機(jī)執(zhí)行方法,其特征在于,所述乘方值在1.2和1.4之間。
15.一個(gè)非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,包括了在一個(gè)虛擬三維空間中操縱一個(gè)虛擬三維(3D)對象的計(jì)算機(jī)可執(zhí)行指令,計(jì)算機(jī)可執(zhí)行指令包括以下指令: 在顯示器上顯示3D對象的呈現(xiàn); 確定有表面的非半球形軌跡球; 將非半球形軌跡球與3D對象的呈現(xiàn)相關(guān)聯(lián); 檢測定位裝置的第一定位和第二定位; 將所述定位裝置的第一定位轉(zhuǎn)換到所述非半球形軌跡球表面的第一位置; 將所述定位裝置的第二定位轉(zhuǎn)換到所述非半球形軌跡球表面的第二位置;及在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),旋轉(zhuǎn)基于非半球形軌跡球表面第一位置和第二位置的行進(jìn)路徑。
16.如權(quán)利要求15所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中: 所述非半球形軌跡球有一個(gè)帶圓形周邊的底部,底部有一個(gè)中心;及 從底部中心到非半球形軌跡球表面測量到的所述非半球形軌跡球的半徑各不相同。
17.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,進(jìn)一步包括: 確定第一矢量,所述第一矢量從底部中心延伸到所述非半球形軌跡球表面的所述第一位置; 確定第二矢量,所述第二矢量從底部中心延伸到所述非半球形軌跡球表面的所述第二位置; 計(jì)算第一維度中的第一旋轉(zhuǎn)度數(shù),所述第一旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第一角度來計(jì)算;及 其中,在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)計(jì)算出的第一旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第一維度中3D對象的呈現(xiàn)。
18.如權(quán)利要求17所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,進(jìn)一步包括: 計(jì)算第二維度中的第二旋轉(zhuǎn)度數(shù),所述第二旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第二角度來計(jì)算; 其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)所述計(jì)算出的第二旋轉(zhuǎn)度數(shù)旋轉(zhuǎn)第二維度中3D對象的呈現(xiàn); 計(jì)算第三維度中的第三旋轉(zhuǎn)度數(shù),所述第三旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第三角度來計(jì)算;及 其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)所述計(jì)算出的第三旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第三維度中3D對象的呈現(xiàn)。
19.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,進(jìn)一步包括: 確定所述三維空間中的放置位置,所述放置位置基于所述三維空間中3D對象的呈現(xiàn)的中心;及 根據(jù)所述放置位置將所述非半球形軌跡球置于所述三維空間中。
20.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,進(jìn)一步包括: 確定非半球形軌跡球 的尺寸,所述尺寸基于所述定位裝置的第一定位;及 其中,所述非半球形軌跡球的底部擴(kuò)展超出二維空間中所述3D對象的呈現(xiàn)的投影。
21.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,進(jìn)一步包括: 確定非半球形軌跡球的尺寸,所述尺寸基于所述定位裝置的第一定位;及 其中,所述非半球形軌跡球完全包裹了所述3D對象的呈現(xiàn)。
22.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,進(jìn)一步包括: 在計(jì)算機(jī)存儲器中存儲旋轉(zhuǎn)值,其中,所述旋轉(zhuǎn)值基于所述第一定位和所述第二定位;及 將所述旋轉(zhuǎn)值與網(wǎng)格數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián),其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn)使用了所述網(wǎng)格數(shù)據(jù)結(jié)構(gòu)和旋轉(zhuǎn)值。
23.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中檢測所述定位裝置包括檢測用戶與觸敏裝置的交互。
24.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中確定有表面的所述非半球形軌跡球包括根據(jù)所述第一定位選擇所述非半球形軌跡球的形狀。
25.如權(quán)利要求16所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中確定有表面的所述非半球形軌跡球包括確定在所述非半球形軌跡球的邊緣有個(gè)小于90度的坡度的非半球形軌跡球。
26.如權(quán)利要求25所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中確定有表面的所述非半球形軌跡球包括確定所述在非半球形軌跡球的邊緣有個(gè)70到85度的坡度的非半球形軌跡球。
27.如權(quán)利要求14所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中確定有表面的所述非半球形軌跡球,包括使用基于(a)半徑的乘方值和(b)pi除以2的乘積的余弦的一個(gè)方程式。
28.如權(quán)利要求27所述的非臨時(shí)性計(jì)算機(jī)可讀存儲媒介,其中所述乘方值在1.2和.1.4之間。
29.用于在虛擬三維空間中操縱虛擬三維(3D)對象的裝置,所述裝置包括: 經(jīng)配置可存儲3D對象的存儲器 '及 一個(gè)或多個(gè)經(jīng)配置可執(zhí)行下列操作的計(jì)算機(jī)處理器: 在顯示器上顯示3D對象的呈現(xiàn); 確定有表面的非半球形軌跡球; 將非半球形軌跡球與3D對象的呈現(xiàn)相關(guān)聯(lián); 檢測定位裝置的第一定位和第二定位; 將定位裝置的第一定位轉(zhuǎn)換到非半球形軌跡球表面的第一位置; 將定位裝置的第二定位轉(zhuǎn)換到非半球形軌跡球表面的第二位置;及在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),旋轉(zhuǎn)基于非半球形軌跡球表面第一位置和第二位置的行進(jìn)路徑。
30.如權(quán)利要求29所述的裝置,其中: 所述非半球形軌跡球有一個(gè)帶圓形周邊的底部,底部有一個(gè)中心;及 從底部中心到非半球形軌跡球表面測量到的所述非半球形軌跡球的半徑各不相同。
31.如權(quán)利要求30所述的裝置,其中包括一個(gè)或多個(gè)經(jīng)進(jìn)一步配置,可執(zhí)行下列操作的計(jì)算機(jī)處理器: 確定第一矢量,所述第一矢量從底部中心延伸到所述非半球形軌跡球表面的所述第一位置; 確定第二矢量,所述第二矢量從底部中心延伸到所述非半球形軌跡球表面的所述第二位置; 計(jì)算第一維度中的第一旋轉(zhuǎn)度數(shù),所述第一旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第一角度來計(jì)算;及 其中,在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括根據(jù)所述計(jì)算出的第一旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第一維度中3D對象的呈現(xiàn)。
32.如權(quán)利要求30所述的裝置,其中包括一個(gè)或多個(gè)經(jīng)進(jìn)一步配置,可執(zhí)行下列操作的計(jì)算機(jī)處理器: 計(jì)算第二維度中的第二旋轉(zhuǎn)度數(shù),所述第二旋轉(zhuǎn)度數(shù)通過確定所述第一矢量和所述第二矢量之間的第二角度來計(jì)算; 其中,在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括基于所述計(jì)算出的第二旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第二維度中3D對象的呈現(xiàn); 計(jì)算第三維度中的第三旋轉(zhuǎn)度數(shù),所述第三旋轉(zhuǎn)度數(shù)通過確定第一矢量和第二矢量之間的第三角度來計(jì)算 '及 其中,在顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn),包括基于計(jì)算出的第三旋轉(zhuǎn)度數(shù),旋轉(zhuǎn)第三維度中3D對象的呈現(xiàn)。
33.如權(quán)利要求30所述的裝置,其中包括一個(gè)或多個(gè)經(jīng)進(jìn)一步配置,可執(zhí)行下列操作的計(jì)算機(jī)處理器: 確定三維空間中的放置位置,所述放置位置基于三維空間中3D對象的呈現(xiàn)的中心;及 根據(jù)所述放置位置將所述非半球形軌跡球置于三維空間中。
34.如權(quán)利要求30所述的裝置,其中包括一個(gè)或多個(gè)經(jīng)進(jìn)一步配置,可執(zhí)行下列操作的計(jì)算機(jī)處理器: 確定非半球形軌跡球的尺寸,所述尺寸基于所述定位裝置的第一定位;及 其中,所述非半球形軌跡球的底部擴(kuò)展超出二維空間中3D對象的呈現(xiàn)的投影。
35.如權(quán)利要求30所述的裝置,其中所述一個(gè)或多個(gè)經(jīng)進(jìn)一步配置,可執(zhí)行下列操作的計(jì)算機(jī)處理器: 確定所述非半球形軌跡球的尺寸,所述尺寸基于所述定位裝置的所述第一定位;及 其中,所述非半球形軌跡球完全包裹了 3D對象的呈現(xiàn)。
36.如權(quán)利要求30所述的裝置,其中包括一個(gè)或多個(gè)經(jīng)進(jìn)一步配置,可執(zhí)行下列操作的計(jì)算機(jī)處理器: 在計(jì)算機(jī)存儲器中存儲旋轉(zhuǎn)值,其中,所述旋轉(zhuǎn)值基于所述第一定位和所述第二定位;及 將所述旋轉(zhuǎn)值與網(wǎng)格數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián),其中,在所述顯示器上顯示3D對象的呈現(xiàn)的旋轉(zhuǎn)使用了所述網(wǎng)格數(shù)據(jù)結(jié)構(gòu)和旋轉(zhuǎn)值。
37.如權(quán)利要求30所述的裝置,其中檢測所述定位裝置包括檢測用戶與觸敏裝置的交互。
38.如權(quán)利要求30所述的裝置,其中確定有表面的所述非半球形軌跡球包括根據(jù)所述第一定位選擇所述非半球形軌跡球的形狀。
39.如權(quán)利要求30所述的裝置,其中確定有表面的所述非半球形軌跡球包括確定在所述非半球形軌跡球的邊緣有個(gè)小于90度的坡度的非半球形軌跡球。
40.如權(quán)利要求39提出裝置,其中確定有表面的非半球形軌跡球包括確定在所述非半球形軌跡球的邊緣有個(gè)70到85度的坡度的非半球形軌跡球。
41.如權(quán)利要求30所述的裝置,其中確定有表面的所述非半球形軌跡球,包括使用基于(a)半徑的乘方值和(b) pi除以2的乘積的余弦的一個(gè)方程式。
42.如權(quán)利要求41所述的裝置,其中所述乘方值在1.2和1.4之間。
【文檔編號】G06T19/20GK104050721SQ201410098601
【公開日】2014年9月17日 申請日期:2014年3月17日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】M·Q·麥卡蒂, A·P·鮑威爾 申請人:夢工廠動畫公司