对象在应用之间的拖拽和放下的制作方法

文档序号:6496209阅读:314来源:国知局
对象在应用之间的拖拽和放下的制作方法
【专利摘要】方法、装置和系统,用于通过第一程序捕捉在显示器的第一窗口上的渲染对象,提取所述对象,准许用户跨过显示器将所述对象拖拽至包含第二程序的显示器的第二窗口,并且将所述对象基本上实时地导入第二程序。拖拽和放下处理对用户无缝地发生并使用户在一个应用中选择多个对象中的一个或多个,将对象拖拽到第二应用用于修改,并将修改后的对象拖曳回到第一应用用来实时预览。
【专利说明】对象在应用之间的拖拽和放下
[0001]相关申请的交叉引用
[0002]本申请是2011年8月12日提交的美国临时申请第61/523,142号、名称为“对象在应用之间的拖拽和放下”,和2012年8月9日提交的美国非临时申请第13/571,182号、名称为“对象在应用之间的拖拽和放下”的非临时申请,这些申请的全部内容在此通过引用并入本文。
[0003]本发明一般涉及从第一应用到第二应用实时导入或导出三维图形对象,更具体地涉及在渲染第一和第二应用的窗口之间的导入/导出处理在用户的显示器上的图形表示。
【背景技术】
[0004]通常,图形程序通过将2D或3D对象转换成绘图指令以对其进行渲染,这些指令随后被反馈给图形API (诸如OpenGL或Direct3D)。在API渲染通道内,绘图指令在作为应用用户显示器上的2D图像输出之前经过如隐藏面移除、Z-缓存、光栅化以及剪辑等的各种处理。由于要对程序数据反汇编以调取OBJ文件或其他可读3D格式,如果可能,从图形程序导出特定3D对象通常是艰难的过程。类似地,将文件导入3D图形程序要求将3D对象汇编成图形程序所需的格式,并且为了成功的对象导入常常需要对整个3D对象库重新打包。

【发明内容】

