CN101916324A - 用于动画的依赖图评估的系统和方法 - Google Patents

用于动画的依赖图评估的系统和方法 Download PDF

Info

Publication number
CN101916324A
CN101916324A CN2009102584798A CN200910258479A CN101916324A CN 101916324 A CN101916324 A CN 101916324A CN 2009102584798 A CN2009102584798 A CN 2009102584798A CN 200910258479 A CN200910258479 A CN 200910258479A CN 101916324 A CN101916324 A CN 101916324A
Authority
CN
China
Prior art keywords
dependency graph
animation
node
data
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2009102584798A
Other languages
English (en)
Other versions
CN101916324B (zh
Inventor
B·E·科拉德
B·A·爱德华兹
A·K·琼斯
A·T·克莱顿
T·J·科尔伯特
F·H·格拉哈姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Disney Enterprises Inc
Original Assignee
Disney Enterprises Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Disney Enterprises Inc filed Critical Disney Enterprises Inc
Publication of CN101916324A publication Critical patent/CN101916324A/zh
Application granted granted Critical
Publication of CN101916324B publication Critical patent/CN101916324B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

提供了以游戏系统评估源依赖图和动画曲线的系统、设备及方法。依赖图可以在游戏执行期间以交互式速率受到评估。动画曲线可以描述控制元素的状态随时间的变化。可以使用多个处理器识别和评估依赖图的子网络。

Description

用于动画的依赖图评估的系统和方法
技术领域
本申请概括地涉及游戏系统中的元素动画,更具体地涉及使用该游戏系统的依赖图评估。
背景技术
游戏系统为该游戏系统的用户提供交互式体验。该游戏系统可以用于娱乐目的、教育目的或二者的组合或其他目的。例如,游戏可以指导用户的探险需求,或者游戏可以提示用户回答数学问题。用户可以向游戏系统输入命令,并在显示器上观看那些输入命令的结果。这些显示的结果通常由游戏系统基于各种因素制作成动画,这些因素包括用户输入、游戏中出现的角色、角色彼此之间的交互或与游戏环境或场景的交互。因此,开发者继续寻求用于为游戏中出现的元素制作动画的改进方法和设备。
发明内容
一个实施方式包括游戏动画系统。该游戏动画系统包括被配置为执行游戏的处理器;源动画曲线数据,其中该源动画曲线数据描述了控制元素随着时间的状态变化;定义该源动画曲线数据的变换的第一依赖图的描述;引擎,用于在游戏执行期间以交互式速率评估该第一依赖图。
另一个实施方式包括在游戏动画系统上执行游戏的方法。该方法包括识别源动画曲线数据,其中该源动画曲线数据描述了控制元素随着时间的状态的变化;识别第一依赖图的描述,其中该依赖图定义了该源动画曲线数据的变换;以及,在执行该游戏时以交互式速率评估该第一依赖图。
另一个实施方式包括游戏动画系统。该游戏动画系统包括被配置为执行游戏的处理器;表示控制元素的数据,其中控制元素的状态的变化与多个其他元素的方向的变化相关联;源动画曲线数据,其中该源动画曲线数据描述了控制元素的状态中的变化;定义源动画曲线数据的变换的第一依赖图的描述;以及引擎,用于在执行游戏期间以交互式速率评估第一依赖图。
另一个实施方式包括游戏动画系统。该游戏动画系统包括用于对第一对象的至少一部分进行动画制作的第一依赖图的描述,其中该第一对象至少部分地由多个相互关联的元素来定义;动画引擎,其被配置为识别基于第一依赖图的多个子网络,其中每个子网络包括第一依赖图中的多个节点,以及其中每个子网络中的多个节点描述了至少两个相互关联的元素随时间的运动;以及多个处理器,其中每个处理器被配置为评估独立于第一依赖图中其余节点的至少一个子网络的节点,以便为与至少一个子网络的至少两个相互关联的元素相关联的运动制作动画。由不同的处理器评估至少两个子网络。
另一个实施方式包括由游戏系统对元素进行动画制作的方法。该方法包括:提供用于对第一对象的至少一部分进行动画制作的第一依赖图的描述,其中该第一对象至少部分地由多个相互关联的元素来定义;识别多个子网络,每个子网络包括第一依赖图中的多个节点,其中每个子网络中的多个节点描述了至少两个相互关联的元素随时间的运动,并可独立于依赖图中的其余节点而被评估;为每个子网络分配游戏系统的多个处理器中的一个,其中为至少两个子网络分配以不同的处理器;利用分配以子网络的处理器评估至少一个子网络中的节点,以便对与子网络的至少两个相关元素相关联的运动进行动画制作。
附图说明
图1是表示用于游戏动画的包括多个处理器的示例系统的示意图。
图2是表示一部分对象的示例的示意图,该对象包括具有网格覆盖、控制元素和动画曲线的骨骼。
图3是示例图2中骨骼的一部分的示意图,其中控制点已经沿着动画曲线被移动。
图4是示例了为元素制作动画的一部分依赖图的框图,该元素为诸如图2中骨骼的元素。
图5是表示在游戏期间创建并评估动画的依赖图的方法示例的流程图。
图6是进一步表示评估依赖图的方法示例以及表示从依赖图中检索节点值的流程图。
图7是表示从源导出依赖图中的节点的方法示例的流程图。
图8是表示使用如图1中所示的多个处理器评估依赖图的方法示例的流程图。
图9是表示具有在世界坐标空间中确定位置的元素示例的示意图。
图10是表示具有在局部坐标空间中确定位置的图9中的元素示例的示意图。
图11是表示可以相互作用的两个依赖图的部分的示例的框图。
图12是表示分组至元网络的来自图11中两个依赖图的部分的示例的框图。
图13是由两条不同动画曲线放置在不同位置的对象的示例的示意图。
图14是位于图13中不同位置的对象的图示,该对象的示例位于对不同位置求平均所确定的中间位置。
图15是位于图13中不同位置的对象的图示,该对象的示例对不同动画曲线求平均所确定的中间位置。
具体实施方式
下列详细说明用于特定的示例和实施方式。然而,本发明的结构和操作不限于此处所述的示例和实施方式。此外,存在多种方式来实现关于此处所述的这种示例和实施方式及特定部分。显然,此处所公开的任何特定的结构和/或功能都仅仅是代表性的。本领域的技术人员会意识到,已公开的部分可以以多种方式省略、分离或组合。例如,可以使用除此处所述的一个或多个方面以外或不同于此处所述的一个或多个方面的其他结构、功能或结构和功能来实现装置或方法。
游戏系统的用户希望在游戏运行中增加复杂度,并增加与该游戏运行相关联的图像复杂度。游戏不再是在每次屏幕结束时具有得分的二维场景,而通常是可以表示整个虚构世界或宇宙并与复杂情节相联系的三维场景。在许多游戏中,对用户的视觉冲击与游戏的任何其他方面同样重要,如在用户中创造乐趣及在解释情节中提供帮助。增加的图像复杂度还允许游戏中更多的细节交互。
游戏系统用户对于改善游戏图像的增强的期望同样增加了设计和创造图像的动画师的责任。动画师必须确保图像色彩缤纷并在视觉上很刺激,并包括那些先前无法使用游戏系统来制作动画的微小细节。此外,用户要求角色以物理上精确的方式移动,并要求在游戏中的交互是可信的。包括人类角色的游戏通常必须栩栩如生地刻画那些人类角色。
然而,改善的游戏图像会导致在游戏开发中的问题。例如,由于动画师努力满足游戏系统用户的期望,将图像中所有细节进行编码所需的数据总量就会增加。数据的这种增加已经导致后勤问题,例如如何存储和传输数据。在许多实例中,表示动画师所创建图像的数据必须压缩;在一些实例中,要减少这些数据的数量。结果,用户获得的动画和图像与动画师所创建的有所不同。
在一个实施方式中,动画师或其他人员在源创建依赖图,以便在为对象的至少一部分制作动画时使用。此外,动画师创建至少一条动画曲线,其表示控制元素状态的变化。依赖图和动画曲线被导出到游戏系统。在游戏执行期间游戏系统评估依赖图,以便使用动画曲线为与该对象相关联的元素制作动画。与动画师创建的运动相比,游戏系统用户所观察到的运动并没有丢失。
在一个实施方式中,在至少两个数据结构中导出或存储依赖图,其中第一数据结构包括表示空间或时间值的图的节点,第二数据结构包括表示关系的图的节点。在另一个实施方式中,依赖图可以由游戏系统的多个处理器来评估。在另一个实施方式中,可以单独识别和操纵依赖图的子网络。在另一个实施方式中,使用依赖图可以组合动画曲线用于评估,或使用重新配置的依赖图或分离的依赖图执行相反的运动。
图1是表示游戏动画的示例系统100的示意图。游戏系统100被配置为执行游戏并在游戏执行期间产生动画。游戏系统100进一步被配置为接收并处理来自用户的输入,并提供用于显示这种用户输入的结果的数据。
用户使用输入设备114输入命令。输入设备114可以是允许用户与游戏系统100交互的任何设备。例如,输入设备114可以包括键盘、操纵杆、控制器、麦克风、照相机、小键盘或一系列按钮或其他设备及功能部件之一。
游戏系统100向显示设备116输出图像和动画。显示设备116可以是接收显示数据并将其可视地呈现给用户的任何设备。例如,显示设备116可以包括阴极射线管、多个发光二极管(LED)、液晶显示器(LCD)、或投影机或其他设备及功能部件之一。
游戏系统100包括具有多个处理器104a、104b、104c和104d的中央处理单元(CPU)102。处理器104a-104d也可以称作核。虽然在图1中显示了4个处理器104a-104d,但是游戏系统100可以包括更多或更少数量的处理器。处理器可以在CPU 102的内部或外部实现。CPU 102可以包括一个或多个处理器。例如,CPU 102可以包括一个处理器、三个处理器或八个或更多处理器。CPU 102和/或处理器104a-104d中的至少一个处理器与输入设备114和显示设备116通信。
游戏系统100可以进一步包括与CPU 102和/或处理器104a-104d中的至少一个处理器通信的易失性存储器106。易失性存储器106可以包括特定类型的随机访问存储器(RAM),例如,动态随机访问存储器(DRAM)或静态随机访问存储器(SRAM),或可以包括任何其他类型的易失性存储器。易失性存储器106可以在CPU 102和/或处理器104a-104d中的一个处理器的操作期间,用于存储数据和/或命令。本领域的技术人员会识别并使用其他类型的易失性存储器。
游戏系统100可以进一步包括与CPU 102和/或处理器104a-104d中至少一个通信的非易失性存储器108。非易失性存储器可以包括闪存、磁存储设备、硬盘或只读存储器(ROM),如可擦除可编程只读存储器(EPROM),或任何其他类型的非易失性存储器。非易失性存储器108可以用于存储游戏、指令、角色信息、游戏状态信息,或如果断开游戏系统100的电力还会被保存的任何其他信息。游戏系统100可以包括安装或临时定位额外的非易失性存储器的接口。本领域的技术人员会识别并使用其他类型的非易失性存储器。
与CPU 102和/或处理器104a-104d中至少一个通信的图形处理单元(GPU)110绘制由一个处理器提供的数据以便在显示设备116上显示。GPU 110可以被配置为执行任何数量的涉及提供在显示设备116上显示的数据的功能。例如,GPU 110可以被配置为在其他功能中绘制多个多边形、使用阴影或纹理、创建表示三维环境的数据,或在坐标空间之间进行变换。如图1所示,GPU 110可以在CPU102的外部,或在CPU 102内部和/或集成在CPU 102中。本领域的技术人员会识别GPU 110的其他配置及功能。
游戏系统100可以进一步包括与CPU 102和/或处理器104a-104d中至少一个通信的盘驱动器112。一个或多个处理器可以从插入到盘驱动器112的盘读取数据。在一些实施方式中,游戏系统100被配置为使用盘驱动器112在盘上记录数据。这样,与游戏运行和动画相关的数据可以传送到游戏系统100或来自于游戏系统100。例如,许多游戏以光盘(CD)或数字化视频光盘(DVD)的形式出售。这些游戏中的大多数如此生产,以至于玩游戏所需的全部信息,包括角色、情节以及动画数据都包含在光盘上。因此,用户可以购买包含游戏的光盘用于在游戏系统100上执行。游戏也可以存储在非易失性存储器108上。
游戏引擎存储于游戏系统100之上。游戏引擎包括可以用于执行游戏的指令或数据。当初始化游戏时,游戏引擎启动游戏运行。在游戏运行期间,引擎提供与游戏中场景或时刻相关联的图像和动画。这些图像和动画在显示设备116上显示。当用户使用输入设备114输入指令时,游戏引擎评估命令并确定游戏执行该命令的效果。这些效果可以由显示给用户的图像和动画反映出来。例如,用户可以按小键盘上的按钮使游戏中的角色打开一扇门。
游戏引擎100可以在CPU 102、处理器104a-104d、GPU 110或非易失性存储器108中的任意一个中全部或部分地实施或存储。游戏引擎可以包括指令或数据的单个集合,或可以包括多个集合。例如,游戏引擎可以作为动画引擎(例如图像或绘制引擎)来实现,并可以作为确定用户的输入如何影响游戏的情节的单独引擎来实现。
除了游戏引擎之外,游戏系统100可以存储或实现其他功能及其他用于执行游戏的子系统。例如,这样的子系统包括绘制系统、游戏保存系统、物理系统及特效系统。
游戏系统100不限于上述的设备、配置及功能。例如,虽然只显示了单个易失性存储器106、非易失性存储器108、GPU 110、盘驱动器112、输入设备114及显示设备116,但是多个任意一种此设备均可在游戏系统100的内部或外部实现。此外,游戏系统100可以包括电力供应或网络访问设备。本领域的技术人员可以识别游戏系统100的这种配置。
此处所述的组件可以以多种系统及设备的方式实现。例如,游戏系统100可以包括为执行游戏设计的控制台,例如游戏机、SONYPLAYSTATION 3、或微软XBOX 360。游戏系统100也可以包括被配置为执行游戏的通用计算设备,例如膝上型计算机、台式机或个人计算机。
可以使用任意数量的方法和设备创建游戏系统100显示的图像和动画。尤其是生成表示三维环境的图像和动画时,经常使用诸如AUTODESK公司出售的MAYA的建模软件。使用这种软件,动画师可以创建对象并为对象创建运动,该对象由游戏系统100的游戏引擎使用以便提供在显示设备116上显示的数据。
图2是表示使用上述软件创建的对象200的一部分示例的示意图。在所示的实施方式中,对象200作为人的形体显示,该对象的一部分包括形体的肩和臂。但是,对象200可以是任何对象。例如,该对象可以包括人类或非人类角色,诸如武器或食物的物品,包括建筑物的墙或建筑,诸如岩石或树的场景元素,或动画师想要表现的任何其他对象。此处对于对象的说明同样可以应用于所有这样的对象。
可以使用多个相互关联的元素202a、202b、204a、204b及206来定义对象200的结构。这些相互关联的元素用于创建对象200的“骨骼”。它们定义了对象200的形状和物理约束。
在所示的实施方式中,元素202a和202b被配置为改变位置和方向,但是它们的形状和尺寸是基本上固定的。然而元素204a和204b被配置为结合点,其定义了元素202a和202b可以旋转的位置。
定义对象的互相关联的元素可以通过依赖图相关联。依赖图包括分级的节点,其描述了每个元素如何连接到其他元素及每个元素相对于其他元素如何移动。以此方式,动画师不必阐明游戏中每个可能场景或配置的对象的每个细节或为其制作动画。例如,可以理解,当一个人转动他的肩膀时,他的前臂和手也会移动。同样地,图2中所示的对象200可以如此配置,从而绕着元素204a旋转元素202a会改变元素202b和204b的位置或方向。下面会更详细地描述依赖图的内容和操作。
动画师可以为每个对象创建依赖图。此外,对象的一部分或多个对象也可以通过依赖图相关联。在游戏期间显示的任何给定的场景中,可以由多张依赖图表示。例如,场景中的每个角色可以由动画师用单独的依赖图来制作。通过为依赖图中的每个节点分配值和约束条件,动画师能够控制对象成为何种形状及对象如何移动。如果动画师不希望对象移动,这也可以在依赖图中定义。例如,动画师可以创建骨骼来定义墙的形状,并可以为墙的依赖图的节点赋值,以便使墙的元素相对于彼此不会移动。
元素206是控制元素。它可以包括元素202或204的任一类型,或可以是单独类型的元素。动画师可以定义控制元素,以简化调整对象200的位置或方向的处理过程。每个对象和依赖图都可以具有多个控制元素。
可以利用动画曲线来描述控制元素的状态中的变化。在所示的实施方式中,可以用动画曲线208描述控制元素206的位置的变化。在时间t1时,控制元素206最初位于第一位置210a。随着时间推移,控制元素206可以沿着动画曲线208移动。在时间t6处,控制元素206已经沿着动画曲线208移动到位于第二位置的210b,如图3所示。
当控制元素改变状态时,会影响一个或多个其他元素。在所示的实施方式中,控制元素206沿着动画曲线208移动,这使得元素202a,202b,204a和204b移动。其他元素的这种移动是由对象200的依赖图中所定义的约束条件引起的。因此,可以配置依赖图,使得角色的手的移动会引起角色胳膊和肩膀的适当的解剖学上的移动,如图2和3中所示。因此,每次动画师希望表现控制元素206在不同位置时,元素202a、202b、204a和204b中的每一个的位置都不需要由动画师手动设置,但可以通过评估对象200的依赖图自动计算得出。
控制元素不限于空间中的单个点,动画曲线也不限于元素的随时间推移的路径。控制元素和动画曲线可以定义为以多种方式影响任意数量的元素。例如,控制元素可以定义为与描述角色的手的依赖图相关,从而调整控制元素的状态会导致这只手更多或更少的张开或攥紧。动画曲线可以描述控制元素中的变化,还可以包括抽象值。一个例子是,可以定义用于张开或攥紧角色的手的控制元素,该控制元素可以被赋予从1到10的任何值,1表示手是张开的,10表示手是攥紧的。1到10之间的任何值都表示这只手在某种程度上张开或攥紧。这种控制元素的动画曲线可以包括按时间顺序排列的一系列数字,这些数字描述了在一段时间上手的张开或攥紧运动的预定义集合,其中每个数字都有从1到10的值。因此,定义手部重复攥紧运动的动画曲线可以包括数字序列{8,9,10,9,8,7,8,9,10,9,8,9,10}。同样地,被赋予从1到10的值的控制元素可以与门相关联,这样,1表示门被关闭,而10表示门被打开到其所能打开的最大程度。在一些实施方式中,控制元素用于调整一个或多个元素的颜色、阴影或纹理。
动画曲线可以表示预定义动作的移动。在所示的实施方式中,动画曲线208可以表示一个角色伸出手与另一个角色握手。另一个示例是,控制元素可以定义在角色的脚上,动画曲线定义为该角色行走制作动画。在游戏运行期间,用户按下小键盘左边的按钮可以调用该动画曲线,通过沿着动画曲线移动角色脚上的控制点来使得角色向左行走。
动画曲线可以以许多方式存储或表现。例如,动画曲线可以存储为一系列值、数据结构或操纵控制元素的可执行指令集。动画曲线可以由标示的功能或另一种可视方式来表示,或者可能没有易于了解的方式来可视地表示给定的动画曲线。本领域的技术人员可以认识到用于动画曲线存储、定义或表示的其他方式。此处所述的动画曲线可以在特定的建模软件中实现,例如MAYA。
可以使用蒙皮或网格212覆盖或绑定骨骼。网格212可以定义对象200的外观,而骨骼定义对象200的基础结构和移动。因此,当网格覆盖了骨骼或骨骼的一部分时,骨骼或者骨骼的一部分对于观看者来说是不可见的。在所示的实施方式中,网格212被配置为为给予对象200的所示部分以人类肩、臂、手的外观。当移动元素202a、202b、204a、204b或206中任何一个时,网格会覆盖到新的位置,创造出手臂已经改变位置的外观。
网格212不仅可以向用户传达比元素202a、202b、204a、204b及206所传达的更加可识别的图像,该网格212还用于说明由元素202a、202b、204a、204b及206的移动所无法影响的微小细节。例如,骨骼可以定义为表现汽车的结构。当汽车改变位置时,除了门、引擎护罩、行李舱、轮胎和窗户以外,与汽车其余部分相关的汽车主要部分不会移动。网格可以与汽车的骨骼绑定,其定义了可在场景中改变位置复杂的曲线和造型,但是绝不会改变相对于汽车的其他部分的方向。为每条曲线或造型细节定义的结构元素不会为动画师提供额外的好处。
将具有已定义的约束和运动、控制元素及网格的骨骼称为“骨架(rig)”。创建这些元素并将它们一起关联起来可以称为“装配(rigging)”。在装配过程完成之后,通常准备为对象制作动画。然后动画师调整控制元素并定义动画曲线,以便为对象的运动和动作制作动画。有时“骨架”也指这种不具有网格的骨骼和控制元素。本领域的技术人员将认识到创建骨架和依赖图的各种方法,并能够创建这种骨架和依赖图。
图4是表示依赖图400的一部分示例的框图,该依赖图用于为图3中诸如骨骼或骨架的元素206制作动画。依赖图400的所示部分包括多个节点402-416。这些节点包括存储值的所有节点,例如,节点402、406、408、412、416以及诸如节点404,410和414的功能性节点。如果值节点402、406、408、412和416存储有关于图2中所述对象的信息,那么值节点402、406、408、412和416可以存储空间值或时间值。功能性节点可以基于值节点中的数据计算结果,因此可以确定值节点之间的关系。
值节点可以作为变量或值(如浮点数)、数据结构或数组或数据集来存储或实现。功能性节点可以作为运算、数学函数、命令集或可执行命令集来存储。在一些实施方式中,值节点可以与功能性节点整合起来,例如功能性节点的属性。在一些实施方式中,依赖图的节点可以保持形状或几何结构信息、颜色信息或纹理信息。同样地,包含这种节点的依赖图或这种依赖图的一部分可以作为数据结构或一系列数据结构、命令或可执行指令或一系列链接节点来存储或实现。本领域的技术人员将认识到存储、定义、表示或实现依赖图及其节点的其他方法,并认识到节点可以存储的额外信息。此处所述的依赖图和节点可以用特定的建模软件程序来实现,如MAYA。
在所示的实施方式中,可以从左到右评估依赖图400的部分。这样,评估依赖图400的部分以将游戏中的时间tg变换为元素的最终方向。为此,依赖图400的部分定义了动画曲线的变换。在一些实施方式中,依赖图400的部分也可以或相反地从右向左被评估,或者可以重新配置,使其可以从右向左被评估。
在节点402存储或识别游戏中的时间tg。在节点404,tg变换为沿着动画曲线tc的时间,其在节点406被存储或识别。例如,如上所述,动画曲线可以表示角色行走。但是,为与动画曲线相关联的移动制作动画可能只需要5秒钟。基于角色先前的移动或角色已经行走的时间总量,例如可以在节点404确定该角色在动画曲线中是3秒钟,或该动画曲线已经完成60%。参考图2,用户可能已经玩了20分钟游戏(因此tg等于20分钟),但是可以确定与动画曲线208相关联的移动刚刚才开始,因此确定tc等于t1。这个值可以存储于节点406。
在节点410,使用动画曲线408或其一部分评估沿着动画曲线的时间,以确定元素在那个时刻的位置。参考图2,动画曲线208可以拆分为x平面中的曲线、y平面中的曲线以及z平面中的曲线,分别由节点408x、408y和408z表示。这些曲线部分408x、408y和408z中的每一个都在时间tc在节点410x、410y和410z处被分别评估。元素的x、y、z位置可以分别存储于节点412x、412y和412z。这样,节点412x、412y和412z将分别存储t1时刻的元素206的x、y和z位置。
使用节点414和在节点412x、412y、412z处分别识别的x、y、z位置,可以在节点416存储或识别元素的方向。该方向可以包括任意数量的描述该方向的数据,例如在其他这种方向数据中的先前识别的x、y、z的值和/或元素的旋转。参考图3,节点416存储或识别在时刻t1时元素206的方向,其等于位置210a。
本领域的技术人员会认识到,依赖图可以包括比图4中所示的更多的节点,或者依赖图可以包括比上述更多或更少的值或功能。例如,可以链接依赖图400的许多部分,以定义如对象(例如对象200)的移动。例如,考虑图2中的元素204a旋转的情况。总的来说,元素204a的旋转可以导致以下结果:基于元素204a的旋转来评估部分依赖图,可以确定元素202a的新位置;基于元素202a的位置,通过评估部分依赖图,可以确定元素204b的新位置;基于元素204b的位置及元素204b的旋转,可以确定元素202b的新位置;基于元素202b的位置,可以确定元素206的位置。这样,可以评估依赖图以确定由依赖图表示的对象中的任意元素的方向。
当如上所述评估依赖图时,当“父”节点的值改变时,节点的值会改变(在依赖图的层级中处于较高位置的任何节点都是父节点;在图2所示对象200的实施方式中,在表示对象200的元素的依赖图中的任意节点位于给定所示元素的左边,将是表示给定元素的节点的父节点)。这样,先前确定的值可能不再是任何给定节点的值。为了表明这一点,每个值节点可以包含指示符,该指示符指示值节点中的值是否有效。例如,节点可以包含:标记符,其指示节点是脏的(也就是说,值已经改变了);或计数器或有效性指示符,其可以用于确定值是否已改变,下面将更详细的说明。
图5是表示方法500实例的流程图,该方法用于创建并评估依赖图,例如图4中所示的用于在游戏期间制作动画的依赖图的部分。在块502处,动画师创建依赖图。动画师可以使用计算设备(如膝上型计算机、台式机或个人计算机)或使用允许创建依赖图或此处所述骨架的任何其他设备来创建依赖图。这种设备可以称为源,因为它是动画师创作的源头。
在块504,动画师使用该源设备或另一个源设备创建与依赖图相关联的动画曲线。在下文中,这种动画曲线可以称为源动画曲线,因为它在源设备处创建。如上所述,动画曲线可以描述依赖图的控制元素的状态的变化。而依赖图可以描述动画曲线的变换。
在块506,导出动画曲线和依赖图数据。这可以涉及到将动画曲线和依赖图打包,或压缩动画曲线或依赖图,从而动画曲线和依赖图可以由游戏系统(如图1中所示的游戏系统100)使用。在一些实施方式中,块506包括将依赖图和动画曲线数据烧制到盘上。在其他实施方式中,块506包括将依赖图和动画曲线数据打包到可由游戏系统100读取的可执行文件中。
在块508,动画曲线和依赖图数据加载到游戏系统中。在所示的游戏系统100中,依赖图和动画曲线数据可以加载到或存储到一个或多个易失性存储器106、非易失性存储器108、CPU 102或处理器104a-104d中的任意一个中。可以使用多种方法将依赖图数据和动画曲线数据传输到游戏系统100。例如,依赖图和动画曲线数据可以存储在盘上,该盘可以装入光盘驱动器112中以向游戏系统100提供依赖图和动画曲线数据。在一些实施方式中,依赖图和动画曲线数据在网络上发送,在游戏系统100使用网络接口接收。
在游戏执行期间,在块510处评估依赖图。在一个实施方式中,游戏引擎评估依赖图。在此实施方式中,游戏引擎可以顺序地评估图中的每个节点或仅评估那些脏的节点。评估可以包括读取存储于节点中的指令,或使用节点中存储的值或函数执行游戏引擎中定义的处理过程或其他操作。评估也可以包括处理或影响分级的可执行指令。下面详细描述评估依赖图的示例方法的实施方式。
如上所述,在源设备处创建依赖图。本领域的技术人员可以理解,在游戏系统中评估在源设备处创建的该依赖图。为了保持与游戏系统用户的交互,依赖图可被实时评估。这样,游戏系统对于用户输入的响应或游戏元素的动画不会滞后或延迟。因此,可以以交互式速率评估依赖图,从而在游戏执行期间,对依赖图进行的评估不会在游戏执行或游戏对用户输入的响应中导致重大中断。
图6是进一步示出方法600的示例的流程图,该方法600以游戏引擎(例如,关于图1所示的系统100的游戏引擎)评估依赖图。方法600可以在图5中的块510执行期间执行。
在块602,请求节点值。例如,为了对动画曲线环境中的对象或其一部分制作动画而请求节点值,如参考图2至图4所述。当多个元素的方向在沿着动画曲线的每个点改变时,引擎请求节点的值。节点返回的值可以提供用于显示的动画数据,例如在图1所示的显示设备116上显示。
在块604,确定节点值是否有效。如上所述,这种确定可以使用有效性指示符。例如,游戏引擎可以检查脏的标记以查看节点的当前值是否与其中存储的值不同,例如由于父节点的改变的原因。游戏引擎也可以至少部分地基于节点中的计数器来做出这种决定,下面将详细说明。
如果节点是有效的,游戏引擎前进至块612,在此返回该节点的值。如果节点值是无效的,游戏引擎前进至块606。
在块606,节点被请求以便成为有效的节点。为了使节点有效,在块608确定当前节点(也即,块602处请求值的节点)所依赖的节点。对于此处所述的依赖图,在块608,识别在依赖图层级中比当前节点高的所有节点。
然后,针对当前节点依赖的任何节点重复方法600。如果当前节点所依赖的节点是有效的,则返回它们的值。如果它们是无效的,如上所述,它们会被请求以便成为有效节点。
在当前节点所依赖的节点返回其值之后,在块610通过参考当前节点所依赖的节点值,可以计算当前节点的值。该计算出的值存储在当前节点中。在块612,返回该计算出的值。该值随后可以用于为当前节点表示的元素制作动画。
参照图6例如使用如上游戏系统100的游戏引擎,来以游戏系统评估依赖图,从而为对象的至少一部分制作动画,这种做法有很多好处。提供用于为对象制作动画的数据的其他方法包括,“烘焙”多个配置中的角色骨骼中元素的配置。例如,在动画曲线中的每个点取得每个元素值的快照。这些数据包括每个元素的多达十二个或更多的值:九个值表示元素在三维空间的旋转,三个值表示元素在x、y、z坐标系中的位置。为了捕获对象的移动,必须为每个可能的动画曲线的动画曲线中的每个点存储每个元素的值。
本领域的技术人员可以理解,烘焙过程创造了大量数据。数据的总量通常在游戏执行期间难以读取和使用,并且通常太大以至于无法包含于单个盘中以便传输游戏。所以,表示对象移动的数据通常被压缩,通常省略了一些烘焙过的数据。当基于这种压缩的或不完全的数据为对象而制作动画时,该对象的移动最多是估算在源处创建的动画,并且在游戏执行期间难以对动画进行任何改变。
与使用烘焙的数据相反,以游戏系统评估依赖图和源动画曲线降低了为对象制作动画所需的数据总量,并增加了动画的美感。针对动画数据的压缩数量可以被限制或取消,对象的移动能够被无损地显示,这种无损是相对于源处创建的对象移动而言的。
下面的叙述进一步在细节上讨论上述系统和方法的优点。这些优点包括,减少了向游戏系统导出的数据总量,增加了评估该数据的效率,以更高精度制作动画,并能够调整及修改源动画。此外,将结合所述优点描述系统和方法的进一步的细节和实现。
减少数据总量
可以减少向游戏系统导出的在动画中使用的数据总量。不是导出在每条动画曲线的每个位置的每个对象或其一部分的值,而是可以导出依赖图,依赖图描述了对象或其一部分的每个元素,并可以导出源动画曲线。可以通过评估关于源动画曲线的依赖图来确定每个元素的值,从而避免了导出每个元素值的需求。
通过恰当地导出依赖图中的节点,可以进一步减少用于导出依赖图的数据总量。图7是表示从源设备导出依赖图中节点的方法示例的流程图,例如图4中所示的依赖图400的部分。可以在图5所示方法500的块506处使用方法700。
在块702,识别表示一个值(如空间或时间值)的第一依赖图节点。关于依赖图400的该部分,在块702识别值节点402、406、408和412。
在块704,存储第一节点。第一节点可以存储于由游戏系统可读取的第一数据结构中,如图1所示的游戏系统100。
在块706,表示第一节点之间关系的第二依赖图节点被识别。关于依赖图400的该部分,在块706识别功能性节点404、410和414。已识别的节点可以表示依赖图中表示的元素的第一空间或时间值与依赖图中表示的元素的第二空间或时间值之间的关系。例如,基于与第一元素相连接的第二元素的位置或方向,在块706识别的节点可以用于确定第一元素的位置和方向。
在块708,第二节点与第一节点分开存储。第二节点可以存储于由游戏系统可读取的第二数据结构中,其中该第二数据结构不同于第一数据结构。这样,存储了两个数据结构,将依赖图中表示的值与依赖图中表示的功能区分开。这种区分可以与适当的数据结构成对出现,该数据结构会减少存储这种信息所需的数据总量,或者这种区分可以帮助剔除依赖图中存储的过量信息,该过量信息在为对象或其部分制作动画时对于游戏系统毫无用处。
在一些实施方式中,方法700用于向两个不同的数据结构导出依赖图。在其他实施方式中,存储多个第一数据结构和/或多个第二数据结构。该多个第一数据结构可以存储表示不同节点值的数据,或者该第一数据结构可以包括存储表示至少某些相同节点值的数据,例如出于冗余及纠错目的。导出之后,这种第一数据结构和第二数据结构可以存储于游戏系统之上,例如存储在游戏系统100的非易失性存储器108中,或在从插入到光盘驱动器112中的盘中读取之后存储在易失性存储器106中。
使用方法700导出节点有助于减少在创建依赖图时源设备使用的数据总量,但在为由依赖图表示的对象或其部分制作动画时,游戏系统并不使用这些数据。例如,在游戏系统仅需要元素的局部坐标时,源设备可以存储每个元素的世界坐标,下面将详细描述。有时这些世界坐标可以从节点值中省略。源设备也可以存储在设计依赖图和骨架中有用的约束或外部数据,但这些约束或外部数据仅对于元素移动相对无用。当导出依赖图时,这些约束和外部数据可以省略。
本领域的技术人员可以理解,可以以多种方式导出及存储依赖图,包括使用上述方法700。依赖图可以以不同于在源处创建的方式存储于游戏系统中,但是可以代替地存储依赖图或表示源依赖图的数据的描述。如上所述,这样可以减少存储依赖图所需的数据量,并易于游戏系统执行。同样地,可以在游戏系统中存储源动画曲线或表示源动画曲线的数据的描述,而不是存储在源设备处定义的精确的源动画曲线。
本领域的技术人员可以理解,参照图7的以上所述的示例方法700和游戏系统对依赖图的评估可以用于减少向系统导出所需的数据总量。因此,可以实现更加细致的动画及较少的必须传输或存储的数据。
更有效的数据评估
导出游戏系统使用的依赖图还可以增强游戏系统的性能。不但游戏系统可以在无需对许多数据进行高速缓存或页面调度的情况下为对象或其部分制作动画,而且依赖图较为容易由多个处理器并行评估,例如图1中所示的处理器104a-104d。
图8是表示方法800的示例的流程图,该方法800使用多个处理器(如处理器104a-104d)来评估依赖图。在块802,识别可被彼此独立评估的依赖图子网络。例如,参考图2和图3来考虑先前讨论的汽车骨架。定义了汽车骨骼的每个元素可以由依赖图中的节点表示。所述节点可以分组到多个网络中,此处称为子网络,因为它们包含整个依赖图的一部分,子网络可以彼此相对独立地被评估。例如,每扇门可以独立于其他门及汽车的其余部分而打开或关闭。窗户、行李舱和引擎护罩同样是独立的。
在一个实施方式中,由游戏引擎执行在块802处对子网络的识别,例如参照图1的上述游戏引擎。在另一个实施方式中,在源设备处识别子网络,并为每个子网络导出各自的数据结构。例如,方法700的块702可包括识别表示值的子网络的第一依赖图节点。块704可以包括存储子网络的那些已识别的节点。同样地,块706和708可以包括识别并存储表示第一子网络的节点之间关系的子网络的节点。在此实施方式中,游戏引擎只需要识别单独的数据结构,由此识别单独的子网络。
在块804,为每个子网络分配多个处理器(如处理器104a-104d)中的一个。子网络可以在处理器中均匀或不均匀地分布。这种分布可以随机确定,或者估算评估子网络的工作负荷,例如基于子网络的大小或复杂度。
在块806,使用已分配的处理器评估子网络中的节点。本领域的技术人员可以理解,使用该方法可以同时评估多个子网络,多达游戏系统中单独处理器的数量。这样,可以更有效地评估依赖图,并降低任何一个处理器上的负担。
在块802识别的子网络可以用于提高以其他方式对依赖图进行评估的效率。一种这样的方式是维持每个节点中的表示该节点中的值被改变或更新次数数量的计数器。当确定该节点的值是否有效时,可以将该计数器与子网络中其他节点的计数器进行比较。如果当前节点的计数器的值低于任何父节点的计数器的值,那么当前节点中的值是无效的,在该值被返回之前必须更新。接着,将当前节点的计数器的值更新为等于父节点中的计数器的值,或将计数器重置为共同值。
评估依赖图的其他方法需要在每个节点中设置脏标记以指示节点中的值不再有效。这样,当父节点中的值改变时,必须遍历依赖图以在该父节点的每个子节点中设置脏标记。但是,在上述的计数器方法中,仅更新父节点中的计数器,子节点仅需要参照在它们子网络中的其他节点,而无需更新整个依赖图。备选地,每次当子网络中的父节点的值被改变时,仅在子网络的节点中设置脏标记,这样,就消除了遍历依赖图其余部分的需求。这大大减少了为由依赖图表示的对象制作动画所需的处理的数量,并减少了这种动画制作所需的时间。
可以用于有效识别脏节点的另一种方法包括,定义全局和/或群组有效性指示符,并在依赖图的每个节点中定义有效性指示符。每个有效性指示符保持、存储或定义一个值。当请求依赖图中的节点的值时,将该节点的有效性指示符与全局有效性指示符相比较。如果两个节点的值不同,那么节点是脏的,必须更新。
当依赖图的节点由于接收来自依赖图外部的输入(例如,由于用户的输入或由于游戏中时间的流逝)而改变或被修改时,将全局有效性指示符设置为新的值,并将已改变节点的有效性指示符设置为等于全局有效性指示符的新值。但是,当依赖图的节点由于接收来自依赖图内部的输入时,仅仅将该节点的有效性指示符设置为等于全局有效性指示符的值。并不将全局有效性指示符设置为新值。因此,如果由于依赖图内其他节点的移动而更新依赖图的节点,则将不设置新的全局有效性指示符。因为外部输入而修改依赖图的节点,仅有所述已改变的节点会影响最新的全局有效性指示符。这样,通过与全局有效性指示符的单次比较就可以确定节点是脏的,并且无需遍历整个依赖图来设置脏的标记。
除了或取代全局有效性指示符,可以定义一个或多个群组有效性指示符。可以定义群组有效性指示符以表示依赖图中的任何群组节点。例如,可以为依赖图中的每个子网络定义群组有效性指示符,或为子网络的集合定义群组有效性指示符。也可以为链接两个依赖图的元网络定义群组有效性指示符。下面将更详细地描述元网络。使用群组有效性指示符与使用全局有效性指示符类似。来自群组外部的输入所引起的节点中的变化可以导致对群组有效性指示符进行更新。
可以在节点中存储有效性指示符。存储在节点中的全局或群组有效性指示符可以连接至一个或多个依赖图、群组和/或子网络,以便定义各自依赖图、群组或子网络的父节点。全局或群组有效性指示符也可以独立于任何依赖图、群组或子网络而存储。此外,有效性指示符可以包括计数器,或可以包括适于比较的任何其他值。例如,数字的全局有效性指示符可以在每次改变时增加一个值。本领域的技术人员将认识到,如可以用于表示节点有效性指示符的计数器不限于在每次改变时增加,并且不限于以恒定速率增加。计数器可以增加或减少任何值。
在块802识别的子网络可以通过简化用于为对象或其一部分制作动画的坐标系统,来进一步提高评估依赖图的效率。一般在世界坐标中评估依赖图,游戏系统一般使用已烘焙元素的世界坐标来提供动画数据。然而,子网络可以用于定义局部坐标。
图9是表示最初在图2中所示的元素206的示例的示意图,该元素具有在世界坐标空间中确定的位置。如上所述,元素206是定义了对象200结构的骨骼的一部分。在图9所示的实施方式中,对象200的整个人类形体是可见的。在图2中,仅有包含元素206的肩膀和手臂的部分形体是可见的。
在所示的实施方式中,定义了关于场景或环境的世界坐标的坐标系统902可用于指明在对象200的骨骼中元素的定位。这样,使用世界坐标系统定义了元素206的位置210a。每次移动元素206的父节点(例如元素204a),必须重新计算元素206a的世界坐标。同样地,任何一次移动任何节点,必须重新计算该节点的每个子节点的坐标。
子网络可以与它自己的局部坐标系统相关联。图10是表示具有在局部坐标空间中确定的位置的元素206的示例的示意图。在所示实施方式中,坐标系统1002定义了在元素204b处作为其原点的局部坐标。在这个局部坐标系统中可以计算元素206的位置210a。这样,元素206的局部坐标在元素204a和/或元素202a移动时不会改变。在这种情况下,对依赖图的评估无需重新计算元素206的局部坐标,从而减少了计算的复杂度及评估依赖图所需的时间。
可以针对元素的父节点或给定节点的子网络中的任何其他元素来定义局部坐标。由于子网络可以大体独立于其他子网络被评估,所以该子网络的局部坐标不需要像世界坐标一样最近地更新。当更新子网络中节点的局部坐标时,通常只需要更新子网络中元素的局部坐标,而不更新依赖图中任何其他元素的坐标。世界坐标可以由中央处理或定义来计算,或由参照图1中所述的游戏引擎来计算,并且通常只需要在一个元素与另一个对象的一个元素交互时计算。
本领域的技术人员可以理解,以上参照图8所述的示例方法800,以及其中定义的子网络可以用于提高评估依赖图的效率。因此,可以获得更快的动画制作,当提供显示该动画的数据时,游戏系统也不会成为负担。
动画的更高精确度
如上所述,动画数据在烘焙之后导出时通常被省略。这样,可能会丢失元素移动中的微小细节。例如,当数据被压缩或省略时,振荡运动削弱为大体上的直线运动。这样,无法在与游戏系统通信的显示器(诸如显示设备116)上精确地重建在源处创建的运动。即使数据没有丢失,游戏系统提供给动画制作的数据是基于元素定向的导出值,而不是基于源数据,由此不会精确地反映在源处创建的运动。
但是,通过在游戏系统处评估依赖图来为对象或其部分制作动画,将会再现与最初在源设备处创建的运动一样的运动。这样,显示给游戏系统用户的运动就保留了对象运动中的微小细节,并保留了动画师倾注的艺术性。这对于再现人类运动特别重要,当只是由机器制作动画时其会表现的僵硬或不准确。但是,动画师会精心制作角色的动作以使得其表现得栩栩如生,这些动作可以由游戏系统无损重现。
为了加强上述改善的精确度,可以使用多个依赖图改善场景中元素的交互。当使用烘焙值时,必须检测各自对象的元素之间的冲突。这种冲突的检测代价昂贵且不完全精确。但是,当评估依赖图时,可以更容易地使用更多细节确定交互。
图11是表示两个依赖图的部分可以交互的示例的框图。依赖图1101可以描述具有方向1的第一对象的第一元素,由坐标x1、y1、z1定义。同样地,依赖图1102可以描述具有方向2的第二对象的第二元素,由坐标x2、y2、z2定义。
当两个元素交互时,它们可以分组到元网络1104中,并且在它们二者之间定义功能性节点1106,如图12所示。参照图1描述的游戏引擎可以用于识别这种分组和/或定义这种功能性节点。可以与评估任何其他依赖图或子网络类似地评估元网络。例如,可以实现计数器,该计数器表示方向1或方向2的值是否已改变。两个元素的交互将更为精确及真实,因为一个元素中的动作可以用于确定其他元素中的动作。此外,可以避免代价昂贵的碰撞检测。
作为一个示例,方向1可以描述第一角色的手。方向2可以描述第二角色的手。在游戏执行期间,两个角色可以握手。一个角色可以执行由动画曲线定义的握手,另一个角色可以适当地作出反应,而不是每个角色都执行独立于其他角色的预定义的动画。
作为另一个示例,方向1也可以描述第一角色的手,而方向2可以描述一扇门。当门关闭时,可以定义功能性节点1106以阻止角色的手移动这扇门或从门中穿过。例如,如果角色的手与门把手接触,可以将功能性节点定义为允许角色的手转动门把手。
本领域的技术人员可以理解,上述示例和参照图11和12所述的元网络可以用于增加游戏系统的动画精确性。可以减少或避免动画制作中所使用的代价昂贵的操作的数量,而且得到的动画可能更加精确自然。
更加可适应的动画
不是游戏中所有的交互或事件都可以预先定义。通过来自用户的输入确定游戏的结果和导致该结果的事件。这些输入是不可预知的,并且根据情形会有所不同。在游戏执行期间,这种输入的数量和对象的可能配置是无穷的。因此,在游戏执行期间必须确定更多动画,而不是在源处预先定义。
图13是位于两条不同动画曲线的不同位置处的对象1300的示例示意图。在图13中,对象1300作为球棒示出。作为一个示例,角色可以挥动球棒。当跟随第一动画曲线来向高处挥动球棒,在点1302a处定位控制元素1304,这样,球棒1300a如图所示指向上方。当跟随第二动画曲线来向低处挥动球棒,在点1302b处定位控制元素1304,这样球棒1300b如图所示指向下方。
当烘焙动画时,必须通过混合两个现有配置来创建未被定义的配置。这样,如果角色在高的挥动动画曲线和低的挥动动画曲线的中间挥动球棒,那么就不得不将球棒1300a的动画和球棒1300b的动画组合起来,以生成在二者之间定位的球棒。组合已烘焙的动画以产生这种结果的方法可以简单地创建一个对象,该对象是对象1300在两个位置1302a和1302b的平均。这样,可以将球棒1300c作为球棒1300a和球棒1300b的空间平均来制作动画,如图14所示。但是,这种平均会导致不准确的动画,或在平均所得动画的移动期间产生伪像。如图14中所示,球棒1300c比球棒1300a或1300b都要短。
通过组合控制元素的动画曲线可以创造更加精确的动画。因此,对那些图像的动画曲线进行平均,并且以组合的动画曲线示出对象,而不是在空间上对对象的两个图像进行平均。以这种方式显示先前未定义的运动可以减少伪像,并改善所得出动画的艺术品质。例如,定义第一动画曲线是为在水平地面上行走的角色制作动画,定义第二动画曲线是为在陡峭的小山上爬山的角色制作动画。通过组合第一和第二动画曲线,可以为该角色制作动画,就像该角色在爬平缓的小山。
图15是位于图13中位置1302a和1302b的对象1300的另一个示意图。但是,在图15中,使用在点1302d定位的控制元素1304来为球棒1300d制作动画。可以通过对控制元素1304在点1302a和1302b的位置和方向求平均,从而确定位置1302。如图15中所示,得到的球棒1300d较为精确。此外,使用两条动画曲线制作动画的运动对于用户来说更加自然和可信。
此外,当动画元素使用控制元素和组合的动画曲线时,可以评估控制元素的依赖图。通过评估依赖图,依赖图中表示的其他元素可以适当地显示,并可以保持元素的一致交互。例如,可以将符合第一动画曲线的角色的手臂定位于角色身体的前面,而将符合第二动画曲线的同样的手臂定位于角色身体的后面。当对它们一起求平均值时,手臂看起来穿过角色的身体。即使使用为动画所设计的平均方法(例如球面线性内插),使用烘焙的动画通常无法在游戏系统中阻止这种不一致的动画。然而,依赖图中为手臂和身体配置的约束可以阻止手臂横穿过身体,或可以在使用控制点和依赖图确定手臂的位置时使得身体不碍事。
可以用多种方式组合动画曲线。在一些实施方式中,对动画曲线求平均值。在其他实施方式中,确定动画曲线的加权平均值。可以由在源处的动画师来确定加权平均值,或取决于游戏中的因素。例如,在上述角色爬平缓小山的示例中,可以使用第一和第二动画曲线的加权平均值为该角色制作动画,其中通过比较平缓小山与水平地面或陡峭小山的陡峭度来确定加权平均值。加权平均值可以是常数,或可以随时间调整。例如,游戏引擎可以确定每个依赖图或预定义功能的相关加权变量,其可以由动画师创建或设计,可以用于随时间改变权重。
评估游戏系统中的依赖图也会增加在游戏执行期间实现反向运动的便利性。反向运动涉及基于所期望的最终位置和方向确定元素的位置和方向。作为向前的运动求解程序,反向的运动求解程序接收过程化输入,并且必须确定满足程序输入的调整,而不是接收对每个元素的调整。
例如,当参照图4所述评估依赖图时,使用每个时间tg的动画曲线确定元素的位置和方向。然而,不会对反向运动求解程序给予该动画曲线,但必须在没有该动画曲线的情况下确定每个位置和方向,或必须唯一确定一条动画曲线。例如,游戏系统的用户可以输入指令让角色从桌子上捡起一个物品诸如一片食物。反向运动求解程序可以接收角色的手的最终位置,其等于食物物品的位置,此后可以确定手的位置、方向和动作以及会使手达到该最终位置的关联元素。
为了确保由游戏系统制作动画时,反向运动解决方案会在美学上使人愉悦,动画师可以在源处确定或创建反向运动骨架及依赖图。反向运动依赖图可由游戏系统使用以基于过程化输入确定反向运动的解决方案。因此,即使遇见与预定义的动画曲线没有关联的情形,也可以使用动画师初始的艺术品为该情形中的事件制作动画。
反向运动依赖图可以定义为与在示例方法500的块506处导出的依赖图有关。在此实施方式中,可以重新配置使用动画曲线为对象或其一部分制作动画的依赖图,以求解反向运动问题。例如,依赖图400部分中的值节点408x、408y和408z分别表示x、y、z平面中的动画曲线,可以用节点代替,该节点保持表示依赖图400表示的元素所需的下一个坐标的值。功能性节点410x、410y、410z同样可以由节点代替,该节点保持着确定产生元素的这种所需坐标的角度或方向的功能。本领域的技术人员将认识到依赖图400或特别是该依赖图400的部分可以被重新配置用于反向运动的其他方式。
反向运动依赖图也可以被定义为完全分离的依赖图。动画师可以在源处创建这种依赖图,并在方法500的块506处导出对这种依赖图的描述,在块508处加载到游戏系统,此外先前描述的依赖图和动画曲线数据也被导出和加载。反向运动依赖图可以在游戏执行期间以交互式的速率进行评估。
游戏引擎(如参照图1所描述的游戏引擎)可以识别指示应该使用反向运动的事件。这种事件可以导致依赖图被重新配置,或导致使用分离的依赖图。例如,当用户输入命令使角色捡起物品时,如上所述,引擎会切换到反向运动依赖图,以确定角色的手和使手到达物品位置的连接元素的动作。在一些实施方式中,两个依赖图用于为反向运动制作动画,以确保所确定的反向运动解决方案是平滑的。例如,使用第一反向运动依赖图确定的动作可以与使用第二反向运动依赖图确定的动作相混合。可使用两个依赖图的平均、两个依赖图的常量加权平均或随时间变化或改变的两个依赖图的加权平均来确定混合过程。
在游戏系统评估反向运动依赖图提供了很多优点。例如,动画师在源设备处创建的依赖图可以用于确定反向运动算法以替代请求游戏系统。游戏系统定义的这种反向运动解决方案可能不会保持动画师的作品,并可以成为游戏系统的负担。此外,使用反向运动依赖图,反向运动解决方案可以更加精确,并可以涉及更多元素,由此使得得出的动画对用户来说更加可信。例如,如果角色正在从场景的地板上捡起物品,游戏定义的反向运动解决方案可以为角色制作动画,角色可以向下伸手或僵硬地弯腰。使用反向运动依赖图,可以为角色制作动画,如屈膝并以更加栩栩如生的方式捡起物品。
本领域的技术人员可以理解,上述示例可以用于增强游戏系统生成的动画的适应性,这些示例包括参照图13至图15所述的动画曲线混合及反向运动依赖图。以一致性的简单方式使用游戏系统可以为那些没有由动画师专门制作动画的情形制作动画。
本领域的技术人员可以理解,上述的示例系统、设备、方法和实施方式可以以游戏系统评估依赖图和动画曲线。可以在游戏执行期间以交互式速率由游戏系统评估依赖图。对依赖图的评估可以给为对象或其一部分制作动画提供数据,例如在与游戏系统通信的显示设备上提供数据。对依赖图的描述可以减少向游戏系统传输所需的数据量。识别依赖图的子网络可以提高评估依赖图的效率。依赖图可以由多个处理器并行评估。可以定义函数以联系两个依赖图,也可以组合依赖图的动画曲线。切换事件使游戏系统使用反向运动依赖图。游戏系统因此可以在更多情形中,使用较少资源并以更高精确度来更快地生成动画。
本领域的技术人员将认识到,虽然此处所述的特定示例和实施方式涉及元素位置或方向的改变,但此处的描述也能等同地应用于由控制元素和/或动画曲线定义、表示或识别的状态的任何变化。例如,状态变化可以表示移动、方向、位置、颜色、形状、阴影或纹理的修改路径,或者可以表示一个所选动作或多个所选动作的触发。
本领域的技术人员将认识到,所述的系统、设备、组件、方法或算法可以使用多种配置或步骤来实现。上述的单个示例对于配置或步骤的数量不构成限制。例如,游戏系统100的配置存在于所述的组件示例之中,其中的组件可以以电子硬件、计算机软件或二者的组合来实现。示意性的示例以功能性的概括方式被描述如上。不脱离本发明的范围即可实现更多或更少的组件或步骤。本领域的技术人员会想到实现所述功能的多种方式,但这种实现不应被解释为脱离了本发明的范围。
虽然上面的详细说明已经示出、描述并指出了应用到各个方面的新颖特征,但可以理解的是,本领域的技术人员在不脱离本发明范围的情况下,可以对所示系统、设备或方法在形式和细节上进行各种省略、替换及修改。如所想到那样,内容及其变体可以以并不提供此处阐明的所有特征及益处的方式实现,因为一些特征可以与其他特征分开使用或实现。本发明的范围由所附权利要求、前面的说明书或以上二者来限定。

Claims (26)

1.一种在游戏动画系统上执行游戏的方法,包括:
识别源动画曲线数据,所述源动画曲线数据描述控制元素的状态随时间的变化;
识别第一依赖图的描述,所述依赖图定义所述源动画曲线数据的变换;及
当执行所述游戏时,以交互式速率来评估所述第一依赖图。
2.如权利要求1的方法,进一步包括:基于所述控制元素的状态来显示对象,所述对象由所述第一依赖图的所述描述中的多个节点来描述。
3.如权利要求2的方法,其中显示对象包括:通过由所述多个节点描述的多个元素来为网格或蒙皮制作动画。
4.如权利要求2的方法,进一步包括:更新所述多个节点的至少一个节点中的计数器。
5.如权利要求2的方法,进一步包括:确定所述多个节点中一个节点的计数器不等于所述多个节点中所述节点的父节点的计数器,以及请求更新所述多个节点中的所述节点。
6.如权利要求1的方法,其中评估所述第一依赖图包括:将所述源动画曲线数据变换为可由以下至少一个系统使用的数据:绘制系统、游戏保存系统、物理系统和特效系统。
7.如权利要求1的方法,进一步包括:提供表示预定义的点沿着先前定义的路径移动的数据。
8.如权利要求1的方法,进一步包括:生成表示与一个或多个其他元素关联的第一元素的方向的数据,所述第一元素和所述一个或多个其他元素定义了对象的至少一部分的结构以供显示。
9.如权利要求1的方法,进一步包括:
存储至少包含所述第一依赖图的第一节点的第一数据结构,所述第一节点表示多个相关元素中的一个元素的第一空间或时间值;以及
存储至少包含所述第一依赖图的第二节点的第二数据结构,所述第二节点表示所述第一时间或空间值与所述多个相关元素中的一个元素的第二时间或空间值之间的关系,
其中所述第二数据结构与所述第一数据结构不同。
10.如权利要求1的方法,进一步包括:重新配置所述第一依赖图的描述,使得重新配置的第一依赖图能够用于至少部分地基于在所述游戏执行期间接收的过程化输入,来决定用于显示的至少一个元素的位置。
11.如权利要求1的方法,进一步包括:
至少部分从基于来自评估所述第一依赖图的描述获取的数据,为第一对象的至少一部分制作动画;
在评估所述第一依赖图之后识别切换事件;以及
至少部分基于从评估第二依赖图的描述获取的数据,为所述第一对象的至少一部分制作动画,对所述第二依赖图的描述的评估在识别切换事件之后。
12.如权利要求1的方法,进一步包括:组合两条源动画曲线,其中对所述第一依赖图的评估基于组合的源动画曲线。
13.如权利要求1的方法,进一步包括:识别所述第一依赖图和在执行游戏时评估的第二依赖图之间的关系。
14.如权利要求1的方法,进一步包括:相对于源计算设备上使用所述源动画曲线数据而制作动画的对象的运动,以运动无损的方式为对象制作动画。
15.一种用于在游戏动画系统上执行游戏的设备,包括:
用于识别源动画曲线数据的装置,所述源动画曲线数据描述控制元素的状态随时间的变化;
用于识别第一依赖图的描述的装置,所述依赖图定义所述源动画曲线数据的变换;以及
用于当执行所述游戏时以交互式速率来评估所述第一依赖图的装置。
16.如权利要求15的设备,进一步包括:用于基于所述控制元素的状态来显示对象的装置,所述对象由所述第一依赖图的描述中的多个节点来描述。
17.如权利要求15的设备,其中用于评估所述第一依赖图的装置包括,用于将所述源动画曲线数据变换为在以下至少一个系统中可使用的数据的装置:绘制系统、游戏保存系统、物理系统和特效系统。
18.如权利要求15的设备,进一步包括:提供表示预定义的点沿着先前定义的路径移动的数据的装置。
19.如权利要求15的设备,进一步包括:用于生成表示与一个或多个其他元素相关联的第一元素的方向的数据的装置,所述第一元素和所述一个或多个其他元素定义了对象的至少一部分的结构以供显示。
20.如权利要求15的设备,进一步包括:
用于存储至少包含所述第一依赖图的第一节点的第一数据结构的装置,所述第一节点表示多个相关元素中的一个元素的第一空间或时间值;以及
用于存储至少包含所述第一依赖图的第二节点的第二数据结构的装置,所述第二节点表示所述第一时间或空间值与所述多个相关元素中的一个元素的第二时间或空间值之间的关系,
其中所述第二数据结构与所述第一数据结构不同。
21.如权利要求15的设备,进一步包括:用于重新配置所述第一依赖图的描述、使得重新配置的第一依赖图能够用于至少部分地基于在所述游戏执行期间接收的过程化输入来决定用于显示的至少一个元素的位置的装置。
22.如权利要求15的设备,进一步包括:识别所述第一依赖图和在执行游戏时评估的第二依赖图之间的关系的装置。
23.一种由游戏系统为元素制作动画的方法,包括:
提供第一依赖图的描述,其用于为第一对象的至少一部分制作动画,所述第一对象至少部分地由多个相关的元素定义;
识别多个子网络,每个子网络包括所述第一依赖图中的多个节点,其中每个子网络中的所述多个节点描述了至少两个所述相关元素随时间的运动,并可独立于所述依赖图中的剩余节点而被评估;
为每个子网络分配所述游戏系统的多个处理器中的一个处理器,其中至少两个子网络被分配不同的处理器;以及
利用分配给所述子网络的处理器来评估至少一个子网络中的节点,从而为与所述子网络的至少两个相关元素相关联的运动制作动画。
24.如权利要求23的方法,进一步包括:
存储至少包括第一节点的第一数据结构,所述第一节点是多个节点中的一个节点,并表示多个相关元素中的一个元素的第一空间或时间值;以及
存储至少包括第二节点的第二数据结构,所述第二节点是所述多个节点中的一个节点,并表示所述第一时间或空间值与所述多个相关元素中的一个元素的第二时间或空间值之间的关系,
其中所述第二数据结构不同于所述第一数据结构。
25.如权利要求23的方法,进一步包括:确定第二依赖图中节点的子网络与基于所述第一依赖图的所述多个子网络中的一个子网络之间的关系,所述第二依赖图具有用于为第二对象的至少一部分制作动画的数据。
26.如权利要求25的方法,进一步包括使用多个处理器中的一个来评估已定义的关系,所述评估独立于对所述第一依赖图和所述第二依赖图的其余部分的评估。
CN200910258479.8A 2008-11-17 2009-11-17 用于动画的依赖图评估的系统和方法 Active CN101916324B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/272,648 2008-11-17
US12/272,648 US8508537B2 (en) 2008-11-17 2008-11-17 System and method for dependency graph evaluation for animation

Publications (2)

Publication Number Publication Date
CN101916324A true CN101916324A (zh) 2010-12-15
CN101916324B CN101916324B (zh) 2015-05-13

Family

ID=41651361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910258479.8A Active CN101916324B (zh) 2008-11-17 2009-11-17 用于动画的依赖图评估的系统和方法

Country Status (4)

Country Link
US (1) US8508537B2 (zh)
EP (1) EP2187355B1 (zh)
JP (2) JP2010119843A (zh)
CN (1) CN101916324B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729491A (zh) * 2012-10-11 2014-04-16 索尼公司 用于对身体创建动画的系统和方法
CN103875032A (zh) * 2011-09-06 2014-06-18 梦工厂动画公司 优化图表评估
CN104050696A (zh) * 2013-03-15 2014-09-17 梦工厂动画公司 保存和重复使用中间数据
CN104050701A (zh) * 2013-03-15 2014-09-17 梦工厂动画公司 渲染设置图
CN104050693A (zh) * 2013-03-15 2014-09-17 梦工厂动画公司 场景的程序式分割
CN104185859A (zh) * 2013-03-14 2014-12-03 梦工厂动画公司 基于外观选择渲染计算机生成动画
CN104380344A (zh) * 2013-03-12 2015-02-25 梦工厂动画公司 用于并行依赖图评估的可视化工具
CN104508711A (zh) * 2013-03-14 2015-04-08 梦工厂动画公司 用于渲染计算机生成动画的资源分区
CN104520902A (zh) * 2012-08-03 2015-04-15 梦工厂动画公司 依赖图中的时间依赖性
US9811936B2 (en) 2013-03-15 2017-11-07 Dreamworks Animation L.L.C. Level-based data sharing for digital content production
US10096146B2 (en) 2013-03-15 2018-10-09 Dreamworks Animation L.L.C. Multiple visual representations of lighting effects in a computer animation scene
CN113230657A (zh) * 2021-05-21 2021-08-10 珠海金山网络游戏科技有限公司 一种角色交互方法及装置
CN114788258A (zh) * 2019-12-20 2022-07-22 索尼集团公司 成像设备、信息处理方法和程序

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8913065B2 (en) * 2011-08-05 2014-12-16 Jeffrey McCartney Computer system for animating 3D models using offset transforms
US9208600B2 (en) * 2012-03-05 2015-12-08 Trigger Happy, Ltd Custom animation application tools and techniques
US10110412B2 (en) * 2012-10-17 2018-10-23 Disney Enterprises, Inc. Dynamically allocated computing method and system for distributed node-based interactive workflows
US9218785B2 (en) 2013-03-15 2015-12-22 Dreamworks Animation Llc Lighting correction filters
US9208597B2 (en) 2013-03-15 2015-12-08 Dreamworks Animation Llc Generalized instancing for three-dimensional scene data
US9626787B2 (en) 2013-03-15 2017-04-18 Dreamworks Animation Llc For node in render setup graph
US9508178B2 (en) * 2013-07-19 2016-11-29 Lucasfilm Entertainment Company Ltd. Flexible 3-D character rigging blocks with interface obligations
US10134168B2 (en) * 2014-03-28 2018-11-20 Autodesk, Inc. Dynamically supporting custom dependencies during three-dimensional character animation
US10008019B2 (en) 2015-04-15 2018-06-26 Autodesk, Inc. Evaluation manager for 3D animation scenes
US20170193289A1 (en) * 2015-12-31 2017-07-06 Microsoft Technology Licensing, Llc Transform lightweight skeleton and using inverse kinematics to produce articulate skeleton
CN105976418A (zh) * 2016-06-28 2016-09-28 珠海金山网络游戏科技有限公司 一种人物动态骨骼的设计系统和方法
JP6318202B2 (ja) * 2016-08-18 2018-04-25 株式会社カプコン ゲームプログラムおよびゲームシステム
US20190318523A1 (en) * 2018-04-16 2019-10-17 Zhuhai Kingsoft Online Game Technology Co., Ltd. Methods and Systems for Monitoring User Activity and Managing Controllers in 3-D Graphics
US10580187B2 (en) * 2018-05-01 2020-03-03 Enas TARAWNEH System and method for rendering of an animated avatar
JP7050623B2 (ja) 2018-08-24 2022-04-08 三和シヤッター工業株式会社 開き戸
US10818065B1 (en) * 2019-05-17 2020-10-27 Adobe Inc. Inverse kinematic solution blending in digital character animation
US11127185B1 (en) * 2020-07-24 2021-09-21 Weta Digital Limited Manipulating code for animation control rig generation
US11956571B2 (en) * 2022-07-28 2024-04-09 Katmai Tech Inc. Scene freezing and unfreezing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1171580A (zh) * 1996-04-25 1998-01-28 松下电器产业株式会社 计算机图象处理、动画数据收发、生成方法以及记录媒体
US6388668B1 (en) * 1998-07-20 2002-05-14 Microsoft Corporation Functional animation including sprite tree generator and interpreter
CN101079154A (zh) * 2007-03-02 2007-11-28 腾讯科技(深圳)有限公司 一种角色动画实现方法及系统
JP2008033941A (ja) * 2006-07-31 2008-02-14 Avid Technology Inc 三次元キャラクタ・アニメーションを表すオペレータ・グラフの効率的処理

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04270470A (ja) * 1990-12-25 1992-09-25 Kongouzen Souhonzan Shiyourinji アニメーション作成方法
US6285380B1 (en) * 1994-08-02 2001-09-04 New York University Method and system for scripting interactive animated actors
US5808625A (en) 1995-08-04 1998-09-15 Silicon Graphics Incorporated System and method for using dependency graphs for the control of a graphics creation process
US6057859A (en) * 1997-03-31 2000-05-02 Katrix, Inc. Limb coordination system for interactive computer animation of articulated characters with blended motion data
US6011562A (en) * 1997-08-01 2000-01-04 Avid Technology Inc. Method and system employing an NLE to create and modify 3D animations by mixing and compositing animation data
US6462742B1 (en) * 1999-08-05 2002-10-08 Microsoft Corporation System and method for multi-dimensional motion interpolation using verbs and adverbs
US6535215B1 (en) * 1999-08-06 2003-03-18 Vcom3D, Incorporated Method for animating 3-D computer generated characters
US6522331B1 (en) 2000-02-01 2003-02-18 Stormfront Studios, Inc. Character animation using directed acyclic graphs
EP1345179A3 (en) * 2002-03-13 2004-01-21 Matsushita Electric Industrial Co., Ltd. Method and apparatus for computer graphics animation
JP2003337956A (ja) * 2002-03-13 2003-11-28 Matsushita Electric Ind Co Ltd コンピュータグラフィックス・アニメーション装置及びコンピュータグラフィックス・アニメーション方法
JP3818442B2 (ja) * 2002-03-25 2006-09-06 ソニー株式会社 画像処理装置および方法、記録媒体、並びにプログラム
FR2839176A1 (fr) * 2002-04-30 2003-10-31 Koninkl Philips Electronics Nv Systeme d'animation pour robot comprenant un ensemble de pieces mobiles
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7292250B2 (en) 2004-03-31 2007-11-06 Dreamworks Animation, Llc Character deformation pipeline for computer-generated animation
US20060022983A1 (en) 2004-07-27 2006-02-02 Alias Systems Corp. Processing three-dimensional data
EP1918880A3 (en) 2005-04-19 2009-09-02 Digitalfish, Inc. Techniques and workflows for computer graphics animation system
US7782324B2 (en) * 2005-11-23 2010-08-24 Dreamworks Animation Llc Non-hierarchical unchained kinematic rigging technique and system for animation
WO2008064363A2 (en) 2006-11-22 2008-05-29 Take Two Interactive Software, Inc. System and method for real-time pose-based deformation of character models

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1171580A (zh) * 1996-04-25 1998-01-28 松下电器产业株式会社 计算机图象处理、动画数据收发、生成方法以及记录媒体
US6388668B1 (en) * 1998-07-20 2002-05-14 Microsoft Corporation Functional animation including sprite tree generator and interpreter
JP2008033941A (ja) * 2006-07-31 2008-02-14 Avid Technology Inc 三次元キャラクタ・アニメーションを表すオペレータ・グラフの効率的処理
CN101079154A (zh) * 2007-03-02 2007-11-28 腾讯科技(深圳)有限公司 一种角色动画实现方法及系统

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103875032A (zh) * 2011-09-06 2014-06-18 梦工厂动画公司 优化图表评估
US9135739B2 (en) 2011-09-06 2015-09-15 Dreamworks Animation Llc Optimizing graph evaluation
CN103875032B (zh) * 2011-09-06 2016-10-12 梦工厂动画公司 优化图表评估
US9892528B2 (en) 2012-08-03 2018-02-13 Dreamworks Animation L.L.C. Temporal dependencies in dependency graphs
US10896112B2 (en) 2012-08-03 2021-01-19 Dreamworks Animation Llc Visualization tool for parallel dependency graph evaluation
US10453239B2 (en) 2012-08-03 2019-10-22 Dreamworks Animation L.L.C. Temporal dependencies in dependency graphs
CN109584343A (zh) * 2012-08-03 2019-04-05 梦工厂动画公司 依赖图中的时间依赖性
CN104520902B (zh) * 2012-08-03 2018-11-09 梦工厂动画公司 依赖图中的时间依赖性
CN104520902A (zh) * 2012-08-03 2015-04-15 梦工厂动画公司 依赖图中的时间依赖性
CN103729491A (zh) * 2012-10-11 2014-04-16 索尼公司 用于对身体创建动画的系统和方法
CN103729491B (zh) * 2012-10-11 2017-04-12 索尼公司 用于对身体创建动画的系统和方法
CN104380344A (zh) * 2013-03-12 2015-02-25 梦工厂动画公司 用于并行依赖图评估的可视化工具
CN104508711B (zh) * 2013-03-14 2019-01-08 梦工厂动画公司 用于渲染计算机生成动画的资源分区
CN104508711A (zh) * 2013-03-14 2015-04-08 梦工厂动画公司 用于渲染计算机生成动画的资源分区
CN104185859B (zh) * 2013-03-14 2018-06-01 梦工厂动画公司 基于外观选择渲染计算机生成动画
CN104185859A (zh) * 2013-03-14 2014-12-03 梦工厂动画公司 基于外观选择渲染计算机生成动画
CN104050693A (zh) * 2013-03-15 2014-09-17 梦工厂动画公司 场景的程序式分割
CN104050701B (zh) * 2013-03-15 2018-10-12 梦工厂动画公司 渲染设置图
US10096146B2 (en) 2013-03-15 2018-10-09 Dreamworks Animation L.L.C. Multiple visual representations of lighting effects in a computer animation scene
US9811936B2 (en) 2013-03-15 2017-11-07 Dreamworks Animation L.L.C. Level-based data sharing for digital content production
CN104050701A (zh) * 2013-03-15 2014-09-17 梦工厂动画公司 渲染设置图
CN104050693B (zh) * 2013-03-15 2020-05-05 梦工厂动画公司 场景的程序式分割
CN104050696A (zh) * 2013-03-15 2014-09-17 梦工厂动画公司 保存和重复使用中间数据
CN114788258A (zh) * 2019-12-20 2022-07-22 索尼集团公司 成像设备、信息处理方法和程序
CN113230657A (zh) * 2021-05-21 2021-08-10 珠海金山网络游戏科技有限公司 一种角色交互方法及装置
CN113230657B (zh) * 2021-05-21 2022-12-13 珠海金山数字网络科技有限公司 一种角色交互方法及装置

Also Published As

Publication number Publication date
EP2187355A1 (en) 2010-05-19
US8508537B2 (en) 2013-08-13
US20100123723A1 (en) 2010-05-20
CN101916324B (zh) 2015-05-13
EP2187355B1 (en) 2014-02-19
JP2010119843A (ja) 2010-06-03
JP2016001479A (ja) 2016-01-07
JP6129910B2 (ja) 2017-05-17

Similar Documents

Publication Publication Date Title
CN101916324A (zh) 用于动画的依赖图评估的系统和方法
CN110930483B (zh) 一种角色控制的方法、模型训练的方法以及相关装置
KR20160080064A (ko) 가상 환경의 가상 센서
US20110119332A1 (en) Movement animation method and apparatus
CN113785330A (zh) 使用相异的目标动画数据来训练人物的强化学习
CN106484115A (zh) 用于增强和虚拟现实的系统和方法
US11816772B2 (en) System for customizing in-game character animations by players
US20230334744A1 (en) Method and apparatus for generating walk animation of virtual role, device and storage medium
CN106354249A (zh) 行走模拟系统和方法
US20190272024A1 (en) System, method and apparatus of simulating physics in a virtual environment
Beacco et al. Footstep parameterized motion blending using barycentric coordinates
Donovan Mastering Oculus Rift Development
Oore et al. Local physical models for interactive character animation
US20120223953A1 (en) Kinematic Engine for Adaptive Locomotive Control in Computer Simulations
Fernandez-Cervantes et al. A grammar-based framework for rehabilitation exergames
Laszlo et al. Predictive feedback for interactive control of physics-based characters
JPH11250283A (ja) オブジェクト表現システム
Smeddinck et al. Hoverboard: A Leap to the Future of Locomotion in VR!?
De Paolis et al. The simulation of a billiard game using a haptic interface
Lee et al. Performance‐Based Biped Control using a Consumer Depth Camera
Emering et al. Versatile tuning of humanoid agent activity
Geiger et al. Goin’goblins-iterative design of an entertaining archery experience
Calabrese A Software Template for Multi-User Virtual Reality Applications
Cacciatore Ragdoll Matching: a non-learned physics-based approach to Humanoid Animation applied to VR Avatars.
Saint-Aubert et al. Tangible Avatar: Enhancing Presence and Embodiment During Seated Virtual Experiences with a Prop-Based Controller

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant