對象在應用之間的拖拽和放下的制作方法
【專利摘要】方法、裝置和系統(tǒng),用于通過第一程序捕捉在顯示器的第一窗口上的渲染對象,提取所述對象,準許用戶跨過顯示器將所述對象拖拽至包含第二程序的顯示器的第二窗口,并且將所述對象基本上實時地導入第二程序。拖拽和放下處理對用戶無縫地發(fā)生并使用戶在一個應用中選擇多個對象中的一個或多個,將對象拖拽到第二應用用于修改,并將修改后的對象拖曳回到第一應用用來實時預覽。
【專利說明】對象在應用之間的拖拽和放下
[0001]相關(guān)申請的交叉引用
[0002]本申請是2011年8月12日提交的美國臨時申請第61/523,142號、名稱為“對象在應用之間的拖拽和放下”,和2012年8月9日提交的美國非臨時申請第13/571,182號、名稱為“對象在應用之間的拖拽和放下”的非臨時申請,這些申請的全部內(nèi)容在此通過引用并入本文。
[0003]本發(fā)明一般涉及從第一應用到第二應用實時導入或?qū)С鋈S圖形對象,更具體地涉及在渲染第一和第二應用的窗口之間的導入/導出處理在用戶的顯示器上的圖形表示。
【背景技術(shù)】
[0004]通常,圖形程序通過將2D或3D對象轉(zhuǎn)換成繪圖指令以對其進行渲染,這些指令隨后被反饋給圖形API (諸如OpenGL或Direct3D)。在API渲染通道內(nèi),繪圖指令在作為應用用戶顯示器上的2D圖像輸出之前經(jīng)過如隱藏面移除、Z-緩存、光柵化以及剪輯等的各種處理。由于要對程序數(shù)據(jù)反匯編以調(diào)取OBJ文件或其他可讀3D格式,如果可能,從圖形程序?qū)С鎏囟?D對象通常是艱難的過程。類似地,將文件導入3D圖形程序要求將3D對象匯編成圖形程序所需的格式,并且為了成功的對象導入常常需要對整個3D對象庫重新打包。
【發(fā)明內(nèi)容】
[0005]本發(fā)明一般涉及從第一 3D程序?qū)С鰧ο笥脕碓诘诙?3D程序中實時渲染。在一個實施例中,計算機系統(tǒng)托管多個應用實例,每個應用實例對應于本地客戶應用。所述計算機系統(tǒng)利用該計算機系統(tǒng)的圖形處理單元的資源同時渲染應用實例的圖形輸出,所述應用實例與計算機系統(tǒng)顯示器上單獨窗口中的至少兩個本地客戶應用相對應。用戶設(shè)法從所述第一應用導出3D對象,從所述第一窗口選擇對象并將所述對象拖拽到所述第二窗口。當用戶拖曳所述對象時,依照用戶的拖曳指令在所述計算機顯示器上渲染所述對象。然后用戶將在所述第二窗口中渲染的所述對象放入所述第二應用中,并且所述對象被實時導入所述第二應用。
[0006]在一個實施例中,第一計算機系統(tǒng)本地托管第一應用,并且所述第二應用被托管在應用服務(wù)器上。所述計算機系統(tǒng)通過其本地硬件和渲染API在該計算機系統(tǒng)顯示器上的兩個單獨窗口中對本地應用和遠程應用進行渲染。用戶設(shè)法從所述第一應用導出3D對象,從所述第一窗口選擇對象并將所述對象拖至所述第二窗口。當用戶拖曳所述對象時,依照用戶的拖曳指令在所述計算機顯示器上渲染所述對象。然后用戶將在所述第二窗口中渲染的所述對象放在所述第二應用中,并且所述對象被實時導入所述第二應用。
[0007]在一個實施例中,第一計算機系統(tǒng)本地托管第一應用,并且第二應用在帶有服務(wù)器側(cè)渲染的應用服務(wù)器上被托管。所述計算機系統(tǒng)利用其自身的圖形處理器和圖形API渲染本地應用,并且所述遠程應用由服務(wù)器側(cè)圖形API渲染。用戶設(shè)法從所述第一應用導出3D對象,從所述第一窗口選擇對象并將所述對象拖拽到所述第二窗口。當用戶拖曳所述對象時,依照用戶的拖曳指令在所述計算機顯示器上渲染所述對象。然后用戶將在所述第二窗口中渲染的所述對象放于所述第二應用中,并且所述對象被實時導入所述第二應用。
[0008]在一個實施例中,公開了用于將對象導入第二應用的方法。所述方法包括:由處理器接收第一用戶輸入,并且響應于所述第一用戶輸入由所述處理器選擇由第一應用和渲染API在顯示器的第一窗口中渲染的對象。所述方法還包括,經(jīng)由引擎從所述第一應用提取所述對象并且由所述處理器接收第二用戶輸入。響應于所述第二用戶輸入,所述方法包括:由所述處理器將顯示器上的對象從所述第一窗口拖曳至第二窗口中渲染的第二應用,并由所述處理器在拖曳期間在第一窗口和第二窗口之間的中間空間顯示所述對象。響應于所述對跨過所述第二窗口的聚焦邊界,所述方法包括將所述對象導入所述第二應用。
[0009]在實施例中,根據(jù)所述方法選擇對象包括:由所述處理器將所述第一用戶輸入迂回至所述引擎,由所述處理器截取從所述第一應用至所述渲染API的繪圖命令,并由所述處理器確定來自所述第一應用的繪圖命令的所述對象。所述方法還包括:由所述處理器根據(jù)選擇算法選擇所述對象。在實施例中,所述選擇算法被配置為選擇與光線命中的第一對象相關(guān)的所有對象。在實施例中,所述選擇算法被配置為選擇與光線命中的第一對象具有相同對象標識符的所有對象。在實施例中,所述選擇算法被配置為選擇與光線命中的第一對象具有相同運動矢量的所有對象。在實施例中,所述選擇算法被配置為選擇與光線命中的第一對象具有相同紋理的所有對象。
[0010]在實施例中,所述第一用戶輸入選擇對象是指來自定位設(shè)備的光標選區(qū)。在實施例中,所述第一用戶輸入選擇對象包括用戶追蹤圍繞所述對象的邊界。在實施例中,所述第一用戶輸入選擇對象包括選擇預定特征組全部毗鄰像素的選擇工具。在實施例中,所述第一用戶輸入選擇對象是指在觸摸界面上的敲擊。在實施例中,所述第一用戶輸入選擇對象是指在觸摸界面上的手勢。
[0011]在實施例中,由所述處理器從所述繪圖命令確定對象的方法還包括:由所述處理器在所述第一用戶輸入的坐標的場景的近平面上分配攝像機,以及由所述處理器從所述攝像機到遠平面投射光線并選擇所述光線命中的第一對象。所述方法還包括:所述處理器還接收用戶輸入以擴展或過濾選區(qū),其中擴展或過濾所述選區(qū)包括由所述處理器選擇或取消選擇在場景中與所選擇的對象相關(guān)的其他對象。
[0012]在實施例中,擴展或過濾所述選區(qū)包括:由所述處理器選擇或取消選擇在場景中與所選擇的對象具有相同對象標識符的其他對象。在實施例中,擴展或過濾所述選區(qū)包括:由所述處理器選擇或取消選擇在場景中與所選擇的對象具有相同運動矢量的其他對象。在實施例中,擴展或過濾所述選區(qū)包括:由所述處理器選擇或取消選擇在場景中與所選擇的對象具有相同紋理的其他對象。在實施例中,擴展或過濾所述選區(qū)包括:由所述處理器選擇或取消選擇在場景中由進一步用戶輸入所指定的其他對象。在實施例中,所述指定處理包括由所述處理器接收用戶輸入,由所述處理器在所述用戶輸入的坐標的場景的近平面上分配攝像機,并且由所述處理器從所述攝像機到遠平面投射光線并指定所述光線命中的第一對象。
[0013]在實施例中,所述處理器在所述顯示器上拖曳所述對象包括:所述處理器渲染無邊界窗口和在所述無邊界窗口中的選區(qū),其中所述選區(qū)包括由所述用戶選擇的對象。在實施例中,響應于接收用戶輸入以將所述無邊界窗口從所述第一窗口拖曳至所述第二窗口,所述方法包括由所述處理器依據(jù)所述用戶輸入移動所述無邊界窗口跨過所述顯示器。[0014]在實施例中,用于由所述處理器渲染所述無邊界窗口中的所述選區(qū)的方法包括:由所述處理器從所述第一應用復制與所述選區(qū)相關(guān)的繪圖命令,所述處理器將來自所述第一應用的畫圖命令插入渲染API通道,并且由所述處理器經(jīng)由所述渲染API渲染所述繪圖命令。
[0015]在實施例中,將所述選區(qū)導入第二應用的方法包括:由所述處理器將用于實現(xiàn)的選區(qū)轉(zhuǎn)換成所述第二應用,并且所述處理器在所述轉(zhuǎn)換期間經(jīng)由所述引擎在所述第二窗口中渲染所述選區(qū)。在實施例中,轉(zhuǎn)換所述選區(qū)包括:由所述處理器將所述繪圖命令修改成由所述第二應用使用的文件格式。在實施例中,所述文件格式是OBJ文件。
[0016]基于所述轉(zhuǎn)換的完成,所述方法包括:由所述處理器將所述選區(qū)導入所述第二應用?;趯⑺鰧ο髮胨龅诙?,所述方法還包括:由所述處理器暫停所述引擎渲染處理,并且由所述處理器從所述第二應用內(nèi)部渲染所述對象。
[0017]在實施例中,所述經(jīng)由所述引擎渲染所述選區(qū)的方法包括:由所述處理器將繪圖命令插入到渲染API通道,所述API通道可操作以指示所述渲染API將所述選區(qū)渲染入所述第二窗口。在實施例中,所述第二應用具有其自身的渲染API,并且從所述第二應用內(nèi)部渲染所述選區(qū)包括:所述處理器使用所述第二應用的渲染API渲染在所述第二窗口中的選區(qū)。
[0018]在實施例中,渲染在所述無邊界窗口中選區(qū)的方法包括:由所述處理器獲取第一條件和第二條件,所述第一條件包括來自所述第一應用的光線和環(huán)境效果,所述第二條件包括來自所述第二應用的光線和環(huán)境效果。所述方法還包括,所述處理器根據(jù)所述無邊界窗口到所述第一和第二窗口的距離逐步施加所述第一和第二條件。
[0019]在實施例中,公開了從第一應用到第二應用導出和導入對象的系統(tǒng)。在實施例中,所述對象是三維對象。所述系統(tǒng)包括圖形處理單元、處理器和存儲介質(zhì),所述存儲介質(zhì)在其上有形存儲由所述處理器執(zhí)行的程序邏輯。在實施例中,所述存儲介質(zhì)還可以包括一個或多個所述第一和第二應用。在所述存儲介質(zhì)中的所述程序邏輯包括由處理器執(zhí)行的用于接收第一用戶輸入的第一用戶輸入接收邏輯。包括在所述存儲介質(zhì)中并由所述處理器執(zhí)行的選擇邏輯,其響應于接收所述第一用戶輸入,在顯示器的第一窗口中選擇由第一應用和渲染API渲染的對象。通過在所述存儲介質(zhì)上包含的提取邏輯,從所述第一應用提取所述對象。此外,所述處理器執(zhí)行第二用戶輸入接收邏輯以接收第二用戶輸入,響應于接收所述第二用戶輸入,拖曳邏輯將所述顯示器上的所述對象從所述第一窗口拖曳至所述第二窗口中渲染的第二應用,并且響應于所述對象跨越所述第二窗口的聚焦邊界,所述處理器執(zhí)行包含在所述存儲介質(zhì)中的導入邏輯用于將所述對象導入所述第二應用。
[0020]在實施例中,由所述處理器執(zhí)行以選擇對象的選擇邏輯還包括迂回邏輯,所述迂回邏輯也由所述處理器執(zhí)行,用于迂回來自所述第一應用的所述第一用戶輸入。所述的選擇邏輯還包括由所述處理器執(zhí)行以截取從所述第一應用到所述渲染API的繪圖命令的截取邏輯、由所述處理器執(zhí)行以從與所述第一用戶輸入相關(guān)的繪圖命令中確定所述對象的確定邏輯以及由所述處理器執(zhí)行以根據(jù)選擇算法選擇所述三維對象和其他對象選擇邏輯。
[0021]在實施例中,所述確定邏輯還包括由所述處理器執(zhí)行以在所述第一用戶輸入的坐標的場景的近平面分配攝像機的分配邏輯。由所述處理器執(zhí)行的確定邏輯還包括光線投射邏輯,用于從所述攝像機到所述遠平面投射光線并選擇所述光線命中的第一對象。[0022]在實施例中,由所述處理器執(zhí)行的拖曳邏輯包括用于渲染無邊界窗口的窗口渲染邏輯,用于在所述無邊界窗口中渲染包括用戶選擇的對象的選區(qū)的選擇渲染邏輯,以及響應于將所述無邊界窗口從所述第一窗口拖拽到所述第二窗口的接收用戶輸入,根據(jù)所述用戶輸入將所述無邊界窗口移動跨過所述顯示器的移動邏輯。
[0023]在實施例中,由所述處理器執(zhí)行的所述選區(qū)渲染邏輯還包括復制與所述選區(qū)相關(guān)的繪圖命令的復制邏輯,將所述繪圖命令插入所述渲染API通道的插入邏輯,以及通過所述渲染API渲染所述繪圖命令的繪圖命令渲染邏輯。在實施例中,所述選區(qū)渲染邏輯還包括第一條件獲取邏輯和第二條件獲取邏輯,所述第一條件獲取邏輯由所述處理器執(zhí)行用于獲取包括來自所述第一應用的光照和環(huán)境效果的第一條件,所述第二條件獲取邏輯由所述處理器執(zhí)行用于獲取包括來自所述第二應用的光照和環(huán)境效果的第二條件。此外,由所述處理器執(zhí)行的所述選取渲染邏輯由還包括條件施加邏輯,用于根據(jù)所述無窗口邊界到所述第一和第二窗口的距離逐步施加所述第一和第二條件。
[0024]在實施例中,由所述處理器執(zhí)行的導入邏輯還包括:轉(zhuǎn)換邏輯,其用于將所述用于實現(xiàn)的選區(qū)轉(zhuǎn)換成所述第二應用,以使得所述選區(qū)基于所述轉(zhuǎn)換處理的完成被導入所述第二應用;渲染邏輯,其用于在所述轉(zhuǎn)換處理期間在所述第二窗口中渲染所述選區(qū);和暫停邏輯,其用于暫停所述引擎渲染處理,并基于將所述對象導入所述第二應用渲染來自所述第二應用內(nèi)部的對象。在實施例中,在所述轉(zhuǎn)換處理中由所述處理器所執(zhí)行的所述轉(zhuǎn)換邏輯還包括用于將所述繪圖命令修改成由所述第二應用使用的文件格式的修改邏輯。在實施例中,所述文件格式是OBJ文件。在實施例中,所述渲染邏輯還包括插入邏輯,其由所述處理器執(zhí)行,用于將繪圖命令插入渲染API通道,所述渲染API通道可操作以指示所述渲染API將所述選區(qū)渲染到所述第二窗口。在實施例中,第二應用渲染API基于將所述對象導入所述第二應用在所述第二窗口渲染所述選區(qū)。
[0025]計算機可讀存儲介質(zhì),在其上存儲有指令,當由處理器執(zhí)行所述指令時,所述指令使所述處理器接收第一用戶輸入并且響應于所述第一用戶輸入渲染在顯示器的第一窗口中選擇通過第一應用和渲染API渲染的對象。所述指令還使所述處理器通過引擎從所述第一應用提取所述對象。此外,所述存儲介質(zhì)包括指令以接收第二用戶輸入并且響應于所述第二用戶輸入在顯示器上將所述對象從所述第一窗口拖曳至第二窗口中渲染的第二應用。所述存儲介質(zhì)還包括指令以響應于對象跨過所述第二窗口的聚焦邊界將所述對象導入所述第二應用,將對象導入第二應用。
[0026]通過參考以下詳細說明和【專利附圖】
【附圖說明】,可以組合其特征的這些和其他實施例對于本領(lǐng)域普通技術(shù)人員來說是顯而易見的。
【專利附圖】
【附圖說明】
[0027]在未按比例繪制的附圖中,遍及若干視圖,相同的附圖標記表示相同的部件:
[0028]圖1舉例說明了托管兩個本地應用并從第一應用導出3D對象以用于導入第二應用的計算機系統(tǒng)的例子;
[0029]圖2舉例說明了導出和導入處理的全部流程,包括從第一應用抓取對象,將對象從第一應用拖至第二應用,并將對象放在第二應用中用于渲染;
[0030]圖3舉例說明了抓取處理的流程;[0031]圖4舉例說明了拖拽處理的流程;
[0032]圖5舉例說明了放下處理的流程;
[0033]圖6舉例說明了重返處理的處理流程;
[0034]圖7舉例說明了闡明了執(zhí)行結(jié)合環(huán)境效果渲染處理的計算機系統(tǒng)顯示器的表現(xiàn);
[0035]圖8舉例說明了托管本地應用的計算機系統(tǒng)和托管遠程第二應用的應用服務(wù)器的例子;
[0036]圖9舉例說明了托管本地應用的計算機系統(tǒng)和托管遠程第二應用的帶有服務(wù)器側(cè)渲染的應用服務(wù)器的例子;
[0037]圖10舉例說明了適用于實現(xiàn)特定實施例的一個或多個部分的示例性計算機系統(tǒng)1000。
【具體實施方式】
[0038]以下參考附圖對本發(fā)明主題作更充分地描述,所述附圖是本發(fā)明的一部分,并通過圖示方式展示出具體的示例性實施例。然而,本發(fā)明主題可包含在各種不同形式中,因此,所覆蓋或請求保護的主題意在理解為不限于本文所闡述的任意特定實施例;所提供的特定實施例僅是說明性的。同樣地,所請求保護或覆蓋的主題的合理寬的范圍是可以預期的。除此之外,例如,主題可體現(xiàn)為方法、設(shè)備、部件或系統(tǒng)。因此,實施例可以采用諸如硬件、軟件、固件或其任意組合(除軟件本身)的形式。因此,下面的詳細說明并不意在限制。
[0039]在附圖中,一些特征被放大以顯示特定部件的細節(jié)(圖中所示的任意尺寸、材料和類似的細節(jié)意在說明而非限制)。因此,本文中所公開的具體結(jié)構(gòu)和功能細節(jié)不應解釋為限制,而僅應解釋為用于教導本領(lǐng)域技術(shù)人員以各種不同方式采用所公開的實施例的代表性基礎(chǔ)。
[0040]下面將參照方法及設(shè)備的方框圖和操作示圖以選擇和表現(xiàn)與特定主題相關(guān)的媒體來描述本發(fā)明??梢岳斫?,可通過模擬或數(shù)字硬件和計算機程序指令來實現(xiàn)方框圖或操作示圖的每個方框以及方框圖或操作示圖中方框的組合。這些計算機程序指令可被提供給通用計算機、專用計算機、ASIC或其他可編程數(shù)據(jù)處理裝置的處理器,以使得經(jīng)由計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令可實現(xiàn)在方框圖或操作方框中特定的功能/動作。各個方面或特征將用系統(tǒng)來呈現(xiàn),所述系統(tǒng)可以包括多個設(shè)備、部件、模塊,等等??梢岳斫夂皖I(lǐng)會的是,各個系統(tǒng)可包括附加的設(shè)備、部件、模塊等和/或可以不包括有關(guān)附圖中所闡述的全部設(shè)備、部件、模塊等。還可使用這些方式的組合。
[0041]在一些可選擇的實施方式中,在方框圖中提到的功能/操作可以不按照操作示圖提到的順序發(fā)生。例如,取決于所涉及的功能/操作,連續(xù)示出的兩個方框?qū)嶋H上可以被大體上同時地執(zhí)行或所述方框有時能以相反順序被執(zhí)行。此外,在本發(fā)明的流程圖中所呈現(xiàn)和描述的實施例以示例的方式被提供,目的在于提供對技術(shù)更全面的理解。所公開的方法不限于本文所呈現(xiàn)的操作和邏輯流程??蛇x擇的實施例是可預期的,其中各種操作的順序被改變以及其中被描述為較大操作的一部分的子操作被獨立地執(zhí)行。
[0042]為了本發(fā)明的目的,術(shù)語“服務(wù)器”應當被理解為指的是提供處理、數(shù)據(jù)庫、通訊設(shè)施的業(yè)務(wù)點。舉例來說而非限制,術(shù)語“服務(wù)器”可以指具有相關(guān)通信和數(shù)據(jù)存儲和數(shù)據(jù)庫設(shè)施的單個的物理處理器,或它可以指聯(lián)網(wǎng)或集聚的處理器、相關(guān)網(wǎng)絡(luò)和存儲設(shè)備的集合體,并且對軟件和一個或多個數(shù)據(jù)庫系統(tǒng)和支持服務(wù)器所提供的服務(wù)的應用軟件進行操作。
[0043]計算機設(shè)備可以通過諸如有線或無線網(wǎng)絡(luò)等發(fā)送或接收信號,或可以在諸如存儲器中將信號處理或存儲為物理存儲狀態(tài),并且可以,因此作為服務(wù)器來操作。因此,能作為服務(wù)器來操作的設(shè)備可以包括,例如,專用機架安裝服務(wù)器、臺式計算機、膝上型計算機、機頂盒、結(jié)合諸如上述設(shè)備的兩個或更多特征等的各種特征的集成設(shè)備,等等。服務(wù)器可以在配置或性能上差異很大,但是服務(wù)器一般可以包括一個或多個中央處理單元和存儲器。服務(wù)器還包括一個或多個大容量存儲設(shè)備、一個或多個電源、一個或多個有線或無線網(wǎng)絡(luò)接口、一個或多個輸入/輸出接口、或一個或多個操作系統(tǒng),諸如Windows Server,Mac OS X、Unix、Linux、FreeBSD,等等。
[0044]遍及說明書和權(quán)利要求書,術(shù)語可以具有超出明確說明的含義之外的在上下文中隱含或暗示的有細微差別的含義。同樣地,本文中所使用的短語“在一個實施例中”未必指相同的實施例,以及本文中所使用的短語“在另一個實施例中”未必指不同的實施例。意圖在于,例如請求保護的主題包括示例性實施例以全部或部分的方式組合。通常,可以從上下文中的使用來至少部分地理解術(shù)語。例如,本文中所使用的例如“和”、“或”或者“和/或”的術(shù)語可以包括至少部分取決于這些術(shù)語所使用的上下文的多種意思。典型地,如果“或”用于關(guān)聯(lián)諸如A、B或C的列表,在此以包含意思使用時意在表不A、B和C,以及在此以排除意思使用時意在表示A、B或C。此外,至少部分取決于上下文,本文使用的術(shù)語“一個或多個”可以用于以單數(shù)意思描述任意的性能、結(jié)構(gòu)或特性,也可以用于以復數(shù)意思描述性能、結(jié)構(gòu)或特性的組合。同樣,至少部分區(qū)取決于上下文,諸如不定冠詞(a/an)或定冠詞(the)的術(shù)語可被理解為表達單數(shù)用法或表達復數(shù)用法。此外,術(shù)語“基于”可理解為未必意在表達專屬的系列因素,反而,至少部分取決于上下文,還允許沒有必要明確描述的另外因素的存在。
[0045]本發(fā)明一般地涉及從第一 3D程序?qū)С鰧ο笥糜谠诘诙?3D程序中實時渲染。在一個實施例中,計算機系統(tǒng)托管多個應用實例,每個應用實例對應于本地客戶應用。計算機系統(tǒng)利用該計算機系統(tǒng)的圖形處理單元的資源,同時渲染對應于計算機系統(tǒng)顯示器上分離窗口中的至少兩個本地客戶應用的應用實例的圖形輸出。設(shè)法從第一應用導出3D對象的用戶從第一窗口選擇對象并將所述對象拖曳至第二窗口。當用戶拖曳所述對象時,依照用戶的拖曳指令在計算機顯示器上渲染所述對象。然后用戶將所述對象放在在第二窗口中被渲染的第二應用中,并且所述對象被實時導入第二應用。
[0046]通常借助于計算機程序,渲染可以被認為是從模型生成圖像的處理。模型通常是三維(3D)對象的描述并且可以以嚴格定義的語言或數(shù)據(jù)結(jié)構(gòu)表示。模型可包含幾何形狀、視點、紋理、光照、底紋、運動及其他適當?shù)男畔㈩愋?。模型被渲染成的圖像可以是由許多像素集合形成的數(shù)字圖像或光柵圖形圖像。本發(fā)明將渲染概念擴展到生成表現(xiàn)任何應用的任意輸出的圖像。渲染可以基于任意數(shù)據(jù)來執(zhí)行,所述任意數(shù)據(jù)包括二維(2D)數(shù)據(jù)和3D數(shù)據(jù)。除根據(jù)3D模型生成圖像之外,特定實施例可以渲染表現(xiàn)應用輸出的圖像,諸如,舉例但不限于,網(wǎng)頁瀏覽應用、文字處理應用、電子數(shù)據(jù)表應用、多媒體應用、科學和醫(yī)學應用以及游戲應用。
[0047]如果可能,修改來自3D程序的對象典型地是艱難的任務(wù)。如果用戶沒有原始OBJ或用于在3D圖形程序(諸如3D Studio Max或Maya)中修改的其他格式文件,那么用戶必須對由第一 3D程序所使用的3D圖形文件進行反編譯。圖形文件可以被存儲在程序安裝路徑下的給定目錄中,或被編譯成實際的程序代碼本身。在任何情況下,用戶必須運行若干步驟以獲取能被3D圖形程序讀取的格式的目標文件。同樣,在修改目標文件以后,為了從第一程序內(nèi)部觀察3D對象的外觀,用戶必須將對象重新編譯成或?qū)氤傻谝怀绦虻木幋a。這個處理是耗時的,并且在使用遠程應用時更嚴重。
[0048]由于渲染處理通常是資源需求的,其可以是非常計算密集的,特別是當所渲染的圖像具有高分辨率和高質(zhì)量時,因此渲染可以是適合由服務(wù)器執(zhí)行的一類任務(wù)。過去,老式計算機系統(tǒng)需要耗費數(shù)個小時或數(shù)天時間將三維模型渲染成單個2D圖像。隨著計算機硬件的發(fā)展和進步,特別是為計算機圖形應用(如游戲、多媒體、娛樂或繪圖)專門設(shè)計的計算機硬件的發(fā)展和進步,目前的計算機系統(tǒng)可以在幾秒或幾毫秒內(nèi)渲染每個圖像。事實上,將模型繪制成單個圖像通常不會占用服務(wù)器的所有可用資源。因此,利用服務(wù)器側(cè)渲染的遠程應用變得更流行。
[0049]為了使從第一 3D程序?qū)С龅?D對象導入到第二 3D程序更容易,軟件引擎可以響應用戶命令以通過從第一應用到3D圖形渲染通道截取繪圖命令來選擇特定對象,并將它們插入用于第二應用給定場景的繪圖命令中。在特定實施例中,第二應用可以是在獨立服務(wù)器上托管的遠程應用。在其他實施例中,第二應用可以是具有服務(wù)器側(cè)渲染的遠程應用。
[0050]圖1舉例說明了運行本地第一應用105和本地第二應用106的示例性計算機系統(tǒng)101。在正常操作中,例如通過控制用戶硬件108,用戶激活系統(tǒng)101,并且I/O接口 107將來自用戶/硬件108的信號轉(zhuǎn)換成到第一應用105或第二應用106的指令。應用105和106均輸出繪圖命令給渲染API104用于渲染2D或3D場景。渲染API104使繪圖命令通過渲染通道(未顯示)以將該繪圖命令轉(zhuǎn)換成由圖形硬件103執(zhí)行的指令從而在顯示器102上渲染2D或3D場景。在一個實施例中,在顯示器102的一部分上的第一窗口中渲染第一應用105,并且在顯示器102的不同部分的第二窗口中渲染第二應用106。在實施例中,引擎109是在同時具有第一應用105和第二應用106的系統(tǒng)101內(nèi)所包含的處理器(未顯不)上運行的軟件程序。引擎109時刻監(jiān)視I/O接口 107用于啟動拖拽和放下處理的指令。當檢測到這些指令,指令經(jīng)由路徑110迂回至引擎109。用戶可以以各種方法啟動拖拽和放下處理,這些方法包括但不限于:特定鍵擊、保持與鼠標一起的預定鍵或其他指針設(shè)備輸入、在接觸式輸入設(shè)備上的輕敲、或在接觸式輸入設(shè)備上的特定手勢。一旦命令經(jīng)由路徑110迂回至引擎109,引擎109允許用戶選擇任意應用窗口中的給定對象。引擎109還監(jiān)視從第一應用105和第二應用106到渲染API104的繪圖命令,并使用迂回的用戶輸入110確定場景中的哪個或哪些對象是用戶希望選擇的。引擎109提取與用戶希望選擇的對象相對應的繪圖命令,并將它們傳送至渲染API104用于在拖曳處理期間的渲染。在放下處理期間,引擎109繼續(xù)將用于對象的繪圖命令傳送至渲染API104用于在第二應用106的窗口中渲染,但是同時將繪圖命令轉(zhuǎn)換成用于導入第二應用106的格式。在完成轉(zhuǎn)換和導入處理后,引擎109停止給渲染API104發(fā)送繪圖命令,并且所選定的對象通過第二應用106被專門地渲染。下面將給出抓取、拖曳和放下處理的更詳細的解釋。為了簡化討論,圖1中僅舉例說明兩個應用。然而,在實踐中可以領(lǐng)會的是,根據(jù)本文所描述的實施例,計算機系統(tǒng)101可以并行執(zhí)行任意數(shù)量的應用對從一個應用到另一個應用被導出的各種對象進行渲染。[0051 ] 圖2舉例說明了拖拽和放下處理的高級流程。在步驟201中,計算機系統(tǒng)開始運行多個應用。在步驟202中,用戶啟動抓取處理,在圖4中詳細描述。在步驟203中,用戶將所希望的對象從顯示第一應用的窗口拖曳至顯示第二應用的窗口,在圖5中詳細描述。最后,在步驟204中,用戶將對象放入第二應用的窗口中,也被稱作重返處理,在圖6中詳細描述。
[0052]圖3舉例說明了在拖拽和放下處理期間用戶顯示器的表現(xiàn)。最初,計算機系統(tǒng)的顯不器包含兩個獨立的窗口,其中,第一窗口 301包含第一應用的渲染輸出,第二窗口 304包含第二應用的渲染輸出。對象303a和303b在第一窗口 301中被渲染。在實踐中,第一窗口 301和第二窗口 304可以包含任意數(shù)量的對象,圖3被限制為兩個對象僅僅是為了便于討論。
[0053]在圖3中,第一窗口 301以放大圖的形式被示為303。用戶以各種不同方法選擇對象303a,諸如點擊輸入設(shè)備或在對象303a上的單個點307敲擊觸屏,利用輸入設(shè)備或在通過對象303a的觸屏上跟蹤路徑308,或利用輸入設(shè)備或在觸摸設(shè)備上圍繞對象303a畫選取框306。本領(lǐng)域普通技術(shù)人員可以很容易想到其他輸入方法包括但不限于:手勢、選擇棒以及多邊形選取框。
[0054]基于選定對象303a,用戶將顯示器上的對象沿路徑302從第一窗口 301拖曳到第二窗口 304。在一些實施例中,對象被復制,并且當副本303c沿在第一窗口 301和第二窗口304之間延伸的中間空間中的路徑302被渲染時,所述對象在窗口 301中保持被渲染。在其他實施例中,真實的對象303a從窗口 301被移到窗口 304。路徑302由用戶輸入確定,并且能采用從窗口 301到窗口 304的任意路徑。
[0055]基于跨過第二窗口 304的聚焦邊框,引擎啟動重返或放下處理。當用戶依照他或她的要求已將對象303a定位在窗口 304中時,用戶啟動命令將對象303a放下到窗口 304中。在那時,拖拽和放下處理被完成,并且引擎將對象303a作為對象303d導入第二應用用于在第二窗口 304中進行渲染。
[0056]圖4描述了抓取處理的處理流程。在步驟401中,引擎接收選擇所需對象的選區(qū)輸入。如上所述,本發(fā)明給出了多種選區(qū)輸入方法。基于接收選區(qū)輸入,引擎將自第一應用去往渲染API的繪圖命令迂回到引擎本身。根據(jù)這些命令,引擎能夠重新創(chuàng)建由第一應用渲染的場景。在3D場景的環(huán)境中,引擎立刻具有給定場景中的所有3D對象,以及第一應用使用的視場和攝像點以渲染場景。
[0057]在一個實施例中,用戶輸入是在所需對象上第一窗口上的單個點。在步驟402中,引擎將輸入選區(qū)解析給渲染顯示器中的圖形對象。為了將該二維輸入轉(zhuǎn)換成三維對象,采用傳統(tǒng)的3D對象選擇方法。其中的一個方法是在用戶輸入的位置在3D場景的近平面上放置攝像機,并且光線從攝像機投射到遠平面,選擇光線命中的第一個對象。在另一個實施例中,選擇工具選擇所有與光線命中的第一對象接觸的對象。在另一個實施例中,選擇工具利用與光線命中的第一對象相同的對象標識符(諸如標簽或其他元數(shù)據(jù))來選擇全部對象。在另一個實施例中,選擇工具選擇具有與光線命中的第一對象相同紋理的所有對象。在再一個實施例中,選擇工具選擇具有與光線命中的第一對象相同運動矢量的所有對象。
[0058]在步驟403中,引擎根據(jù)用戶輸入過濾或擴展用戶選擇。用戶可以以與選擇原始對象相同的方式或某種其它的輸入方法(諸如按下修改器以添加選區(qū)并且圍繞其他將被選定的對象畫出選擇框)選擇增加選定對象。相似地,可以給用戶呈現(xiàn)彈出窗口以選擇具有相同運動矢量、紋理、元數(shù)據(jù)等的其他對象。相似地,用戶能以模擬的方法從選區(qū)中濾出對象。用戶可以具有用于從選區(qū)減去對象的按鍵,并點擊各獨立對象或圍繞將被從選區(qū)去除的對象畫出選取框。此外,可以給用戶提供下拉菜單以濾出帶有給定紋理、運動矢量、元數(shù)據(jù)標記等的對象。本發(fā)明給出的從選區(qū)減去或添加到選區(qū)的多方法對本領(lǐng)域普通技術(shù)人員來說是公知的。
[0059]在滿足用戶的需求后,在步驟404中,用戶輸入命令啟動拖曳處理。該命令可以包括但不限于:連同移動輸入設(shè)備一起按下輸入設(shè)備的按鈕以拖曳選定對象、在接觸式輸入設(shè)備上的特定手勢、連同移動輸入設(shè)備一起按下鍵盤上的鍵,等等。本發(fā)明可以包括多種啟動拖曳處理404的方法。
[0060]圖5舉例說明了拖曳處理的處理流程。在步驟501中,引擎在計算機系統(tǒng)顯示器上創(chuàng)建窗口。在實施例中,窗口可以具有可見邊框。在實施例中,窗口是無邊框的。無邊框窗口僅僅是在完全透明的第二顯示器上的指定區(qū)域,僅有的在顯示器上被實際渲染的對象是在無邊框窗口內(nèi)所包含的圖形對象。在步驟502中,引擎將對象寫入無邊框窗口。引擎通過將與選區(qū)相關(guān)聯(lián)的繪圖命令從第一應用迂回該引擎而執(zhí)行該步驟。然后引擎將這些繪圖命令發(fā)送至渲染API作為在無邊框窗口內(nèi)要被渲染的對象。渲染API正常通過渲染通道處理繪圖命令,并在無邊框窗口內(nèi)在顯示器上渲染場景。因為無邊框窗口是透明的,所以對象看上去僅像是從第一窗口移動到第二窗口。因此在拖曳處理期間,除引擎外,渲染API —直處理來自至少兩個應用的繪圖命令。
[0061]根據(jù)經(jīng)由輸入輸出接口 107接收的來自用戶的無邊框窗口移動命令,引擎?zhèn)魉团c選定對象有關(guān)聯(lián)的繪圖命令。如所述的,本發(fā)明包括多種用于用戶在拖曳處理期間調(diào)整無邊框窗口的位置的輸入方法。
[0062]引擎在任何時候都不接收用戶命令以移動無邊框窗口,引擎等待用戶輸入命令以確定是否在步驟504中已經(jīng)發(fā)布放下命令。放下命令檢測發(fā)送進程給步驟505中的重返處理。放下命令可以是來自用戶輸入裝備的任何命令以指示用戶希望將對象導入第二窗口中渲染的第二應用。放下命令可以包含但不限于,釋放鼠標或其他輸入設(shè)備上的按鍵、在接觸式輸入設(shè)備上的手勢、或按壓在輸入設(shè)備上的其他鍵。對本領(lǐng)域普通技術(shù)人員來說,可以想到用于放下命令的其他用戶輸入方法。在一個實施例中,當對象被拖曳越過第二窗口的聚焦邊框時,重返處理就開始。
[0063]圖6舉例說明了重返處理的處理流程。在步驟601中,重返處理開始??赏ㄟ^用戶明確的放下指令或拖曳選區(qū)跨過第二窗口聚焦邊框的動作來觸發(fā)重返處理。當重返處理開始時,引擎開始將來自繪圖命令的對象轉(zhuǎn)換成用于在第二應用中實現(xiàn)的格式。在3D環(huán)境中,引擎開始將繪圖命令轉(zhuǎn)換成用于導入第二應用的3D對象文件。例如,用戶可運行在第一窗口中的3D游戲應用和在用于編輯給定模型的第二窗口中的3D圖形編輯程序。在選擇所需對象后,用戶將所述對象拖曳至第二窗口,并且重返處理開始將與所述對象相關(guān)聯(lián)的繪圖命令轉(zhuǎn)換成諸如OBJ文件的3D對象文件。
[0064]在步驟602中,引擎通過將與對象關(guān)聯(lián)的繪圖命令傳遞給渲染API以繼續(xù)渲染所述對象。因為轉(zhuǎn)換處理是費時且處理密集的,所以引擎在轉(zhuǎn)換進行時繼續(xù)渲染對象。引擎通過將繪圖命令插入從第二應用到渲染API的繪圖命令流來渲染對象。因此,在重返期間,引擎不僅僅渲染疊加在第二窗口上面的無邊框窗口內(nèi)的對象,而實際上將所述對象并入到第二應用中,猶如所述對象(包括環(huán)境效果)被導入并被第二應用本身渲染。圖7提供了這些特征的詳細說明。
[0065]在步驟603中,轉(zhuǎn)換完成,并且對象文件被導入到第二應用。導入處理對每個應用和每個文件格式是不同的。在3D圖像編輯程序環(huán)境中,文件被導入到程序的工作區(qū),就像用戶已經(jīng)從3D圖像編輯程序直接打開文件一樣。在步驟604中,在成功將對象導入第二程序后,引擎停止其對對象的渲染,并且對象被第二應用渲染。在沒有給用戶多個渲染處理或文件轉(zhuǎn)換的任何指示下,整個重返處理無縫發(fā)生。用戶不會覺察到這些由引擎所執(zhí)行的后臺處理,并且對象被渲染,猶如所述對象被簡單地從第一窗口拖曳并被放在第二窗口中一樣。
[0066]圖7描述了結(jié)合環(huán)境效果的拖拽和放下處理的表現(xiàn)。在第一窗口 701中,對象702a(為簡單起見表示為球體)與來自窗口 701左上部的光源703 —起放置。在第二窗口 704中,3D場景的環(huán)境包括來自右上方的光源705。在抓取處理期間,引擎獲取窗口 701和704的環(huán)境效果和光照,并且取決于對象與每個窗口的距離適應性地將環(huán)境效果和光照施加給選定對象702a。因此,隨著對象702a被拖曳向第二窗口,對象的702a的底紋根據(jù)與光源703和705的距離而變化,如表現(xiàn)702b、702c、702d和702e所示。引擎在將這些環(huán)境效果傳到渲染API之前通過將它們施加給對象的繪圖命令來對這些環(huán)境效果進行渲染。環(huán)境效果不僅僅局限于光照,本領(lǐng)域技術(shù)人員可以想到的是,其還可以施加霧、煙、模糊、顆粒效果、反射及其他公知的環(huán)境效果。
[0067]圖8描述了計算機系統(tǒng)801的實施例,其中兩個應用的一個是在應用服務(wù)器809上運行的遠程應用810。在這種情況下,引擎805的操作沒有變化。引擎截取來自I/O接口 807的指令并在拖拽和放下處理期間將指令沿路徑811迂回引擎。假定用戶從本地應用806拖拽并放到遠程應用810,從本地應用806到渲染API804的繪圖命令在抓取處理期間被截取和使用以為用戶選擇所需的對象。在拖曳處理期間,通過將選區(qū)的繪圖命令迂回到渲染API804,引擎805在無邊框窗口中處理對象的渲染。當用戶將對象放入遠程應用810的窗口中時,引擎805在繼續(xù)渲染選定對象時開始轉(zhuǎn)換處理?;谕瓿赊D(zhuǎn)換,被轉(zhuǎn)換的對象文件經(jīng)由網(wǎng)絡(luò)鏈路814被傳送到應用服務(wù)器809用于導入遠程應用810。導入之后,引擎805停止將繪圖命令傳送到渲染API804,并且系統(tǒng)正常操作。在另一個實施例中,用戶將對象從遠程應用拖曳到本地托管的應用。系統(tǒng)在該配置中按照基本相同的機制來操作。
[0068]圖9描述了計算機系統(tǒng)901的實施例,其中的一個應用908是在應用服務(wù)器907上運行的遠程應用,應用服務(wù)器907通過其自身的渲染API909具有服務(wù)器側(cè)渲染。舉例來說,用戶將應用從本地應用905的窗口拖曳至遠程渲染應用908的窗口。系統(tǒng)901的操作與圖8中的操作基本相同。引擎910截取來自I/O接口 906的I/O輸入并沿路徑914將它們迂回用于拖拽和放下處理期間。在抓取處理期間,引擎910將自本地應用905去往本地渲染API904的繪圖命令迂回到引擎。在用戶選擇對象以后,引擎910將命令沿路徑915迂回至任一本地渲染API904。在拖曳處理期間,用于選定對象的被迂回的繪圖命令被本地渲染引擎904渲染以在無邊框窗口中渲染對象。基于重返處理的啟動,引擎開始對象到對象文件的文件轉(zhuǎn)換用于導入遠程應用908。當文件被轉(zhuǎn)換時,該文件經(jīng)由路徑916被導入遠程應用908。然后引擎停止通過本地渲染API904渲染對象,并且對象通過遠程渲染API909被專門地渲染。
[0069]對于用戶希望從具有服務(wù)器側(cè)渲染的遠程應用(諸如應用908)選擇對象的實施例中存在特殊情況。在這樣的實施例中,引擎在其進入遠程渲染API909前必須訪問遠程應用908的輸出。這必須特殊實現(xiàn),其需要寄存在遠程應用服務(wù)器907上的軟件或在最低限度上需要服務(wù)器907對引擎910的許可以監(jiān)視在遠程應用908和渲染API909之間的路徑。在這種情況下,來自應用908的繪圖命令經(jīng)由網(wǎng)絡(luò)連接913上被迂回到引擎910。這種特殊情況僅在從帶有服務(wù)器側(cè)渲染的遠程應用抓取對象時才出現(xiàn)。
[0070]本發(fā)明涵蓋多種設(shè)置,諸如從一個遠程應用拖曳到另一個,或從一個應用復制/粘貼對象到多個其他應用的變化。本領(lǐng)域普通技術(shù)人員能容易地預料到這樣的實施例。雖然本發(fā)明描述了從第一應用到第二應用拖拽和放下的單一實例,但本領(lǐng)域技術(shù)人員能夠想到從第一應用拖曳到第二應用、編輯對象、拖曳被編輯的對象回到第一應用以實時觀察變化。
[0071]可通過硬件、軟件或者硬件和軟件的結(jié)合來實施特定實施例。舉例并不限于,一個或多個計算機系統(tǒng)可執(zhí)行特定的邏輯或軟件以運行本文所描述和闡明的一個或多個過程中的一個或多個步驟。一個或多個計算機系統(tǒng)可以是單一式或分布式的,在適當情況下,跨多個計算機系統(tǒng)或者多個資料處理中心。本發(fā)明適用任何適當?shù)挠嬎銠C系統(tǒng)。在特定實施例中,運行本文中所描述和闡明的一個或多個過程的一個或多個步驟不必限于一個或多個特定的地理位置并且不必具有時間限制。舉例并不限于,一個或多個計算機系統(tǒng)能以“實時”、“脫機”、“批處理方式”執(zhí)行它們的功能,另外,在適當情況下,也可以前述的“實時”、“脫機”、“批處理方式”的合適的組合執(zhí)行。在適當情況下,一個或多個計算機系統(tǒng)可在不同的時間、在不同的場所、使用不同的處理執(zhí)行它們的一個或多個功能。在此,對邏輯的引用可包含軟件,并且在適當情況下,反之亦然。對軟件的引用可包含一個或多個計算機程序,并且在適當情況下,反之亦然。對軟件的引用可包含數(shù)據(jù)、指令或者它們兩者,并且在適當情況下,反之亦然。類似地,對數(shù)據(jù)的引用可包含指令,并且在適當情況下,反之亦然。
[0072]一個或多個計算機可讀存儲介質(zhì)可以存儲或以其他方式包含實現(xiàn)特定實施例的軟件。在適當情況下,計算機可讀介質(zhì)可以是能夠攜帶、通信、容納、持有、保持、傳播、保留、存儲、傳輸、輸送,或以其他方式包含軟件的介質(zhì)。在適當情況下,計算機可讀介質(zhì)可以是生物的、化學的、電子的、電磁的、紅外的、磁性的、光學的、量子的或者其他適當?shù)慕橘|(zhì),或者兩個或多個上述介質(zhì)的組合。計算機可讀介質(zhì)可包括一個或多個納米級元件或者以其他方式包含納米級設(shè)計或制造。示例性的計算機可讀存儲介質(zhì)包括但是不限于:壓縮光盤(CD)、現(xiàn)場可編程門陣列(FPGA)、軟盤、軟式光盤、硬盤、全息存儲設(shè)備、集成電路(IC)(諸如專用集成電路(ASIC))、磁帶、緩存、可編程邏輯器件(PLD)、隨機存取存儲器(RAM)設(shè)備、只讀存儲器(ROM)設(shè)備、半導體存儲器設(shè)備、及其他適當?shù)挠嬎銠C可讀存儲介質(zhì)。
[0073]在適當情況下,實現(xiàn)特定實施例的軟件能以任何適當?shù)木幊陶Z言(其可以是程序性的或者面向?qū)ο蟮?或者編程語言的組合來進行編寫。在適當情況下,任何適當類型的計算機系統(tǒng)(諸如單處理器或者多處理器計算機系統(tǒng))或者多個系統(tǒng)可執(zhí)行實施特定實施例的軟件。在適當情況下,通用計算機系統(tǒng)可執(zhí)行實施特定實施例的軟件。
[0074]例如,圖10舉例說明了用于實現(xiàn)特定實施例的一個或多個部分的示例性計算機系統(tǒng)1000。雖然本發(fā)明描述和闡明了特定配置下的具有特定元件的特定計算機系統(tǒng)1000,但本發(fā)明適用任何合適配置下的具有任何合適元件的任何合適的計算機系統(tǒng)。此外,計算機系統(tǒng)1000可具有任何適當?shù)奈锢硇问?,例如一個或多個集成電路(1C)、一個或多個印刷電路板(PCB)、一個或多個手持或者其他設(shè)備(諸如移動電話或PDA)、一個或多個個人計算機、或者一個或多個超級計算機。
[0075]系統(tǒng)總線1010將計算機系統(tǒng)1000的各子系統(tǒng)彼此連接。在此,對總線的引用包括提供常見功能的一個或多個數(shù)字信號線。本發(fā)明適用任何適當?shù)南到y(tǒng)總線1010,包括具有任何適當?shù)目偩€架構(gòu)的任何適當?shù)目偩€結(jié)構(gòu)(諸如一個或多個存儲器總線、一個或多個外圍總線、一個或多個本地總線、或者上述總線的組合)。示例性總線架構(gòu)包括但不限于,工業(yè)標準結(jié)構(gòu)(ISA)總線、增強ISA (EISA)總線、微通道架構(gòu)(MCA)總線、視頻電子標準協(xié)會本地(VLB)總線、外圍元件互連(PCI)總線、PCI快速總線(PC1-X)以及加速圖形接口(AGP)總線。
[0076]計算機系統(tǒng)1000包括一個或多個處理器1020 (或者中央處理單元(CPU))。處理器1020可包含緩存1022用于暫時本地存儲指令、數(shù)據(jù)、或者計算機地址。處理器1020與含有存儲器1030的一個或多個存儲設(shè)備相連。存儲器1030可包括隨機存取存儲器(RAM)1032和只讀存儲器(ROM) 1034。數(shù)據(jù)和指令可在處理器1020與RAM1032之間雙向傳輸。數(shù)據(jù)和指令可從R0M1034單向傳輸?shù)教幚砥?020。RAM1032和R0M1034可包括任何適當?shù)挠嬎銠C可讀存儲介質(zhì)。
[0077]計算機系統(tǒng)1000包括雙向連接到處理器1020的固定的儲存器1040。固定的儲存器1040可經(jīng)由儲存控制單元1052連接到處理器1020。固定的儲存器1040可提供額外的數(shù)據(jù)存儲容量并可包括任何適當?shù)挠嬎銠C可讀存儲介質(zhì)。固定的儲存器1040可存儲操作系統(tǒng)(OS) 1042、一個或多個可執(zhí)行文件1044、一個或多個應用或者程序1046、數(shù)據(jù)1048等等。固定的儲存器1040典型地為比主存儲器慢的次要存儲介質(zhì)(諸如硬盤)。在適當?shù)那闆r下,可把由固定的儲存器1040存儲的信息作為虛擬內(nèi)存并入內(nèi)存1030。
[0078]處理器1020可連接到多種接口,諸如,例如,圖形控制1054、視頻接口 1058、輸入接口 1060、輸出接口 1062、以及存儲器接口 1064,這些接口又可以分別連接到適當?shù)脑O(shè)備上。示例性的輸入或輸出設(shè)備包括但是不限于,視頻顯示器、軌跡球、鼠標、鍵盤、麥克風、觸控式顯示器、讀卡器、磁帶或者紙帶讀取器、平板電腦、手寫筆、語音或者手寫識別器、生物特征讀取器或者計算機系統(tǒng)。網(wǎng)絡(luò)接口 1056可將處理器1020連接到另一個計算機系統(tǒng)或者網(wǎng)絡(luò)1080。通過網(wǎng)絡(luò)接口 1056,處理器1020可在執(zhí)行特定實施例的步驟的過程中從網(wǎng)絡(luò)1080接收信息或者發(fā)送信息給網(wǎng)絡(luò)1080。特定實施例可在處理器1020上單獨地運行。特定實施例可在處理器1020上和在共同操作的一個或多個遠程處理器上運行。
[0079]在網(wǎng)絡(luò)環(huán)境中,在計算機系統(tǒng)1000被連接到網(wǎng)絡(luò)1080的情況下,計算機系統(tǒng)1000可與連接到網(wǎng)絡(luò)1080的其他設(shè)備進行通信。計算機系統(tǒng)1000可經(jīng)由網(wǎng)絡(luò)接口 1056與網(wǎng)絡(luò)1080通信。例如,計算機系統(tǒng)1000可以接收來自網(wǎng)絡(luò)1080的在網(wǎng)絡(luò)接口 1056上呈現(xiàn)為一個或多個輸入包形式的信息(諸如來自另一個設(shè)備的請求或者響應),并且存儲器1030可以存儲輸入包用于后續(xù)處理。計算機系統(tǒng)1000可以將來自網(wǎng)絡(luò)接口 1056的呈現(xiàn)為一個或多個輸出包形式的信息(諸如到另一個設(shè)備的請求或者響應)發(fā)送給網(wǎng)絡(luò)1080,所述信息在發(fā)送之前可由存儲器1030存儲。根據(jù)特定需求,處理器1020可訪問存儲器1030中的輸入或者輸出包以對其進行處理。[0080]計算機系統(tǒng)1000可具有一個或多個輸入設(shè)備1066(其可包括按鍵、鍵盤、鼠標、手寫筆等)、一個或多個輸出設(shè)備1068 (其可包括一個或多個顯不器、一個或多個揚聲器、一個或多個打印機等)、一個或多個存儲設(shè)備1070、以及一個或多個存儲介質(zhì)1072。輸入設(shè)備1066可在計算機系統(tǒng)1000外部或者內(nèi)部。輸出設(shè)備1068可在計算機系統(tǒng)1000外部或者內(nèi)部。存儲設(shè)備1070可在計算機系統(tǒng)1000外部或者內(nèi)部。存儲介質(zhì)1072可在計算機系統(tǒng)1000外部或者內(nèi)部。
[0081]特定實施例中包括一個或多個計算機存儲產(chǎn)品,其包括一個或多個計算機可讀存儲介質(zhì),一個或多個計算機可讀存儲介質(zhì)包含用于執(zhí)行本文描述或者闡明的一個或多個過程中的一個或多個步驟的軟件。在特定實施例中,介質(zhì)的一個或多個部分、軟件或者它們兩者可被特別地設(shè)計和制造以執(zhí)行本文描述或者闡明的一個或多個過程中的一個或多個步驟。此外或者作為一種選擇方案,在特定實施例中,介質(zhì)的一個或多個部分、軟件或者它們兩者在沒有對本文描述或者闡明的過程進行具體設(shè)計或者制造的情況下可以是通用的。示例性的計算機可讀存儲介質(zhì)包括但是不限于,⑶(諸如⑶-ROM)、FPGA、軟盤、軟式光盤、硬盤、全息存儲設(shè)備、IC (諸如ASIC)、磁帶、緩存、PLD、RAM設(shè)備、ROM設(shè)備、半導體存儲器設(shè)備、及其他適當?shù)挠嬎銠C可讀存儲介質(zhì)。在特定實施例中,軟件可以是編譯器可生成的機器代碼或者是包含高級編碼的一個或多個文件,所述高級編碼可以由計算機通過使用譯碼器來執(zhí)行。
[0082]舉例但并不限于此,存儲器1030可包括一個或多個包含軟件的計算機可讀存儲介質(zhì),并且計算機系統(tǒng)1000可提供本文描述或者闡明的特定功能作為處理器1020執(zhí)行所述軟件的結(jié)果。存儲器1030可存儲所述軟件并且處理器1020可執(zhí)行所述軟件。存儲器1030可從包含軟件的大容量存儲設(shè)備1030的計算機可讀存儲介質(zhì)中讀取軟件或者經(jīng)由網(wǎng)絡(luò)接口 1056從一個或多個其它的源中讀取軟件。當執(zhí)行軟件時,處理器1020可運行本文所描述或者闡明的一個或多個過程中的一個或多個步驟,根據(jù)特定需求,其可以包括定義一個或多個存儲在存儲器1030中的數(shù)據(jù)結(jié)構(gòu),以及在軟件的一個或多個部分的指引下修改一個或多個數(shù)據(jù)結(jié)構(gòu)。此外或者作為一種選擇方案,由于硬連接的或在電路中所包含的其他方式的邏輯,計算機系統(tǒng)1000可提供本文所描述或者闡明的特定功能,所述計算機系統(tǒng)可代替軟件或者和軟件一起操作以執(zhí)行本文所描述或者闡明的一個或多個過程的一個或多個步驟。根據(jù)特定的需求,本發(fā)明可包括任何合適的硬件和軟件的組合。
[0083]在特定實施例中,計算機系統(tǒng)1000可包括一個或多個圖形處理單元(GPU) 1024。在特定實施例中,GPU1024可包含一個或多個針對圖形渲染中常用的數(shù)學運算的集成電路和/或處理核。在一些實施例中,GPU1024可使用專門的圖形單元指令集,而在其他的實施方式中,GPU可使用類似CPU的(例如,改進的x86)指令集。圖形處理單元1024可實施許多基本圖形操作,諸如位圖傳送、紋理映射、像素著色、幀緩沖等等。在特定實施例中,GPU1024可以是圖形加速器、通用GPU (GPGPU)、或者任何其他適當?shù)奶幚韱卧?br>
[0084]在特定實施例中,GPU1024可被包含在圖形卡或顯示卡中,該圖形卡或顯示卡通過卡槽安裝在硬件系統(tǒng)架構(gòu)上。在其他實施方式中,GPU1024可集成到計算機系統(tǒng)架構(gòu)的主板上。適當?shù)膱D形處理單元可包括基于AMD公司(r) AMD R7XX的GPU設(shè)備(Radeon (r)HD4XXX)、基于 AMD R8XX 的 GPU 設(shè)備(Radeon (r) HD10XXX)、基于英特爾公司(r) Larabee的 GPU 設(shè)備(未發(fā)布)、nVidia 公司 Cr) 8 系列 GPU、nVidia (r) 9 系列 GPU、nVidia (r) 100系列 GPU、nVidia (r) 200 系列 GPU、以及任何其他 DXll-capable GPU。
[0085]雖然本發(fā)明描述或者闡明以特定順序發(fā)生的特定操作,但本發(fā)明適用以任何適當?shù)捻樞虬l(fā)生的任何適當?shù)牟僮?。此外,本發(fā)明適用以任何適當?shù)捻樞虮恢貜鸵淮位蛘叨啻蔚娜魏芜m當?shù)牟僮?。雖然本發(fā)明描述或者闡明以特定順序發(fā)生的特定操作,但在合適的情況下,本發(fā)明適用基本上同時發(fā)生的任何適當?shù)牟僮?。在合適的情況下,本文描述或者闡明的任何適當?shù)牟僮骰蛘卟僮黜樞蚩杀恢袛?、中止、或由另一個過程(諸如操作系統(tǒng)或者內(nèi)核)控制。動作能夠在操作系統(tǒng)環(huán)境下進行或者作為占用系統(tǒng)過程的全部或者主要部分的獨立程序進行。
[0086]本發(fā)明涵蓋本領(lǐng)域普通技術(shù)人員應當理解的對本文示例性的實施例所做的所有變更、替換、變化、更改和修改。同樣,在合適的情況下,所附權(quán)利要求涵蓋本領(lǐng)域普通技術(shù)人員可以理解的對本文示例性的實施例所做的所有變更、替換、變化、更改和修改。
[0087]為實現(xiàn)本發(fā)明的目的,計算機可讀介質(zhì)以機器可讀形式存儲計算機數(shù)據(jù),其中數(shù)據(jù)可以包括計算機可執(zhí)行的計算機程序編碼。舉例但不作為限制,計算機可讀介質(zhì)可以包含用于有形或固定存儲數(shù)據(jù)的計算機可讀存儲介質(zhì),或用于含碼信號的瞬時譯碼的通信介質(zhì)。本文所使用的計算機可讀存儲介質(zhì),是指物理或有形的存儲器(和信號不同),并且包括但不限于:在用于信息(諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他的數(shù)據(jù))的有形存儲的任何方法和技術(shù)中所實施的易失性的和非易失性的、可移動的和不可拆卸的介質(zhì)。計算機可讀存儲介質(zhì)包括但不限于:RAM、ROM、EPROM、EEPR0M、閃存或其他固態(tài)存儲技術(shù),CD-ROM、DVD或其他光存儲器,磁帶盒、磁帶、磁盤存儲器或其他磁存儲設(shè)備,或可用于有形存儲所需信息或數(shù)據(jù)或指令的并可被計算機或處理器存取的任何其他物理的或材料的介質(zhì)。
【權(quán)利要求】
1.一種方法,包括: 通過處理器接收第一用戶輸入; 響應于所述第一用戶輸入,通過所述處理器選擇對象,所述對象由第一應用和渲染API(應用編程接口)在顯示器的第一窗口中被渲染; 通過所述處理器經(jīng)由引擎從所述第一應用提取所述對象,所述引擎監(jiān)視已收到的用戶輸入; 通過所述處理器接收第二用戶輸入; 響應于所述第二用戶輸入,通過所述處理器將在所述顯示器上的所述對象從所述第一窗口拖曳至第二窗口中被渲染的第二應用;以及 響應于所述對象跨越所述第二窗口的聚焦邊框,通過所述處理器將所述對象導入到所述第二應用。
2.如權(quán)利要求1所述的方法,其特征在于,選擇對象包括: 通過所述處理器將所述第一用戶輸入迂回到所述引擎; 通過所述處理器從所述第一應用到所述渲染API截取繪圖命令; 通過所述處理器從所述繪圖命令中確定所述對象;以及 通過所述處理器根據(jù)選擇算法選擇所述對象和其他對象。
3.如權(quán)利要求2所述的方法,其特征在于,通過所述處理器確定所述對象包括: 通過所述處理器在所述第一用戶輸入的坐標的場景的近平面上分配攝像機;和 通過所述處理器從所述攝像機到遠平面投射光線;以及 通過所述處理器選擇所述光線命中的第一對象。
4.如權(quán)利要求3所述的方法,還包括: 通過所述處理器接收用戶輸入以擴展或過濾選區(qū)。
5.如權(quán)利要求4所述的方法,其特征在于,擴展或過濾所述選區(qū)包括: 通過所述處理器選擇或取消選擇場景中與被選擇的所述對象相關(guān)的其他對象。
6.如權(quán)利要求4所述的方法,其特征在于,擴展或過濾所述選區(qū)包括: 通過所述處理器選擇或取消選擇場景中由進一步的用戶輸入所指定處理的其他對象,其中所述指定處理包括: 通過所述處理器接收用戶輸入; 通過所述處理器在所述用戶輸入的坐標的所述場景的近平面上分配攝像機;以及 通過所述處理器從攝像機到所述遠平面投射光線并且指定所述光線命中的所述第一對象。
7.如權(quán)利要求1所述的方法,其特征在于,拖曳所述對象包括: 通過所述處理器渲染無邊界窗口; 通過所述處理器在所述無邊界窗口中渲染選區(qū),其中所述選區(qū)包括由所述用戶選擇的所述對象; 響應于接收將所述無邊界窗口從所述第一窗口拖曳至所述第二窗口的用戶輸入,根據(jù)所述用戶輸入,通過所述處理器移動所述無邊界窗口跨過所述顯示器。
8.如權(quán)利要求7所述的方法,其特征在于,通過所述處理器渲染所述無邊界窗口中的所述選區(qū)包括:通過所述處理器復制與來自所述第一應用的所述選區(qū)相關(guān)的所述繪圖命令; 通過所述處理器將來自所述第一應用的所述繪圖命令插入到所述渲染API的通道中; 通過所述處理器經(jīng)由所述渲染API渲染所述繪圖命令。
9.如權(quán)利要求7所述的方法,其特征在于,在所述無邊界窗口中渲染所述選區(qū)包括: 通過所述處理器獲取第一條件,所述第一條件包括來自所述第一應用的光照和環(huán)境效果; 通過所述處理器獲取第二條件,所述第二條件包括來自所述第二應用的光照和環(huán)境效果; 通過所述處理器,根據(jù)從所述第一和第二窗口到所述無邊界窗口的距離逐步施加所述第一和第二條件。
10.如權(quán)利要求1所述的方法,其特征在于,將選區(qū)導入第二應用包括: 通過所述處理器將 用于實現(xiàn)的所述選區(qū)轉(zhuǎn)換為所述第二應用; 通過所述處理器,在所述轉(zhuǎn)換期間,經(jīng)由所述第二窗口中的所述引擎渲染所述選區(qū);基于所述轉(zhuǎn)換的完成,通過所述處理器將所述選區(qū)導入所述第二應用;以及基于將所述對象導入所述第二應用,通過所述處理器暫停所述引擎渲染處理,并且所述處理器渲染來自所述第二應用內(nèi)部的所述對象。
11.如權(quán)利要求10所述的方法,其特征在于,轉(zhuǎn)換所述選區(qū)包括: 通過所述處理器,將所述繪圖命令修改為由所述第二應用所采用的文件格式。
12.如權(quán)利要求10所述的方法,其特征在于,經(jīng)由所述引擎渲染所述選區(qū)包括: 通過所述處理器,將繪圖命令插入渲染API通道,所述渲染API通道可操作地指示所述渲染API,以將所述選區(qū)渲染到所述第二窗口。
13.如權(quán)利要求11所述的方法,其特征在于,所述第二應用具有其自身的渲染API,并且渲染來自所述第二應用內(nèi)部的所述選區(qū)包括:通過所述處理器利用所述第二應用的渲染API,在所述第二窗口中渲染所述選區(qū)。
14.一種系統(tǒng),包括: 圖形處理單元; 處理器;和 存儲介質(zhì),用于在其上有形地存儲所述處理器執(zhí)行的程序邏輯,所述程序邏輯包括: 第一用戶輸入接收邏輯,其由所述處理器執(zhí)行,用于接收第一用戶輸入; 選擇邏輯,其由所述處理器執(zhí)行,用于響應于接收所述第一用戶輸入,在顯示器的第一窗口中通過第一應用和渲染API選擇渲染對象; 提取邏輯,其由所述處理器執(zhí)行,用于經(jīng)由監(jiān)視所接收的用戶輸入的引擎,從所述第一應用提取所述對象; 第二用戶輸入接收邏輯,其由所述處理器執(zhí)行,用于接收第二用戶輸入; 拖曳邏輯,其由所述處理器執(zhí)行,用于響應于接收所述第二用戶輸入,將所述顯示器上的所述對象從所述第一窗口拖曳至第二窗口中被渲染的第二應用;以及 導入邏輯,其由所述處理器執(zhí)行,用于響應于所述對象跨過所述第二窗口的所述聚焦邊框,將所述對象導入所述第二應用。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,由所述處理器執(zhí)行以選擇對象的所述選擇邏輯包括: 迂回邏輯,其由所述處理器執(zhí)行,用于迂回來自所述第一應用的所述第一用戶輸入;截取邏輯,其由所述處理器執(zhí)行,用于截取從所述第一應用至所述渲染API的所述繪圖命令; 確定邏輯,其由所述處理器執(zhí)行,用于確定來自與所述第一用戶輸入相關(guān)的所述繪圖命令的所述對象;以及 選擇邏輯,其由所述處理器執(zhí)行,用于根據(jù)選擇算法選擇三維對象和其他對象。
16.如權(quán)利要求14所述的系統(tǒng),其特征在于,由所述處理器確定所述對象包括: 分配邏輯,其由所述處理器執(zhí)行,用于在所述第一用戶輸入的坐標中的所述場景的近平面上分配攝像機;和 光線投射邏輯,其由所述處理器執(zhí)行,用于從所述攝像機到所述遠平面投射光線并選擇所述光線命中的第一對象。
17.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述拖曳邏輯包括: 窗口渲染邏輯,其由處理器執(zhí)行,用于渲染無邊界窗口 ; 選區(qū)渲染邏輯,其由處理器執(zhí)行,用于渲染所述無邊界窗口中的選區(qū),其中所述選區(qū)包括由所述用戶選擇的所述對象; 移動邏輯,其由所述處理器執(zhí)行,用于響應于接收將所述無邊界窗口從所述第一窗口拖曳至所述第二窗口的用戶輸入,根據(jù)所述用戶輸入,將所述無邊界窗口移動跨越過所述顯示器。
18.由權(quán)利要求14所述的系統(tǒng),其特征在于,所述導入邏輯還包括: 轉(zhuǎn)換邏輯,其由所述處理器執(zhí)行,用于將用來實現(xiàn)的所述選區(qū)轉(zhuǎn)換成所述第二應用,基于所述轉(zhuǎn)換的完成,使得所述選區(qū)被導入所述第二應用; 渲染邏輯,其由所述處理器執(zhí)行,用于在所述轉(zhuǎn)換處理期間渲染所述第二窗口中的所述選區(qū);和 暫停邏輯,其由所述處理器執(zhí)行,用于暫停所述引擎渲染處理,并且基于將所述對象導入所述第二應用,渲染來自所述第二應用內(nèi)部的所述對象。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述選區(qū)渲染邏輯還包括: 第一條件獲取邏輯,其由所述處理器執(zhí)行以獲取第一條件,所述第一條件包括來自所述第一應用的光照和環(huán)境效果; 第二條件獲取邏輯,其由所述處理器執(zhí)行以獲取第二條件,所述第二條件包括來自所述第二應用的光照和環(huán)境效果; 條件施加邏輯,其由所述處理器執(zhí)行,用于根據(jù)從所述第一和第二窗口到所述無窗口邊界的距離逐步施加所述第一和第二條件。
20.一種計算機可讀存儲介質(zhì),其上存儲有指令,所述指令在被處理器執(zhí)行時使所述處理器執(zhí)行以下步驟: 接收第一用戶輸入; 響應于所述第一用戶輸入,通過第一應用和渲染API在顯示器的第一窗口中選擇渲染對象; 經(jīng)由引擎從所述第一應用提取所述對象;接收第二用戶輸入; 響應于所述第二用戶輸入,將所述顯示器上的所述對象從所述第一窗口拖曳至第二窗口中被渲染的第二應用; 響應于所述對象跨過 所述第二窗口的聚焦邊框,將所述對象導入所述第二應用。
【文檔編號】G06F9/44GK103733170SQ201280039386
【公開日】2014年4月16日 申請日期:2012年8月10日 優(yōu)先權(quán)日:2011年8月12日
【發(fā)明者】朱利安·M·烏爾巴赫 申請人:Otoy公司