专利名称:基于图像和几何场景合成的统一表面模型的制作方法
技术领域:
本发明一般涉及用于3D图形的建模语言,并且更具体地说,涉及将图像嵌入场景中。
背景技术:
在计算机图形学中,传统的实时3D场景渲染是基于场景的3D几何学描述的评估,使得在计算机显示器上产生图像呈现(presentation)。虚拟现实建模语言(下文称为VRML)是常规建模语言,其定义了在常规3D应用(诸如分层转换、光源、视图原点、几何、动画、雾化、材料特性和纹理映射)中所发现的大部分常用的语义学。纹理映射过程通常用于将外部提供的图像数据应用到场景内的给定几何图形。例如,VRML允许将外部提供的图像数据、外部提供的视频数据或外部提供的像素数据应用到表面。然而,VRML不允许将渲染的场景用作要说明性地纹理映射到另一场景中的图像。在说明性标记语言中,获得期望结果所需的语义学是隐含的,并且因此结果的描述足够得到期望的结果。这样,不必提供得到期望结果的过程(即写脚本)。因此,希望能够使用说明来合成场景。说明性语言的一个示例是超文本标记语言(HTML)。
此外,希望说明性地组合任意两个表面,在其上应用图像数据以产生第三表面。还希望说明性地重新渲染应用到表面的图像数据以反映该图像的当前状态。
传统上,整体地渲染3D场景,给由场景复杂性或纹理交换确定的最坏情况性能所控制的观察器产生最终帧速率。然而,如果在同一屏幕上对于不同单元使用不同的渲染速率,则质量会提高,并且观看体验会更像电视而不像网页的观看体验。
发明内容
一种用于借助有效的说明性标记语言的复杂、动态和交互体验的实时合成与呈现的系统和方法。使用表面构造,开发者可以将图像或全运动视频数据嵌入到在其3D场景内他们要使用传统纹理映射的任何地方。开发者还可以将渲染一个场景描述的结果用作要被纹理映射到另一个场景中的图像。具体地说,表面允许将任何渲染应用的结果用作开发者的场景内的纹理。这允许用去耦(decoupled)渲染速率说明性地渲染嵌套场景以及渲染具有分量表面的场景。
图1A示出了Blendo的基本结构。
图1B是说明通过Blendo引擎的内容流的流程图。
图2A说明如何以不同的渲染速率渲染场景中的两个表面。
图2B是说明在以不同的渲染速率渲染图2A所示的两个表面中所涉及的操作的流程图。
图3A说明嵌套场景。
图3B是显示渲染图3A的嵌套场景所执行的操作的流程图。
具体实施例方式
Blendo是本发明的示范性实施例,它允许媒体资产的暂时操作,包括动画和可视影像的控制以及到正在播放的媒体资产的音频媒体、视频媒体、动画和事件数据的插入字幕。图1示出了基本Blendo结构。Blendo结构的核心处是核心运行时间模块10(下文称核心),它给出了各种应用编程接口(下文称API)单元和到在系统11中给出的对象集的对象模型。在正常操作期间,解析器14将文件解析为原始场景图16,并传递到核心10,在此用具体例子说明它的对象,并构建运行时间场景图。对象可以是内置对象18、开发者定义的对象20、本机对象24等。对象使用可用的管理器26的集合以获得平台服务32。这些平台服务32包括事件处理、资产加载、媒体播放等。对象使用渲染层28来合成中间或最终图像用于显示。页面集成部分30用于将Blendo对接到外部环境,诸如HTML或XML页面。
Blendo包含关于管理器26集合的系统对象。每个管理器26提供API集合以控制系统11的某方面。事件管理器26D提供访问由用户输入或环境事件所引起的输入系统事件。加载管理器26C便于Blendo文件和本机节点实现的加载。媒体管理器26E提供加载、控制和播放音频、图像和视频媒体资产的能力。渲染管理器26G允许渲染场景所用的对象的创建和管理。场景管理器26A控制场景图。表面管理器26F允许在其上可合成场景单元和其它资产的表面的创建和管理。线程管理器26B给开发者产生并控制线程以及在它们之间通信的能力。
图1B说明通过Blendo引擎的内容流的概念性描述的流程图。在块50中,呈现开始于包括被带入解析器14(图1A)的内容的文件或流34(图1A)的源。该源可以本机的类似VRML的文本格式、本机二进制格式、基于XML的格式等。不管源的格式,在块55中,将源转换为原始场景图16(图1A)。原始场景图16可以表示内容中的节点、字段和其它对象,以及字段初始化值。它还可包含对象原型的描述、流34中的外部原型引用和路由语句。
原始场景图16的顶层包括节点、顶层字段和函数、包含在文件中的原型和路由。除传统单元外,Blendo还允许字段和函数在顶层。这些用于给外部环境(诸如HTML页面)提供接口。当流34用作外部原型的内容时,它们还提供对象接口。
每个原始节点包括在其范围内初始化的字段列表。每个原始字段项包括那个字段的名称、类型(如果给出)和数据值。每个数据值包括可表示明确输入的字段值的数字、字符串、原始节点和/或原始字段。
在块60中,从原始场景图16(图1A)的顶层提取原型,并将其用于填充可由这个场景访问的对象原型的数据库。
然后通过构建遍历发送原始场景图16。在这个遍历过程中,使用对象原型的数据库构建每个对象(块65)。
在块70中,建立流34中的路由。随后,在块75中,初始化场景中的每个字段。这是通过将初始事件发送到对象的非缺省字段来实现的。由于通过使用节点字段获得场景图结构,所以块75也构造场景层次。使用整齐遍历激发事件。遇到的第一节点列举节点中的字段。如果字段是节点,则首先遍历那个节点。
因此,初始化树的那个特定分支中的节点。然后,将事件发送到具有节点字段初始值的那个节点字段。
在给定节点已经将其字段初始化之后,允许开发者将初始化逻辑(块80)加到原型对象,以确保在调用时间完全初始化该节点。上述块产生根场景。在块85中,场景被传递到为场景创建的场景管理器26A(图1A)。在块90中,场景管理器26A用于隐含地或在开发者控制下渲染并执行特性处理。
使用来自Blendo对象层次中的对象可构造由场景管理者26A渲染的场景。对象可从其父对象中导出一些它们的功能性,并随后扩展或修改其功能性。层次的底部是对象。从对象导出的对象的两个主要类是节点和字段。其中,节点包含作为一部分渲染遍历调用的渲染方法。节点的数据属性称为字段。在Blendo之中,对象层次是称为“定时对象”的对象的类,下面详细描述。下面的代码部分用于示范目的。应该注意到,每个代码部分中的行号只表示那个特定代码部分的行号,而不表示原始源代码中的行号。
表面对象表面对象是类型“表面节点”的节点。“表面节点”类是将2D图像描述为色彩、深度和不透明度值(α)值的阵列的所有对象的基本类。“表面节点”主要用于提供要用作纹理映射的图像。从“表面节点”类导出的是“电影表面”、“图像表面”、“遮片(matte)表面”、“像素表面”和“场景表面”。应该注意到,各代码部分的行号只表示那个代码部分的行号,而不表示原始源代码中的行号。
电影表面以下代码部分说明“电影表面”节点。之后为节点中各字段的描述。
1)MovieSurfaceSurfaceNode TimedNode AudioSourceNode{2) field MF String url []3) field TimeBaseNode timeBase NULL4) field Time duration05) field Time loadTime 06) field StringloadStatus “NONE”}通过提供访问定义电影的图像序列,“电影表面”节点将电影渲染在表面上。“电影表面”的“定时节点”父类确定在任一时刻哪个帧被渲染到该表面上。电影还可用作音频源。
在代码部分的第2行中,(“多值字段”)URL字段提供用于表面的电影数据的潜在位置列表。将该列表排序,以使单元0描述数据的优选源。如果因为任何原因单元0不可用,或者以不支持的格式,则可使用下一单元。
在第3行中,“时基”字段(如果指定了)指定要为电影提供定时信息的节点。具体地说,“时基”会给电影提供确定在任一给定时刻电影的哪个帧在表面上显示所需的信息。如果没有指定“时基”,则该表面将显示电影的第一帧。
在第4行中,一旦已经取出电影数据,“电影表面”节点就将持续时间字段设置为电影的长度(以秒为单位)。
在第5和第6行,“加载时间”和“加载状态”字段提供来自“电影表面”节点有关电影数据可用性的信息。“加载状态”具有5个可能的值“无”、“请求”、“失败”、“中止”和“加载”。
“无”是初始状态。如果通过将值的数量设置为0或将第一URL字符串设置为空字符串而将节点的url清零,则也发送“无”事件。当这发生时,表面的像素被设为黑色且不透明(即,色彩为0,0,0并且透明度为0)。
每当设置非空url值时,就发送“请求”事件。在“请求”事件之后,表面的像素保持不变。
如果电影加载没有成功,则在“请求”事件之后发送“失败”。例如在URL引用不存在的文件或在该文件不包含有效数据的情况下,这可能发生。在“失败”事件之后,表面的像素保持不变。
如果当前状态是“请求”,则发送“中止”事件,并且然后URL再改变。如果URL变为非空值,则“中止”之后为“请求”事件。如果URL变为空值,则“中止”之后为“无”值。在“中止”事件之后,表面的像素保持不变。
当准备显示电影时,发送“加载”事件。该事件之后为“加载时间”事件,其值与当前时间相匹配。由“时基”字段指示的电影的帧被渲染到表面上。如果“时基”是空,则将电影的第一帧渲染到表面上。
图像表面以下代码部分说明“图像表面”节点。之后为节点中各字段的描述。
1)ImageSurfaceSurfaceNode{2) field MF Stringurl []3) field Time loadTime04) field String loadStatus “NONE”}“图像表面”节点将图像文件渲染到表面上。在代码部分的第2行中,URL字段提供用于该表面的图像数据的潜在位置列表。该列表被排序以使单元0描述数据的最优选源。如果因为任何原因单元0不可用,或以不支持的格式,则可使用下一单元。
在第3行和第4行中,“加载时间”和“加载状态”字段提供来自“图像表面”节点有关图像数据可用性的信息。“加载状态”具有五个可能的值“无”、“请求”、“失败”、“中止”以及“加载”。
“无”是初始状态。如果通过将值的数量设置为0或将第一URL字符串设置为空字符串而将节点的URL清零,则也发送“无”事件。当这发生时,表面的像素被设置为黑色且不透明(即,色彩为0,0,0并且透明度为0)。
每当设置非空URL值时,就发送“请求”事件。在“请求”事件之后,表面的像素保持不变。
如果图像加载没有成功,则在“请求”事件之后发送“失败”。例如在URL引用不存在的文件或在该文件不包含有效数据的情况下,这可能发生。在“失败”事件之后,表面的像素保持不变。
如果当前状态是“请求”,则发送“中止”事件,并且然后URL再改变。如果URL变为非空值,则“中止”之后将是“请求”事件。如果URL变为空值,则“中止”之后将是“无”值。在“中止”事件之后,表面的像素保持不变。
当图像已经被渲染到表面上时,发送“加载”事件。该事件之后为“加载时间”事件,其值与当前时间相匹配。
遮片表面以下代码部分说明“遮片表面”节点。之后为节点中各字段的描述1)MatteSurfaceSurfaceNode{2) field SurfaceNode surface1 NULL3) field SurfaceNode surface2 NULL4) field String operation ““5) field MF Float parameter06) field Bool overwriteSurface2 FALSE}“遮片表面”节点使用图像合成操作来将来自表面1和表面2的图像数据组合到第三表面上。以表面2的分辨率计算合成操作的结果。如果表面1的尺寸与表面2的不同,则在执行该操作前将表面1上的图像数据放大或缩小以使表面1的尺寸等于表面2的尺寸。
在代码部分的第2行和第3行中,表面1和表面2字段指定为合成操作提供输入图像数据的两个表面。在第4行中,操作字段指定合成功能在两个输入表面上执行。下面描述可能的操作。
“REPLACE_ALPHA”用来自表面1的数据覆写表面2的α通道A。如果表面1有1个分量(只是灰度级强度),则那个分量用作α(不透明度)值。如果表面1有2或4个分量(灰度级强度+α或RGBA),则α通道A用于提供α值。如果表面1有3个分量(RGB),则操作是未定义的。这个操作可用于为静态或动态图像提供静态或动态α遮罩(mask)。例如,“场景表面”可相对于透明背景渲染动画的詹姆斯.邦德人物。然后这个图像的α分量可用作视频剪辑的遮罩形状。
“MULTIPLY_ALPHA”类似于REPLACE_ALPHA,只是来自表面1的α值与来自表面2的α值相乘。
“CROSS_FADE”使用参数值在两个表面之间消退(fade)以控制可见的各表面的百分比。这个操作可动态地在两个静态或动态图像之间消退。通过将参数值(第5行)从0激励为1,表面1上的图像消退到表面2的图像中。
“混合”使用来自表面2的α通道组合来自表面1和表面2的图像数据以控制混合百分比。这个操作允许表面2的α通道控制两个图像的混合。通过渲染“场景表面”或播放“电影表面”来激励表面2的α通道,你可以产生复杂的移动遮片效果。如果R1、G1、B1和A1表示表面1像素的红、绿、蓝和α值,并且R2、G2、B2和A2表示表面2对应像素的红、绿、蓝和α值,则那个像素的红、绿、蓝和α分量的结果值为红=R1*(1-A2)+R2*A2 (1)绿=G1*(1-A2)+G2*A2 (2)蓝=B1*(1-A2)+B2*A2 (3)α=1 (4)
“加”和“减”增加或减少表面1和表面2的色彩通道。结果的α等于表面2的α。
在第5行中,参数字段提供一个或多个浮点参数,这些参数可改变合成功能的效果。参数值的具体解释取决于哪个操作被指定。
在第6行中,“覆写表面2”字段指示“遮片表面”节点是否应该分配新的表面用于存储合成操作的结果(“覆写表面2”=假),或者存储在表面2上的数据是否应该被合成操作覆写(“覆写表面2”=真)。
像素表面以下代码部分说明“场景表面”节点。之后为节点中各字段的描述。
1)PixelSurfaceSurfaceNode{2)field Image image 000}“像素表面”节点将用户指定像素的阵列渲染到表面上。在第2行中,图像字段描述渲染到该表面上的像素数据。
场景表面以下代码部分说明“场景表面”节点的使用。之后为节点中各字段的描述。
1)SceneSurfaceSurfaceNode{2) field MF ChildNode children []3) field UInt32 width 14) field UInt32 height1}“场景表面”节点将指定的子代(children)渲染在指定尺寸的表面上。“场景表面”自动地重新渲染它自己以反映其子代的当前状态。
在代码部分的第2行中,子代字段描述要渲染的“子节点”。概念上,子代字段描述独立于包含“场景表面”节点的场景图渲染的整个场景图。
在第3行和第4行中,宽度和高度字段以像素为单位指定表面的尺寸。例如,如果宽度为256且高度为512,则表面包含256×512像素值阵列。
在渲染场景中利用“电影表面”、“图像表面”、“遮片表面”、“像素表面”&“场景表面”节点。
在场景描述的顶层,输出被映射到显示器“顶层表面”上。3D渲染场景可使用上述“表面节点”中的一个在表面上产生其输出,而不是将其结果渲染到显示器,其中输出可用于结合到如开发者期望的更丰富的场景合成中。通过渲染表面的嵌入场景描述而产生的表面内容可包括作为表面的结构化图像组织一部分的色彩信息、透明度(α通道)和深度。在本文中将图像定义为包括视频图像、静止图像、动画或场景。
在通用图像管理接口之后,还将表面内部定义为支持各种纹理映射系统的专用需求。因此,系统中的任何表面发生器都可由3D渲染过程用作纹理。这种表面发生器的例子包括“图像表面”、“电影表面”、“遮片表面”、“场景表面”以及“应用表面”。
“应用表面”保持如由其嵌入应用进程渲染的图像数据,诸如电子表格或文字处理器,类似于传统视窗系统中应用窗口的方式。
具有渲染产物和纹理消耗的表面模型集成允许去耦渲染速率的说明性设计。传统上,已经整体地渲染3D场景,给由场景复杂性和纹理交换引起的最坏情况性能所控制的观察器产生了最终帧速率。在实时、连续的合成构架中,表面提取提供了用于对同一屏幕上不同单元去耦渲染速率的机制。例如,可以接受描绘缓慢渲染(大概每秒一帧)的网页浏览器,但只在由另一个应用产生并在浏览器的输出侧显示的视频帧速率能被维持在每秒整30帧的时候。如果网页浏览应用绘制到它自己的表面,则屏幕合成器可以全运动视频帧速率无障碍地渲染,将来自网页浏览器的表面的最终完整绘制的图像用作其快速屏幕更新的一部分。
图2A说明用于以全运动视频帧速率渲染屏幕显示200的复杂部分202的方案。图2B是说明在以全运动视频率渲染包含复杂部分202的屏幕显示200中所包含的各种操作的流程图。可能希望以每秒30帧显示屏幕显示200,但是屏幕显示200的部分202可能太复杂以至于不能以每秒30帧显示。在此情况下,部分202被渲染在第一表面上,并存储在缓冲器204中,如块210(图2B)所示。在块215中,通过使用存储在缓冲器204中的第一表面,以每秒30帧显示包括部分202的屏幕显示200。当显示包括部分200的屏幕显示200时,部分202的下一帧渲染在第二表面上,并存储在缓冲器206中,如块220所示。一旦部分202的这个下一帧可用,屏幕显示200的下一更新就使用第二表面(块225)并继续这样做,直到在缓冲器204中部分202的另一更新版本可用为止。当正在使用第二表面显示屏幕显示200时,部分202的下一帧被渲染在第一表面上,如块230所示。当第一表面上下一帧的渲染完成时,更新的第一表面将用于以每秒30帧显示包括复杂部分202的屏幕显示200。
具有渲染产物和纹理消耗的表面模型集成允许嵌套场景被说明性地渲染。作为图像渲染的子场景的重新合成使能够可扩充设计。具体地说,然后被图像混合到更大视频环境中的动画子场景的使用使娱乐计算机图形能够具有更恰当的美感。例如,图像混合方法给视觉艺术家提供了上一代视窗系统的粗略硬边剪裁的备选。
图3A描绘了包含动画子场景的嵌套场景。图3B是显示渲染图3A的嵌套场景所执行操作的流程图。块310渲染在屏幕显示200上显示的背景图像,并且块315将立方体302置于在屏幕显示200上显示的背景图像内。立方体302的外部区域是在显示200上形成立方体302的背景的一部分表面。立方体302的面304被定义为第三表面。块320使用“电影表面”节点将电影渲染在第三表面上。这样,立方体的面304显示在第三表面上渲染的电影。立方体302的面306被定义为第四表面。块325使用“图像表面”节点将图像渲染在第四表面上。这样,立方体的面306显示在第四表面上渲染的图像。在块330中,整个立方体302被定义为第五表面,并在块335中平移和/或旋转这个第五表面,由此创建在面304上播放电影并在面306上显示静态图像的移动立方体52。通过遵循上述过程,可以在立方体302的每个面上显示不同的渲染。应该注意到,可以包含同时使所有块310到335开始的任何顺序来实现块310到335。
要理解到,本发明与Blendo无关,并且它可以是从Blendo中分离出的实施例的一部分。还要理解到,虽然本发明的描述描述了3D场景渲染,但本发明同样适用于2D场景渲染。表面模型使开发者能够自由地混合图像和视频效果与2D和3D几何映射和动画。
虽然已经示出并描述了本发明的具体实施例,但对于本领域的技术人员显而易见的是,在不脱离本发明的情况下在其更宽方面可以做出改变和修改,并且因此,附属权利要求要将所有落入本发明真实精神和范围内的这种改变和修改包含在其范围内。
权利要求
1.一种计算机系统,包括计算机和由所述计算机执行的计算机程序,其中所述计算机程序包括计算机指令,用于使用第一表面和第二表面合成动态图像,第一表面具有在其上渲染的第一图像,第二表面具有在其上渲染的第二图像;其中,将来自第一表面的第一图像与来自第二表面的第二图像组合,以合成所述动态图像。
2.如权利要求1所述的计算机系统,其中第一图像和第二图像选自包括视频图像、静止图像、动画和场景的组。
3.如权利要求2所述的计算机系统,其中将第一图像渲染在第一二维像素阵列上,并将第二图像渲染在第二二维像素阵列上。
4.如权利要求2所述的计算机系统,其中根据说明性指令合成所述动态图像。
5.如权利要求4所述的计算机系统,其中实时地合成所述动态图像。
6.如权利要求2所述的计算机系统,其中实时地合成所述动态图像。
7.如权利要求2所述的计算机系统,其中第一图像具有第一不透明度值,第二图像具有第二不透明度值,并且所述动态图像具有第三不透明度值。
8.如权利要求7所述的计算机系统,还包括计算机指令,用于当将第一图像和第二图像组合以产生所述动态图像时,用第一不透明度值覆写第二不透明度值。
9.如权利要求7所述的计算机系统,还包括计算机指令,用于将第一不透明度值与第二不透明度值相乘以获得第三不透明度值。
10.如权利要求7所述的计算机系统,还包括计算机指令,用于当组合第一图像与第二图像时,激励第二图像的所述不透明度值,由此产生移动遮片效果。
11.一种计算机系统,包括计算机和由所述计算机执行的计算机程序,其中所述计算机程序包括计算机指令,用于将第一图像渲染在第一表面上;将第二图像渲染在第二表面上;将第三场景渲染在第三表面上;其中第一图像用作第三场景的纹理,并将第二图像与所述纹理混合以形成第三场景。
12.如权利要求11所述的计算机系统,其中用户提供说明性指令以渲染第一图像、第二图像和第三场景。
13.如权利要求11所述的计算机系统,其中第二图像随时间改变。
14.如权利要求11所述的计算机系统,还包括计算机指令,用于将第四场景说明性地渲染在第四表面上,其中在第四场景内混合第三场景以形成第四场景内的子场景。
15.如权利要求14所述的计算机系统,其中所述子场景内的第二图像改变以反映第二表面上的第二图像中的改变。
16.如权利要求11所述的计算机系统,其中第一图像和第二图像可选自包括视频图像、静止图像、动画和场景的组。
17.一种计算机系统,包括计算机和由所述计算机执行的计算机程序,其中所述计算机程序包括计算机指令,用于以第一渲染速率渲染第一场景;以及以第二渲染速率渲染第二场景,其中第二场景形成第一场景内的子场景。
18.如权利要求17所述的计算机系统,其中基于说明性指令渲染第一场景和第二场景。
19.如权利要求17所述的计算机系统,其中第二场景的第一渲染存储在第一缓冲器中,并且第二场景的第二渲染存储在第二缓冲器中,并且不断地更新第一渲染和第二渲染,每次更新一个渲染。
20.如权利要求19所述的计算机系统,其中使用选自包括第一渲染和第二渲染的组的最近的渲染来刷新所述子场景。
21.如权利要求20所述的计算机系统,其中第一渲染速率等于第二渲染速率。
22.一种使用计算机合成动态图像的方法,所述方法包括将第一图像渲染在第一表面上;将第二图像渲染在第二表面上;以及组合第一图像与第二图像以合成所述动态图像。
23.如权利要求22所述的方法,其中第一图像和第二图像选自包括视频图像、静止图像、动画和场景的组。
24.如权利要求23所述的方法,其中所述场景包含来自包括视频图像、静止图像、动画和场景的组的至少一个图像。
25.如权利要求22所述的方法,还包括在第一二维像素阵列上渲染第一图像,以及在第二二维像素阵列上渲染第二图像。
26.如权利要求22所述的方法,还包括提供说明性指令以合成所述动态图像。
27.如权利要求22所述的方法,其中实时地合成所述动态图像。
28.如权利要求22所述的方法,还包括为第一图像提供第一不透明度值;为第二图像提供第二不透明度值;为所述动态图像提供第三不透明度值。
29.如权利要求28所述的方法,还包括用第一不透明度值覆写第二不透明度值。
30.如权利要求28所述的方法,还包括将第一不透明度值与第二不透明度值相乘以获得第三不透明度值。
31.如权利要求28所述的方法,还包括当组合第一图像与第二图像时,激励第二图像的所述不透明度值,由此产生遮片效果。
32.一种使用计算机合成场景的方法,所述方法包括将第一图像渲染在第一表面上;将第二图像渲染在第二表面上;将第一场景渲染在第三表面上,其中将第一图像用作所述场景的纹理并将第二图像与所述纹理混合以形成第一场景。
33.如权利要求32所述的方法,还包括提供说明性指令以渲染第一图像、第二图像和第一场景。
34.如权利要求32所述的方法,其中第二图像随时间改变。
35.如权利要求32所述的方法,其中第一图像和第二图像选自包括视频图像、静止图像、动画和场景的组。
36.一种使用计算机显示场景的方法,所述方法包括以第一渲染速率渲染第一场景;以及以第二渲染速率渲染第二场景,其中第二场景形成第一场景内的子场景。
37.如权利要求36所述的方法,还包括提供说明性指令以渲染第一场景和第二场景。
38.如权利要求36所述的方法,还包括将第二场景的第一渲染存储在第一缓冲器中,并将第二场景的第二渲染存储在第二缓冲器中;以及不断地更新第一渲染和第二渲染,每次更新一个渲染。
39.如权利要求36所述的方法,还包括使用选自包括第一渲染和第二渲染的组的最近的渲染来渲染所述子场景。
40.如权利要求36所述的方法,其中第一渲染速率不同于第二渲染速率。
全文摘要
一种用于借助有效的说明性标记语言(图1A,项12)的复杂、动态和交互体验的实时合成与呈现的系统和方法(图1A,项11)。使用表面构造,开发者可以将图像或全运动视频数据(图1A,项20)嵌入到其3D场景内他们要使用传统纹理映射的任何地方。开发者还可以将渲染一个场景描述的结果用作要纹理映射到另一个场景中的图像(图1A,项28)。具体地说,表面允许任何渲染应用的结果被用作开发者的场景内的纹理(图1A,项28)。这允许用去耦渲染速率说明性地渲染嵌套场景和渲染具有分量表面的场景(图1A,项26F)。
文档编号G06T15/04GK1695169SQ02829813
公开日2005年11月9日 申请日期2002年11月1日 优先权日2002年11月1日
发明者C·F·马琳, R·K·梅亚斯, J·R·肯特, P·G·布劳维尔 申请人:索尼电子有限公司