用于计算机产生动画的基于时间的调度转让专利
申请号 : CN201610153964.9
文献号 : CN106340052B
文献日 : 2021-07-02
发明人 : E·P·史密斯
申请人 : 梦工厂动画公司
摘要 :
权利要求 :
1.调度和执行用于代表客户端设备产生交互式计算机产生动画的计算以实现期望服务品质的方法,所述方法包括:产生当被执行时生成具有期望服务品质的计算机产生动画的用于计算机产生动画的第一帧的计算的计算配置,所述用于第一帧的计算配置包括:第一计算的标识,其被配置为当所述第一计算被执行时输出第一数据;
创建第一帧中的第一开始时间,在该第一开始时间所述第一计算开始;
创建第一帧中的第一结束时间,在该第一结束时间之前所述第一计算结束;
第二计算的标识,其被配置为取决于所述第一数据作为输入;以及创建第一帧中的第二开始时间,在该第二开始时间所述第二计算开始,其中所述第二开始时间在所述第一结束时间之后;
根据所述计算配置来执行所述第一计算和所述第二计算以创建所述计算机产生动画的第一帧,
其中根据所述计算配置来执行所述第一计算和所述第二计算包括:响应于所述第一开始时间的发生而执行所述第一计算;以及响应于所述第二开始时间的发生而执行所述第二计算;
在所述计算机产生动画的第一帧创建期间监视所述第一计算的执行;其中监视所述第一计算的执行包括确定所述第一计算输出第一数据的时间;
修改所述计算配置以创建修正后计算配置,其中修改所述计算配置响应于确定所述第一计算输出所述第一数据的时间在所述第二开始时间之后而执行;以及根据修正后计算配置来执行所述第一计算和所述第二计算以创建所述计算机产生动画的第二帧。
2.如权利要求1所述的方法,其中所述第二计算响应于所述第二开始时间的发生而执行,与所述第一计算是否在所述第二开始时间之前结束无关。
3.如权利要求1所述的方法,其中修改所述计算配置包括增加所述第一结束时间。
4.如权利要求1所述的方法,其中修改所述计算配置包括增加所述第二开始时间。
5.如权利要求1所述的方法,其中修改所述计算配置包括减少所述第一开始时间。
6.如权利要求1所述的方法,其中所述计算配置进一步包括表示所述第一计算的第一部分要对其执行的第一计算资源的第一资源数据,以及
其中修改所述计算配置包括将表示所述第一计算的第二部分要对其执行的第二计算资源的第二资源数据添加到所述计算配置。
7.如权利要求1所述的方法,其中所述第一计算包括多次操作,以及其中修改所述计算配置包括减少所述第一计算中的操作次数。
8.如权利要求1所述的方法,其中所述计算配置基于所述第一计算和所述第二计算的过去的执行而产生。
9.如权利要求1所述的方法,其中所述计算基于所述客户端设备的用户输入来确定动画人物的行为。
10.如权利要求1所述的方法,其中所述服务品质包括限定用于计算机产生动画的帧的计算要完全执行的时间量的目标等待时间,以及
其中所述计算配置被产生而使得用于所述帧的计算以比所述目标等待时间少的时间量来完成。
11.用于调度和执行代表客户端设备产生交互式计算机产生动画以实现期望服务品质的系统,所述系统包括:
至少一个计算资源,其被配置为:产生当被执行时生成具有期望服务品质的计算机产生动画的用于计算机产生动画的第一帧的计算的计算配置,所述用于第一帧的计算配置包括:第一计算的标识,其被配置为当所述第一计算被执行时输出第一数据;
创建第一帧中的第一开始时间,在该第一开始时间所述第一计算开始;
创建第一帧中的第一结束时间,在该第一结束时间之前所述第一计算结束;
第二计算的标识,其被配置为取决于所述第一数据作为输入;以及创建第一帧中的第二开始时间,在该第二开始时间所述第二计算开始,其中所述第二开始时间在所述第一结束时间之后;
根据所述计算配置来执行所述第一计算和所述第二计算以创建所述计算机产生动画的第一帧,
其中根据所述计算配置来执行所述第一计算和所述第二计算包括:响应于所述第一开始时间的发生而执行所述第一计算;以及响应于所述第二开始时间的发生而执行所述第二计算;
在所述计算机产生动画的第一帧创建期间监视所述第一计算的执行;其中监视所述第一计算的执行包括确定所述第一计算输出第一数据的时间;
修改所述计算配置以创建修正后计算配置,其中修改所述计算配置响应于确定所述第一计算输出所述第一数据的时间在所述第二开始时间之后而执行;以及根据修正后计算配置来执行所述第一计算和所述第二计算以创建所述计算机产生动画的第二帧。
12.如权利要求11所述的系统,其中所述第二计算响应于所述第二开始时间的发生而执行,与所述第一计算是否在所述第二开始时间之前结束无关。
13.如权利要求11所述的系统,其中修改所述计算配置包括增加所述第一结束时间。
14.如权利要求11所述的系统,其中修改所述计算配置包括增加所述第二开始时间。
15.如权利要求11所述的系统,其中修改所述计算配置包括减少所述第一开始时间。
16.如权利要求11所述的系统,其中所述计算配置进一步包括表示所述第一计算的第一部分要对其执行的第一计算资源的第一资源数据,以及
其中修改所述计算配置包括将表示所述第一计算的第二部分要对其执行的第二计算资源的第二资源数据添加到所述计算配置。
17.如权利要求11所述的系统,其中所述第一计算包括操作多次数量,以及其中修改所述计算配置包括减少所述第一计算中的操作次数。
18.如权利要求11所述的系统,其中所述计算配置基于所述第一计算和所述第二计算的过去的执行而产生。
19.如权利要求11所述的系统,其中所述计算基于所述客户端设备的用户输入来确定动画人物的行为。
20.如权利要求11所述的系统,其中所述服务品质包括限定用于计算机产生动画的帧的计算要完全执行的时间量的目标等待时间,以及
其中所述计算配置被产生而使得用于所述帧的计算以比所述目标等待时间少的时间量来完成。
21.包括用于调度和执行代表客户端设备产生交互式计算机产生动画以实现期望服务品质的计算机可执行指令的非暂态计算机可读存储介质,所述计算机可执行指令包括用于如下的指令:
产生当被执行时生成具有期望服务品质的计算机产生动画的用于计算机产生动画的第一帧的计算的计算配置,所述用于第一帧的计算配置包括:第一计算的标识,其被配置为当所述第一计算被执行时输出第一数据;
创建第一帧中的第一开始时间,在该第一开始时间所述第一计算开始;
创建第一帧中的第一结束时间,在该第一结束时间之前所述第一计算结束;
第二计算的标识,其被配置为取决于所述第一数据作为输入;以及创建第一帧中的第二开始时间,在该第二开始时间所述第二计算开始,其中所述第二开始时间在所述第一结束时间之后;
根据所述计算配置来执行所述第一计算和所述第二计算以创建所述计算机产生动画的第一帧,
其中根据所述计算配置来执行所述第一计算和所述第二计算包括:响应于所述第一开始时间的发生而执行所述第一计算;以及响应于所述第二开始时间的发生而执行所述第二计算;
在所述计算机产生动画的第一帧创建期间监视所述第一计算的执行;其中监视所述第一计算的执行包括确定所述第一计算输出第一数据的时间;
修改所述计算配置以创建修正后计算配置,其中修改所述计算配置响应于确定所述第一计算输出所述第一数据的时间在所述第二开始时间之后而执行;以及根据修正后计算配置来执行所述第一计算和所述第二计算以创建所述计算机产生动画的第二帧。
22.如权利要求21所述的计算机可读存储介质,其中所述第二计算响应于所述第二开始时间的发生而执行,与所述第一计算是否在所述第二开始时间之前结束无关。
23.如权利要求21所述的计算机可读存储介质,其中修改所述计算配置包括增加所述第一结束时间。
24.如权利要求21所述的计算机可读存储介质,其中修改所述计算配置包括增加所述第二开始时间。
25.如权利要求21所述的计算机可读存储介质,其中修改所述计算配置包括减少所述第一开始时间。
26.如权利要求21所述的计算机可读存储介质,其中所述计算配置进一步包括表示所述第一计算的第一部分要对其执行的第一计算资源的第一资源数据,以及
其中修改所述计算配置包括将表示所述第一计算的第二部分要对其执行的第二计算资源的第二资源数据添加到所述计算配置。
27.如权利要求21所述的计算机可读存储介质,其中所述第一计算包括多次操作,以及其中修改所述计算配置包括减少所述第一计算中的操作次数。
28.如权利要求21所述的计算机可读存储介质,其中所述计算配置基于所述第一计算和所述第二计算的过去的执行而产生。
29.如权利要求21所述的计算机可读存储介质,其中所述计算基于所述客户端设备的用户输入来确定动画人物的行为。
30.如权利要求21所述的计算机可读存储介质,其中所述服务品质包括限定用于计算机产生动画的帧的计算要完全执行的时间量的目标等待时间,以及
其中所述计算配置被产生而使得用于所述帧的计算以比所述目标等待时间少的时间量来完成。
31.一种代表客户端设备调度和执行用于生成交互式计算机生成动画的计算的方法,该方法包括:
为所述计算机生成的动画的第一帧生成计算的计算配置,所述第一帧的计算配置包括:
第一计算的标识,被配置为当执行第一计算时输出第一数据;
创建第一帧的第一开始时间,在该时间开始第一计算;
创建第一帧的第一结束时间,在该时间之前第一计算结束;
被配置为依赖于第一数据作为输入的第二计算的标识;和创建第一帧的第二开始时间,在该时间开始第二计算,其中第二开始时间在第一结束时间之后;和
根据计算配置执行第一计算和第二计算以创建计算机生成的动画的第一帧,其中根据计算配置执行第一计算和第二计算包括:响应于第一开始时间的出现,执行第一计算;和响应于所述第二开始时间的出现而执行所述第二计算,其中所述第二计算响应于所述第二开始时间的出现而执行,而与所述第一计算是否在所述第二开始时间之前结束无关。
32.根据权利要求31所述的方法,进一步包括:在创建计算机生成的动画的第一帧期间监控第一计算的性能;
修改计算配置以创建修改的计算配置;和根据修改的计算配置执行第一计算和第二计算,以创建计算机生成的动画的第二帧。
33.根据权利要求32所述的方法,其中监控所述第一计算的性能包括确定所述第一计算输出所述第一数据的时间,以及其中修改计算配置是响应于确定第一计算输出第一数据的时间在第二开始时间之后而执行的。
34.根据权利要求33所述的方法,其中修改所述计算配置包括增加所述第一结束时间。
35.根据权利要求33所述的方法,其中修改所述计算配置包括增加所述第二开始时间。
36.根据权利要求33所述的方法,其中修改所述计算配置包括减少所述第一开始时间。
37.根据权利要求33所述的方法,其中,所述计算配置还包括表示第一计算资源的第一资源数据,所述第一计算的第一部分将在所述第一计算资源上执行,以及其中修改计算配置包括将表示第二计算资源的第二资源数据添加到计算配置,在第二计算资源上执行第一计算的第二部分。
38.根据权利要求33所述的方法,其中所述第一计算包括多个操作,并且其中修改计算配置包括减少第一计算中的操作数量。
39.根据权利要求31所述的方法,其中所述计算配置是基于所述第一计算和所述第二计算的过去性能来生成的。
40.根据权利要求31所述的方法,其中所述计算基于对所述客户端设备的用户输入来确定动画角色的行为。
41.根据权利要求31所述的方法,其中所述计算机生成的动画的第一帧的计算的计算配置在被执行时产生具有服务质量的计算机生成的动画,所述服务质量包括目标等待时间,所述目标等待时间定义了计算机生成的动画的帧的计算将被完全执行的时间量,以及其中生成计算配置,使得帧的计算在比目标等待时间更短的时间内完成。
42.一种用于代表客户端设备调度和执行用于生成交互式计算机生成动画的计算的系统,该系统包括:
至少一个计算资源,被配置为:为计算机生成的动画的第一帧生成计算的计算配置,第一帧的计算配置包括:第一计算的标识,被配置为当执行第一计算时输出第一数据;
创建第一帧的第一开始时间,在该时间开始第一计算;
创建第一帧的第一结束时间,在该时间之前第一计算结束;
被配置为依赖于第一数据作为输入的第二计算的标识;和创建第一帧的第二开始时间,在该时间开始第二计算,其中第二开始时间在第一结束时间之后;和
根据计算配置执行第一计算和第二计算以创建计算机生成的动画的第一帧,其中根据计算配置执行第一计算和第二计算包括:响应于第一开始时间的出现,执行第一计算;和响应于所述第二开始时间的出现而执行所述第二计算,其中所述第二计算响应于所述第二开始时间的出现而执行,而与所述第一计算是否在所述第二开始时间之前结束无关。
43.根据权利要求42所述的系统,其中至少一个计算资源被进一步配置成:在创建计算机生成的动画的第一帧期间监控第一计算的性能;
修改计算配置以创建修改的计算配置;和根据修改的计算配置执行第一计算和第二计算,以创建计算机生成的动画的第二帧。
44.根据权利要求43所述的系统,其中监控所述第一计算的性能包括确定所述第一计算输出所述第一数据的时间,以及其中修改计算配置是响应于确定第一计算输出第一数据的时间在第二开始时间之后而执行的。
45.根据权利要求44所述的系统,其中修改所述计算配置包括增加所述第一结束时间。
46.根据权利要求44所述的系统,其中修改所述计算配置包括增加所述第二开始时间。
47.根据权利要求44所述的系统,其中修改所述计算配置包括减少所述第一开始时间。
48.根据权利要求44所述的系统,其中,所述计算配置还包括表示第一计算资源的第一资源数据,所述第一计算的第一部分将在所述第一计算资源上执行,以及其中修改计算配置包括将表示第二计算资源的第二资源数据添加到计算配置,在第二计算资源上执行第一计算的第二部分。
49.根据 权利要求44所述 的系统,其中所述第一计算包括多个操作,并且其中修改计算配置包括减少第一计算中的操作数量。
50.根据权利要求42所述的系统,其中所述计算配置是基于所述第一计算和所述第二计算的过去性能来生成的。
51.根据权利要求42所述的系统,其中所述计算基于对所述客户端设备的用户输入来确定动画角色的行为。
52.根据 权利要求42所述 的系统,其中所述计算机生成的动画的第一帧的计算的计算配置在被执行时产生具有服务质量的计算机生成的动画,所述服务质量包括目标等待时间,所述目标等待时间定义了计算机生成的动画的帧的计算将被完全执行的时间量,以及其中生成计算配置,使得帧的计算在比目标等待时间更短的时间内完成。
53.一种非暂时性计算机可读存储介质,包括用于代表客户端设备调度和执行用于生成交互式计算机生成动画的计算的计算机可执行指令,该计算机可执行指令包括用于以下的指令:
为所述计算机生成的动画的第一帧生成计算的计算配置,所述第一帧的计算配置包括:
第一计算的标识,被配置为当执行第一计算时输出第一数据;
创建第一帧的第一开始时间,在该时间开始第一计算;
创建第一帧的第一结束时间,在该时间之前第一计算结束;
被配置为依赖于第一数据作为输入的第二计算的标识;和创建第一帧的第二开始时间,在该时间开始第二计算,其中第二开始时间在第一结束时间之后;和
根据计算配置执行第一计算和第二计算以创建计算机生成的动画的第一帧,其中根据计算配置执行第一计算和第二计算包括:响应于第一开始时间的出现,执行第一计算;和响应于所述第二开始时间的出现而执行所述第二计算,其中所述第二计算响应于所述第二开始时间的出现而执行,而与所述第一计算是否在所述第二开始时间之前结束无关。
54.根据权利要求53所述的计算机可读存储介质,进一步包括:在创建计算机生成的动画的第一帧期间监控第一计算的性能;
修改计算配置以创建修改的计算配置;和根据修改的计算配置执行第一计算和第二计算,以创建计算机生成的动画的第二帧。
55.根据权利要求54所述的计算机可读存储介质,其中监控所述第一计算的性能包括确定所述第一计算输出第一数据的时间,以及其中修改计算配置是响应于确定第一计算输出第一数据的时间在第二开始时间之后而执行的。
56.根据权利要求55所述的计算机可读存储介质,其中修改所述计算配置包括增加所述第一结束时间。
57.根据权利要求55所述的计算机可读存储介质,其中修改所述计算配置包括增加所述第二开始时间。
58.根据权利要求55所述的计算机可读存储介质,其中修改所述计算配置包括减少所述第一开始时间。
59.根据权利要求55所述的计算机可读存储介质,其中,所述计算配置还包括表示第一计算资源的第一资源数据,所述第一计算的第一部分将在所述第一计算资源上执行,以及其中修改计算配置包括将表示第二计算资源的第二资源数据添加到计算配置,在第二计算资源上执行第一计算的第二部分。
60.根据权利要求55所述的计算机可读存储介质,其中所述第一计算包括多个操作,并且其中修改计算配置包括减少第一计算中的操作数量。
61.根据权利要求53所述的计算机可读存储介质,其中所述计算配置是基于所述第一计算和所述第二计算的过去性能来生成的。
62.根据权利要求53所述的计算机可读存储介质,其中所述计算基于对所述客户端设备的用户输入来确定动画角色的行为。
63.根据权利要求53所述的计算机可读存储介质,其中所述计算机生成的动画的第一帧的计算的计算配置在被执行时产生具有服务质量的计算机生成的动画,所述服务质量包括目标等待时间,所述目标等待时间定义计算机生成的动画的帧的计算将被完全执行的时间量,以及其中生成计算配置,使得帧的计算在比目标等待时间更短的时间内完成。
说明书 :
用于计算机产生动画的基于时间的调度
技术领域
背景技术
云等)以及人物(例如,动物、人等)。例如人物的模型可以被创建,然后移动或变型来模仿运
动。场景的图像在选定的时间或帧被渲染以创建动画视频。
量和尺寸、人物的分辨率、渲染图像的分辨率以及用于确定人物运动的模型的复杂度。
具有720p或1080p分辨率的计算机产生图像)。例如,智能手机不可能具有速度足以在每33
毫秒(ms)(即,30fps视频的帧时间)产生新图像的足够的处理器。此外,甚至是典型的个人
计算机也不可能具有存储复杂虚拟人物和场景的底层数据所需的内存容量、或者实时产生
视频品质动画的处理能力。
存在分配处理资源而使得提供可接受品质的服务的需要。
源可用那样的渲染帧的百分比。一些用户可能偏好在更新或缓冲图像的同时以降低帧率或
时间中断为代价在每帧充分更新的图像。时间中断导致较慢的有效帧率。其它用户可能偏
好无中断的较快的帧率,代价是偶尔在每帧接收到部分更新或非更新的图像。对于具有较
高分辨率的图像,一些用户还可能愿意牺牲帧率或者容忍中断。
能够预先确定,充足的资源可分配以便以可靠速率执行计算。计算可以部分地基于每个计
算所需的输入来进行配置。例如,如果计算B需要计算A生成的数据,则计算A被调度而发生
于计算B之前。此外,事件驱动方案可以实现,其中计算B由计算A的完成来触发。因此,计算B
等待直至计算机A完成才开始,从而确保计算B将总是具有其所需的数据。
随着更多计算超过它们的估计持续期间而加剧。如果延迟足够大,则事件驱动调度方案可
能不能满足服务品质的某方面,例如帧率。
影响动画的实时输入。由于动画未能预先确定,系统必须响应于用户输入而产生影像。系统
不仅必须动态地产生图像,而且需要额外资源来处理用户输入以及确定适当的响应。如果
系统允许未知数量的用户同时要求资源,则满足特定服务品质所要求的资源的不确定性变
得甚至更大。
发明内容
基于事件的方法,在基于事件的方法中计算由诸如另一计算完成或数据输送的计算事件来
发起。基于时间的处理可以应用于其中期望可靠或确定性输出率的计算过程。公开的计算
的适应性可以提供可用计算资源的更高效的分配。这可以减少所需的物理硬件的量和/或
提供在资源需求无大变化的情况下维持期望服务品质的更大的能力。能够减少资源需求的
变化对于资源量不可量的实施方案而言尤其有益。
的用户输入。
产生动画的计算的计算配置。计算配置包括:第一计算的标识,其被配置为当第一计算被执
行时输出第一数据;第一开始时间,在该第一开始时间第一计算开始;以及第一结束时间,
其中第一计算应在第一结束时间之前结束。计算配置还包括:第二计算的标识,其被配置为
取决于第一数据作为输入;以及在第一结束时间后的第二开始时间,在第二开始时间第二
计算开始。第一计算和第二计算根据计算配置而执行以创建计算机产生动画的第一帧。根
据计算配置执行第一计算和第二计算包括响应于第一开始时间的发生而执行第一计算,以
及响应于第二开始时间的发生而执行第二计算。
的过去的执行而产生。在又一实施方案中,计算被配置为基于客户端设备的用户输入来确
定动画人物的行为。
后计算配置来执行以创建计算机产生动画的第二帧。
第一结束时间,增加第二开始时间,减少第一开始时间,和/或减少第一计算中的操作数量。
数据可以添加到计算配置中。
成。
附图说明
具体实施方式
入设备和/或传感器来接收用户输入。用户输入可以包括对与客户端设备相关联的诸如例
如键盘、键板、触摸敏感板、触摸敏感屏幕、照相机、深度照相机、麦克风等设备的输入。用户
输入还可以包括客户端设备的用户做出的动作、位置或姿态。用户的动作、位置或姿态可以
经由能够捕获用户的图像或深度缓冲区的传感器(例如,照相机)或者诸如能够检测用户运
动或位置的加速度计或陀螺仪的传感器来输入。用户输入还可以包括用户发出的声音,这
可以由诸如麦克风的音频传感器来采集。
人物。
户输入数据。可以对检测到的动作、位置或姿态进行分类。检测到的行为的低级类别可以包
括诸如“抬手”或“嘴动”或者甚至是“检测到运动”或“检测到眼睛位置”的描述。高级类别可
以包括诸如“放弃”或“微笑”的描述。
可用于确定用户正如何运动。传感器数据可指示例如用户正在走步、抬起他/她的臂,等等。
用户嘴的运动看解译为微笑。作为另一实施例,检测到的用户眼睛的运动或位置可以解译
为人物要移动到用户所看的地方的暗示。作为又一实施例,用户的头的运动可以解译为指
示同意(例如,点头)或不同意(例如,摇头)。根据实施方案,诸如微笑的行为可视为低级解
译,而同意的指示可视为较高级解译。
变化。
移动,而行为解译包括确定运动是点头且点头是同意的标志。可替代地,确定用户正在点头
可以包含在感觉步骤中。在任意情况下,用户运动被检测且最终解译为同意的标志。
人物的行为可以至少部分地基于如在框204和206中检测到且解译的用户行为来确定。人物
行为包括被赋予生命的人物的任何类型的运动、反应或变化。例如,如果判定出用户正在微
笑,则动画人物可以回以微笑,挥手说嗨,或者说特定短语(例如,“你笑得真可爱”)。
将相响应于用户行为B而被确定。人物行为可以是采取肯定措施,或者可选地,响应于用户
输入什么都不做。
第二行为。启发式算法可用于基于过去的经验或用户输入来确定人物行为,使得人物对特
定用户输入的响应随着人物学习响应某用户行为而随时间变化。
他/她想要人物移向的特定方向。
在预定时间量内没有检测到用户行为,人物可以提示用户。在一个实施例中,人物行为意在
提示用户采取期望的动作。通过这种方式,人物可试图引导用户,而感知系统监视用户的动
作并且判定是否执行了期望的动作。然后,可以基于用户是否提供期望响应来确定进一步
的人物行为。
用户的行为不明确。
层的动画数据可以包括构成人物几何结构的曲线、表达和约束条件。
视频压缩格式。编码可通过能够对数字数据流进行编码或译码的处理器或诸如编码译码器
(CODEC)的计算机程序来执行。
接收到且通过重复处理200来处理。
个处理器来执行或者分布在多于一个的处理器中来执行。单个处理器可以执行与处理300
中的一个或多个框或其部分相关联的计算。系统300包括经由因特网304连接到交互式动画
系统310的客户端设备302A‑302M。交互式动画系统310包括数字信号处理器316、客户端控
制器312、主控制器314以及数据中心318。数字信号处理器316、客户端控制器312和主控制
器314可实现在交互式动画系统310中所包含的一个以上的处理器上。数据中心318包括执
行计算的多个计算资源310A‑320N。计算资源320A‑320N可以包括一个以上的处理器或内存
存储设备。
置为检测用户行为,解译用户行为,并且确定人物行为,如参考框204、206和208所描述的。
交互式动画系统310还可以包括一个或多个处理器,其被配置为混合人物组件,评估人物,
以及产生效果,如参考框210、212和214所描述的。交互式动画系统还可以包括一个或多个
渲染处理器,其被配置为渲染计算机产生图像,如参考框216所描述的。
并且还监视与动画人物交互的状况。主控制器314提供负责管理诸如数据中心318的硬件域
内的资源消耗的集中处理。
响应时间,这接近普通人对可视刺激的响应时间。对于交互式系统的服务品质可是指交互
品质。交互品质可取决于视频分辨率、系统可用性级别、人物和场景分辨率、帧时间、场景更
新率等等。交互品质还可以表示系统可用的时间百分比或者基于选定帧率和交换和环境的
复杂度而充分更新的帧的近似百分比。
类型、可识别用户行为以及人物反应和/或行为。
交互品质甚至更难。
时(例如,每帧)在其预定开始时间开始计算,而不考虑计算所使用的数据是否自前一迭代
已经更新。执行监视以判定数据的每个分组是否正按时输出或更新以便由使用该数据作为
输入的后续计算使用。随时间推移,系统可以改变各种参数以及分配附加资源以便试图保
持期望的交互品质。
的交互式动画系统300来描述处理400。
作为客户端控制器处理的部分,客户端控制器312获得与客户端设备302或客户端设备302
的用户相关联的信息。用户信息可以包括用户名称、偏好、历史等等。设备信息可以包括设
备类型、操作系统、处理和内存能力,等等。
可以确定场景、环境和/或用户可与其交互的人物。交互包还可以确定可供用户使用的交互
的复杂度。交互复杂度级别可以包括人物的数量和类型、可识别的用户行为以及人物行为。
量)、网络连接速度以及交互式动画系统310等因素而被确定。与确定估计的交互品质有关
的能力包括可用的计算资源(例如,处理器的数量和速度)。显然,由于在交互被请求时这些
因素的状况,估计的交互品质可以不同于期望的或选定的交互品质。
可以是任何计算操作或处理或者其部分。在交互式动画系统410中,计算可以包括例如在处
理200中描述的一个或多个任务,诸如确定人物行为,评估人物,渲染图像,或者这些任务的
某部分。
以将用户的身份、用户有权期望何种品质的交互以及预期交互的描述(例如,哪些人物跑,
以及在何种环境中他们将被渲染)通知给主控制器314。
个后续计算的输入)。配置可以包括每个计算开始的开始时间和每个计算在此之前结束的
结束时间。配置还可以包括表示与分配以便完全执行计算的时间量的与每个计算相关联的
等待时间。每个计算的结束时间可以基于开始时间和分配给计算的等待时间的总和来确
定。开始时间和结束时间限定了在其内完全执行计算的时间间隔,而等待时间表示时间间
隔的持续期间。
等待时间内。计算还可以包括每个计算的处理位置(即,哪些处理器或其部分将执行计算)。
配置参数可以存储在配置文件中。
交互的其他用户采集。在一个实施方案中,交互式动画系统310具有可用处理资源的知识,
从而标识计算的位置。例如,主控制器314可以将表示处理器的位置和速度的数据存储在数
据中心318中。
辨率、装备复杂度和规划运动的参数。人物分辨率包括限定人物几何结构的采样点的数量
和间距。注意的是,人物分辨率能够区别于图像分辨率,图像分辨率包括在动画场景的渲染
图像中的采样点的数量。
输出数据的估计大小的信息,输出数据的估计大小可能是估计将输出数据传递到下游计算
所要求的时间而需要的。对于数据中心318中每种类型的处理器,表格存储在特定复杂度级
别(例如,分辨率)下评估人物的估计时间。表格还可以包括估计计算时间或期望的计算时
间的减少,取决于分配给计算的处理器的数量。生成特定人物分辨率所需的内存也可以存
储在表格中。表格还可用于分配计算的等待时间或者确定必须分配给计算以实现分配的等
待时间的处理器的数量。类似的数据或数据表格可供其他计算使用。
倍速度运行,使得计算花费的时间量与评估并行运动的情况一样多。
并行地执行来减少执行计算的时间。子计算必须被正确地调度而使得每个子计算都具有所
需的输入。该替代方案可允许计算在帧时间内执行,但是代价是额外的处理资源(例如,使
用更多处理器)。
被创建而使得每个实例对于特定帧执行整个计算。如下文更详细论述的,计算可以被调度
而使得实例以期望帧率但是具有初始延时来生成输出。
所花费的时间量,小于一帧。虽然该替代方案得到延迟的响应,但是其一旦开始就提供了平
滑的显示。
计算的三个实例。对于单个帧,每个实例花费100ms来执行人物评估。假设用户输入在时点t
=0发生,并且忽略全部其他等待时间(例如,用户行为解译,人物行为确定,配置步骤,等
等),所确定的人物行为将会由于计算的等待时间而延迟三帧,并且将在用户输入之后的第
四帧(例如,100ms)开始。实例可以至少部分地与交错输出并行地运行,使得实例1‑3提供帧
4‑6的输出,这些帧将分别在时间100ms、133.3ms以及166.6ms开始。如果确定的行为持续时
间长于三个帧(即,超过帧6),则实例1能够在200ms对于帧7再次执行计算(以更新后的参
数)。也即,在所提供的实施例中,每个实例可以对于每三帧执行计算,只要行为持续。
合可以实现,取决于所期望的服务品质或交互品质。
间,其中i=0,1,…,N‑1。
然,tCi不包括传递由计算Ci生成的数据到系统的另一部分所需的网络通信时间。而是,时间
间隔tTi表示在计算Ci完成之后但是在下一计算Ci+1开始之前所经过的时间量。该时间间隔
是分配用于将数据从Ci传递到Ci+1的时间量。时间tu是从客户端设备302上传客户端数据的
时间量,并且时间td是分配用于将编码的视频数据下载到客户端设备302的时间量。计算被
配置为使得全部N个计算在目标总等待时间Ltarg内完成。
Ci的处理器的速度,以及贡献给计算的资源量(例如,处理器的数量)以及实际测得的计算Ci
先前发生的等待时间。
次迭代内计算被分配了相对于该迭代开始的相同的时间间隔。因此,对于每次迭代,可以预
先确定计算开始的时间。
数据的计算。然而,可能存在在临界路径上与计算Ci并行地发生的其他计算。例如,使集合D
表示紧随其后且取决于临界计算Ci的输出的全部计算(即,Ci是D中每个计算的直接必要条
件)。D中的每个计算Dj具有分配的等待时间tDj和传递时间tRj。因此,计算Ci+1是集合D中的具
有最大组合分配的处理时间tDk和传递时间tRk的计算Dk。也即,如果D包括M个计算,Ci+1=Dk,
其中Dk是最大化tDj+tRj(j=0,…,M‑1)的计算。
多个输入自上次迭代是否到达或者是否已经更新无关。响应于其对应开始时间的发生而执
行每个计算。因此,计算的开始不显式地取决于所需输入何时到达;其仅隐式地取决于输入
的到达,因为开始时间被定义为使得期望输入在开始时间可用。
束计算或者在当前计算例如Ci被调度开始的时间(即, )之前尚未输出数据,则会发生这
种情况。即使在前计算在其分配的时间间隔内生成了数据但是花费比分配的传递时间tTi长
的时间传递数据,数据也可能在计算开始时不可用。如果当前迭代的输入未按时到达,则通
过使用缺省输入或来自前一迭代的输入,计算可以继续进行。为了允许系统保持期望的总
等待时间,不使用更新的输入来继续进行计算可能是期望的。然而,由于甚至在缺少更新输
入的情况下执行计算,对于当前迭代而言,动画场景的一些信息可能不更新。
在前计算继续生成数据且在数据变得可用时将数据提供给相关的下游计算,甚至在下游计
算已经开始之后。而且,在前计算可以独立于下游计算运行的速率的速率来生成输出。
到达的事件而开始。结果,能避免在基于事件方案中会发生的一些延时。在基于事件的方案
中,一个计算的延时导致全部后续计算延时。相反,在基于时间的方案中,如果在前计算花
费比预期长的时间或者在其分配时间内未结束,则计算不被推送回。
待时间已被满足和/或在更少时间内完成计算无益时。如果实际的总等待时间正在提供用
户所期望的服务品质,则减少等待时间可能不具有优点,即使可能这样。例如,在一些情况
下可能的是将总等待时间减至小于帧时间。然而,比帧率更快的生成图像会导致不得不被
丢弃或者可替代地存储和管理以便后续使用的过量图像,从而需要额外的资源。
而使得时间从过度执行(例如,在少于它们的分配时间内结束)和重新分配的计算转向到总
是欠执行(例如,超过它们的分配时间)的计算。
可以提供可用计算资源的更高效的分配。这额可以减少所需的物理硬件的量和/或提供更
大的保持期望服务品质而无需资源需求有大变化的能力。能够减少资源需求的变化对于资
源量不可量的实施方案而言特别有益。
的全部机器之间维持一致的时间感,因为不存在与另一事件的显式同步。然而,虽然没有显
式的同步,但是计算的时间仍是关键的,因为下游计算取决于来自在前计算的输出。
如,每1024秒)或者当时钟之间的偏差超过具体阈值(例如,1ms)时。例如,网络时间协议
(NTP)可用于实现亚毫秒级相对精度。
与调度结束时间或者分配的等待时间进行比较以判定计算是否正消耗比预期更多的资源
(例如,更多的处理器时间)。
在此期间创建数据的迭代而使得后续计算在接收到分组时能够检查迭代值。在迭代p期间
开始但是获得了在小于p的迭代期间创建的数据的计算可以确认并记录数据不是当前的。
具有具有在当前迭代结束之后的输出时间或者小于当前迭代的迭代值的数据表明,生成数
据的计算没有在依赖于该数据作为输入的后续计算开始之前在当前迭代中输出数据。
在另一实施方案中,没有接收到其所需的输入数据或者从前一迭代接收到数据的后续计算
将通知发送给客户端控制器312。在又一实施方案中,欠执行的计算和后续计算均将通知发
送到客户端控制器312。
告。作为另一实施例,当数据在阈值连续迭代数量内或者在预定迭代数量内的规定次数内
(例如,N中的M个)尚未更新时,可以发送报告。作为又一实施例,当完成计算花费的时间超
过预定阈值(例如,比其分配时间长1.5倍)时,可以发送报告。
而,如果计算频繁地或者持续地花费比分配时间长的时间或者没有按时将其输出传送到其
它计算,可以推导出不足的处理资源分配给给定要完成工作的量以及传递输出数据的量的
任务。
修正配置的决策。做出该决策的标准可以类似于上文关于计算是否应当报告数据没有按时
传送的标准。例如,每当计算未能在其结束时间之前完全地执行或者在第二计算开始时间
之前没有提供其输出数据,可以修正配置。其它实施例包括当来自计算的数据对于阈值连
续迭代数量而言较晚时或者当数据在预定迭代数量中的一定次数(例如,N中的M个)时,对
配置做出变化。此外,其它的实施例包括当一些计算数量未能在其分配时间内完成时或者
当实际的计算时间超过预定阈值(例如,比其分配时间长1.5倍)时,重新配置该配置。
时,修正配置的标准可能要求较低。相反,更大或更频繁的延时可能对于不太重要的数据而
言更可接受。
则配置可以保持不变。
示。结束客户端会话可以包括释放已经分配给客户端会话的资源以使它们可用于未来的客
户端会话。可替代地,新的可用的资源可以分配其它当前运行的会话以提高交互品质。如果
会话未完成,则处理300返回到框310且随着会话根据当前配置继续进行而继续监视计算。
据作为输入的后续第二计算的配置。作为一个实施例,当第一计算在第二计算开始之前不
输出其数据时,贡献给第一计算的计算资源增加。例如,通过将额外处理器分配给第一计算
或者将第一计算引导至更快的处理器,可以增加资源。
控制器314可以拒绝该请求,但是基于问题和主控制器314所具有的关于数据中心318中的
计算资源的信息来提出替代的解决方案。
间L来说明延迟第二计算的开始时间或者延长第一计算的分配的等待时间。为了补偿延长
分配给第一计算的时间,为另一计算分配的等待时间可以减少,使得总等待时间不变。例
如,为总是在小于其分配时间内结束的计算分配的等待时间可以减少。
不能总是满足目标等待时间Ltarg,则在一些实施方案中可以降低帧率而不会对服务或交互
品质具有重大影响。例如,可能存在高帧率不重要且降低其不会严重影响交互品质的一些
交互。这对于不需要快速用户响应或者用户不期望对输入做出快速反应的交互确实如此。
虽然降低帧率可以减弱交互的响应性,但是其能够通过允许每帧在被显示时更充分地更新
而提供更大的图像品质。
案中,第一计算自主地试图通过包含修改诸如上述那些参数的参数的指令来减少其要求的
资源。而且,诸如渲染的一些处理能够通过仅在达到某时间限制时截去过程而使得计算确
切地适应所分配的时间来降低计算要求。然而,在中间时间停止的能力对于其它计算而言
更难或者无效。
算Ci具有不同帧时间tF和新的开始时间tSi、结束时间tEi以及分配的计算时间tCi的新时间
线。客户端控制器312然后将其更新的位置、开始时间tSi、结束时间tEi以及分配的计算时间
tCi通知每个计算Ci。
生动画处理应用,诸如特征故事片制作。上述处理的方面还可以应用以代表其中应用是非
交互式的或者不涉及到动画的客户端设备提供服务。公开的调度技术可有益地并入其中需
要计算处理的可靠或确定性的输出率的任何应用。这些应用可以包括例如用于电子动物设
备或机器人设备、科学、训练和商业可视化系统以及任何可衡量的、可预测的、可控的响应
时间较为重要的系统的驱动软件。
术来执行。如上所述,在基于时间的方法下,如果必要的计算在小于其分配时间内结束,则
后续计算将等待直至其调度的开始时间而不是过早开始。然而,对于服务的一些标识的部
分而言期望尽可能快速地运行。为最小化空闲时间,基于事件的处理可能用于所标识的部
分,使得每个计算在前一计算一完成时就开始。基于时间的处理则可以在所标识的额部分
完成之际可以开始或者恢复。
制器312、主控制器314、数字信号处理器316、数据中心318和/或计算资源320可以包括计算
系统600的一些或全部要素。计算系统600可以包括例如处理器、内存、存储设备和输入/输
出设备(例如,监控器、键盘、触针、绘图设备、磁盘驱动器、因特网连接等)。然而,计算系统
600可以包括用于实施上述处理中的一些或全部方面的电路系统或者其它专用硬件。
600可以包括认知处理单元,该认知处理单元包括被配置为检测用户行为、解译用户行为
和/或确定人物行为的一个以上的处理器,如上文参考框204、206和208所描述的。计算系统
600还可以包括动画处理单元,该动画处理单元包括被配置为混合人物组件、评估人物和/
或产生效果的一个以上的处理器,如参考框210、212和214所描述的。计算系统600还可以包
括渲染单元和编码单元,其中每个均包括被配置为渲染或编码计算机产生图像的一个以上
的处理器,如参考框216和218所描述的。
闪存卡612。内存部610可以包含用于实施处理200或处理400的计算机可执行指令和/或数
据。I/O部606可以连接到显示器624、键盘614、磁盘存储单元616和媒体驱动单元618。媒体
驱动单元618可以读/写可以包含程序622和/或数据的非暂态计算机可读存储媒体620。
程语言(例如,Pascal,C,C++,Java等)或者某专门的专用语言来编写。
案和变型例是可能的。