用于计算机产生动画的基于时间的调度转让专利

申请号 : CN201610153964.9

文献号 : CN106340052B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 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所述的计算机可读存储介质,其中所述计算机生成的动画的第一帧的计算的计算配置在被执行时产生具有服务质量的计算机生成的动画,所述服务质量包括目标等待时间,所述目标等待时间定义计算机生成的动画的帧的计算将被完全执行的时间量,以及其中生成计算配置,使得帧的计算在比目标等待时间更短的时间内完成。

说明书 :

用于计算机产生动画的基于时间的调度

技术领域

[0001] 本申请一般涉及调度计算处理的技术,更具体地涉及调度用于计算机产生动画的计算处理。

背景技术

[0002] 计算机动画是利用计算机图形产生动画图像的处理。图1描绘了计算机产生图像的实施例。计算机产生场景可以包括虚拟环境,虚拟环境包括各种对象(例如,树木、石头、
云等)以及人物(例如,动物、人等)。例如人物的模型可以被创建,然后移动或变型来模仿运
动。场景的图像在选定的时间或帧被渲染以创建动画视频。
[0003] 计算机动画处理在所需的计算量和计算机内存量方面对计算要求高。存储环境、对象和人物底层的数据以及产生视频所需的计算资源取决于各种因素,包括动画人物的数
量和尺寸、人物的分辨率、渲染图像的分辨率以及用于确定人物运动的模型的复杂度。
[0004] 对于甚至适度复杂的动画,许多个人电子设备,例如智能手机和平板设备,可能缺乏实时产生视频品质动画所必要的处理和内存资源(例如,以每秒近似24‑30帧(fps)产生
具有720p或1080p分辨率的计算机产生图像)。例如,智能手机不可能具有速度足以在每33
毫秒(ms)(即,30fps视频的帧时间)产生新图像的足够的处理器。此外,甚至是典型的个人
计算机也不可能具有存储复杂虚拟人物和场景的底层数据所需的内存容量、或者实时产生
视频品质动画的处理能力。
[0005] 针对该问题的一个可能的解决方案是使用远程机器来存储数据以及执行动画处理作为服务,然后将输出传输给客户端设备。然而,即使用于动画的资源位于远程位置,仍
存在分配处理资源而使得提供可接受品质的服务的需要。
[0006] 服务品质可至少部分地由视频的帧率、渲染视频的分辨率或者计算机产生环境和人物的分辨率来定义。服务品质还可以取决于充分更新而使得渲染图像表现为好像无限资
源可用那样的渲染帧的百分比。一些用户可能偏好在更新或缓冲图像的同时以降低帧率或
时间中断为代价在每帧充分更新的图像。时间中断导致较慢的有效帧率。其它用户可能偏
好无中断的较快的帧率,代价是偶尔在每帧接收到部分更新或非更新的图像。对于具有较
高分辨率的图像,一些用户还可能愿意牺牲帧率或者容忍中断。
[0007] 保持可接受的服务品质在一些情形下是可管理的。例如,如果场景的参数(例如,场景中人物的数量、分辨率和运动)要求表示很高或是预先已知的,则产生图像所需的计算
能够预先确定,充足的资源可分配以便以可靠速率执行计算。计算可以部分地基于每个计
算所需的输入来进行配置。例如,如果计算B需要计算A生成的数据,则计算A被调度而发生
于计算B之前。此外,事件驱动方案可以实现,其中计算B由计算A的完成来触发。因此,计算B
等待直至计算机A完成才开始,从而确保计算B将总是具有其所需的数据。
[0008] 然而,如果一个以上计算花费比预期长的时间,则事件驱动系统可能不能实现期望的帧率。如果计算没有按时完成,则所有后续计算被延迟。而且,下游计算所经受的延迟
随着更多计算超过它们的估计持续期间而加剧。如果延迟足够大,则事件驱动调度方案可
能不能满足服务品质的某方面,例如帧率。
[0009] 对于其中场景参数未预先确定且在任何特定时间将需要的确切资源量未知的应用,则事件驱动方案保持期望的服务品质甚至更难。在交互式系统中,例如,用户能够提供
影响动画的实时输入。由于动画未能预先确定,系统必须响应于用户输入而产生影像。系统
不仅必须动态地产生图像,而且需要额外资源来处理用户输入以及确定适当的响应。如果
系统允许未知数量的用户同时要求资源,则满足特定服务品质所要求的资源的不确定性变
得甚至更大。
[0010] 具有不确定要求的系统可被设计以在最大期望负荷下满足期望的服务品质。然而,这可能是不足的,因为可能导致在大部分时间大部分可用资源未使用。
[0011] 因此,存在开发分配和消费计算资源以便以可靠服务品质产生实时计算机产生影像的技术。

发明内容