[0005]本发明一般涉及从第一 3D程序导出对象用来在第二 3D程序中实时渲染。在一个实施例中,计算机系统托管多个应用实例,每个应用实例对应于本地客户应用。所述计算机系统利用该计算机系统的图形处理单元的资源同时渲染应用实例的图形输出,所述应用实例与计算机系统显示器上单独窗口中的至少两个本地客户应用相对应。用户设法从所述第一应用导出3D对象,从所述第一窗口选择对象并将所述对象拖拽到所述第二窗口。当用户拖曳所述对象时,依照用户的拖曳指令在所述计算机显示器上渲染所述对象。然后用户将在所述第二窗口中渲染的所述对象放入所述第二应用中,并且所述对象被实时导入所述第二应用。
[0006]在一个实施例中,第一计算机系统本地托管第一应用,并且所述第二应用被托管在应用服务器上。所述计算机系统通过其本地硬件和渲染API在该计算机系统显示器上的两个单独窗口中对本地应用和远程应用进行渲染。用户设法从所述第一应用导出3D对象,从所述第一窗口选择对象并将所述对象拖至所述第二窗口。当用户拖曳所述对象时,依照用户的拖曳指令在所述计算机显示器上渲染所述对象。然后用户将在所述第二窗口中渲染的所述对象放在所述第二应用中,并且所述对象被实时导入所述第二应用。
[0007]在一个实施例中,第一计算机系统本地托管第一应用,并且第二应用在带有服务器侧渲染的应用服务器上被托管。所述计算机系统利用其自身的图形处理器和图形API渲染本地应用,并且所述远程应用由服务器侧图形API渲染。用户设法从所述第一应用导出3D对象,从所述第一窗口选择对象并将所述对象拖拽到所述第二窗口。当用户拖曳所述对象时,依照用户的拖曳指令在所述计算机显示器上渲染所述对象。然后用户将在所述第二窗口中渲染的所述对象放于所述第二应用中,并且所述对象被实时导入所述第二应用。
[0008]在一个实施例中,公开了用于将对象导入第二应用的方法。所述方法包括:由处理器接收第一用户输入,并且响应于所述第一用户输入由所述处理器选择由第一应用和渲染API在显示器的第一窗口中渲染的对象。所述方法还包括,经由引擎从所述第一应用提取所述对象并且由所述处理器接收第二用户输入。响应于所述第二用户输入,所述方法包括:由所述处理器将显示器上的对象从所述第一窗口拖曳至第二窗口中渲染的第二应用,并由所述处理器在拖曳期间在第一窗口和第二窗口之间的中间空间显示所述对象。响应于所述对跨过所述第二窗口的聚焦边界,所述方法包括将所述对象导入所述第二应用。
[0009]在实施例中,根据所述方法选择对象包括:由所述处理器将所述第一用户输入迂回至所述引擎,由所述处理器截取从所述第一应用至所述渲染API的绘图命令,并由所述处理器确定来自所述第一应用的绘图命令的所述对象。所述方法还包括:由所述处理器根据选择算法选择所述对象。在实施例中,所述选择算法被配置为选择与光线命中的第一对象相关的所有对象。在实施例中,所述选择算法被配置为选择与光线命中的第一对象具有相同对象标识符的所有对象。在实施例中,所述选择算法被配置为选择与光线命中的第一对象具有相同运动矢量的所有对象。在实施例中,所述选择算法被配置为选择与光线命中的第一对象具有相同纹理的所有对象。
[0010]在实施例中,所述第一用户输入选择对象是指来自定位设备的光标选区。在实施例中,所述第一用户输入选择对象包括用户追踪围绕所述对象的边界。在实施例中,所述第一用户输入选择对象包括选择预定特征组全部毗邻像素的选择工具。在实施例中,所述第一用户输入选择对象是指在触摸界面上的敲击。在实施例中,所述第一用户输入选择对象是指在触摸界面上的手势。
[0011]在实施例中,由所述处理器从所述绘图命令确定对象的方法还包括:由所述处理器在所述第一用户输入的坐标的场景的近平面上分配摄像机,以及由所述处理器从所述摄像机到远平面投射光线并选择所述光线命中的第一对象。所述方法还包括:所述处理器还接收用户输入以扩展或过滤选区,其中扩展或过滤所述选区包括由所述处理器选择或取消选择在场景中与所选择的对象相关的其他对象。
[0012]在实施例中,扩展或过滤所述选区包括:由所述处理器选择或取消选择在场景中与所选择的对象具有相同对象标识符的其他对象。在实施例中,扩展或过滤所述选区包括:由所述处理器选择或取消选择在场景中与所选择的对象具有相同运动矢量的其他对象。在实施例中,扩展或过滤所述选区包括:由所述处理器选择或取消选择在场景中与所选择的对象具有相同纹理的其他对象。在实施例中,扩展或过滤所述选区包括:由所述处理器选择或取消选择在场景中由进一步用户输入所指定的其他对象。在实施例中,所述指定处理包括由所述处理器接收用户输入,由所述处理器在所述用户输入的坐标的场景的近平面上分配摄像机,并且由所述处理器从所述摄像机到远平面投射光线并指定所述光线命中的第一对象。
[0013]在实施例中,所述处理器在所述显示器上拖曳所述对象包括:所述处理器渲染无边界窗口和在所述无边界窗口中的选区,其中所述选区包括由所述用户选择的对象。在实施例中,响应于接收用户输入以将所述无边界窗口从所述第一窗口拖曳至所述第二窗口,所述方法包括由所述处理器依据所述用户输入移动所述无边界窗口跨过所述显示器。[0014]在实施例中,用于由所述处理器渲染所述无边界窗口中的所述选区的方法包括:由所述处理器从所述第一应用复制与所述选区相关的绘图命令,所述处理器将来自所述第一应用的画图命令插入渲染API通道,并且由所述处理器经由所述渲染API渲染所述绘图命令。
[0015]在实施例中,将所述选区导入第二应用的方法包括:由所述处理器将用于实现的选区转换成所述第二应用,并且所述处理器在所述转换期间经由所述引擎在所述第二窗口中渲染所述选区。在实施例中,转换所述选区包括:由所述处理器将所述绘图命令修改成由所述第二应用使用的文件格式。在实施例中,所述文件格式是OBJ文件。
[0016]基于所述转换的完成,所述方法包括:由所述处理器将所述选区导入所述第二应用。基于将所述对象导入所述第二应用,所述方法还包括:由所述处理器暂停所述引擎渲染处理,并且由所述处理器从所述第二应用内部渲染所述对象。
[0017]在实施例中,所述经由所述引擎渲染所述选区的方法包括:由所述处理器将绘图命令插入到渲染API通道,所述API通道可操作以指示所述渲染API将所述选区渲染入所述第二窗口。在实施例中,所述第二应用具有其自身的渲染API,并且从所述第二应用内部渲染所述选区包括:所述处理器使用所述第二应用的渲染API渲染在所述第二窗口中的选区。
[0018]在实施例中,渲染在所述无边界窗口中选区的方法包括:由所述处理器获取第一条件和第二条件,所述第一条件包括来自所述第一应用的光线和环境效果,所述第二条件包括来自所述第二应用的光线和环境效果。所述方法还包括,所述处理器根据所述无边界窗口到所述第一和第二窗口的距离逐步施加所述第一和第二条件。
[0019]在实施例中,公开了从第一应用到第二应用导出和导入对象的系统。在实施例中,所述对象是三维对象。所述系统包括图形处理单元、处理器和存储介质,所述存储介质在其上有形存储由所述处理器执行的程序逻辑。在实施例中,所述存储介质还可以包括一个或多个所述第一和第二应用。在所述存储介质中的所述程序逻辑包括由处理器执行的用于接收第一用户输入的第一用户输入接收逻辑。包括在所述存储介质中并由所述处理器执行的选择逻辑,其响应于接收所述第一用户输入,在显示器的第一窗口中选择由第一应用和渲染API渲染的对象。通过在所述存储介质上包含的提取逻辑,从所述第一应用提取所述对象。此外,所述处理器执行第二用户输入接收逻辑以接收第二用户输入,响应于接收所述第二用户输入,拖曳逻辑将所述显示器上的所述对象从所述第一窗口拖曳至所述第二窗口中渲染的第二应用,并且响应于所述对象跨越所述第二窗口的聚焦边界,所述处理器执行包含在所述存储介质中的导入逻辑用于将所述对象导入所述第二应用。
[0020]在实施例中,由所述处理器执行以选择对象的选择逻辑还包括迂回逻辑,所述迂回逻辑也由所述处理器执行,用于迂回来自所述第一应用的所述第一用户输入。所述的选择逻辑还包括由所述处理器执行以截取从所述第一应用到所述渲染API的绘图命令的截取逻辑、由所述处理器执行以从与所述第一用户输入相关的绘图命令中确定所述对象的确定逻辑以及由所述处理器执行以根据选择算法选择所述三维对象和其他对象选择逻辑。
[0021]在实施例中,所述确定逻辑还包括由所述处理器执行以在所述第一用户输入的坐标的场景的近平面分配摄像机的分配逻辑。由所述处理器执行的确定逻辑还包括光线投射逻辑,用于从所述摄像机到所述远平面投射光线并选择所述光线命中的第一对象。[0022]在实施例中,由所述处理器执行的拖曳逻辑包括用于渲染无边界窗口的窗口渲染逻辑,用于在所述无边界窗口中渲染包括用户选择的对象的选区的选择渲染逻辑,以及响应于将所述无边界窗口从所述第一窗口拖拽到所述第二窗口的接收用户输入,根据所述用户输入将所述无边界窗口移动跨过所述显示器的移动逻辑。
[0023]在实施例中,由所述处理器执行的所述选区渲染逻辑还包括复制与所述选区相关的绘图命令的复制逻辑,将所述绘图命令插入所述渲染API通道的插入逻辑,以及通过所述渲染API渲染所述绘图命令的绘图命令渲染逻辑。在实施例中,所述选区渲染逻辑还包括第一条件获取逻辑和第二条件获取逻辑,所述第一条件获取逻辑由所述处理器执行用于获取包括来自所述第一应用的光照和环境效果的第一条件,所述第二条件获取逻辑由所述处理器执行用于获取包括来自所述第二应用的光照和环境效果的第二条件。此外,由所述处理器执行的所述选取渲染逻辑由还包括条件施加逻辑,用于根据所述无窗口边界到所述第一和第二窗口的距离逐步施加所述第一和第二条件。
[0024]在实施例中,由所述处理器执行的导入逻辑还包括:转换逻辑,其用于将所述用于实现的选区转换成所述第二应用,以使得所述选区基于所述转换处理的完成被导入所述第二应用;渲染逻辑,其用于在所述转换处理期间在所述第二窗口中渲染所述选区;和暂停逻辑,其用于暂停所述引擎渲染处理,并基于将所述对象导入所述第二应用渲染来自所述第二应用内部的对象。在实施例中,在所述转换处理中由所述处理器所执行的所述转换逻辑还包括用于将所述绘图命令修改成由所述第二应用使用的文件格式的修改逻辑。在实施例中,所述文件格式是OBJ文件。在实施例中,所述渲染逻辑还包括插入逻辑,其由所述处理器执行,用于将绘图命令插入渲染API通道,所述渲染API通道可操作以指示所述渲染API将所述选区渲染到所述第二窗口。在实施例中,第二应用渲染API基于将所述对象导入所述第二应用在所述第二窗口渲染所述选区。
[0025]计算机可读存储介质,在其上存储有指令,当由处理器执行所述指令时,所述指令使所述处理器接收第一用户输入并且响应于所述第一用户输入渲染在显示器的第一窗口中选择通过第一应用和渲染API渲染的对象。所述指令还使所述处理器通过引擎从所述第一应用提取所述对象。此外,所述存储介质包括指令以接收第二用户输入并且响应于所述第二用户输入在显示器上将所述对象从所述第一窗口拖曳至第二窗口中渲染的第二应用。所述存储介质还包括指令以响应于对象跨过所述第二窗口的聚焦边界将所述对象导入所述第二应用,将对象导入第二应用。
[0026]通过参考以下详细说明和【专利附图】

