有向无环图中的约束评估的制作方法
【专利摘要】下文描述了与评估依赖关系图来利用约束渲染三维(3D)图形相关的系统和处理。访问虚拟3D空间中的两个虚拟3D对象。接收约束关系请求,其将第一对象识别为起源而且将第二对象识别为产物。该技术验证了对象的图形是否兼容以彼此约束。第一对象被评估来确定其转变、旋转和缩放。根据第一对象的转变、旋转和缩放类似地评估第二对象。图像被渲染以描绘第一虚拟3D对象的至少一部分和第二虚拟3D对象的至少一部分。
【专利说明】有向无环图中的约束评估
[0001] 相关申请的交叉引用
[0002] 本申请请求2012年8月3日向美国专利商标局提交的美国临时专利申请 No. 61/679, 665的优先权,其整体内容在此通过引用并入本文。
【技术领域】
[0003] 本发明涉及对虚拟三维(3D)对象的操作,而且在具体示例中涉及利用有向无环 图(DAG)在虚拟3D空间中对虚拟3D对象进行相互约束。
【背景技术】
[0004] 动画媒体制作中的场景通常包括多个对象,例如人物或物品。为了提供真实感,对 象被操作成表现成以与现实世界相类似的方式进行互动。例如,场景可能包括正移动的或 者正操作诸如剑之类的柱体物品的主人公。为了实现该效果,动画师用户在制作期间可手 动地与人物的手的移动一起在虚拟三维(3D)空间中逐帧地移动剑柄。在记录了图像之后, 剑看起来在动画中与人物的手的移动一起移动。
[0005] 媒体制作通常使用图形来渲染、驱动或描绘动画中的场景。有向无环图(DAG)可 被用来表示人物和物品。图形可包括互连节点系统,其对诸如输入属性之类的输入数据执 行计算,并产生诸如输出属性之类的输出数据。通过改变馈入对象输入的动画控制,动画师 用户可控制对象的移动、位置和其它视觉效果。
[0006] 随着媒体制作创建了更逼真的动画,用于支持这些动画的图形中的节点的复杂性 和数量也增大。例如,随着人物被提升至包括视觉元素以及更现实的移动,描绘人物的图形 可变得更大而且更复杂。为了创建视觉上吸引人的动画,在复杂的人物之间以及在人物和 物品之间以逼真的方式制作动画互动是有用的。由此,描述了用于利用约束来操作人物和 物品的优化技术。
【发明内容】
[0007] 描述了用于利用约束评估依赖关系图以渲染三维(3D)图形的处理。在一个示例 中,访问表示第一虚拟3D对象的第一有向无环图(DAG)。还访问表示第二虚拟3D对象的第 二DAG。接收约束关系请求。约束关系请求将第一 DAG识别为约束起源而将第二DAG识别 为约束产物。验证第一 DAG是否兼容用于约束第二DAG。响应于第一 DAG和第二DAG兼容 用于约束,第一 DAG的输出被连接至第二DAG的输入。第一 DAG被评估以确定第一 DAG的 输出处的第一输出值。响应于确定第一输出值影响了第二DAG的评估,根据在第二DAG的 输入处从第一 DAG的输出接收到的第一输出值来评估第二DAG。在确定完成了第一 DAG和 第二DAG的评估之后,对描绘第一虚拟3D对象的至少一部分和第二虚拟3D对象的至少一 部分的图像进行渲染。
[0008] 在另一不例中,根据第一输出值来评估第二DAG包括利用基于与第一 DAG相关的 转变、旋转或缩放中的至少一个的操作值来评估第二DAG。在另一示例中,处理还接收另一 约束关系请求。另一约束关系请求将第二DAG识别为约束起源并且将第一 DAG识别为约束 产物。评估第二DAG产生了第二输出值。第二输出值是在第二DAG的输出处产生的。响应 于确定第二输出值影响了第一 DAG的评估,根据在第一 DAG的输入处从第二DAG的输出接 收到的第二输出值来评估第一 DAG。
[0009] 在另一不例中,根据第一输出值来评估第二DAG包括利用基于与第一 DAG相关的 转变、旋转或缩放的操作值来评估第二DAG。类似地,根据第二输出值来评估第一 DAG包括 利用基于与第二DAG相关的转变、旋转或缩放中的至少一个的操作值来评估第一 DAG。
【专利附图】
【附图说明】
[0010] 本专利或申请文件至少包含彩色下执行的一个附图。对具有彩色附图的本专利或 专利申请公开的复制由专利局根据申请并在支付必要费用后提供。
[0011] 通过结合附图参考后续说明能够最好地理解本申请,其中相同数字可引用相同部 分。
[0012] 图1A和1B图示出虚拟人物的手和虚拟树枝柱体物品的示意描绘。
[0013] 图2图示出约束至已经旋转的手的示例性柱体物品。
[0014] 图3图示出动画人物和树枝柱体物品之间的示例性无环约束关系。
[0015] 图4图示出动画人物和树枝柱体物品之间的示例性有环约束关系。
[0016] 图5描绘了用于评估两个虚拟3D对象的DAG之间的约束关系的示例性处理。
[0017] 图6描绘了示例性动画计算系统。
【具体实施方式】
[0018] 提供下面的描述以使得本领域普通技术人员能够做出及实现各种实施例。具体装 置、技术和应用的描述仅仅被提供作为示例。本领域普通技术人员很容易想到对此处描述 的示例的各种修改,而且此处定义的总原理可适用于其它示例和应用,而不脱离本技术的 精神和范围。因此,公开的技术并不限于此处描述和表示的示例,而是与权利要求一致的相 应范围。
[0019] 下文描述了与用于利用约束系统来在虚拟3D空间中操作虚拟三维(3D)对象的处 理相关的各种实施例。例如,可在虚拟3D空间中对两个3D对象进行相互约束以使得它们 一起移动、旋转和缩放。这可能产生两个对象虚拟地彼此附接的表象。
[0020] 图1A和1B图示出虚拟人物的手102和虚拟树枝柱体物品106的示例图示。手 102和柱体106的每个都具有其自己的操作空间。手102与起源空间104关联。对手102 作用的对象操作器相对于起源空间104而操作手102。因此,馈入手102的操作器的值相对 于起源空间104进行转变。示例性操作包括转变、旋转和缩放。
[0021] 柱体106与产物空间108关联。对柱体106作用的对象操作器相对于产物空间 108操作柱体106。因此,馈入柱体106的操作器的值相对于产物空间108进行转变。示例 性操作包括转变、旋转和缩放。
[0022] 图1A中手102和柱体106的操作空间被分别识别为起源和产物操作空间,与图1B 一致。当柱体106未约束至手102时,柱体106和手102之间没有起源/产物约束关系。 相反,手102和柱体106可被彼此独立地操作。当手102和柱体106没有约束至彼此时,对 于动画师用户来说,让柱体106看起来在一段时间段内或者多个帧中被手102把持是很复 杂的。注意,动画师用户可能需要手动地随着手102的转变、旋转或缩放的变化而操作柱体 106的转变、旋转或缩放。这就提供了这样的现象,手102正握着柱体106,但是很累赘、不 精确而且耗时。
[0023] 相反,动画师用户可将柱体106约束至手102。通过将柱体106识别为起源手102 的产物,柱体106将被配置成随着手102在3D空间中被操作而自动地与手102 -起移动。 在图1B的示例中,相对于原本图1A中的描绘,关于对象已经有了两个显著变化。首先,柱 体106的转变在3D空间中已经变化来使得柱体106看起来被布置在手102中。其次,柱体 106已经被约束至手102。该约束已经被配置成使得手102为起源而柱体106为产物。
[0024] 通过将柱体106约束至手102,柱体106的转变、旋转和缩放特征中的一个或多个 将基于手102的转变、旋转和缩放。由此,柱体106的操作空间变为操作空间110。操作空 间110取决于其所约束至的起源对象(在本示例中为手102)的操作。
[0025] 在图2中,手102已经逆时针旋转了大约45度。注意,虽然起源空间保持不变,但 是产物空间现在基于施加至手102的旋转。旋转手102已经导致柱体106与手102 -起移 动,这是因为柱体106被约束至手102。手102 (起源对象)正驱动柱体106 (产物对象)。
[0026] 柱体106可进一步在操作空间110中被操作。例如,柱体106的转变、旋转和缩放 可被修改。然而,这些修改将被添加至柱体106继承的手102的操作。在一个示例中,柱体 106可在柱体106被约束至手102的同时旋转。在这种情况下,手102的任意操作将使得柱 体106与手102的操作一起移动。然而,柱体106的任意附加操作不是必须导致手102的 特征的变化。
[0027] 重要的是,将一个虚拟对象约束至虚拟对象并不是必须要求这两个对象看起来接 触,如前面讨论的示例那样。相反,对象可按照许多方式进行相互约束。在一个示例中,可 根据转变、旋转和缩放对两个对象进行相互约束,但是不接触。例如,当一个球被描绘成神 奇地悬浮在打开的超级英雄人物的手的上方以表示该超级英雄正通过超自然的方式在不 接触球的情况下控制球的位置时,这可能是期望的。
[0028] 在另一示例中,可在虚拟对象之间应用目标约束。目标约束使得场景中的产物对 象旋转来追踪起源对象的移动。例如,人物的眼球可被约束至球对象。随着球对象从3D空 间中的虚拟地面弹起,人物的眼球跟随球对象的运动。可通过定义与人物左眼关联的3D空 间中的第一矢量并且定义与人物右眼关联的3D空间中的第二矢量来实现这一效果。例如, 第一矢量被布置成与左眼虹膜正交,第二矢量被布置成与右眼虹膜正交。左眼至球的目标 约束使得左眼旋转从而第一矢量连续地指向球。右眼至球的目标约束使得右眼旋转从而第 二矢量连续地指向球。从该示例可明显看出,多个对象可被约束为单个起源对象的产物。
[0029] 类似地,对象可被约束至多个起源对象。在一个示例中,受约束的产物对象可根据 转变约束而被约束至一个起源对象,同时根据目标约束而被约束至不同对象。例如,这可以 在虚拟指向北的罗盘被放置在人物的手中时使用。罗盘和手一起移动,因此罗盘的转变被 限制至手。然而,罗盘的指针持续地根据目标约束指向虚拟北方位置。
[0030] 在另一示例中,弹性约束可应用在虚拟对象之间。弹性约束的产物可采用起源的 一定百分比的转变、旋转或缩放。这允许产物对象部分地与起源对象一起被操作。对此进 行应用的示例是当虚拟人物正骑在虚拟动物背上的情况。反弹效应使得虚拟人物看起来在 虚拟动物上面,但是没有直接附接至虚拟动物。
[0031] 图3图示出动画人物和树枝柱体物品之间的示例性无环约束关系。人物300的有 向无环图(DAG)和树枝柱体物品320的DAG被简化成更好地图示出人物和树枝柱体之间的 约束关系330。在该示例中,在比人物DAG300和柱体DAG320高的水平上实现约束关系330。
[0032] 在图3中,人物300的DAG的实例包括节点302-312。人物DAG300当作输入动画 控制314和316,其可指定诸如人物的左臂和右臂组分的的转变、旋转和缩放之类的特征。 例如,输入动画控制314可指定特征以表示人物的左手应该放置在3D空间中的特定位置, 同时输入动画控制316可与指定的旋转协同地指定人物右手应该放置在3D空间中的不同 位置。
[0033] 节点302表示人物的左臂,节点304表示人物的右臂,节点306表示人物的身体。 左手产物节点308是产物约束节点而且被配置成接受一个或多个输入,虽然本示例中没有 连接输入。右手产物节点310也是产物约束节点而且被配置成接受一个或多个输入,虽然 本示例中没有连接输入。
[0034] 起源节点312是起源约束节点而且被配置成输出用于驱动产物对象的数据。由 柱体DAG320的实例表示的树枝柱体是产物对象。柱体DAG320包括节点322-324。当人物 DAG300接收动画控制形式的数据时,与人物DAG300相关的人物被操作。约束关系330使得 柱体DAG按照人物的操作而被操作。
[0035] 例如,如果约束关系330表明树枝柱体被约束至人物右手,树枝柱体的转变、旋转 和缩放将基于人物的右手的转变、旋转和缩放中的一个或多个。在该示例中,柱体DAG320 的操作空间与人物DAG300的右手的操作空间对齐。动画控制316向人物柱体DAG320的右 手施加的任意相应转变、旋转和缩放也作用在树枝柱体上。而且,动画控制328施加至柱体 DAG320的任意转变、旋转和缩放也施加至树枝柱体。
[0036] 图4图示出动画人物和树枝柱体物品之间的示例性有环约束关系。人物400的有 向无环图(DAG)和树枝柱体物品420的DAG被简化以便更好地图示出人物和树枝柱体之间 的约束关系430和440。
[0037] 在该示例中,在相对于人物DAG400和柱体DAG420更高的水平下实现约束关系430 和440。虽然约束关系是有环的,但是针对人物和柱体保持无环DAG具有多个优点。针对人 物和柱体保持无环DAG实现了更直接的方案来创建用于针对人物和柱体中的每个的评估 计划。从组织角度来说,每个人物或柱体具有其自己的独立图形。在通过将诸如人物和柱 体之类的虚拟对象进行关联而拍摄的动画的水平配置约束关系。举例来说,虽然可能期望 在特定的动画拍摄期间将树枝约束至人物的手,可能不一定是动画师用户想要树枝在媒体 制作的整个持续期间被约束至人物的手。
[0038] 图4图示出有环关系,因为人物DAG400的输出驱动柱体DAG420的输入,而且柱体 DAG420的输出驱动人物DAG400的输入。具体地,起源节点412经由约束关系430馈入产物 节点424,起源节点426经由约束关系440馈入左手产物节点408。例如,这可能表示树枝被 约束至人物的右手,而且人物的左右被约束至树枝。由于动画师用户操作人物的右手(例 如通过转变、旋转或缩放),人物右手的操作驱动了树枝的操作,而且树枝的操作驱动了人 物左手的操作。
[0039] 在其中约束关系430表示树枝柱体(产物)被约束至人物(起源)的右手的示例 中,树枝柱体的转变、旋转和缩放将基于人物右手的转变、旋转和缩放中的一个或多个。在 该示例中,柱体DAG420的操作空间与人物DAG400的右手的操作空间对齐。动画控制416 施加至的人物DAG400的右手的任意相应转变、旋转和缩放也作用在树枝柱体上。而且,动 画控制328施加至柱体DAG320的任意转变、旋转和缩放也施加至树枝柱体。
[0040] 继续本示例,其中约束关系440表示人物(产物)的左手被约束至树枝柱体(起 源),人物的左手的转变、旋转和缩放将作用于树枝柱体的转变、旋转和缩放中的一个或多 个。人物DAG400的左手的操作空间与柱体DAG420的操作空间对齐,如前面描述的那样它 已经与人物DAG400的右手的操作空间对齐。动画控制428施加至树枝柱体DAG420的任意 相应转变、旋转和缩放也作用在人物的左手上。而且,动画控制414施加至人物DAG320的 左手的任意转变、旋转和缩放也施加至人物的左右。
[0041] 这种有环约束的实施导致了根据该场景下对象的评估顺序改变结果的可能性。几 个不同的策略可被用来缓和该限制。在一个示例中,执行列表可被动画系统接收,其识别了 其中利用与场景中的对象相关的约束对场景中的对象进行评估的顺序。动画师用户可指定 人物DAG400应该首先被评估,随后是柱体DAG420,随后再是人物DAG400。这就去除了无限 循环的可能性。在另一示例中,与约束相关的高级有环图形可被用来重复地评估包括起源 或产物约束节点的对象。系统从动画师用户接收指示场景中的起始对象的表示。系统随后 重复地进行从起源至产物的约束的流程,评估DAG。在系统达到均衡之后或者在系统预定次 数地重复循环相关DAG之后,系统可停止评估。应该理解的是,用于确定评估顺序的技还可 应用至无环的约束系统以及有环的系统。
[0042] 在一个实施例中,每个起源约束节点和产物约束节点被分配有等级类型。等级类 型确定了约束节点之间的兼容性。例如,动画系统可允许第一等级类型的起源约束节点被 附接至第一等级类型的产物约束节点。然而,动画系统可不允许第一等级类型的起源约束 节点被附接至第二等级类型的产物约束节点。这种等级类型对于将约束连接限制至仅仅包 括兼容约束接口的约束节点之间是很有用的。
[0043] 图5描绘了示例性处理,用于评估两个虚拟3D对象的DAG之间的约束关系。在块 502,动画系统访问表示第一虚拟3D对象的第一有向无环图(DAG)。例如,第一虚拟3D对象 可能是人物、柱体或任意其它虚拟3D对象。在块504,动画系统访问表示第二虚拟3D对象 的第二DAG。例如,第二虚拟3D对象可以是另一人物或柱体。
[0044] 在块506,动画系统接收约束关系请求。约束关系请求将第一 DAG识别为约束起源 而且将第二DAG识别为约束产物。该约束关系确定来自第一 DAG的值将驱动第二DAG。在 块508,动画系统验证第一 DAG是否兼容于被限制至第二DAG。例如,如果与第一 DAG相关 的约束接口传递与用于接收与第二DAG相关的数据的约束接口不兼容的格式的数据,则动 画系统可确定两个DAG不兼容。
[0045] 在块510,如果确定第一 DAG和第二DAG兼容于彼此约束,则动画系统将第一 DAG 的输出连接至第二DAG的输入。如果系统确定两个DAG不兼容于彼此约束,系统可发出错 误。
[0046] 在块512,动画系统评估第一对象的DAG。例如,DAG的评估可包括评估DAG的一 个或多个节点或简单地确定针对DAG的高速缓存值的存在。当存在针对DAG的高速缓存值 时,可能不需要重新评估DAG的节点。第一对象的DAG可能被选择用于在第二对象的DAG 之前基于执行列表或其它用户输入的评估。在块514,动画系统确定第一对象的DAG的评估 是否影响第二对象的DAG的评估。例如,这可通过采用污染标志来完成。如果第二对象的 DAG未被影响,系统可渲染一个或多个图像以用于显示。
[0047] 在块516,动画系统评估了第二对象的DAG。如上所述,例如,DAG的评估可包括评 估DAG的一个或多个节点或者简单地确定存在针对DAG的高速缓存值。当存在针对DAG的 高速缓存值时,可能不需要重新评估DAG的节点。第二对象的DAG的评估基于第一对象的 DAG的评估结果。例如,如果第二对象相对于转变、旋转和缩放被约束至第一对象,则第一对 象的转变、旋转和缩放将影响第二对象的评估。
[0048] 诸如人物的结合之类的虚拟对象的结合可具有多个操作参数(或自由度),其可 被约束至其它对象。随着虚拟对象在虚拟3D空间中被操作,对象看起来被动画化。该动画 可能是正向运动学(FK)和逆运动学(IK)的结果。
[0049] FK可定义每个附属结合的精确位置和/或旋转应该是怎样的。FK可总体上被用 于设置附属的具体姿态。逆运动学IK可定义附属的目标或目的,例如,附属应该接触另一 对象,并随后计算每个附属结合实现该目标或目的所需的位置和/或旋转。IK可总体上被 用于设置附属的具体目标。
[0050] 基于搜索的匹配可被用来通过对一组进行增量调节直到其匹配另一组来搜索一 组参数与另一组之间的匹配。这样,当在FK和IK之间进行切换时,两组参数匹配,从而消 除了切换期间的任意突然变化。美国专利申请序列号No. 13/843,600中更详细地描述了基 于搜索的匹配,其整体内容在此通过引用并入本文。
[0051] 在块518,动画系统确定第一 DAG和第二DAG的评估是否完成。例如,如果引入系 统的约束是有环的,则这个块可能很有用。动画系统可利用不同技术来确定评估完成。例 如,当系统达到均衡或者当确定次数的评估迭代已经被执行时,动画系统可确定评估完成。 参考其他块,该块可在具体实施例中省略。例如,该块可在其中约束关系不是有环的实施例 中省略。在该情况下,块520可直接进入块516。
[0052] 在块510,动画系统渲染描绘了第一虚拟3D的至少一部分和第二虚拟3D对象的至 少一部分的图像。在一些示例中,动画系统可渲染多个图像,其图示出对象的运动或移动。
[0053] 图6描绘了示例性动画计算系统600,其被配置成执行任意一个上述处理。为此, 例如,计算系统600可包括处理器、存储器、存储和输入/输出装置(例如,监视器、键盘、触 摸屏、硬盘驱动、网络连接等)。然而,计算系统600可能包括电路或其它专用硬件,用于执 行处理的一些或所有方面。在一些操作设置中,计算系统600可被配置成包括一个或多个 单元的系统,每个单元被配置成以软件、硬件或其结合的方式执行处理的一些或所有方面。
[0054] 图6描绘了计算系统600,其具有可被用来执行上述处理的大量组件。主系统602 包括主板604,其具有输入/输出("I/O")部件606、一个或多个中央处理单元("CPU") 608 和存储器部件610,存储器部件610可相关联地具有闪存装置612。I/O部件606被连接至 显示器624、键盘614、硬盘存储单元616和介质驱动单元618。介质驱动单元618可读取 /写入计算机可读介质620,其可包含程序622和/或数据。I/O部件606还可连接至云存 储,例如利用蜂窝数据通信或无线局域网通信。
[0055] 基于上述处理的结果的至少一些值可被保存以备后续使用。此外,非易失性计算 机可读介质可被用来存储(例如,确切地实体化)一个或多个计算机程序以通过计算机执 行上述处理中的任意一个。例如,可利用通用编程语言(例如,Perl, C,C++,Java)或一些 特殊的专用语言来编写计算机程序。
[0056] 在此描述了各种示例性实施例。以非限制的方式参考这些示例。它们被提供来示 例可更宽范围应用的公开的技术方面。可作出各种变化以及可以替换等效形式,而不脱离 各种实施例的真实精神和范围。此外,可作出各种变更以适应具体情况、材料、主体成分、处 理、对对象的处理动作或步骤、各种实施例的精神和范围。而且,本领域技术人员可以理解 的是,此处描述及示例的每个单独的变形具有单独的组成和特征,它们可容易地与其它一 些实施例中的任意实施例的特征区分开或组合,而不脱离各种实施例的范围或精神。
【权利要求】
1. 一种用于评估约束系统的方法,约束系统用于渲染三维(3D)图形,所述方法包括: 访问表不第一虚拟3D对象的第一有向无环图(DAG); 访问表示第二虚拟3D对象的第二DAG ; 接收约束关系请求,约束关系请求将第一 DAG识别为约束起源而且将第二DAG识别为 约束产物; 验证第一 DAG是否兼容用于约束第二DAG ; 响应于兼容用于约束的第一 DAG和第二DAG,将第一 DAG的输出连接至第二DAG的输 入; 评估第一 DAG以确定第一 DAG的输出处的第一输出值; 响应于确定第一输出值影响了第二DAG的评估,根据第二DAG的输入处从第一 DAG的 输出接收到的第一输出值来评估第二DAG ;以及 在确定第一 DAG和第二DAG的评估完成之后,对描绘第一虚拟3D对象的至少一部分和 第二虚拟3D对象的至少一部分的图像进行渲染。
2. 根据权利要求1所述的方法,其中根据第一输出值来评估第二DAG包括利用基于与 第一 DAG相关的转变、旋转或缩放中的至少一个的操作值来评估第二DAG。
3. 根据权利要求1所述的方法,进一步包括 接收另一约束关系请求,所述另一约束关系请求将第二DAG识别为约束起源并且将第 一 DAG识别为约束产物; 其中评估第二DAG产生了第二输出值,第二输出值处于第二DAG的输出处;以及 响应于确定第二输出值影响了第一 DAG的评估,根据在第一 DAG的输入处从第二DAG 的输出接收到的第二输出值来评估第一 DAG。
4. 根据权利要求1所述的方法,其中: 根据第一输出值来评估第二DAG包括利用基于与第一 DAG相关的转变、旋转或缩放的 操作值来评估第二DAG;以及 根据第二输出值来评估第一 DAG包括利用基于与第二DAG相关的转变、旋转或缩放中 的至少一个的操作值来评估第一 DAG。
5. 根据权利要求1所述的方法,其中验证第一 DAG是否兼容用于约束第二DAG包括验 证第一 DAG的输出的第一约束接口与第二DAG的输入的第二约束接口兼容。
6. 根据权利要求5所述的方法,其中: 第一 DAG包括具有与第一约束接口的输入的第一产物约束节点以及具有与第二约束 接口的输出的第一起源约束节点;以及 第二DAG包括具有与第一约束接口的输入的第二产物约束节点以及具有与第二约束 接口的输出的第二起源约束节点。
7. 根据权利要求1所述的方法,其中约束关系请求识别转变/旋转/缩放约束关系中 的一个或多个或目标约束关系。
8. 根据权利要求7所述的方法,其中目标约束关系采用第二虚拟3D对象的识别出的 轴。
9. 一种非易失性计算机可读存储介质,其包括计算机可执行指令,用于评估用于渲染 三维(3D)图形的约束系统,计算机可执行指令包括用于下述步骤的指令: 访问表不第一虚拟3D对象的第一有向无环图(DAG); 访问表示第二虚拟3D对象的第二DAG ; 接收约束关系请求,约束关系请求将第一 DAG识别为约束起源而且将第二DAG识别为 约束产物; 验证第一 DAG是否兼容用于约束第二DAG ; 响应于兼容用于约束的第一 DAG和第二DAG,将第一 DAG的输出连接至第二DAG的输 入; 评估第一 DAG以确定第一 DAG的输出处的第一输出值; 响应于确定第一输出值影响了第二DAG的评估,根据第二DAG的输入处从第一 DAG的 输出接收到的第一输出值来评估第二DAG ;以及 在确定第一 DAG和第二DAG的评估完成之后,对描绘第一虚拟3D对象的至少一部分和 第二虚拟3D对象的至少一部分的图像进行渲染。
10. 根据权利要求9所述的非易失性计算机可读存储介质,其中根据第一输出值来评 估第二DAG包括利用基于与第一 DAG相关的转变、旋转或缩放中的至少一个的操作值来评 估第二DAG。
11. 根据权利要求9所述的非易失性计算机可读存储介质,进一步包括用于下述步骤 的指令: 接收另一约束关系请求,所述另一约束关系请求将第二DAG识别为约束起源并且将第 一 DAG识别为约束产物; 其中评估第二DAG产生了第二输出值,第二输出值处于第二DAG的输出处;以及 响应于确定第二输出值影响了第一 DAG的评估,根据在第一 DAG的输入处从第二DAG 的输出接收到的第二输出值来评估第一 DAG。
12. 根据权利要求9所述的非易失性计算机可读存储介质,其中: 根据第一输出值来评估第二DAG包括利用基于与第一 DAG相关的转变、旋转或缩放的 操作值来评估第二DAG;以及 根据第二输出值来评估第一 DAG包括利用基于与第二DAG相关的转变、旋转或缩放中 的至少一个的操作值来评估第一 DAG。
13. 根据权利要求9所述的非易失性计算机可读存储介质,其中验证第一DAG是否兼容 用于约束第二DAG包括验证第一 DAG的输出的第一约束接口与第二DAG的输入的第二约束 接口兼容。
14. 根据权利要求13所述的非易失性计算机可读存储介质,其中: 第一 DAG包括具有与第一约束接口的输入的第一产物约束节点以及具有与第二约束 接口的输出的第一起源约束节点;以及 第二DAG包括具有与第一约束接口的输入的第二产物约束节点以及具有与第二约束 接口的输出的第二起源约束节点。
15. 根据权利要求9所述的非易失性计算机可读存储介质,其中约束关系请求识别转 变/旋转/缩放约束关系中的一个或多个或目标约束关系。
16. 根据权利要求15所述的非易失性计算机可读存储介质,其中目标约束关系采用第 二虚拟3D对象的识别出的轴。
17. -种用于评估约束系统的设备,约束系统用于渲染三维(3D)图形,所述方法包括: 存储器,其被配置成存储: 表示第一虚拟3D对象的第一有向无环图(DAG);以及 表示第二虚拟3D对象的第二DAG ; 计算机处理器,其被配置成: 访问表不第一虚拟3D对象的第一有向无环图(DAG); 访问表示第二虚拟3D对象的第二DAG ; 接收约束关系请求,约束关系请求将第一 DAG识别为约束起源而且将第二DAG识别为 约束产物; 验证第一 DAG是否兼容用于约束第二DAG ; 响应于兼容用于约束的第一 DAG和第二DAG,将第一 DAG的输出连接至第二DAG的输 入; 评估第一 DAG以确定第一 DAG的输出处的第一输出值; 响应于确定第一输出值影响了第二DAG的评估,根据第二DAG的输入处从第一 DAG的 输出接收到的第一输出值来评估第二DAG ; 在确定第一 DAG和第二DAG的评估完成之后,对描绘第一虚拟3D对象的至少一部分和 第二虚拟3D对象的至少一部分的图像进行渲染。
18. 根据权利要求17所述的设备,其中根据第一输出值来评估第二DAG包括利用基于 与第一 DAG相关的转变、旋转或缩放中的至少一个的操作值来评估第二DAG。
19. 根据权利要求17所述的设备,计算机处理被进一步配置成: 接收另一约束关系请求,所述另一约束关系请求将第二DAG识别为约束起源并且将第 一 DAG识别为约束产物; 其中评估第二DAG产生了第二输出值,第二输出值处于第二DAG的输出处;以及 响应于确定第二输出值影响了第一 DAG的评估,根据在第一 DAG的输入处从第二DAG 的输出接收到的第二输出值来评估第一 DAG。
20. 根据权利要求17所述的设备,其中: 根据第一输出值来评估第二DAG包括利用基于与第一 DAG相关的转变、旋转或缩放的 操作值来评估第二DAG;以及 根据第二输出值来评估第一 DAG包括利用基于与第二DAG相关的转变、旋转或缩放中 的至少一个的操作值来评估第一 DAG。
21. 根据权利要求17所述的设备,其中验证第一 DAG是否兼容用于约束第二DAG包括 验证第一 DAG的输出的第一约束接口与第二DAG的输入的第二约束接口兼容。
22. 根据权利要求21所述的设备,其中: 第一 DAG包括具有与第一约束接口的输入的第一产物约束节点以及具有与第二约束 接口的输出的第一起源约束节点;以及 第二DAG包括具有与第一约束接口的输入的第二产物约束节点以及具有与第二约束 接口的输出的第二起源约束节点。
23. 根据权利要求17所述的设备,其中约束关系请求识别转变/旋转/缩放约束关系 中的一个或多个或目标约束关系。
24.根据权利要求23所述的设备,其中目标约束关系采用第二虚拟3D对象的识别出的 轴。
【文档编号】G06T19/20GK104106098SQ201380008985
【公开日】2014年10月15日 申请日期:2013年8月2日 优先权日:2012年8月3日
【发明者】A·P·鲍威尔, E·D·帕普, A·M·威尔斯 申请人:梦工厂动画公司