[0012] 本公开描述了代表客户端应用执行计算机处理服务的自适应基于时间的处理。客户端应用可以包括运行在远程或本地设备上的进程、程序、应用等。基于时间的处理不同于
基于事件的方法,在基于事件的方法中计算由诸如另一计算完成或数据输送的计算事件来
发起。基于时间的处理可以应用于其中期望可靠或确定性输出率的计算过程。公开的计算
的适应性可以提供可用计算资源的更高效的分配。这可以减少所需的物理硬件的量和/或
提供在资源需求无大变化的情况下维持期望服务品质的更大的能力。能够减少资源需求的
变化对于资源量不可量的实施方案而言尤其有益。
[0013] 本公开描述了应用于用于提供与虚拟人物的实时的、或近似实时的、个性化交互的交互式动画系统的基于时间的方法的示例性实施方案。人物的行为可以基于客户端设备
的用户输入。
[0014] 在一个实施方案中,调度和执行用于代表客户端设备产生交互式计算机产生动画的计算以实现期望服务品质的方法包括:产生当被执行时生成具有期望服务品质的计算机
产生动画的计算的计算配置。计算配置包括:第一计算的标识,其被配置为当第一计算被执
行时输出第一数据;第一开始时间,在该第一开始时间第一计算开始;以及第一结束时间,
其中第一计算应在第一结束时间之前结束。计算配置还包括:第二计算的标识,其被配置为
取决于第一数据作为输入;以及在第一结束时间后的第二开始时间,在第二开始时间第二
计算开始。第一计算和第二计算根据计算配置而执行以创建计算机产生动画的第一帧。根
据计算配置执行第一计算和第二计算包括响应于第一开始时间的发生而执行第一计算,以
及响应于第二开始时间的发生而执行第二计算。
[0015] 在一个实施方案中,第二计算响应于第二开始时间的发生而执行,而无关第一计算是否在第二开始时间之前结束。在另一实施方案中,计算配置基于第一计算和第二计算
的过去的执行而产生。在又一实施方案中,计算被配置为基于客户端设备的用户输入来确
定动画人物的行为。
[0016] 在一个实施方案中,该方法包括:在计算机产生动画的第一帧创建期间,监视第一计算的执行。计算配置被修改以创建修正后计算配置,并且第一计算和第二计算根据修改
后计算配置来执行以创建计算机产生动画的第二帧。
[0017] 在一个实施方案中,确定第一计算输出第一数据的时间,并且响应于确定第一计算输出第一数据的时间在第二开始时间之后而修正计算配置。修正计算配置可以包括增加
第一结束时间,增加第二开始时间,减少第一开始时间,和/或减少第一计算中的操作数量。
[0018] 在一个实施方案中,计算配置包括表示待对其执行第一计算的第一部分的第一计算资源的第一资源数据。表示待对其执行第一计算的第二部分的第二计算资源的第二资源
数据可以添加到计算配置中。
[0019] 在一个实施方案中,服务品质包括限定完全执行用于计算机产生动画的帧的计算的时间量的帧时间。计算配置被产生而使得用于该帧的计算以比帧时间少的时间量来完
成。
[0020] 在一个实施方案中,系统包括被配置为执行上述方法的至少一个计算资源。在另一实施方案中,非暂态计算机可读存储介质包括用于执行上述方法的计算机可执行指令。

附图说明

[0021] 图1描绘了计算机产生图像。
[0022] 图2描绘了用于产生交互式计算机产生动画的示例性处理的流程图。
[0023] 图3描绘了用于代表客户端设备执行计算机处理服务的示例性的系统的框图。
[0024] 图4描绘了用于调度和执行用于产生交互式计算机产生动画的计算的示例性的处理的流程图。
[0025] 图5A‑5B描绘了用于计算配置的示例性的时间线。
[0026] 图6描绘了示例性的计算系统。
[0027] 在图中描绘的实施方案仅用于示例。本领域技术人员将易于理解,根据下面的论述,能够应用本文图示的结构和处理的替代实施方案,而不偏离本文所描述的原理。

具体实施方式