【附图说明】,可以组合其特征的这些和其他实施例对于本领域普通技术人员来说是显而易见的。
【专利附图】
附图
【附图说明】
[0027]在未按比例绘制的附图中,遍及若干视图,相同的附图标记表示相同的部件:
[0028]图1举例说明了托管两个本地应用并从第一应用导出3D对象以用于导入第二应用的计算机系统的例子;
[0029]图2举例说明了导出和导入处理的全部流程,包括从第一应用抓取对象,将对象从第一应用拖至第二应用,并将对象放在第二应用中用于渲染;
[0030]图3举例说明了抓取处理的流程;[0031]图4举例说明了拖拽处理的流程;
[0032]图5举例说明了放下处理的流程;
[0033]图6举例说明了重返处理的处理流程;
[0034]图7举例说明了阐明了执行结合环境效果渲染处理的计算机系统显示器的表现;
[0035]图8举例说明了托管本地应用的计算机系统和托管远程第二应用的应用服务器的例子;
[0036]图9举例说明了托管本地应用的计算机系统和托管远程第二应用的带有服务器侧渲染的应用服务器的例子;
[0037]图10举例说明了适用于实现特定实施例的一个或多个部分的示例性计算机系统1000。
【具体实施方式】
[0038]以下参考附图对本发明主题作更充分地描述,所述附图是本发明的一部分,并通过图示方式展示出具体的示例性实施例。然而,本发明主题可包含在各种不同形式中,因此,所覆盖或请求保护的主题意在理解为不限于本文所阐述的任意特定实施例;所提供的特定实施例仅是说明性的。同样地,所请求保护或覆盖的主题的合理宽的范围是可以预期的。除此之外,例如,主题可体现为方法、设备、部件或系统。因此,实施例可以采用诸如硬件、软件、固件或其任意组合(除软件本身)的形式。因此,下面的详细说明并不意在限制。
[0039]在附图中,一些特征被放大以显示特定部件的细节(图中所示的任意尺寸、材料和类似的细节意在说明而非限制)。因此,本文中所公开的具体结构和功能细节不应解释为限制,而仅应解释为用于教导本领域技术人员以各种不同方式采用所公开的实施例的代表性基础。
[0040]下面将参照方法及设备的方框图和操作示图以选择和表现与特定主题相关的媒体来描述本发明。可以理解,可通过模拟或数字硬件和计算机程序指令来实现方框图或操作示图的每个方框以及方框图或操作示图中方框的组合。这些计算机程序指令可被提供给通用计算机、专用计算机、ASIC或其他可编程数据处理装置的处理器,以使得经由计算机或其他可编程数据处理装置的处理器执行的指令可实现在方框图或操作方框中特定的功能/动作。各个方面或特征将用系统来呈现,所述系统可以包括多个设备、部件、模块,等等。可以理解和领会的是,各个系统可包括附加的设备、部件、模块等和/或可以不包括有关附图中所阐述的全部设备、部件、模块等。还可使用这些方式的组合。
[0041]在一些可选择的实施方式中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
[0042]为了本发明的目的,术语“服务器”应当被理解为指的是提供处理、数据库、通讯设施的业务点。举例来说而非限制,术语“服务器”可以指具有相关通信和数据存储和数据库设施的单个的物理处理器,或它可以指联网或集聚的处理器、相关网络和存储设备的集合体,并且对软件和一个或多个数据库系统和支持服务器所提供的服务的应用软件进行操作。
[0043]计算机设备可以通过诸如有线或无线网络等发送或接收信号,或可以在诸如存储器中将信号处理或存储为物理存储状态,并且可以,因此作为服务器来操作。因此,能作为服务器来操作的设备可以包括,例如,专用机架安装服务器、台式计算机、膝上型计算机、机顶盒、结合诸如上述设备的两个或更多特征等的各种特征的集成设备,等等。服务器可以在配置或性能上差异很大,但是服务器一般可以包括一个或多个中央处理单元和存储器。服务器还包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口、或一个或多个操作系统,诸如Windows Server,Mac OS X、Unix、Linux、FreeBSD,等等。
[0044]遍及说明书和权利要求书,术语可以具有超出明确说明的含义之外的在上下文中隐含或暗示的有细微差别的含义。同样地,本文中所使用的短语“在一个实施例中”未必指相同的实施例,以及本文中所使用的短语“在另一个实施例中”未必指不同的实施例。意图在于,例如请求保护的主题包括示例性实施例以全部或部分的方式组合。通常,可以从上下文中的使用来至少部分地理解术语。例如,本文中所使用的例如“和”、“或”或者“和/或”的术语可以包括至少部分取决于这些术语所使用的上下文的多种意思。典型地,如果“或”用于关联诸如A、B或C的列表,在此以包含意思使用时意在表不A、B和C,以及在此以排除意思使用时意在表示A、B或C。此外,至少部分取决于上下文,本文使用的术语“一个或多个”可以用于以单数意思描述任意的性能、结构或特性,也可以用于以复数意思描述性能、结构或特性的组合。同样,至少部分区取决于上下文,诸如不定冠词(a/an)或定冠词(the)的术语可被理解为表达单数用法或表达复数用法。此外,术语“基于”可理解为未必意在表达专属的系列因素,反而,至少部分取决于上下文,还允许没有必要明确描述的另外因素的存在。
[0045]本发明一般地涉及从第一 3D程序导出对象用于在第二 3D程序中实时渲染。在一个实施例中,计算机系统托管多个应用实例,每个应用实例对应于本地客户应用。计算机系统利用该计算机系统的图形处理单元的资源,同时渲染对应于计算机系统显示器上分离窗口中的至少两个本地客户应用的应用实例的图形输出。设法从第一应用导出3D对象的用户从第一窗口选择对象并将所述对象拖曳至第二窗口。当用户拖曳所述对象时,依照用户的拖曳指令在计算机显示器上渲染所述对象。然后用户将所述对象放在在第二窗口中被渲染的第二应用中,并且所述对象被实时导入第二应用。
[0046]通常借助于计算机程序,渲染可以被认为是从模型生成图像的处理。模型通常是三维(3D)对象的描述并且可以以严格定义的语言或数据结构表示。模型可包含几何形状、视点、纹理、光照、底纹、运动及其他适当的信息类型。模型被渲染成的图像可以是由许多像素集合形成的数字图像或光栅图形图像。本发明将渲染概念扩展到生成表现任何应用的任意输出的图像。渲染可以基于任意数据来执行,所述任意数据包括二维(2D)数据和3D数据。除根据3D模型生成图像之外,特定实施例可以渲染表现应用输出的图像,诸如,举例但不限于,网页浏览应用、文字处理应用、电子数据表应用、多媒体应用、科学和医学应用以及游戏应用。
[0047]如果可能,修改来自3D程序的对象典型地是艰难的任务。如果用户没有原始OBJ或用于在3D图形程序(诸如3D Studio Max或Maya)中修改的其他格式文件,那么用户必须对由第一 3D程序所使用的3D图形文件进行反编译。图形文件可以被存储在程序安装路径下的给定目录中,或被编译成实际的程序代码本身。在任何情况下,用户必须运行若干步骤以获取能被3D图形程序读取的格式的目标文件。同样,在修改目标文件以后,为了从第一程序内部观察3D对象的外观,用户必须将对象重新编译成或导入成第一程序的编码。这个处理是耗时的,并且在使用远程应用时更严重。
[0048]由于渲染处理通常是资源需求的,其可以是非常计算密集的,特别是当所渲染的图像具有高分辨率和高质量时,因此渲染可以是适合由服务器执行的一类任务。过去,老式计算机系统需要耗费数个小时或数天时间将三维模型渲染成单个2D图像。随着计算机硬件的发展和进步,特别是为计算机图形应用(如游戏、多媒体、娱乐或绘图)专门设计的计算机硬件的发展和进步,目前的计算机系统可以在几秒或几毫秒内渲染每个图像。事实上,将模型绘制成单个图像通常不会占用服务器的所有可用资源。因此,利用服务器侧渲染的远程应用变得更流行。
[0049]为了使从第一 3D程序导出的3D对象导入到第二 3D程序更容易,软件引擎可以响应用户命令以通过从第一应用到3D图形渲染通道截取绘图命令来选择特定对象,并将它们插入用于第二应用给定场景的绘图命令中。在特定实施例中,第二应用可以是在独立服务器上托管的远程应用。在其他实施例中,第二应用可以是具有服务器侧渲染的远程应用。
[0050]图1举例说明了运行本地第一应用105和本地第二应用106的示例性计算机系统101。在正常操作中,例如通过控制用户硬件108,用户激活系统101,并且I/O接口 107将来自用户/硬件108的信号转换成到第一应用105或第二应用106的指令。应用105和106均输出绘图命令给渲染API104用于渲染2D或3D场景。渲染API104使绘图命令通过渲染通道(未显示)以将该绘图命令转换成由图形硬件103执行的指令从而在显示器102上渲染2D或3D场景。在一个实施例中,在显示器102的一部分上的第一窗口中渲染第一应用105,并且在显示器102的不同部分的第二窗口中渲染第二应用106。在实施例中,引擎109是在同时具有第一应用105和第二应用106的系统101内所包含的处理器(未显不)上运行的软件程序。引擎109时刻监视I/O接口 107用于启动拖拽和放下处理的指令。当检测到这些指令,指令经由路径110迂回至引擎109。用户可以以各种方法启动拖拽和放下处理,这些方法包括但不限于:特定键击、保持与鼠标一起的预定键或其他指针设备输入、在接触式输入设备上的轻敲、或在接触式输入设备上的特定手势。一旦命令经由路径110迂回至引擎109,引擎109允许用户选择任意应用窗口中的给定对象。引擎109还监视从第一应用105和第二应用106到渲染API104的绘图命令,并使用迂回的用户输入110确定场景中的哪个或哪些对象是用户希望选择的。引擎109提取与用户希望选择的对象相对应的绘图命令,并将它们传送至渲染API104用于在拖曳处理期间的渲染。在放下处理期间,引擎109继续将用于对象的绘图命令传送至渲染API104用于在第二应用106的窗口中渲染,但是同时将绘图命令转换成用于导入第二应用106的格式。在完成转换和导入处理后,引擎109停止给渲染API104发送绘图命令,并且所选定的对象通过第二应用106被专门地渲染。下面将给出抓取、拖曳和放下处理的更详细的解释。为了简化讨论,图1中仅举例说明两个应用。然而,在实践中可以领会的是,根据本文所描述的实施例,计算机系统101可以并行执行任意数量的应用对从一个应用到另一个应用被导出的各种对象进行渲染。[0051 ] 图2举例说明了拖拽和放下处理的高级流程。在步骤201中,计算机系统开始运行多个应用。在步骤202中,用户启动抓取处理,在图4中详细描述。在步骤203中,用户将所希望的对象从显示第一应用的窗口拖曳至显示第二应用的窗口,在图5中详细描述。最后,在步骤204中,用户将对象放入第二应用的窗口中,也被称作重返处理,在图6中详细描述。
[0052]图3举例说明了在拖拽和放下处理期间用户显示器的表现。最初,计算机系统的显不器包含两个独立的窗口,其中,第一窗口 301包含第一应用的渲染输出,第二窗口 304包含第二应用的渲染输出。对象303a和303b在第一窗口 301中被渲染。在实践中,第一窗口 301和第二窗口 304可以包含任意数量的对象,图3被限制为两个对象仅仅是为了便于讨论。
[0053]在图3中,第一窗口 301以放大图的形式被示为303。用户以各种不同方法选择对象303a,诸如点击输入设备或在对象303a上的单个点307敲击触屏,利用输入设备或在通过对象303a的触屏上跟踪路径308,或利用输入设备或在触摸设备上围绕对象303a画选取框306。本领域普通技术人员可以很容易想到其他输入方法包括但不限于:手势、选择棒以及多边形选取框。
[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中,引擎接收选择所需对象的选区输入。如上所述,本发明给出了多种选区输入方法。基于接收选区输入,引擎将自第一应用去往渲染API的绘图命令迂回到引擎本身。根据这些命令,引擎能够重新创建由第一应用渲染的场景。在3D场景的环境中,引擎立刻具有给定场景中的所有3D对象,以及第一应用使用的视场和摄像点以渲染场景。
[0057]在一个实施例中,用户输入是在所需对象上第一窗口上的单个点。在步骤402中,引擎将输入选区解析给渲染显示器中的图形对象。为了将该二维输入转换成三维对象,采用传统的3D对象选择方法。其中的一个方法是在用户输入的位置在3D场景的近平面上放置摄像机,并且光线从摄像机投射到远平面,选择光线命中的第一个对象。在另一个实施例中,选择工具选择所有与光线命中的第一对象接触的对象。在另一个实施例中,选择工具利用与光线命中的第一对象相同的对象标识符(诸如标签或其他元数据)来选择全部对象。在另一个实施例中,选择工具选择具有与光线命中的第一对象相同纹理的所有对象。在再一个实施例中,选择工具选择具有与光线命中的第一对象相同运动矢量的所有对象。
[0058]在步骤403中,引擎根据用户输入过滤或扩展用户选择。用户可以以与选择原始对象相同的方式或某种其它的输入方法(诸如按下修改器以添加选区并且围绕其他将被选定的对象画出选择框)选择增加选定对象。相似地,可以给用户呈现弹出窗口以选择具有相同运动矢量、纹理、元数据等的其他对象。相似地,用户能以模拟的方法从选区中滤出对象。用户可以具有用于从选区减去对象的按键,并点击各独立对象或围绕将被从选区去除的对象画出选取框。此外,可以给用户提供下拉菜单以滤出带有给定纹理、运动矢量、元数据标记等的对象。本发明给出的从选区减去或添加到选区的多方法对本领域普通技术人员来说是公知的。
[0059]在满足用户的需求后,在步骤404中,用户输入命令启动拖曳处理。该命令可以包括但不限于:连同移动输入设备一起按下输入设备的按钮以拖曳选定对象、在接触式输入设备上的特定手势、连同移动输入设备一起按下键盘上的键,等等。本发明可以包括多种启动拖曳处理404的方法。
[0060]图5举例说明了拖曳处理的处理流程。在步骤501中,引擎在计算机系统显示器上创建窗口。在实施例中,窗口可以具有可见边框。在实施例中,窗口是无边框的。无边框窗口仅仅是在完全透明的第二显示器上的指定区域,仅有的在显示器上被实际渲染的对象是在无边框窗口内所包含的图形对象。在步骤502中,引擎将对象写入无边框窗口。引擎通过将与选区相关联的绘图命令从第一应用迂回该引擎而执行该步骤。然后引擎将这些绘图命令发送至渲染API作为在无边框窗口内要被渲染的对象。渲染API正常通过渲染通道处理绘图命令,并在无边框窗口内在显示器上渲染场景。因为无边框窗口是透明的,所以对象看上去仅像是从第一窗口移动到第二窗口。因此在拖曳处理期间,除引擎外,渲染API —直处理来自至少两个应用的绘图命令。
[0061]根据经由输入输出接口 107接收的来自用户的无边框窗口移动命令,引擎传送与选定对象有关联的绘图命令。如所述的,本发明包括多种用于用户在拖曳处理期间调整无边框窗口的位置的输入方法。
[0062]引擎在任何时候都不接收用户命令以移动无边框窗口,引擎等待用户输入命令以确定是否在步骤504中已经发布放下命令。放下命令检测发送进程给步骤505中的重返处理。放下命令可以是来自用户输入装备的任何命令以指示用户希望将对象导入第二窗口中渲染的第二应用。放下命令可以包含但不限于,释放鼠标或其他输入设备上的按键、在接触式输入设备上的手势、或按压在输入设备上的其他键。对本领域普通技术人员来说,可以想到用于放下命令的其他用户输入方法。在一个实施例中,当对象被拖曳越过第二窗口的聚焦边框时,重返处理就开始。
[0063]图6举例说明了重返处理的处理流程。在步骤601中,重返处理开始。可通过用户明确的放下指令或拖曳选区跨过第二窗口聚焦边框的动作来触发重返处理。当重返处理开始时,引擎开始将来自绘图命令的对象转换成用于在第二应用中实现的格式。在3D环境中,引擎开始将绘图命令转换成用于导入第二应用的3D对象文件。例如,用户可运行在第一窗口中的3D游戏应用和在用于编辑给定模型的第二窗口中的3D图形编辑程序。在选择所需对象后,用户将所述对象拖曳至第二窗口,并且重返处理开始将与所述对象相关联的绘图命令转换成诸如OBJ文件的3D对象文件。
[0064]在步骤602中,引擎通过将与对象关联的绘图命令传递给渲染API以继续渲染所述对象。因为转换处理是费时且处理密集的,所以引擎在转换进行时继续渲染对象。引擎通过将绘图命令插入从第二应用到渲染API的绘图命令流来渲染对象。因此,在重返期间,引擎不仅仅渲染叠加在第二窗口上面的无边框窗口内的对象,而实际上将所述对象并入到第二应用中,犹如所述对象(包括环境效果)被导入并被第二应用本身渲染。图7提供了这些特征的详细说明。
[0065]在步骤603中,转换完成,并且对象文件被导入到第二应用。导入处理对每个应用和每个文件格式是不同的。在3D图像编辑程序环境中,文件被导入到程序的工作区,就像用户已经从3D图像编辑程序直接打开文件一样。在步骤604中,在成功将对象导入第二程序后,引擎停止其对对象的渲染,并且对象被第二应用渲染。在没有给用户多个渲染处理或文件转换的任何指示下,整个重返处理无缝发生。用户不会觉察到这些由引擎所执行的后台处理,并且对象被渲染,犹如所述对象被简单地从第一窗口拖曳并被放在第二窗口中一样。
[0066]图7描述了结合环境效果的拖拽和放下处理的表现。在第一窗口 701中,对象702a(为简单起见表示为球体)与来自窗口 701左上部的光源703 —起放置。在第二窗口 704中,3D场景的环境包括来自右上方的光源705。在抓取处理期间,引擎获取窗口 701和704的环境效果和光照,并且取决于对象与每个窗口的距离适应性地将环境效果和光照施加给选定对象702a。因此,随着对象702a被拖曳向第二窗口,对象的702a的底纹根据与光源703和705的距离而变化,如表现702b、702c、702d和702e所示。引擎在将这些环境效果传到渲染API之前通过将它们施加给对象的绘图命令来对这些环境效果进行渲染。环境效果不仅仅局限于光照,本领域技术人员可以想到的是,其还可以施加雾、烟、模糊、颗粒效果、反射及其他公知的环境效果。
[0067]图8描述了计算机系统801的实施例,其中两个应用的一个是在应用服务器809上运行的远程应用810。在这种情况下,引擎805的操作没有变化。引擎截取来自I/O接口 807的指令并在拖拽和放下处理期间将指令沿路径811迂回引擎。假定用户从本地应用806拖拽并放到远程应用810,从本地应用806到渲染API804的绘图命令在抓取处理期间被截取和使用以为用户选择所需的对象。在拖曳处理期间,通过将选区的绘图命令迂回到渲染API804,引擎805在无边框窗口中处理对象的渲染。当用户将对象放入远程应用810的窗口中时,引擎805在继续渲染选定对象时开始转换处理。基于完成转换,被转换的对象文件经由网络链路814被传送到应用服务器809用于导入远程应用810。导入之后,引擎805停止将绘图命令传送到渲染API804,并且系统正常操作。在另一个实施例中,用户将对象从远程应用拖曳到本地托管的应用。系统在该配置中按照基本相同的机制来操作。
[0068]图9描述了计算机系统901的实施例,其中的一个应用908是在应用服务器907上运行的远程应用,应用服务器907通过其自身的渲染API909具有服务器侧渲染。举例来说,用户将应用从本地应用905的窗口拖曳至远程渲染应用908的窗口。系统901的操作与图8中的操作基本相同。引擎910截取来自I/O接口 906的I/O输入并沿路径914将它们迂回用于拖拽和放下处理期间。在抓取处理期间,引擎910将自本地应用905去往本地渲染API904的绘图命令迂回到引擎。在用户选择对象以后,引擎910将命令沿路径915迂回至任一本地渲染API904。在拖曳处理期间,用于选定对象的被迂回的绘图命令被本地渲染引擎904渲染以在无边框窗口中渲染对象。基于重返处理的启动,引擎开始对象到对象文件的文件转换用于导入远程应用908。当文件被转换时,该文件经由路径916被导入远程应用908。然后引擎停止通过本地渲染API904渲染对象,并且对象通过远程渲染API909被专门地渲染。
[0069]对于用户希望从具有服务器侧渲染的远程应用(诸如应用908)选择对象的实施例中存在特殊情况。在这样的实施例中,引擎在其进入远程渲染API909前必须访问远程应用908的输出。这必须特殊实现,其需要寄存在远程应用服务器907上的软件或在最低限度上需要服务器907对引擎910的许可以监视在远程应用908和渲染API909之间的路径。在这种情况下,来自应用908的绘图命令经由网络连接913上被迂回到引擎910。这种特殊情况仅在从带有服务器侧渲染的远程应用抓取对象时才出现。
[0070]本发明涵盖多种设置,诸如从一个远程应用拖曳到另一个,或从一个应用复制/粘贴对象到多个其他应用的变化。本领域普通技术人员能容易地预料到这样的实施例。虽然本发明描述了从第一应用到第二应用拖拽和放下的单一实例,但本领域技术人员能够想到从第一应用拖曳到第二应用、编辑对象、拖曳被编辑的对象回到第一应用以实时观察变化。
[0071]可通过硬件、软件或者硬件和软件的结合来实施特定实施例。举例并不限于,一个或多个计算机系统可执行特定的逻辑或软件以运行本文所描述和阐明的一个或多个过程中的一个或多个步骤。一个或多个计算机系统可以是单一式或分布式的,在适当情况下,跨多个计算机系统或者多个资料处理中心。本发明适用任何适当的计算机系统。在特定实施例中,运行本文中所描述和阐明的一个或多个过程的一个或多个步骤不必限于一个或多个特定的地理位置并且不必具有时间限制。举例并不限于,一个或多个计算机系统能以“实时”、“脱机”、“批处理方式”执行它们的功能,另外,在适当情况下,也可以前述的“实时”、“脱机”、“批处理方式”的合适的组合执行。在适当情况下,一个或多个计算机系统可在不同的时间、在不同的场所、使用不同的处理执行它们的一个或多个功能。在此,对逻辑的引用可包含软件,并且在适当情况下,反之亦然。对软件的引用可包含一个或多个计算机程序,并且在适当情况下,反之亦然。对软件的引用可包含数据、指令或者它们两者,并且在适当情况下,反之亦然。类似地,对数据的引用可包含指令,并且在适当情况下,反之亦然。
[0072]一个或多个计算机可读存储介质可以存储或以其他方式包含实现特定实施例的软件。在适当情况下,计算机可读介质可以是能够携带、通信、容纳、持有、保持、传播、保留、存储、传输、输送,或以其他方式包含软件的介质。在适当情况下,计算机可读介质可以是生物的、化学的、电子的、电磁的、红外的、磁性的、光学的、量子的或者其他适当的介质,或者两个或多个上述介质的组合。计算机可读介质可包括一个或多个纳米级元件或者以其他方式包含纳米级设计或制造。示例性的计算机可读存储介质包括但是不限于:压缩光盘(CD)、现场可编程门阵列(FPGA)、软盘、软式光盘、硬盘、全息存储设备、集成电路(IC)(诸如专用集成电路(ASIC))、磁带、缓存、可编程逻辑器件(PLD)、随机存取存储器(RAM)设备、只读存储器(ROM)设备、半导体存储器设备、及其他适当的计算机可读存储介质。
[0073]在适当情况下,实现特定实施例的软件能以任何适当的编程语言(其可以是程序性的或者面向对象的)或者编程语言的组合来进行编写。在适当情况下,任何适当类型的计算机系统(诸如单处理器或者多处理器计算机系统)或者多个系统可执行实施特定实施例的软件。在适当情况下,通用计算机系统可执行实施特定实施例的软件。
[0074]例如,图10举例说明了用于实现特定实施例的一个或多个部分的示例性计算机系统1000。虽然本发明描述和阐明了特定配置下的具有特定元件的特定计算机系统1000,但本发明适用任何合适配置下的具有任何合适元件的任何合适的计算机系统。此外,计算机系统1000可具有任何适当的物理形式,例如一个或多个集成电路(1C)、一个或多个印刷电路板(PCB)、一个或多个手持或者其他设备(诸如移动电话或PDA)、一个或多个个人计算机、或者一个或多个超级计算机。
[0075]系统总线1010将计算机系统1000的各子系统彼此连接。在此,对总线的引用包括提供常见功能的一个或多个数字信号线。本发明适用任何适当的系统总线1010,包括具有任何适当的总线架构的任何适当的总线结构(诸如一个或多个存储器总线、一个或多个外围总线、一个或多个本地总线、或者上述总线的组合)。示例性总线架构包括但不限于,工业标准结构(ISA)总线、增强ISA (EISA)总线、微通道架构(MCA)总线、视频电子标准协会本地(VLB)总线、外围元件互连(PCI)总线、PCI快速总线(PC1-X)以及加速图形接口(AGP)总线。
[0076]计算机系统1000包括一个或多个处理器1020 (或者中央处理单元(CPU))。处理器1020可包含缓存1022用于暂时本地存储指令、数据、或者计算机地址。处理器1020与含有存储器1030的一个或多个存储设备相连。存储器1030可包括随机存取存储器(RAM)1032和只读存储器(ROM) 1034。数据和指令可在处理器1020与RAM1032之间双向传输。数据和指令可从R0M1034单向传输到处理器1020。RAM1032和R0M1034可包括任何适当的计算机可读存储介质。
[0077]计算机系统1000包括双向连接到处理器1020的固定的储存器1040。固定的储存器1040可经由储存控制单元1052连接到处理器1020。固定的储存器1040可提供额外的数据存储容量并可包括任何适当的计算机可读存储介质。固定的储存器1040可存储操作系统(OS) 1042、一个或多个可执行文件1044、一个或多个应用或者程序1046、数据1048等等。固定的储存器1040典型地为比主存储器慢的次要存储介质(诸如硬盘)。在适当的情况下,可把由固定的储存器1040存储的信息作为虚拟内存并入内存1030。
[0078]处理器1020可连接到多种接口,诸如,例如,图形控制1054、视频接口 1058、输入接口 1060、输出接口 1062、以及存储器接口 1064,这些接口又可以分别连接到适当的设备上。示例性的输入或输出设备包括但是不限于,视频显示器、轨迹球、鼠标、键盘、麦克风、触控式显示器、读卡器、磁带或者纸带读取器、平板电脑、手写笔、语音或者手写识别器、生物特征读取器或者计算机系统。网络接口 1056可将处理器1020连接到另一个计算机系统或者网络1080。通过网络接口 1056,处理器1020可在执行特定实施例的步骤的过程中从网络1080接收信息或者发送信息给网络1080。特定实施例可在处理器1020上单独地运行。特定实施例可在处理器1020上和在共同操作的一个或多个远程处理器上运行。
[0079]在网络环境中,在计算机系统1000被连接到网络1080的情况下,计算机系统1000可与连接到网络1080的其他设备进行通信。计算机系统1000可经由网络接口 1056与网络1080通信。例如,计算机系统1000可以接收来自网络1080的在网络接口 1056上呈现为一个或多个输入包形式的信息(诸如来自另一个设备的请求或者响应),并且存储器1030可以存储输入包用于后续处理。计算机系统1000可以将来自网络接口 1056的呈现为一个或多个输出包形式的信息(诸如到另一个设备的请求或者响应)发送给网络1080,所述信息在发送之前可由存储器1030存储。根据特定需求,处理器1020可访问存储器1030中的输入或者输出包以对其进行处理。[0080]计算机系统1000可具有一个或多个输入设备1066(其可包括按键、键盘、鼠标、手写笔等)、一个或多个输出设备1068 (其可包括一个或多个显不器、一个或多个扬声器、一个或多个打印机等)、一个或多个存储设备1070、以及一个或多个存储介质1072。输入设备1066可在计算机系统1000外部或者内部。输出设备1068可在计算机系统1000外部或者内部。存储设备1070可在计算机系统1000外部或者内部。存储介质1072可在计算机系统1000外部或者内部。
[0081]特定实施例中包括一个或多个计算机存储产品,其包括一个或多个计算机可读存储介质,一个或多个计算机可读存储介质包含用于执行本文描述或者阐明的一个或多个过程中的一个或多个步骤的软件。在特定实施例中,介质的一个或多个部分、软件或者它们两者可被特别地设计和制造以执行本文描述或者阐明的一个或多个过程中的一个或多个步骤。此外或者作为一种选择方案,在特定实施例中,介质的一个或多个部分、软件或者它们两者在没有对本文描述或者阐明的过程进行具体设计或者制造的情况下可以是通用的。示例性的计算机可读存储介质包括但是不限于,⑶(诸如⑶-ROM)、FPGA、软盘、软式光盘、硬盘、全息存储设备、IC (诸如ASIC)、磁带、缓存、PLD、RAM设备、ROM设备、半导体存储器设备、及其他适当的计算机可读存储介质。在特定实施例中,软件可以是编译器可生成的机器代码或者是包含高级编码的一个或多个文件,所述高级编码可以由计算机通过使用译码器来执行。
[0082]举例但并不限于此,存储器1030可包括一个或多个包含软件的计算机可读存储介质,并且计算机系统1000可提供本文描述或者阐明的特定功能作为处理器1020执行所述软件的结果。存储器1030可存储所述软件并且处理器1020可执行所述软件。存储器1030可从包含软件的大容量存储设备1030的计算机可读存储介质中读取软件或者经由网络接口 1056从一个或多个其它的源中读取软件。当执行软件时,处理器1020可运行本文所描述或者阐明的一个或多个过程中的一个或多个步骤,根据特定需求,其可以包括定义一个或多个存储在存储器1030中的数据结构,以及在软件的一个或多个部分的指引下修改一个或多个数据结构。此外或者作为一种选择方案,由于硬连接的或在电路中所包含的其他方式的逻辑,计算机系统1000可提供本文所描述或者阐明的特定功能,所述计算机系统可代替软件或者和软件一起操作以执行本文所描述或者阐明的一个或多个过程的一个或多个步骤。根据特定的需求,本发明可包括任何合适的硬件和软件的组合。
[0083]在特定实施例中,计算机系统1000可包括一个或多个图形处理单元(GPU) 1024。在特定实施例中,GPU1024可包含一个或多个针对图形渲染中常用的数学运算的集成电路和/或处理核。在一些实施例中,GPU1024可使用专门的图形单元指令集,而在其他的实施方式中,GPU可使用类似CPU的(例如,改进的x86)指令集。图形处理单元1024可实施许多基本图形操作,诸如位图传送、纹理映射、像素着色、帧缓冲等等。在特定实施例中,GPU1024可以是图形加速器、通用GPU (GPGPU)、或者任何其他适当的处理单元。
[0084]在特定实施例中,GPU1024可被包含在图形卡或显示卡中,该图形卡或显示卡通过卡槽安装在硬件系统架构上。在其他实施方式中,GPU1024可集成到计算机系统架构的主板上。适当的图形处理单元可包括基于AMD公司(r) AMD R7XX的GPU设备(Radeon (r)HD4XXX)、基于 AMD R8XX 的 GPU 设备(Radeon (r) HD10XXX)、基于英特尔公司(r) Larabee的 GPU 设备(未发布)、nVidia 公司 Cr) 8 系列 GPU、nVidia (r) 9 系列 GPU、nVidia (r) 100系列 GPU、nVidia (r) 200 系列 GPU、以及任何其他 DXll-capable GPU。
[0085]虽然本发明描述或者阐明以特定顺序发生的特定操作,但本发明适用以任何适当的顺序发生的任何适当的操作。此外,本发明适用以任何适当的顺序被重复一次或者多次的任何适当的操作。虽然本发明描述或者阐明以特定顺序发生的特定操作,但在合适的情况下,本发明适用基本上同时发生的任何适当的操作。在合适的情况下,本文描述或者阐明的任何适当的操作或者操作顺序可被中断、中止、或由另一个过程(诸如操作系统或者内核)控制。动作能够在操作系统环境下进行或者作为占用系统过程的全部或者主要部分的独立程序进行。
[0086]本发明涵盖本领域普通技术人员应当理解的对本文示例性的实施例所做的所有变更、替换、变化、更改和修改。同样,在合适的情况下,所附权利要求涵盖本领域普通技术人员可以理解的对本文示例性的实施例所做的所有变更、替换、变化、更改和修改。
[0087]为实现本发明的目的,计算机可读介质以机器可读形式存储计算机数据,其中数据可以包括计算机可执行的计算机程序编码。举例但不作为限制,计算机可读介质可以包含用于有形或固定存储数据的计算机可读存储介质,或用于含码信号的瞬时译码的通信介质。本文所使用的计算机可读存储介质,是指物理或有形的存储器(和信号不同),并且包括但不限于:在用于信息(诸如计算机可读指令、数据结构、程序模块或其他的数据)的有形存储的任何方法和技术中所实施的易失性的和非易失性的、可移动的和不可拆卸的介质。计算机可读存储介质包括但不限于:RAM、ROM、EPROM、EEPR0M、闪存或其他固态存储技术,CD-ROM、DVD或其他光存储器,磁带盒、磁带、磁盘存储器或其他磁存储设备,或可用于有形存储所需信息或数据或指令的并可被计算机或处理器存取的任何其他物理的或材料的介质。
【权利要求】
1.一种方法,包括: 通过处理器接收第一用户输入; 响应于所述第一用户输入,通过所述处理器选择对象,所述对象由第一应用和渲染API(应用编程接口)在显示器的第一窗口中被渲染; 通过所述处理器经由引擎从所述第一应用提取所述对象,所述引擎监视已收到的用户输入; 通过所述处理器接收第二用户输入; 响应于所述第二用户输入,通过所述处理器将在所述显示器上的所述对象从所述第一窗口拖曳至第二窗口中被渲染的第二应用;以及 响应于所述对象跨越所述第二窗口的聚焦边框,通过所述处理器将所述对象导入到所述第二应用。
2.如权利要求1所述的方法,其特征在于,选择对象包括: 通过所述处理器将所述第一用户输入迂回到所述引擎; 通过所述处理器从所述第一应用到所述渲染API截取绘图命令; 通过所述处理器从所述绘图命令中确定所述对象;以及 通过所述处理器根据选择算法选择所述对象和其他对象。
3.如权利要求2所述的方法,其特征在于,通过所述处理器确定所述对象包括: 通过所述处理器在所述第一用户输入的坐标的场景的近平面上分配摄像机;和 通过所述处理器从所述摄像机到远平面投射光线;以及 通过所述处理器选择所述光线命中的第一对象。
4.如权利要求3所述的方法,还包括: 通过所述处理器接收用户输入以扩展或过滤选区。
5.如权利要求4所述的方法,其特征在于,扩展或过滤所述选区包括: 通过所述处理器选择或取消选择场景中与被选择的所述对象相关的其他对象。
6.如权利要求4所述的方法,其特征在于,扩展或过滤所述选区包括: 通过所述处理器选择或取消选择场景中由进一步的用户输入所指定处理的其他对象,其中所述指定处理包括: 通过所述处理器接收用户输入; 通过所述处理器在所述用户输入的坐标的所述场景的近平面上分配摄像机;以及 通过所述处理器从摄像机到所述远平面投射光线并且指定所述光线命中的所述第一对象。
7.如权利要求1所述的方法,其特征在于,拖曳所述对象包括: 通过所述处理器渲染无边界窗口; 通过所述处理器在所述无边界窗口中渲染选区,其中所述选区包括由所述用户选择的所述对象; 响应于接收将所述无边界窗口从所述第一窗口拖曳至所述第二窗口的用户输入,根据所述用户输入,通过所述处理器移动所述无边界窗口跨过所述显示器。
8.如权利要求7所述的方法,其特征在于,通过所述处理器渲染所述无边界窗口中的所述选区包括:通过所述处理器复制与来自所述第一应用的所述选区相关的所述绘图命令; 通过所述处理器将来自所述第一应用的所述绘图命令插入到所述渲染API的通道中; 通过所述处理器经由所述渲染API渲染所述绘图命令。
9.如权利要求7所述的方法,其特征在于,在所述无边界窗口中渲染所述选区包括: 通过所述处理器获取第一条件,所述第一条件包括来自所述第一应用的光照和环境效果; 通过所述处理器获取第二条件,所述第二条件包括来自所述第二应用的光照和环境效果; 通过所述处理器,根据从所述第一和第二窗口到所述无边界窗口的距离逐步施加所述第一和第二条件。
10.如权利要求1所述的方法,其特征在于,将选区导入第二应用包括: 通过所述处理器将 用于实现的所述选区转换为所述第二应用; 通过所述处理器,在所述转换期间,经由所述第二窗口中的所述引擎渲染所述选区;基于所述转换的完成,通过所述处理器将所述选区导入所述第二应用;以及基于将所述对象导入所述第二应用,通过所述处理器暂停所述引擎渲染处理,并且所述处理器渲染来自所述第二应用内部的所述对象。
11.如权利要求10所述的方法,其特征在于,转换所述选区包括: 通过所述处理器,将所述绘图命令修改为由所述第二应用所采用的文件格式。
12.如权利要求10所述的方法,其特征在于,经由所述引擎渲染所述选区包括: 通过所述处理器,将绘图命令插入渲染API通道,所述渲染API通道可操作地指示所述渲染API,以将所述选区渲染到所述第二窗口。
13.如权利要求11所述的方法,其特征在于,所述第二应用具有其自身的渲染API,并且渲染来自所述第二应用内部的所述选区包括:通过所述处理器利用所述第二应用的渲染API,在所述第二窗口中渲染所述选区。
14.一种系统,包括: 图形处理单元; 处理器;和 存储介质,用于在其上有形地存储所述处理器执行的程序逻辑,所述程序逻辑包括: 第一用户输入接收逻辑,其由所述处理器执行,用于接收第一用户输入; 选择逻辑,其由所述处理器执行,用于响应于接收所述第一用户输入,在显示器的第一窗口中通过第一应用和渲染API选择渲染对象; 提取逻辑,其由所述处理器执行,用于经由监视所接收的用户输入的引擎,从所述第一应用提取所述对象; 第二用户输入接收逻辑,其由所述处理器执行,用于接收第二用户输入; 拖曳逻辑,其由所述处理器执行,用于响应于接收所述第二用户输入,将所述显示器上的所述对象从所述第一窗口拖曳至第二窗口中被渲染的第二应用;以及 导入逻辑,其由所述处理器执行,用于响应于所述对象跨过所述第二窗口的所述聚焦边框,将所述对象导入所述第二应用。
15.如权利要求14所述的系统,其特征在于,由所述处理器执行以选择对象的所述选择逻辑包括: 迂回逻辑,其由所述处理器执行,用于迂回来自所述第一应用的所述第一用户输入;截取逻辑,其由所述处理器执行,用于截取从所述第一应用至所述渲染API的所述绘图命令; 确定逻辑,其由所述处理器执行,用于确定来自与所述第一用户输入相关的所述绘图命令的所述对象;以及 选择逻辑,其由所述处理器执行,用于根据选择算法选择三维对象和其他对象。
16.如权利要求14所述的系统,其特征在于,由所述处理器确定所述对象包括: 分配逻辑,其由所述处理器执行,用于在所述第一用户输入的坐标中的所述场景的近平面上分配摄像机;和 光线投射逻辑,其由所述处理器执行,用于从所述摄像机到所述远平面投射光线并选择所述光线命中的第一对象。
17.如权利要求14所述的系统,其特征在于,所述拖曳逻辑包括: 窗口渲染逻辑,其由处理器执行,用于渲染无边界窗口 ; 选区渲染逻辑,其由处理器执行,用于渲染所述无边界窗口中的选区,其中所述选区包括由所述用户选择的所述对象; 移动逻辑,其由所述处理器执行,用于响应于接收将所述无边界窗口从所述第一窗口拖曳至所述第二窗口的用户输入,根据所述用户输入,将所述无边界窗口移动跨越过所述显示器。
18.由权利要求14所述的系统,其特征在于,所述导入逻辑还包括: 转换逻辑,其由所述处理器执行,用于将用来实现的所述选区转换成所述第二应用,基于所述转换的完成,使得所述选区被导入所述第二应用; 渲染逻辑,其由所述处理器执行,用于在所述转换处理期间渲染所述第二窗口中的所述选区;和 暂停逻辑,其由所述处理器执行,用于暂停所述引擎渲染处理,并且基于将所述对象导入所述第二应用,渲染来自所述第二应用内部的所述对象。
19.如权利要求17所述的系统,其特征在于,所述选区渲染逻辑还包括: 第一条件获取逻辑,其由所述处理器执行以获取第一条件,所述第一条件包括来自所述第一应用的光照和环境效果; 第二条件获取逻辑,其由所述处理器执行以获取第二条件,所述第二条件包括来自所述第二应用的光照和环境效果; 条件施加逻辑,其由所述处理器执行,用于根据从所述第一和第二窗口到所述无窗口边界的距离逐步施加所述第一和第二条件。
20.一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时使所述处理器执行以下步骤: 接收第一用户输入; 响应于所述第一用户输入,通过第一应用和渲染API在显示器的第一窗口中选择渲染对象; 经由引擎从所述第一应用提取所述对象;接收第二用户输入; 响应于所述第二用户输入,将所述显示器上的所述对象从所述第一窗口拖曳至第二窗口中被渲染的第二应用; 响应于所述对象跨过 所述第二窗口的聚焦边框,将所述对象导入所述第二应用。
【文档编号】G06F9/44GK103733170SQ201280039386
【公开日】2014年4月16日 申请日期:2012年8月10日 优先权日:2011年8月12日
【发明者】朱利安·M·乌尔巴赫 申请人:Otoy公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1