[0028] 下面的说明书阐述了具体的配置、参数等。然而,应当理解,这些描述不意在限制本公开,而是提供作为示例性实施方案的描述。
[0029] 图2描绘了用于产生交互式计算机产生动画的示例性的处理200的流程图。处理200提供了与虚拟动画人物的个性化交互。
[0030] 在框202中,从客户端设备接收到用户输入。客户端设备可以包括例如个人计算机、智能手机、平板式计算机、照相机、深度照相机、麦克风等。客户端设备可以包括各种输
入设备和/或传感器来接收用户输入。用户输入可以包括对与客户端设备相关联的诸如例
如键盘、键板、触摸敏感板、触摸敏感屏幕、照相机、深度照相机、麦克风等设备的输入。用户
输入还可以包括客户端设备的用户做出的动作、位置或姿态。用户的动作、位置或姿态可以
经由能够捕获用户的图像或深度缓冲区的传感器(例如,照相机)或者诸如能够检测用户运
动或位置的加速度计或陀螺仪的传感器来输入。用户输入还可以包括用户发出的声音,这
可以由诸如麦克风的音频传感器来采集。
[0031] 在一个实施方案中,用户输入响应于在客户端设备上显示的视频。例如,视频可以包括虚拟环境,该虚拟环境具有客户端设备的用户经由对客户端设备的输入来与其交互的
人物。
[0032] 在框204中,基于在框202中接收到的用户输入来检测用户行为。在一个实施方案中,检测到的行为用于确定用户正在做什么。检测到的行为可以基于来自客户端设备的用
户输入数据。可以对检测到的动作、位置或姿态进行分类。检测到的行为的低级类别可以包
括诸如“抬手”或“嘴动”或者甚至是“检测到运动”或“检测到眼睛位置”的描述。高级类别可
以包括诸如“放弃”或“微笑”的描述。
[0033] 在一个实施方案中,分析来自客户端设备的图像数据以确定用户正在看特定方向,移动他/她的头或嘴,抬起他/她的臂,等等。在另一实施方案中,来自运动传感器的数据
可用于确定用户正如何运动。传感器数据可指示例如用户正在走步、抬起他/她的臂,等等。
[0034] 在框206中,至少部分地基于在框204中检测到的行为来解译用户行为。检测到的行为(或表示检测到的行为的数据)可被分析以确定该行为旨在传达什么。例如,检测到的
用户嘴的运动看解译为微笑。作为另一实施例,检测到的用户眼睛的运动或位置可以解译
为人物要移动到用户所看的地方的暗示。作为又一实施例,用户的头的运动可以解译为指
示同意(例如,点头)或不同意(例如,摇头)。根据实施方案,诸如微笑的行为可视为低级解
译,而同意的指示可视为较高级解译。
[0035] 在一个实施方案中,启发式算法可用于基于过去的行为或输入来解译用户行为。检测到的行为的解译随着该处理学习理解用户用某行为意在传达的消息而适应,而随时间
变化。
[0036] 虽然上文描述了感知和解译作为两个不同的步骤,但是应当认识到,这两个步骤可至少部分地重叠。在上述的实施方案中,例如,行为感知包括确定用户的头已经沿某方向
移动,而行为解译包括确定运动是点头且点头是同意的标志。可替代地,确定用户正在点头
可以包含在感觉步骤中。在任意情况下,用户运动被检测且最终解译为同意的标志。
[0037] 移至框208,确定人物行为。在一个实施方案中,客户端设备显示计算机产生动画,该计算机产生动画包括虚拟环境,该虚拟环境具有动画人物,用户与该动画人物交互。动画
人物的行为可以至少部分地基于如在框204和206中检测到且解译的用户行为来确定。人物
行为包括被赋予生命的人物的任何类型的运动、反应或变化。例如,如果判定出用户正在微
笑,则动画人物可以回以微笑,挥手说嗨,或者说特定短语(例如,“你笑得真可爱”)。
[0038] 在一个实施方案中,预先确定与特定用户行为相关联的人物行为。例如,可以确定人物应当在每当用户行为被解译为行为B时而执行行为A。也即,可以预先确定,人物行为A
将相响应于用户行为B而被确定。人物行为可以是采取肯定措施,或者可选地,响应于用户
输入什么都不做。
[0039] 在一个实施方案中,对于相同的输入,对于人物确定的行为随时间而变化。响应于第一时间的第一输入,人物执行第一行为,而当第一输入在第二时间再次发生时,人物执行
第二行为。启发式算法可用于基于过去的经验或用户输入来确定人物行为,使得人物对特
定用户输入的响应随着人物学习响应某用户行为而随时间变化。
[0040] 在另一实施方案中,用户还能够随时间推移而学习与人物交换。例如,人物可以不响应于直接的口语或物理命令而移动。相反,为使人物移动到不同的位置,用户必须学习看
他/她想要人物移向的特定方向。
[0041] 还应当认识到,人物不一定依赖于用户输入来执行行为。人物可以不响应于用户输入地、自发地或者周期性地执行行为。人物还可以做一些提示用户提供输入的事情。如果
在预定时间量内没有检测到用户行为,人物可以提示用户。在一个实施例中,人物行为意在
提示用户采取期望的动作。通过这种方式,人物可试图引导用户,而感知系统监视用户的动
作并且判定是否执行了期望的动作。然后,可以基于用户是否提供期望响应来确定进一步
的人物行为。
[0042] 应当认识到,一些检测到的行为不能被解译。在一个实施方案中,当检测到的行为不能被解译时,人物具有确定的行为。例如,人物可以做出迷惑的面部表情或者耸肩以告知
用户的行为不明确。
[0043] 一旦已经确定人物行为,在框210、框212和框214中该行为可以成为动画。在框210中,人物组件被混合以实现动画。混合取得动画底层的数据并且将其组合或混合成剪辑。底
层的动画数据可以包括构成人物几何结构的曲线、表达和约束条件。
[0044] 在框212中,评估人物。人物评估包括使得人物的几何结构变形或操纵人物的几何结构使得人物表现为执行确定的行为。
[0045] 在框214中,产生动画效果。动画效果可以包括动画常见中诸如衣物、头发或帽子的附加元件的运动。
[0046] 在框216中,渲染计算机产生环境的图像。渲染在瞬时生成虚拟环境的对于具体视角的图像。通过在时间序列上渲染图像来产生动画视频。
[0047] 在框218中,将动画视频编码以准备用于发送或流送到客户端设备的视频。编码可以包括压缩视频以减少表征渲染图像所需的数据量。可以使用诸如H.264视频压缩格式的
视频压缩格式。编码可通过能够对数字数据流进行编码或译码的处理器或诸如编码译码器
(CODEC)的计算机程序来执行。
[0048] 在框220中,编码后视频发送到客户端设备,用于进行译码和显示。用户可以响应于更新的视频而提供进一步的输入以继续与动画人物交互,在该情况下,进一步的输入被
接收到且通过重复处理200来处理。
[0049] 图3描绘出代表一个以上的客户端设备执行诸如交互式动画处理300的计算机处理服务的示例性的系统的框图。与处理300中的任何框或其部分相关联的处理可以通过单
个处理器来执行或者分布在多于一个的处理器中来执行。单个处理器可以执行与处理300
中的一个或多个框或其部分相关联的计算。系统300包括经由因特网304连接到交互式动画
系统310的客户端设备302A‑302M。交互式动画系统310包括数字信号处理器316、客户端控
制器312、主控制器314以及数据中心318。数字信号处理器316、客户端控制器312和主控制
器314可实现在交互式动画系统310中所包含的一个以上的处理器上。数据中心318包括执
行计算的多个计算资源310A‑320N。计算资源320A‑320N可以包括一个以上的处理器或内存
存储设备。
[0050] 交互式动画系统310可以包括接收来自客户端设备的用户输入的如端口或天线的输入设备。交互式动画系统310还可以包括一个或多个处理器(例如,计算资源320),其被配
置为检测用户行为,解译用户行为,并且确定人物行为,如参考框204、206和208所描述的。
交互式动画系统310还可以包括一个或多个处理器,其被配置为混合人物组件,评估人物,
以及产生效果,如参考框210、212和214所描述的。交互式动画系统还可以包括一个或多个
渲染处理器,其被配置为渲染计算机产生图像,如参考框216所描述的。
[0051] 如下文更详细描述的,客户端控制器312充当客户端设备302A‑302N与交互式动画系统310的其余部分之间的接口。客户端控制器312获得关于用户和客户端设备302的信息,
并且还监视与动画人物交互的状况。主控制器314提供负责管理诸如数据中心318的硬件域
内的资源消耗的集中处理。
[0052] 处理200和交互式动画系统300可被配置为提供与虚拟动画人物的个性化交互。用户所期望的服务品质可能需要实时或近似实时的交互。近似实时的交互包括200‑250ms的
响应时间,这接近普通人对可视刺激的响应时间。对于交互式系统的服务品质可是指交互
品质。交互品质可取决于视频分辨率、系统可用性级别、人物和场景分辨率、帧时间、场景更
新率等等。交互品质还可以表示系统可用的时间百分比或者基于选定帧率和交换和环境的
复杂度而充分更新的帧的近似百分比。
[0053] 用户所选的交互品质还可以确定用户可与其交互的场景、环境和/或人物。可供用户使用的交互的复杂度还可以基于交互品质来确定。复杂度包括人物和/或对象的数量和
类型、可识别用户行为以及人物反应和/或行为。
[0054] 然而,如上所述的,取决于交互和计算机产生环境的复杂度,处理200的计算要求将使其难以保持期望的服务品质。当试图同时服务多个客户端时,提供期望的服务品质或
交互品质甚至更难。
[0055] 下面描述的处理提供了自适应基于时间调度方案,其试图保持与计算机产生人物的期望交换品质。在规定时间执行每个计算,与响应于触发事件执行不同。在处理每次迭代
时(例如,每帧)在其预定开始时间开始计算,而不考虑计算所使用的数据是否自前一迭代
已经更新。执行监视以判定数据的每个分组是否正按时输出或更新以便由使用该数据作为
输入的后续计算使用。随时间推移,系统可以改变各种参数以及分配附加资源以便试图保
持期望的交互品质。
[0056] 图4描绘了使用受监视的、基于时间的调度来代表客户端设备执行诸如交互式动画处理200的服务的示例性的处理400的流程图。通过实施例的方式,参考图3所示的示例性
的交互式动画系统300来描述处理400。
[0057] 在框402中,开始客户端会话。在一个实施方案中,客户端设备302开始与交互式动画系统310连接,然后交互式动画系统310例示与客户端设备相关联的客户端控制器处理。
作为客户端控制器处理的部分,客户端控制器312获得与客户端设备302或客户端设备302
的用户相关联的信息。用户信息可以包括用户名称、偏好、历史等等。设备信息可以包括设
备类型、操作系统、处理和内存能力,等等。
[0058] 客户端控制器312还可以获得可供用户使用的交互的类型,以及对于当前会话选定的交互的描述。用户能够购买不同的包,其为用户提供选定的交互和选定的交互品质。包
可以确定场景、环境和/或用户可与其交互的人物。交互包还可以确定可供用户使用的交互
的复杂度。交互复杂度级别可以包括人物的数量和类型、可识别的用户行为以及人物行为。
[0059] 在框404中,确定用于客户端的估计的交互品质。估计的交互品质可以基于诸如用户信息、预期交互、对交互式动画系统310的负荷(例如,活跃的或者预期的客户端会话的数
量)、网络连接速度以及交互式动画系统310等因素而被确定。与确定估计的交互品质有关
的能力包括可用的计算资源(例如,处理器的数量和速度)。显然,由于在交互被请求时这些
因素的状况,估计的交互品质可以不同于期望的或选定的交互品质。
[0060] 在框406中,对于生成交互式计算机产生动画的计算,产生计算配置。计算配置包括响应于来自客户端设备402的用户输入而产生交互式动画视频所需的计算的标识。计算
可以是任何计算操作或处理或者其部分。在交互式动画系统410中,计算可以包括例如在处
理200中描述的一个或多个任务,诸如确定人物行为,评估人物,渲染图像,或者这些任务的
某部分。
[0061] 配置包括被确定从而满足期望交互品质的参数。在一个实施方案中,主控制器314从客户端控制器312获得期望的交互品质且产生满足交互品质的配置。客户端控制器312可
以将用户的身份、用户有权期望何种品质的交互以及预期交互的描述(例如,哪些人物跑,
以及在何种环境中他们将被渲染)通知给主控制器314。
[0062] 配置可以包括用于每个计算的输入和输出。计算之间的关系也包含在配置中,包括执行计算的次序,以及计算之间的数据流和相依性(例如,哪些之前的计算提供了用于每
个后续计算的输入)。配置可以包括每个计算开始的开始时间和每个计算在此之前结束的
结束时间。配置还可以包括表示与分配以便完全执行计算的时间量的与每个计算相关联的
等待时间。每个计算的结束时间可以基于开始时间和分配给计算的等待时间的总和来确
定。开始时间和结束时间限定了在其内完全执行计算的时间间隔,而等待时间表示时间间
隔的持续期间。
[0063] 配置还可以包括表示分配用于传递计算生成的数据的时间量的传递时间(例如,分配以将输出数据传递到下游计算的时间量)。在一个实施方案中,传递时间包含在分配的
等待时间内。计算还可以包括每个计算的处理位置(即,哪些处理器或其部分将执行计算)。
配置参数可以存储在配置文件中。
[0064] 在一个实施方案中,分配给每个计算的等待时间是基于从之前的客户端会话采集的数据来确定的。该数据可以从当前用户或者已经进行了类似于当前用户正请求的交互的
交互的其他用户采集。在一个实施方案中,交互式动画系统310具有可用处理资源的知识,
从而标识计算的位置。例如,主控制器314可以将表示处理器的位置和速度的数据存储在数
据中心318中。
[0065] 作为实施例,考虑在人物评估,该人物评估包括在每秒30帧的帧率(33.3ms的帧时间)和规定的人物复杂度情况下每个帧两个人物的评估。人物的复杂度取决于诸如人物分
辨率、装备复杂度和规划运动的参数。人物分辨率包括限定人物几何结构的采样点的数量
和间距。注意的是,人物分辨率能够区别于图像分辨率,图像分辨率包括在动画场景的渲染
图像中的采样点的数量。
[0066] 在一个实施方案中,主控制器314访问人物评估表,对于每个人物而言,人物评估表包括可以评估人物的估计时间量。表还可以提供对于估计的时间期望何种网格品质以及
输出数据的估计大小的信息,输出数据的估计大小可能是估计将输出数据传递到下游计算
所要求的时间而需要的。对于数据中心318中每种类型的处理器,表格存储在特定复杂度级
别(例如,分辨率)下评估人物的估计时间。表格还可以包括估计计算时间或期望的计算时
间的减少,取决于分配给计算的处理器的数量。生成特定人物分辨率所需的内存也可以存
储在表格中。表格还可用于分配计算的等待时间或者确定必须分配给计算以实现分配的等
待时间的处理器的数量。类似的数据或数据表格可供其他计算使用。
[0067] 存在多种实现人物评估计算的期望性能的方式。例如,两个评估可以并行地运行,使得每个具有其自身的人物评估子计算。可替代地,两个人物评估可以在一个计算中以两
倍速度运行,使得计算花费的时间量与评估并行运动的情况一样多。
[0068] 对于一些计算,计算的等待时间(即,计算的单个实例执行计算且提供其输出所需的时间量)可以大于帧时间。还可以通过将计算划分成子计算而使得至少一些子计算能够
并行地执行来减少执行计算的时间。子计算必须被正确地调度而使得每个子计算都具有所
需的输入。该替代方案可允许计算在帧时间内执行,但是代价是额外的处理资源(例如,使
用更多处理器)。
[0069] 然而,根据所期望的服务品质或交互品质,具有比帧时间大的等待时间的计算是可接受的。在计算的等待时间可接受但是大于帧时间的实施方案中,计算的多个实例可以
被创建而使得每个实例对于特定帧执行整个计算。如下文更详细论述的,计算可以被调度
而使得实例以期望帧率但是具有初始延时来生成输出。
[0070] 在一个实施方案中,实例的数量是执行计算所需的帧数量,进位舍入成最近的整数。也即,实例的数量(n)为:n=ceiling(计算的等待时间/帧时间)。
[0071] 与n个实例相关联的帧可以是由帧时间分离的帧序列中的连续帧。可以调度实例,使得在初始延时之后,实例的输出以期望帧率来提供。初始延时可以是单个实例执行计算
所花费的时间量,小于一帧。虽然该替代方案得到延迟的响应,但是其一旦开始就提供了平
滑的显示。
[0072] 例如,考虑接收得到确定的人物响应的用户输入的期望帧率为30fps(33.3ms的帧时间)的应用。以确定响应相关联的人物评估计算具有100ms的等待时间(3帧)。因此,创建
计算的三个实例。对于单个帧,每个实例花费100ms来执行人物评估。假设用户输入在时点t
=0发生,并且忽略全部其他等待时间(例如,用户行为解译,人物行为确定,配置步骤,等
等),所确定的人物行为将会由于计算的等待时间而延迟三帧,并且将在用户输入之后的第
四帧(例如,100ms)开始。实例可以至少部分地与交错输出并行地运行,使得实例1‑3提供帧
4‑6的输出,这些帧将分别在时间100ms、133.3ms以及166.6ms开始。如果确定的行为持续时
间长于三个帧(即,超过帧6),则实例1能够在200ms对于帧7再次执行计算(以更新后的参
数)。也即,在所提供的实施例中,每个实例可以对于每三帧执行计算,只要行为持续。
[0073] 该替代方案对于系统响应(例如,人物响应)的一定量延时可接受的情况是期望的。此外,应当认识到,上述涉及到计算的多个实例以及计算划分成子计算的两种计算的组
合可以实现,取决于所期望的服务品质或交互品质。
[0074] 图5A描绘了用于处理的单次迭代的示例性的时间线,诸如生成动画视频的帧所需的计算。图5A示出了对于N个计算Ci中的每一个计算的调度的开始时间、等待时间和传递时
间,其中i=0,1,…,N‑1。
[0075] 时间tSi是调度计算Ci开始的时间。时间tCi是分配用于执行计算Ci的等待时间或持续时间。时间tEi是调度在此之前结束计算Ci的时间(即,计算Ci要在tEi之前完全执行)。显
然,tCi不包括传递由计算Ci生成的数据到系统的另一部分所需的网络通信时间。而是,时间
间隔tTi表示在计算Ci完成之后但是在下一计算Ci+1开始之前所经过的时间量。该时间间隔
是分配用于将数据从Ci传递到Ci+1的时间量。时间tu是从客户端设备302上传客户端数据的
时间量,并且时间td是分配用于将编码的视频数据下载到客户端设备302的时间量。计算被
配置为使得全部N个计算在目标总等待时间Ltarg内完成。
[0076] 如图5A所示,分配的总等待时间L可以小于目标总等待时间Ltarg。分配的总等待时间可以表示为:
[0077]
[0078] 其中tTN‑1=0,因为td指的是在最后的计算CN‑1之后将数据传递到客户端设备所需的时间量。
[0079] 分配给每个计算Ci的等待时间tCi和传递时间tTi可以基于包括交互式系统的成本、过去的经验和物理属性等若干因素。例如,分配的等待时间tCi可以部分地基于将执行计算
Ci的处理器的速度,以及贡献给计算的资源量(例如,处理器的数量)以及实际测得的计算Ci
先前发生的等待时间。
[0080] 在一个实施方案中,配置对于每次迭代应用相同的时间线。在每次迭代为每个计算Ci分配了等待时间tCi和传递时间tTi,而不考虑该迭代是否实际上需要该计算。此外,在每
次迭代内计算被分配了相对于该迭代开始的相同的时间间隔。因此,对于每次迭代,可以预
先确定计算开始的时间。
[0081] 图5B示出了任意迭代p的计算时间线。在迭代p期间用于计算Ci的调度的开始时间根据如下等式取决于迭代p、目标等待时间Ltarg以及相对于迭代ΔtSi起始的开始时间:
[0082] 其中
[0083] 在该背景下,目标等待时间Ltarg是分配给一帧的完全计算的时间。
[0084] 显然,图5A和图5B仅包括了在配置的临界路径上的计算。在需要相同输入的全部计算中,在临界路径(即,最慢路径)上的计算是被分配给最大时间量来完成和传递它们的
数据的计算。然而,可能存在在临界路径上与计算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)的计算。
[0085] 因此,C0是在能够在迭代开始运行而无需来自另一计算的输入的计算中具有最长组合的处理时间和传递时间的计算。
[0086] 现在参考图4,在框408中,根据在框406中确定的配置来执行计算。每个计算Ci的开始在如下意义上是基于时间的:每个计算在其调度时间 开始,与由计算使用的一个或
多个输入自上次迭代是否到达或者是否已经更新无关。响应于其对应开始时间的发生而执
行每个计算。因此,计算的开始不显式地取决于所需输入何时到达;其仅隐式地取决于输入
的到达,因为开始时间被定义为使得期望输入在开始时间可用。
[0087] 因为计算的发起是基于时间的,可能的是,在计算所取决于的数据可用之前或者数据已经为当前迭代更新之前,计算Ci可以开始。如果提供数据的在前计算例如Ci‑1尚未结
束计算或者在当前计算例如Ci被调度开始的时间(即, )之前尚未输出数据,则会发生这
种情况。即使在前计算在其分配的时间间隔内生成了数据但是花费比分配的传递时间tTi长
的时间传递数据,数据也可能在计算开始时不可用。如果当前迭代的输入未按时到达,则通
过使用缺省输入或来自前一迭代的输入,计算可以继续进行。为了允许系统保持期望的总
等待时间,不使用更新的输入来继续进行计算可能是期望的。然而,由于甚至在缺少更新输
入的情况下执行计算,对于当前迭代而言,动画场景的一些信息可能不更新。
[0088] 应当认识到,发起计算不要求其所取决于的在前计算过早终止。也即,下游计算所取决于的在前计算可以继续或者被允许结束,即使下游计算已经开始。在一些实施方案中,
在前计算继续生成数据且在数据变得可用时将数据提供给相关的下游计算,甚至在下游计
算已经开始之后。而且,在前计算可以独立于下游计算运行的速率的速率来生成输出。
[0089] 如上文简要论述的,基于时间触发计算不同于基于事件的处理,在基于事件的处理中计算根据事件而同步。计算在特定时间开始,而不是由于诸如完成前一计算或者数据
到达的事件而开始。结果,能避免在基于事件方案中会发生的一些延时。在基于事件的方案
中,一个计算的延时导致全部后续计算延时。相反,在基于时间的方案中,如果在前计算花
费比预期长的时间或者在其分配时间内未结束,则计算不被推送回。
[0090] 此外,即使必要计算在小于其分配时间内结束,计算Ci也不开始。相反,系统将等待直至所确定的开始时间 开始计算Ci。这在一些情形下是完全可接受的,诸如当目标等
待时间已被满足和/或在更少时间内完成计算无益时。如果实际的总等待时间正在提供用
户所期望的服务品质,则减少等待时间可能不具有优点,即使可能这样。例如,在一些情况
下可能的是将总等待时间减至小于帧时间。然而,比帧率更快的生成图像会导致不得不被
丢弃或者可替代地存储和管理以便后续使用的过量图像,从而需要额外的资源。
[0091] 如下文更详细论述的,系统可以利用额外的时间来服务额外的客户端会话或者提高服务品质。而且,系统可以监视其完成每个计算所花费的实际时间来重新平衡时间分配
而使得时间从过度执行(例如,在少于它们的分配时间内结束)和重新分配的计算转向到总
是欠执行(例如,超过它们的分配时间)的计算。
[0092] 另外,由于计算能够作为服务而被执行,所以资源可以在单个客户端会话内或者在多个客户端会话之间重新分配。将资源从一个客户端会话转向到另一客户端会话的能力
可以提供可用计算资源的更高效的分配。这额可以减少所需的物理硬件的量和/或提供更
大的保持期望服务品质而无需资源需求有大变化的能力。能够减少资源需求的变化对于资
源量不可量的实施方案而言特别有益。
[0093] 还应当认识到,代表单个客户端设备302执行的计算可以定位在多个处理器或机器上。因为客户端会话内的计算要在特定时间开始,所以重要的是在参与同一客户端会话
的全部机器之间维持一致的时间感,因为不存在与另一事件的显式同步。然而,虽然没有显
式的同步,但是计算的时间仍是关键的,因为下游计算取决于来自在前计算的输出。
[0094] 为实现共同时间感,系统可以包括用于同步不同机器上的时钟的机构。随时间推移,时钟偏移可以导致时间因时钟而不同。时钟可以重新同步,例如,在某定义的间隔(例
如,每1024秒)或者当时钟之间的偏差超过具体阈值(例如,1ms)时。例如,网络时间协议
(NTP)可用于实现亚毫秒级相对精度。
[0095] 返回图4,在框410中,监视计算。监视可以通过多种方式来执行。在一个实施方案中,测量并记录每个计算结束的时间和/或完全地执行计算所花费的时间。测量的时间可以
与调度结束时间或者分配的等待时间进行比较以判定计算是否正消耗比预期更多的资源
(例如,更多的处理器时间)。
[0096] 在另一实施方案中,计算输出数据的时间被记录。例如,数据的每个分组可以包括规定分组被输出的时间的输出时间。数据的每个分组还可以包括这样的信息:该信息标识
在此期间创建数据的迭代而使得后续计算在接收到分组时能够检查迭代值。在迭代p期间
开始但是获得了在小于p的迭代期间创建的数据的计算可以确认并记录数据不是当前的。
具有具有在当前迭代结束之后的输出时间或者小于当前迭代的迭代值的数据表明,生成数
据的计算没有在依赖于该数据作为输入的后续计算开始之前在当前迭代中输出数据。
[0097] 当数据的分组没有按时输出时,计算可以将通知发送到客户端控制器312。在一个实施方案中,未能在其分配时间内完成的欠执行计算将延时报告给客户端控制器312本身。
在另一实施方案中,没有接收到其所需的输入数据或者从前一迭代接收到数据的后续计算
将通知发送给客户端控制器312。在又一实施方案中,欠执行的计算和后续计算均将通知发
送到客户端控制器312。
[0098] 各种标准可用于判定是否报告计算没有在其分配时间内提供数据。例如,每当计算判定出其尚未接收到所需时间或者其已经接收到来自前一迭代的数据时,可以发送报
告。作为另一实施例,当数据在阈值连续迭代数量内或者在预定迭代数量内的规定次数内
(例如,N中的M个)尚未更新时,可以发送报告。作为又一实施例,当完成计算花费的时间超
过预定阈值(例如,比其分配时间长1.5倍)时,可以发送报告。
[0099] 在框412中,做出是否修改计算配置的决策。在一些客户端会话期间,在每次迭代时,可以在它们的预定时间开始计算,直至上次迭代完成且代表客户端的服务被终止。然
而,如果计算频繁地或者持续地花费比分配时间长的时间或者没有按时将其输出传送到其
它计算,可以推导出不足的处理资源分配给给定要完成工作的量以及传递输出数据的量的
任务。
[0100] 考虑具有输出数据的第一计算和被配置为取决于数据作为输入的后续第二计算的配置。如果判定出第一计算输出数据的时间在第二计算开始时间之后,则可以做出是否
修正配置的决策。做出该决策的标准可以类似于上文关于计算是否应当报告数据没有按时
传送的标准。例如,每当计算未能在其结束时间之前完全地执行或者在第二计算开始时间
之前没有提供其输出数据,可以修正配置。其它实施例包括当来自计算的数据对于阈值连
续迭代数量而言较晚时或者当数据在预定迭代数量中的一定次数(例如,N中的M个)时,对
配置做出变化。此外,其它的实施例包括当一些计算数量未能在其分配时间内完成时或者
当实际的计算时间超过预定阈值(例如,比其分配时间长1.5倍)时,重新配置该配置。
[0101] 用于修正配置的标准可取决于所分析的计算或数据。一些数据可能在其比其它数据对代表用户提供的交互品质具有更大影响的意义上更加重要。当重要数据没有按时输出
时,修正配置的标准可能要求较低。相反,更大或更频繁的延时可能对于不太重要的数据而
言更可接受。
[0102] 然而,即使修正配置的标准得到满足,也可以判定配置不应或者不能改变。例如,如果没有额外可用的资源以及改变当前配置的时间线将对交互品质具有不可接受的影响,
则配置可以保持不变。
[0103] 如果用于修正配置的标准没有满足或者配置不改变,则处理400进行到框418,在该框中做出客户端会话是否完成的判定。如果会话完成,则客户端会话结束,如框420所指
示。结束客户端会话可以包括释放已经分配给客户端会话的资源以使它们可用于未来的客
户端会话。可替代地,新的可用的资源可以分配其它当前运行的会话以提高交互品质。如果
会话未完成,则处理300返回到框310且随着会话根据当前配置继续进行而继续监视计算。
[0104] 然而,如果做出了修改配置的决策,则处理移至框414,并且确定修正后的配置。存在可以修改配置的多种方式。再次考虑具有输出数据的第一计算以及被配置为取决于该数
据作为输入的后续第二计算的配置。作为一个实施例,当第一计算在第二计算开始之前不
输出其数据时,贡献给第一计算的计算资源增加。例如,通过将额外处理器分配给第一计算
或者将第一计算引导至更快的处理器,可以增加资源。
[0105] 在一个实施方案中,客户端控制器312请求主控制器314将另一处理器分配给第一计算。主控制器314可以允许该请求并且将额外的处理能力分配给第一计算。可替代地,主
控制器314可以拒绝该请求,但是基于问题和主控制器314所具有的关于数据中心318中的
计算资源的信息来提出替代的解决方案。
[0106] 还可以通过增加(即,延迟)第二计算的开始时间tS2来修改配置。而且,为第一计算分配的等待时间tC1可以增加,或者第一计算的结束时间tE1可以增加。还可以增加总等待时
间L来说明延迟第二计算的开始时间或者延长第一计算的分配的等待时间。为了补偿延长
分配给第一计算的时间,为另一计算分配的等待时间可以减少,使得总等待时间不变。例
如,为总是在小于其分配时间内结束的计算分配的等待时间可以减少。
[0107] 资源能够在单个客户端会话内或者多个客户端会话之间重新分配。例如,资源可以从代表一个客户端正执行且重新分配的计算转向到用于不同客户端的计算。
[0108] 对于欠执行的计算或者推迟的后续计算延长分配的等待时间可能是最期望的解决方案,尤其是在其能够完成而不导致总等待时间超过目标等待时间Ltarg的情况下。如果
不能总是满足目标等待时间Ltarg,则在一些实施方案中可以降低帧率而不会对服务或交互
品质具有重大影响。例如,可能存在高帧率不重要且降低其不会严重影响交互品质的一些
交互。这对于不需要快速用户响应或者用户不期望对输入做出快速反应的交互确实如此。
虽然降低帧率可以减弱交互的响应性,但是其能够通过允许每帧在被显示时更充分地更新
而提供更大的图像品质。
[0109] 还可以通过减少执行第一计算所需的操作来修改配置。例如,通过减少人物或图像分辨率、松弛容差或者改变影响计算要求的其它参数,可以减少操作数量。在一个实施方
案中,第一计算自主地试图通过包含修改诸如上述那些参数的参数的指令来减少其要求的
资源。而且,诸如渲染的一些处理能够通过仅在达到某时间限制时截去过程而使得计算确
切地适应所分配的时间来降低计算要求。然而,在中间时间停止的能力对于其它计算而言
更难或者无效。
[0110] 可以在新的或修正后的配置文件中实现修改后的配置参数。在一个实施方案中,通过主控制器314来生成新的或修改后的配置,并且新的或修改后的配置包括对于每个计
算Ci具有不同帧时间tF和新的开始时间tSi、结束时间tEi以及分配的计算时间tCi的新时间
线。客户端控制器312然后将其更新的位置、开始时间tSi、结束时间tEi以及分配的计算时间
tCi通知每个计算Ci。
[0111] 移至框416,根据修改后的配置来执行计算。
[0112] 在框418中,判定会话是否完成。如果会话未完成,则处理返回框410,并且关于修改后配置监视计算。如果会话完成,则客户端会话如上所述那样结束。
[0113] 应当认识到,虽然参考交互式动画服务描述了处理400,该处理不限于交互式动画计算机产生系统,一些方面可应用于或者适应其它应用。替代应用可以包括其它计算机产
生动画处理应用,诸如特征故事片制作。上述处理的方面还可以应用以代表其中应用是非
交互式的或者不涉及到动画的客户端设备提供服务。公开的调度技术可有益地并入其中需
要计算处理的可靠或确定性的输出率的任何应用。这些应用可以包括例如用于电子动物设
备或机器人设备、科学、训练和商业可视化系统以及任何可衡量的、可预测的、可控的响应
时间较为重要的系统的驱动软件。
[0114] 还应当认识到,上述的基于时间的方法不一定必须应用于所有代表客户端设备执行的计算。一些计算或其部分可以根据基于时间的方法来进行,而其它可以利用不同的技
术来执行。如上所述,在基于时间的方法下,如果必要的计算在小于其分配时间内结束,则
后续计算将等待直至其调度的开始时间而不是过早开始。然而,对于服务的一些标识的部
分而言期望尽可能快速地运行。为最小化空闲时间,基于事件的处理可能用于所标识的部
分,使得每个计算在前一计算一完成时就开始。基于时间的处理则可以在所标识的额部分
完成之际可以开始或者恢复。
[0115] 现在转到图6,描绘了被配置为执行上述处理中的任一处理的示例性的计算系统600的组件。在一些实施方案中,上文所述的客户端设备302、交互式动画系统310、客户端控
制器312、主控制器314、数字信号处理器316、数据中心318和/或计算资源320可以包括计算
系统600的一些或全部要素。计算系统600可以包括例如处理器、内存、存储设备和输入/输
出设备(例如,监控器、键盘、触针、绘图设备、磁盘驱动器、因特网连接等)。然而,计算系统
600可以包括用于实施上述处理中的一些或全部方面的电路系统或者其它专用硬件。
[0116] 在一些操作设置中,计算系统600可以被配置为包括一个或多个单元的系统,其中每个单元被配置为用软件、硬件或其某种组合来实施上述处理的一些方面。例如,计算系统
600可以包括认知处理单元,该认知处理单元包括被配置为检测用户行为、解译用户行为
和/或确定人物行为的一个以上的处理器,如上文参考框204、206和208所描述的。计算系统
600还可以包括动画处理单元,该动画处理单元包括被配置为混合人物组件、评估人物和/
或产生效果的一个以上的处理器,如参考框210、212和214所描述的。计算系统600还可以包
括渲染单元和编码单元,其中每个均包括被配置为渲染或编码计算机产生图像的一个以上
的处理器,如参考框216和218所描述的。
[0117] 在计算系统600中,主系统602可以包括母板604,具有将输入/输出(I/O)部606、一个以上的中央处理单元(CPU)608和内存部610连接的总线,内存部610可以具有与其相关的
闪存卡612。内存部610可以包含用于实施处理200或处理400的计算机可执行指令和/或数
据。I/O部606可以连接到显示器624、键盘614、磁盘存储单元616和媒体驱动单元618。媒体
驱动单元618可以读/写可以包含程序622和/或数据的非暂态计算机可读存储媒体620。
[0118] 另外,非暂态计算机可读存储介质可用于存储(例如,有形地具体实施)用于通过计算机来执行上述处理中的任一处理的一个以上的计算机程序。计算机程序可以用通用编
程语言(例如,Pascal,C,C++,Java等)或者某专门的专用语言来编写。
[0119] 为图示和描述的目的,已经提供了具体实施方案的前面的描述。这些不意在穷尽或将权利要求的范围限制为所公开的精确形式,并且应当理解,根据上述教导许多修改方
案和变型例是可能的。