模拟设备的制造方法

文档序号:10517904阅读:216来源:国知局
模拟设备的制造方法
【专利摘要】提供一种二叉树构建方法,其适合于并行处理,并且从而反映用于进行对象冲突确定的虚拟空间中的对象的位置。一种模拟设备包括:完整二叉树创建单元(21),其对于多个计算时间点的每一个创建完整二叉树,其中使指示在所述计算时间点在虚拟空间中的对象的位置的位置信息与叶关联,并且反映子节点的位置信息的位置信息与内部节点关联;以及节点变换单元(22),其对于从最下层的紧接上层顺序地开始的完整二叉树中的每层中的2n(n≥1)节点的每个,在关联到2·2n子节点每个的位置信息的基础上,变换与2n节点关联的2·2n子节点。冲突确定单元(23)通过使用由所述节点变换部分的变换产生的完整二叉树执行对象之间的冲突确定。
【专利说明】
模拟设备
技术领域
[0001]本发明涉及执行与在虚拟空间中随着时间移动的多个对象相关的模拟的模拟设备,其控制方法,程序,以及信息存储介质。
【背景技术】
[0002]在执行布置在虚拟空间中的多个对象的冲突确定的模拟中,在虚拟空间上的两个对象的位置的基础上执行冲突确定。在这里,以循环复用方式执行多个对象的冲突确定是不充分的,原因是当对象的数量增加时计算量变得更庞大。因此,常规地,作为用于减少冲突确定的次数的方法之一,执行使用反映虚拟空间中的多个对象之间的位置关系的二叉树的冲突确定。通过使用反映对象之间的位置关系的二叉树,可以忽略其在虚拟空间中的位置彼此分离的对象的冲突确定。
[0003]作为用于构造该二叉树的方法,例如有一种方法,其中递归地重复将包括所有对象的区域限定为根并且将通过对分该区域获得的分割区域的每一个限定为子节点而且将通过对分分割区域的每一个获得的分割区域限定为孙节点的处理直到仅仅包括一个对象的分割区域变为叶。

【发明内容】

[0004]技术问题
[0005]在这里,为了在二叉树的构造中减小伴随对象的数量的增加的处理负荷,优选的是通过并行处理执行二叉树的构造。然而,使用用于构造二叉树的常规方法,包括在相应层的分割区域中的对象的数量不同并且因此在一些情况下不能有效地执行并行处理。
[0006]本发明的目的之一是提供一种方法,其适合于并行处理并且适合于构造反映虚拟空间中的对象的位置的二叉树以便执行对象的冲突确定。
[0007]问题的解决方案
[0008]根据本发明的模拟设备是一种模拟设备,其关于在虚拟空间中随着时间移动的多个对象在多个计算定时的每一个确定对象之间的冲突。所述模拟设备的特征在于包括完整二叉树创建部分,其在所述多个计算定时的每一个使指示在所述计算定时的虚拟空间中的对象的位置的各条位置信息与叶关联并且创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联,以及节点变换部分,其在与属于每层中的2n节点的2.2"子节点的每一个关联的位置信息的基础上顺序地从完整二叉树中的最下层的紧接上层变换关于2"节点的每个组的2.2n(n 2 I)子节点。通过使用由所述节点变换部分的变换产生的完整二叉树执行对象之间的冲突确定。
[0009]此外,在上述模拟设备中,指示对象的位置的位置信息可以是对应的对象内接在其中的区域,并且所述节点变换部分可以将属于2η节点的2.2η子节点变换成母节点的区域变小的组合。
[0010]而且,在上述模拟设备中,关于通过变换2.2η子节点获得的多个组合候选的每一个,所述节点变换部分可以随机地改变具有组合候选的母节点的区域的尺寸,并且所述节点变换部分可以变换属于2n节点的2.2n子节点以产生由尺寸的变化产生的区域小的组合候选。
[0011 ]另外,上述模拟设备还可以包括确定部分,其针对每层中的两个节点的每一对顺序地从由所述节点变换部分的变换产生的完整二叉树中的最上层确定在节点的区域之间是否存在重叠。
[0012]此外,在上述模拟设备中,所述确定部分还可以确定在属于在先前的层中的、由所述确定部分确定存在重叠的两个节点的四个子节点的所有组合中,在节点的区域之间是否存在重叠。
[0013]而且,在上述模拟设备中,所述完整二叉树创建部分可以在创建将用于第二或随后的计算定时的冲突确定的完整二叉树的情况下,通过使用用于先前的计算定时的冲突确定的完整一.叉树中的叶和对象之间的对应关系创建完整一■叉树。
[0014]此外,根据本发明的程序是一种程序,其用于导致模拟设备用作完整二叉树创建装置和节点变换装置,所述模拟设备关于在虚拟空间中随着时间移动的多个对象在多个确定定时的每一个确定对象之间的冲突,所述完整二叉树创建装置使指示在某个确定定时的虚拟空间中的对象的位置的各条位置信息与叶关联并且创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联,所述节点变换装置在与属于每层中的2n节点的2.2n子节点的每一个关联的位置信息的基础上顺序地从完整二叉树中的最下层的紧接上层变换关于2"节点的每个组的2.2n(n2 I)子节点。该程序可以存储在计算机可读信息存储介质中。
[0015]而且,根据本发明的一种模拟设备的控制方法是一种用于控制模拟设备的控制方法,所述模拟设备关于在虚拟空间中随着时间移动的多个对象在多个确定定时的每一个确定对象之间的冲突。所述控制方法的特征在于包括完整二叉树创建步骤,其使指示在某个确定定时的虚拟空间中的对象的位置的各条位置信息与叶关联并且创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联,以及节点变换步骤,其在与属于每层中的2η节点的2.2"子节点的每一个关联的位置信息的基础上顺序地从完整二叉树中的最下层的紧接上层变换关于2"节点的每个组的2.2η(η2 I)子节点。
【附图说明】
[0016]图1是示出根据本实施例的模拟设备I的配置的一个例子的图示。
[0017]图2是示出由本实施例中的模拟设备I执行的模拟处理的流程的一个例子的图示。
[0018]图3是示出由本实施例中的模拟设备I执行的主要功能的一个例子的功能框图。
[0019]图4是示出完整二叉树的一个例子的图示。
[0020]图5是示出布置在虚拟空间中的多个对象的简化模型的图示。
[0021]图6Α是示出由完整二叉树创建部分21创建的完整二叉树的一个例子的图示。
[0022]图6Β是示出在完成关于第二层的节点变换处理之后的完整二叉树的一个例子的图示。
[0023]图6C是示出在完成关于第三层的节点变换处理之后的完整二叉树的一个例子的图示。
[0024]图7是示出获得对象对和管理获得对象对的分配的对象检查表的一个例子的图不O
[0025]图8示出确定目标对和比较目标对的一个例子。
[0026]图9是示出根据本实施例的通过使用共同对象对进行对象的物理量计算处理的流程的一个例子的流程图。
[0027]图10是示出对象的链接的程序的一个例子的图示。
[0028]图1lA是示意性地示出由对象链接部分44链接的链接对象的一个例子的图示。
[0029]图1lB是示意性地示出在关于图1lA中所示的链接对象的相应对象的指针值的更新之后的链接对象的一个例子的图示。
[0030]图1lC是示意性地示出在关于图1lB中所示的链接对象的相应对象的指针值的更新之后的链接对象的一个例子的图示。
[0031 ]图12是示出图1IA中所示的相应对象的指针值的转变的图示。
【具体实施方式】
[0032]下面将参考图详细地描述本发明的实施例。
[0033]图1是示出根据本实施例的模拟设备I的配置的一个例子的图示。例如,根据本实施例的模拟设备I是用于家用的游戏机、个人计算机等并且配置成包括控制单元11,存储单元12,通信单元13,操作单元14,以及显示单元15,如图1中所示。
[0034]控制单元11配置成包括CPU5, GPU 6等并且根据存储在存储单元12中的程序执行各种信息处理。随后将描述在本实施例中由控制单元11执行的处理的具体例子。
[0035]存储单元12配置成包括存储元件(如RAM和R0M、硬盘驱动器等)并且存储将由控制单元11执行的程序和各种类型的数据。此外,存储单元12也用作控制单元11的工作存储器。
[0036]通信单元13是通信接口并且接收经由通信网络来自外部的数据以将数据输出到控制单元11。此外,通信单元13根据来自控制单元11的指令将各种类型的数据传输到经由通信网络连接的其他信息处理设备。
[0037]操作单元14是键盘、鼠标、用于家用的游戏机的控制器等并且接受用户的操作输入以将指示其内容的信号输出到控制单元11。
[0038]显示单元15是显示设备(如液晶显示器)并且根据控制单元11的指令显示各种类型的图像。
[0039 ] 模拟设备I可以包括光盘驱动器,其读取光盘,如DVD-ROM和Blu-ray (注册商标)光盘,通用串彳丁总线(USB)端口等。
[0040]下面将描述由根据本实施例的模拟设备I执行的功能的具体例子。在本实施例中,关于在虚拟空间中移动的多个对象,随着时间改变的对象的位置由诸如物理模拟的模拟处理计算。在本实施例中,特别地考虑由于对象之间的冲突对相应对象的位置的影响执行模拟处理。假设控制单元11的GPU 6主要执行该模拟处理。然而,CPU 5或另一设备可以执行模拟处理。
[0041 ] GPU 6具有比CPU 5更大数量的核并且也具有可以同时执行的更大数量的处理单元(线程),并且因此适合于并行处理。其间,同时执行的线程需要用彼此相同的内容处理。因此,为了通过使用GPU 6有效地执行模拟处理,需要用与常规算法不同的算法执行处理。
[0042]假设虚拟空间中的时间的进展由时间计数器t的值表示。时间计数器t的值递增I并且每个预定单位时间d执行模拟处理。也就是说,作为对象的位置的计算的主题的每个计算定时由时间计数器t = 0,l,2,3,…表示。此外,每个对象与针对对象唯一地设置以便识别对象的ID信息(标识)关联。而且,属性信息可以彼此关联。作为属性信息,例如可以使用表示对象的类型的信息,限定外部形状的信息,和根据对象的类型的其他各种类型的属性信息。
[0043 ]在这里,将参考图2的流程方向描述由本实施例中的模拟设备I执行的模拟处理的流程的一个例子。每当时间计数器t的值递增时执行图2中所示的处理。
[0044]首先,将物理量(速度、加速度等)赋予布置在虚拟空间中的多个对象的至少一部分(SI)。由此,布置在虚拟空间中的多个对象的位置随着时间变化。
[0045]接着,在计算对象的位置时的计算定时,确定对象之间的冲突(S2)。随后将详细地描述处理S2。
[0046]然后,创建通过处理SI确定为彼此冲突的两个对象的约束条件(S3)。在这里,例如,对象的运动需要被约束使得可以防止确定为彼此冲突的两个对象的位置在行进方向上从冲突点进一步变化。否则,例如发生冲突对象彼此插入或穿过的问题。在处理S3中,创建用于约束对象的这样的运动的约束条件。然后,通过求解约束条件,计算将赋予相应对象以便满足约束条件的物理量(S4)。随后将详细地描述处理S4。
[0047]在这时,在虚拟空间中移动的多个对象中存在其速度几乎为零的对象。对于处于基本停止状态的这样的对象,执行将速度设置为零以使对象睡眠(将对象设置为停止状态)的睡眠管理(S5)。从计算目标排除由于睡眠管理处于睡眠状态的对象,其减少计算的处理量。应当注意当外力给予由于睡眠管理处于停止状态的对象时,由睡眠管理产生的停止状态解除并且对象加入到计算目标。随后将详细地描述处理S5。
[0048]然后,在虚拟空间中的位置反映赋予相应对象的物理量(S6)。也就是说,从赋予相应对象的物理量,计算在绘制虚拟空间的状态时的定时的相应对象的位置。然后,模拟设备I绘制示出对象布置在计算位置处的状态下的虚拟空间的外观的图像并且将图像输出到显示单元15。由此,每当单位时间d消逝时,其中相应对象布置在由模拟设备I在该定时计算的位置处的虚拟空间的图像显示在显示单元15的屏幕上。
[0049]在这里,下面将详细地描述由处理S2产生的对象的冲突确定处理,由处理S4产生的对象的物理量计算处理,以及由处理S5产生的对象的睡眠管理处理。
[0050]图3是示出由根据本实施例的模拟设备I执行的主要功能的一个例子的功能框图。如图3中所示,本实施例中的模拟设备I的控制单元11配置成在功能上例如包括完整二叉树创建部分21,节点变换部分22,冲突确定部分23,对象对信息获取部分31,重排部分32,识别部分33,分配部分34,计算部分35,值赋予部分41,指针值重写部分43,路线值重写部分43,以及指针值更新部分45。这些功能通过由控制单元11执行存储在存储单元12中的程序实现。该程序经由计算机可读信息存储介质(如光盘、磁盘、磁带、磁光盘或闪速存储器)或经由通信装置(如因特网)提供给模拟设备I。
[0051 ]首先,将描述由处理S2产生的对象的冲突确定处理。对象的冲突确定处理由图3中所示的完整二叉树创建部分21、节点变换部分22和冲突确定部分23执行。
[0052]完整二叉树创建部分21使指示关于布置在虚拟空间中的多个对象的每一个的虚拟空间中的位置的位置信息与叶关联,并且创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联。
[0053]指示虚拟空间中的对象的位置的位置信息可以是可以在与对象关联的属性信息(例如,限定外部形状的信息)和虚拟空间的坐标信息的基础上指示虚拟空间中的相应对象之间的位置关系的信息。例如,作为位置信息,使用包含对象的所谓的边界体积。该边界体积以简化方式示出对象在虚拟空间中内接在其中的区域的位置和尺寸。由于边界体积是通过简化对象的形状获得的信息,因此当在边界体积上执行冲突确定时比在对象的详细模型上执行冲突确定时以更高的速度执行处理。作为边界体积(例如,球体),使用轴对齐边界框(AABB)等,其是具有平行于相应轴(x、y和z轴)的侧的立方体。如果边界体积是球体,球体的中心坐标和半径用作位置信息。如果边界体积是轴对齐边界框,在轴对齐边界框的顶点中相应轴的坐标值最小的最小点和相应轴的坐标值最大的最大点的坐标值用作位置信息。此夕卜,如果边界体积是轴对齐边界框,轴对齐边界框的中心坐标和从中心到彼此正交的三个平面中的相应的一个的距离可以用作位置信息。也就是说,只要关于对象的边界体积的虚拟空间中的形状和位置可以由位置信息指示就够了。
[0054]在这里,将描述轴对齐边界框用作位置信息的例子。完整二叉树创建部分21使作为位置信息的布置在虚拟空间中的多个对象的每一个的轴对齐边界框的信息(最大点的坐标值,最小点的坐标值等)与叶关联。在这时,完整二叉树创建部分21可以按照与每个对象关联的标识的顺序使每个对象的位置信息与叶关联,或者可以使每个对象的位置信息与叶随机地关联。
[0055]然后,完整二叉树创建部分21使具有作为子节点的两个叶的母节点与新边界体积的信息关联,与两个子节点关联的两条位置信息中的相应的一个所指示的体积信息作为位置信息内接在所述新边界体积中。具体地,完整二叉树创建部分21关联包含与作为母节点的子节点的两个叶关联的两条位置信息所指示的轴对齐边界框的新轴对齐边界框的信息作为母节点的位置信息。完整二叉树创建部分21针对两个叶的每一对执行该处理并且使位置信息与每个母节点关联。此外,完整二叉树创建部分21使具有位置信息与其关联的作为子节点的两个节点的母节点与作为位置信息的包含与两个节点关联的两条位置信息所指示的轴对齐边界框的新轴对齐边界框的信息关联。完整二叉树创建部分21针对两个节点的每一对执行该处理并且使位置信息与每个母节点关联。以该方式,完整二叉树创建部分21执行关于两个节点的每一对使位置信息与母节点关联的处理直到根,由此创建完整二叉树,其中位置信息与所有节点关联。
[0056]将通过使用图4中举例说明的完整二叉树具体地描述由完整二叉树创建部分21执行的处理。如图4中所示,完整二叉树包括作为第一层的叶并且顺序地形成第二层、第三层和第四层,第四层是根。为了方便起见,将通过将第一层的相应叶从左限定为叶11至叶18并且将第二层的相应节点从左限定为节点21至节点24并且将第三层的相应节点从左限定为节点31至32识别每个叶和每个节点的层级和位置。在这里,例如,假设对象A至对象H的八个对象(A至H限定为标识)布置在虚拟空间中。假设在这时,用作相应对象的位置信息的轴对齐边界框表示为Pa至Ph。在该情况下,完整二叉树创建部分21按照标识的顺序使相应对象的各条位置信息Pa至Ph与第一层的相应叶11至叶18关联。然后,完整二叉树创建部分21使节点21与作为Pab的新轴对齐边界体积关联,所述新轴对齐边界体积包含与叶11关联的位置信息Pa所指示的轴对齐边界体积和与叶12关联的位置信息Pb所指示的轴对齐边界体积。类似地,完整二叉树创建部分21使节点22与作为P?的新轴对齐边界体积关联,所述新轴对齐边界体积包含与叶13关联的位置信息Pc所指示的轴对齐边界体积和与叶14关联的位置信息Pd所指示的轴对齐边界体积。此外,完整二叉树创建部分21使节点31与作为Pabcd的新轴对齐边界体积关联,所述新轴对齐边界体积包含与节点21关联的位置信息Pab所指示的轴对齐边界体积和与节点22关联的位置信息Pcd所指示的轴对齐边界体积。如果完整二叉树创建部分21以该方式使母节点与包含与两个子节点关联的各条位置信息所指示的轴对齐边界体积的新轴对齐边界体积关联,Pef、Pgh、Pefgh相应地与节点23、节点24和节点32关联。应当注意与根关联的位置信息是包含布置在虚拟空间中的所有对象A至对象H的轴对齐边界体积。
[0057]从完整二叉树创建部分21所创建的完整二叉树的最下层(叶层)的紧接上层,关于2n(n 2 I)节点的每个组,节点变换部分22在与属于2n节点的2.2n子节点的每一个关联的位置信息的基础上变换2.2n子节点。在这里,节点变换部分22将与完整二叉树创建部分21所创建的完整二叉树的叶关联的相应对象的各条位置信息变换成反映虚拟空间中的位置关系的形式。
[0058]将通过使用在图4中举例说明的完整二叉树具体地描述由节点变换部分22执行的处理。例如,假设n = l,在由完整二叉树创建部分21创建的完整二叉树的第二层中,关于两个节点的每一对(节点21和节点22,节点23和节点24 ),节点变换部分22在与子节点(叶11至叶14,叶15至叶18)关联的四条位置信息(Pa至PD,PE至Ph)的基础上变换子节点。尽管在这里将描述关于节点21和节点22的处理,但是假设也同时执行关于节点23和节点24的处理。首先,节点变换部分22选择其与位置信息Pa所指示的轴对齐边界框的位置关系在各条位置信息Pb、Pc和Pd中的相应的一个所指示的轴对齐边界框之中相对接近的轴对齐边界框。例如,关于位置信息Pa和位置信息Pb之间、位置信息Pa和位置信息Pc之间以及位置信息Pa和位置信息Pd之间的对的每一个,节点变换部分22获得包含两条位置信息所指示的轴对齐边界框的新轴对齐边界框的体积(相应地限定为VAB、VAC和Vad)。然后,当该体积更小时,确定两条位置信息所指示的轴对齐边界框的位置更接近。节点变换部分22变换各条位置信息Pa至Pd使得产生最小体积的组合可以属于节点21 ο例如,如果确定体积Vac是最小的,节点变换部分22互换位置信息Pb和位置信息Pc使得位置信息Pa和位置信息Pc可以属于节点21并且位置信息Pb和位置信息Pd可以属于节点22。然后,包含位置信息Pa和位置信息Pc的相应的一个所指示的轴对齐边界框的新轴对齐边界框与作为位置信息Pm的节点21关联,并且包含位置信息Pb和位置信息Pd的相应的一个所指示的轴对齐边界框的新轴对齐边界框与作为位置信息Pbd的节点22关联。
[0059]然后,在完成关于第二层的节点变换之后,在其中关于第二层已变换节点的完整二叉树的第三层中,节点变换部分22执行与关于两个节点(节点31和节点32)的每一个的子节点的第二层中的上述处理类似的处理。在图4中举例说明的完整二叉树一直到第四层。然而,在具有更深层级的完整二叉树中,在每一层中执行这样的处理直到最高层(根)。由节点变换部分22进行的处理可以顺序地从最低层的紧接上层执行直到最高层,或者可以按照任意顺序在相应的层中执行。
[0060]将通过使用在图4中举例说明的完整二叉树描述由节点变换部分22执行的另一处理方法。例如,假设η = I,将关于在与节点21和节点22的子节点(叶11至叶14)关联的四条位置信息(Pa至Pd,Pe至Ph)的基础上变换由完整二叉树创建部分21创建的完整二叉树的第二层中的子节点的处理进行描述。首先,作为与节点21和节点22关联的各条位置信息的组合候选,Pab和Pcd、Pac和Pbd以及Pad和Pbc的三个组合是可能的。反映虚拟空间中的位置关系的最佳组合从这三个组合候选选择。与此一起,使用每个组合候选,节点变换部分22获得与节点21和节点22的相应的一个关联的各条位置信息所指示的轴对齐边界框的体积的和(和相应地为Vab+Vcd,Vac+Vbd,和Vad+Vbc)。然后,在Vab+Vcd,Vac+Vbd,和Vad+Vbc之中选择产生最小值的组合作为最佳组合。然后,节点变换部分22变换相应的节点使得可以获得选择的最佳组合。例如,如果Vac+V[3d是最小的,节点变换部分22互换位置信息Pb和位置信息Pc使得位置信息Pa和位置信息Pc可以属于节点21并且位置信息Pb和位置信息Pd可以属于节点22。
[0061]在以上描述中,为了从与作为变化目标的多个子节点的相应的一个关联的轴对齐边界框决定其位置关系较近的两个轴对齐边界框的组合,节点变换部分22实际地计算包含作为组合候选的两个轴对齐边界框的轴对齐边界框的体积并且变换子节点使得与包含在具有小体积的轴对齐边界框中的两个轴对齐边界框关联的两个子节点可以属于相同相同母节点。然而,节点变换部分22不受这样的方法限制并且可以通过各种类型的方法决定其位置关系较近的两个轴对齐边界框的组合。例如,节点变换部分22可以通过使用诸如包含作为组合候选的两个轴对齐边界框的轴对齐边界框的三条边的长度的和或对角线的长度的数值作为确定标准决定其位置关系较近的两个轴对齐边界框的组合。同样在该情况下,当用作确定标准的数值更小时,可以确定包含两个轴对齐边界框的轴对齐边界框自身的尺寸更小并且可以确定两个轴对齐边界框的位置相对更近。
[0062]将描述通过使用简化模型执行由完整二叉树创建部分21和节点变换部分22进行的上述处理的例子。布置在虚拟空间中的多个对象的简化模型在图5中示出。在图5中所示的简化模型中,在晶格方式的二维空间(x-y坐标)中,布置具有相等尺寸的对象(假设一个网格指示对象)。在这里,对象A至对象H的八个对象(A至H限定为标识)布置在二维空间中。此外,用作位置信息的轴对齐边界框也由网格表示。例如,假设对象A的位置信息Pa是由相应轴的坐标值最小的最小点的坐标值(O,2)和相应轴的坐标值最大的最大点的坐标值(I,3)表示的轴对齐边界框。该例子的处理旨在创建反映该二维空间中的对象A至对象H之间的位置关系的完整一.叉树。
[0063]首先,完整二叉树创建部分21按照标识的顺序使对象A至对象H的各条位置信息Pa至Ph相应地与叶11至叶18关联以创建图6A中所示的完整二叉树。接着,关于第二层的节点21和节点22,节点变换部分22获得包含关于位置信息Pa和位置信息Pb之间、位置信息Pa和位置信息Pc之间以及位置信息Pa和位置信息Pd之间的对的每一个的两条位置信息所指示的轴对齐边界框的新轴对齐边界框的体积(在简化模型中相当于面积)。在这里,如果最小点坐标限定为(xs,ys)并且最大点坐标限定为(xl,yl),面积V为V=(xl-xs)(yl_ys)。首先,包含位置信息Pa(最小点(O,2),最大点(I,3))和位置信息Pb(最小点(5,4),最大点(6,5))所指示的轴对齐边界框的新轴对齐边界框Pab由最小点(O,2)和最大点(6,5)表示。此外,轴对齐边界框Pab的面积为VAB=18。类似地,包含位置信息PA(最小点(0,2),最大点(0,3))和位置信息Pc(最小点(2,2),最大点(3,3))所指示的轴对齐边界框的新轴对齐边界框Pac由最小点(O,2)和最大点(3,3)表示并且具有面积VAC = 3。包含位置信息PA(最小点(0,2),最大点(0,3))和位置信息Pd(最小点(2,4),最大点(3,5))所指示的轴对齐边界框的新轴对齐边界框Pad由最小点(0,2)和最大点(3,5)表示并且具有面积VAD = 9。综上所述,新轴对齐边界框的面积为Vab= 18, Vac = 3和Vad = 9,并且Vac是最小的。因此,位置信息Pb和位置信息Pc互换使得位置信息Pa和位置信息Pc可以属于节点21。然后,也关于第二层的节点23和节点24,关于位置信息Pe和位置信息Pf之间、位置信息Pe和位置信息Pg之间以及位置信息Pe和位置信息Ph之间的对的相应的一个获得包含两条位置信息所指示的轴对齐边界框的新轴对齐边界框的面积VEF、Veg和Veh。因此,获得¥即=15^(; = 42和¥£11 = 5。所以^11是最小的并且因此节点变换部分22互换位置信息Pf和位置信息Ph使得位置信息Pe和位置信息Ph可以属于节点23。综上所述,在完成关于第二层的节点变换处理之后的完整二叉树变为图6B。
[0064]接着,节点变换部分22通过使用图6B的完整二叉树执行关于第三层的节点变换处理。关于第三层中的节点31和节点32,关于位置信息Pac和位置信息Pbd之间、位置信息Pac和位置信息Peh之间以及位置信息Pac和位置信息Pcf之间的对的相应的一个获得包含两条位置信息所指示的轴对齐边界框的新轴对齐边界框的面积。因此,获得Vabcd= 18,VACEH= 15和Vacgf = 30。所以,Vaceh是最小的并且因此节点变换部分22互换位置信息Pm和位置信息Peh使得位置信息Pac和位置信息Peh可以属于节点31,并且由节点变换部分22进行的处理结束。综上所述,在完成关于第三层的节点变换处理之后的完整二叉树变为图6C。因此,获得反映虚拟空间中的对象之间的位置关系的图6C中所示的完整二叉树。
[0065]而且,通过使用在时间计数器t = n由完整二叉树创建部分21和节点变换部分22创建的完整二叉树,可以执行在时间计数器t = n+l由节点变换部分22进行的处理。具体地,例如,假设在时间计数器t = n创建图6C中所示的完整二叉树。然后,当完整二叉树创建部分21在时间计数器t = n+l创建完整二叉树时,在时间计数器t = n+l布置在虚拟空间中的对象的各条位置信息按照与图6C中所示的完整二叉树的叶相同的顺序关联。也就是说,完整二叉树创建部分21在叶中从左关联各条位置信息PA、PC、PE、PH、PB、PD、PG和Pf的每一个。应当注意在时间计数器t = n+1的完整二叉树中,位置信息的顺序与图6C中的t = η的完整二叉树相同,并且关于各条位置信息的内容,反映时间计数器t = n+l的虚拟空间中的各条位置信息。这旨在当时间计数器递增时通过在时间计数器t = n+l保留时间计数器t = n的相应对象和叶之间的对应关系将完整二叉树逐渐变为最佳形式,原因是相应对象的位置在时间计数器t = n和在时间计数器t = n+l之间很少大幅变化。
[0066]在完整二叉树中,所有节点不可避免地具有两个子节点。所以,无论选择哪些2"节点,其子节点的数量相等。因此,由节点变换部分22基于与2"节点的子节点关联的各条位置信息执行的节点变换处理可以由相同算法执行,无论选择哪些2n节点。所以,节点变换部分22可以关于相应层中的2n节点的每一个并行地执行节点变换处理。
[0067]此外,在一些情况下,由上述节点变换部分22进行的节点变换处理完成的完整二叉树不是反映虚拟空间中的对象之间的位置关系的最佳完整二叉树。这归因于在将虚拟空间中的对象分成两个对象的组合的情况下当节点变换部分22执行获得两个对象之间的位置关系变为最小的组合的优化处理时处理陷入局部解。因此,将关于由节点变换部分22执行的、用于减小陷入局部解的可能性的处理进行描述。如上所述,节点变换部分22从与作为变换目标的多个子节点的相应的一个关联的各条位置信息决定其位置关系较近的两条位置信息的组合。在这里,关于组合候选的每一个,节点变换部分22获得定量地指示组合候选中的两个子节点之间的位置关系的数值并且在增加方向或减小方向上随机地改变数值(即,将噪声加入到数值)。然后,节点变换部分22使用由变化产生的数值小的组合候选并且执行节点变换处理使得可以获得组合候选。作为具体例子,作为定量地指示两个子节点之间的位置关系的数值,节点变换部分22使用包含与两个子节点关联的两条位置信息的相应的一个所指示的区域的区域的尺寸(例如,轴对齐边界框的体积等)。通过以该方式将随机噪声加入到定量地指示两个子节点之间的位置关系的值并且关于每个组合候选评价由此产生的值,下面将通过使用图4关于由节点变换部分22进行的用于减小陷入局部解的可能性的具体处理进行描述。
[0068]首先,将关于在与节点21和节点22的子节点(叶11至叶14)关联的四条位置信息(Pa至Pd,Pe至Ph)的基础上变换图4中所示的完整二叉树的第二层中的子节点的处理进行描述。首先,作为与节点21和节点22关联的各条位置信息的组合候选,存在Pab和PCD、PAC和Pbd以及Pad和Pbc的三个组合。反映虚拟空间中的位置关系的最佳组合从这三个组合选择。此外,节点变换部分22从相应组合候选选择与节点21和节点22的相应的一个关联的各条位置信息所指示的轴对齐边界框的体积的和变为最小的组合。在这里,当获得与节点21和节点22的相应的一个关联的各条位置信息所指示的轴对齐边界框的体积的和时,节点变换部分22将噪声加入到与相应节点关联的各条位置信息所指示的轴对齐边界框的体积(VAB,VCD,VAC,VBD,VAD,VBc)。也就是说,使用相应组合候选,作为(l+αl)VAB+(l+α2)VcD,(l+α3)VAc+(l+α4)VBD和(l+a5)VAD+(l+a6)VBC获得与节点21和节点22的相应的一个关联的各条位置信息所指示的轴对齐边界框的体积的和。在这里,假设在0〈am〈l的范围内随机地给出am(m=l至6)。此夕卜,三种类型的值可以事先限定为并且随机地分配给相应组合候选。然后,节点变换部分22从相应组合候选选择加入噪声的、两条位置信息所指示的轴对齐边界框的体积的和最小的组合并且变换节点。通过在关于两个节点的每一对的子节点的变换中由节点变换部分22执行这样的处理,陷入局部解的可能性减小并且最后完成反映虚拟空间中的对象之间的位置关系的最佳完整二叉树。
[0069]在以上描述中,节点变换部分22使用两条位置信息所指示的两个区域内接在其中的区域的尺寸(更具体地,包含两条位置信息所指示的轴对齐边界框的轴对齐边界框的体积)作为定量地指示每个组合候选中的两个子节点之间的位置关系的值。然而,值不限于该例子。例如,节点变换部分22可以使用诸如作为组合候选的两条位置信息所指示的轴对齐边界框的三条边的长度的和或对角线的长度的数值作为定量地指示两条位置信息之间的位置关系的值。同样在该情况下,节点变换部分22随机地改变用作定量地指示两个子节点之间的位置关系的值的数值并且在该变化的数值的基础上执行节点变换处理。
[0070]冲突确定部分23执行通过使用其中变换已由节点变换部分22完成的完整二叉树执行对象之间的冲突确定的模拟处理。在每个关联的位置信息的基础上关于完整二叉树的每个节点的子节点执行冲突确定。作为冲突确定方法,例如在确定基于使用球形边界体积的位置信息的情况下,有一种方法,其中如果中心坐标之间的距离比两个半径的和短,确定球形边界体积正在冲突。此外,在确定基于使用轴对齐边界框的位置信息的情况下,在最小点的坐标值和最大点的坐标值的基础上确定重叠是否存在于相应轴上,并且如果确定重叠存在于所有三个轴上,确定轴对齐框正在冲突。此外,如果轴对齐边界框中的中心坐标和从中心到彼此正交的三个平面的相应的一个的距离用作位置信息,可以确定中心坐标之间的距离是否比相应轴中的两个半径(从中心到平面的距离)的和短,并且如果确定在所有三个轴中距离更短,可以确定轴对齐边界框正在冲突。
[0071]通过使用其中节点已由节点变换部分22变换的完整二叉树执行由本实施例中的冲突确定部分23进行的冲突确定。冲突确定部分23在与节点的每一个关联的位置信息的基础上顺序地从完整二叉树的根到叶关于每个层中的两个节点执行冲突确定。此外,如果关于两个节点确定与节点的相应的一个关联的各条位置信息所指示的轴对齐边界框正在冲突,冲突确定部分23在关于两个节点的四个子节点的所有组合中执行冲突确定。而且,如果关于两个节点确定轴对齐边界框不正在冲突,冲突确定部分23执行关于两个节点的每一个的子节点的冲突确定。这是在以下思想下执行的处理。具体地,如果确定关于两个节点正在发生冲突,存在确定也关于其子节点正在发生冲突的可能性。如果确定关于两个节点不正在发生冲突,可以确定其子节点不正在发生冲突。与节点关联的位置信息包括属于该节点的所有下级节点的各条位置信息。所以,如果确定在与上级节点关联的各条位置信息中不正在发生冲突,可以说在与下级节点关联的各条位置信息中也不正在发生冲突。这允许冲突确定部分23忽略不冲突的对象之间的冲突确定。
[0072]在这里,将通过使用图5中所示的简化模型描述由冲突确定部分23执行的具体处理。冲突确定部分23顺序地从其中变换已由节点变换部分22完成的图6C中所示的完整二叉树的第三层到第一层执行每层中的冲突确定。首先,关于第三层的节点(节点31和32),冲突确定部分23通过使用上述冲突确定方法在与节点31关联的位置信息Paceh和与节点32关联的位置信息Pbdgf的基础上执行对象之间的冲突确定。在这里,冲突确定部分23确定是否在位置信息PACeh(最小点(0,0),最大点(3,5))所指示的轴对齐边界框和位置信息Pbdcfh(最小点(2,2),最大点(6,7))所指示的轴对齐边界框之间导致相应轴上的重叠。因此,确定在具有最小点(2,2)和最大点(3,5)的范围内导致重叠并且位置信息Paceh所指示的轴对齐边界框和位置信息Pbdgfh所指示的轴对齐边界框正在冲突。然后,由于确定关于节点31和节点32正在发生冲突,冲突确定部分23也在第二层中的冲突确定中关于其子节点的所有组合执行冲突确定。也就是说,冲突确定部分23关于节点21和22之间、节点21和节点23之间、节点21和节点24之间、节点22和节点23之间、节点22和节点24之间以及节点23和节点24之间的组合的每一个执行冲突确定。如果通过使用上述冲突确定方法进行确定,确定关于节点21和节点22以及关于节点23和节点24正在发生冲突。然后,冲突确定部分23也在第一层中的冲突确定中关于其子节点的所有组合执行冲突确定。由于第一层中的冲突确定,识别彼此冲突的两个对象。
[0073]如上所述,在由冲突确定部分23进行的相应层中的冲突确定处理中,在均与两个节点的相应的一个关联的各条位置信息的基础上执行冲突的确定。所以,冲突确定处理是相同算法的处理,其中在与节点关联的各条位置信息的基础上执行冲突的确定,无论选择哪些节点。因此,在相应层中关于其执行冲突的确定的两个节点的组合的每一个可以并行地处理。
[0074]接着,将描述由处理S4产生的对象的物理量计算处理。对象的物理量计算处理由图3中所示的对象对信息获取部分31、重排部分32、识别部分33、分配部分34和计算部分35执行。
[0075]在这里,通过求解彼此相接触的两个对象的约束条件,计算应当赋予相应对象以便满足约束条件的物理量。然而,存在这样的情况,其中例如对象对I (对象A和对象B)和对象对2(对象A和对象C)同时作为彼此相接触的对象的对存在。在该情况下,两个对象对共同包括对象A。所以,关于相应对象对的计算是相互依赖的并且难以并行地处理。与此一起,彼此相接触的对象的多个对分组成在不同定时执行处理的多个阶段。每个阶段具有并行处理的多个线程并且将对象对分配给相应线程能够并行处理对象对的每一个。此外,在处理每个阶段时的定时,并行地执行关于分配给该阶段的对象对的计算。下面将描述细节。
[0076]对象对信息获取部分31顺序地获取由彼此相接触的两个对象组成的对象对的各条信息作为组元。对象对信息获取部分31获取由冲突确定部分23确定为冲突的两个对象作为彼此相接触的两个对象。此外,在下文中,其信息由对象对信息获取部分31获取并且由彼此相接触的两个对象组成的对象对将表示为被获取对象对。另外,对象对的信息可以是每个对象的标识和属性信息。
[0077]分配部分34以这样的方式将由对象对信息获取部分31获取的多个被获取对象对的每一个分配给多个阶段的任何一个使得包括这些被获取对象对共有的对象的两个或更多个被获取对象对不属于相同阶段。
[0078]将通过使用图7具体地描述由分配部分34执行的处理。图7是示出获得对象对和管理获得对象对的分配的对象检查表的一个例子的图示。假设对象检查表由存储单元12保持。通过在每个阶段基础上使识别相应对象的标识与指示计算处理在由标识识别的对象上执行的标志关联制作在图10中举例说明的对象检查表。具体地,如果在阶段S(S^O)标志为I,这指示在阶段s计算处理在由标识识别的对象上执行。如果标志为0,在阶段s不执行计算处理。在该对象检查表中,所有标志在初始状态下为O。
[0079]首先,假设在图7中举例说明的多个被获取对象对存在。分配部分34从对象检查表的阶段O顺序地分配这些被获取对象对。当获取第一被获取对象对(对象A和对象B)时,分配部分34将对应于阶段O的标识A和标识B的标志设置为I。接着,当分配部分34获取被获取对象对(对象A和对象C)时,在线程O不能计算被获取对象对(对象A和对象C),原因是对应于阶段O的标识A的标志为I,尽管标识C的标志为O。因此,由于对应于下一阶段(阶段I)的标识A和标识C的标志为0,分配部分34将对象对(对象A和对象C)分配给阶段I。也就是说,对应于阶段I的标识A和标识C的标志设置为I。然后,分配部分34可以将下一被获取对象对(对象D和对象E)分配给阶段O并且因此对应于阶段O的标识D和标识E的标志设置为I。以该方式,关于被获取对象对设置标志。通过该对象检查表,可以看到执行被获取对象对的每一个的处理时的定时。
[0080]计算部分35计算由于彼此相接触的两个对象的接触对相应对象的位置的影响。通过求解彼此相接触的两个对象的约束条件,计算部分35计算将赋予相应对象以便满足约束条件的物理量。在本实施例中,关于被获取对象对,计算部分35求解被获取对象对的约束条件以计算按照分配给分配部分34所创建的对象检查表的阶段编号的顺序将赋予相应对象的物理量。在这里,假设计算部分35从阶段O顺序地执行计算处理。然而,顺序可以是任何顺序,只要不并行地计算相应阶段。
[0081]在这里,在关于在虚拟空间中移动的多个对象计算随着时间改变的对象的位置的物理模拟等中,例如在许多情况下在时间计数器t = 0彼此相接触的对象对在时间计数器t=I也彼此相接触。与此一起,在时间计数器t = η的多个被获取对象对之中,识别其两个组元与时间计数器t = n-l的任何被获取对象对共用的对象对(在下文中,限定为共同对象对)。然后,当计算部分35在时间计数器t = n执行计算时,通过使用共同对象对的信息减小计算的处理量。下面将具体地描述识别共同对象对的处理。识别共同对象的处理由重排部分32和识别部分33执行。
[0082]假设首先由于预定标准,识别部分33将包括在被获取对象对中的两个对象中的一个识别为参考对象并且将另一个识别为伴随对象。例如,在包括在被获取对象对中的两个对象的标识的量值的基础上,识别部分33使用其标识更小的对象作为参考对象。具体地,关于对象对(对象A和对象B),标识的量值为A〈B并且因此将对象A识别为参考对象并且将对象B识别为伴随对象。此外,其标识更大的对象可以用作参考对象。
[0083]然后,识别部分33使用在t= n的多个被获取对象对的每一个作为确定目标对并且在t = n-l的多个被获取对象对之中提取其参考对象与确定目标对共用的对象对作为比较目标对。然后,识别部分33确定伴随对象是否在确定目标对和比较目标对之间共用并且如果伴随对象是共同的,将该确定目标对识别为共同对象对。应当注意如果伴随对象不是共同的,识别部分33将该确定目标对识别为在t = n-l不存在并且t = n出现的新目标对(在下文中,限定为新目标对)。在图8中,示出确定目标对和比较目标对的一个例子。当t = n的被获取对象对中的(A,B)用作确定目标对时,在t = n-l的被获取对象对之中其参考对象是A的对象对是比较目标对。也就是说,(A,B)和(A,D)是比较目标对。如图8中所示,确定目标对(A,B)和作为其比较目标对的(A,B)和(A,D)通过线联接,所述线指示这些对作为确定目标对和比较目标对对应。也关于其他对象对,作为比较目标对的对与确定目标对关联。然后,识别部分33确定伴随对象是否在确定目标对(A,B)和比较目标对(A,B)和(A,D)的每一个之间共用。在这里,由于在确定目标对(A,B)和比较目标对(A,B)两者中伴随对象是B,因此将确定目标对(A,B)识别为共同对象对。此外,当识别部分33确定伴随对象是否在确定目标对(A,C)和比较目标对(A,B)和(A,D)的每一个之间共用时,将确定目标对(A,C)识别为新对象对,原因是在两种组合中伴随对象在确定目标对和比较目标对之间不同。
[0084]如上所述,识别部分33识别被获取对象对中的参考对象和伴随对象并且比较其参考对象共用的确定目标对和比较目标对的伴随对象。这可以减少关于确定目标对的每一个应当比较的比较目标对的数量。此外,由识别部分33执行的、确定伴随对象是否在确定目标对和比较目标对之间共用的处理可以由提取其参考对象共用的比较目标对并且比较伴随对象的相同算法执行,无论选择哪个确定目标对。因此,识别部分33可以执行针对确定目标对的每一个并行地确定伴随对象是否与比较目标对共用的处理。
[0085]在这里,重排部分32可以按照参考对象的标识的顺序通过使用公知的桶式分类处理重排t = n-l的多个被获取对象对。例如,当重排部分32重排图8中所示的t = n-l的被获取对象对时,参考对象的顺序变为A,A,B,D,和F。在这里,当在标识基础上计算出现的数量时,获得以下结果:六:2,8:1,(::0,0:1$:0,和?:1。由此,在重排被获取对象对之中,其中参考对象的标识为A的对象对可以识别为第一和第二对象对(从A的数量)。此外,其中参考对象的标识为B的对象对可以识别为第三对象对(从A和B的数量和B的数量的和),并且其中参考对象的标识为F的对象对可以识别为第五对象对(从A到F的数量和F的数量的和)。以该方式,由于在该标识之前的相应标识的数量和该标识的数量的和识别具有特定标识的对象对。因此,按照参考对象的标识的顺序重排t = n-l的被获取对象对允许识别部分33相对于确定目标对容易地提取比较目标对。应当注意重排部分32可以按照参考对象的标识的顺序通过使用公知的桶式分类处理重排t = n的多个被获取对象对。
[0086]此外,识别部分33可以使用t= n_l的多个被获取对象对的每一个作为确定目标对并且在t = n的多个被获取对象对之中提取其参考对象与确定目标对共用的对象对作为比较目标对。然后,识别部分33确定伴随对象是否在确定目标对和比较目标对之间共用,并且如果伴随对象是共同的,将该确定目标对识别为共同对象对。应当注意如果伴随对象不是共同的,识别部分33将确定目标对识别为在t = n-l存在并且在t = n不存在的删除对象对。具体地,识别部分33确定伴随对象是否在图8中在t = n-l的确定目标对(A,B)和t = n的比较目标对(A,B)和(A,C)的每一个之间共用。在这里,由于在确定目标对(A,B)和比较目标对(A,B)两者中伴随对象是B,因此将确定目标对(A,B)识别为共同对象对。此外,当识别部分33确定伴随对象是否在确定目标对(A,D)和比较目标对(A,B)和(A,C)的每一个之间共用时,将确定目标对(A,D)识别为删除对象对,原因是在两种组合中伴随对象在确定目标对和比较目标对之间不同。
[0087]以该方式,重排部分32按照标识的顺序重排确定目标对和比较目标对。这可以便于其参考对象与确定目标对共用的比较目标对的提取处理并且增加由识别部分33识别共同对象对的处理的速度。
[0088]在这里,将参考图9的流程图关于通过使用由共同对象对识别处理识别的共同对象对的对象的物理量计算处理进行描述。
[0089 ]对象对信息获取部分31在时间计数器t = η获取彼此相接触的对象对的信息(SlOl)0
[0090]识别部分33通过比较在处理SlOl中由对象对信息获取部分31获取的t= n的被获取对象对和在时间计数器t = n-l由对象对信息获取部分31获取的对象对识别共同对象对和新对象对(S102)。
[0091]分配部分34查询存储在存储单元12中的时间计数器t= n_l的对象检查表并且获取在处理S102中由识别部分33识别的共同对象对分配到的阶段编号(S103)。
[0092]分配部分34将共同对象对分配到时间计数器t = n的对象检查表(S104)。在这时,分配部分34将共同对象对分配到在处理S103中获取的时间计数器t = n-l的阶段编号。也就是说,关于共同对象对,执行与时间计数器t = n-l的对象检查表相同的标志设置。
[0093]分配部分34将新对象对分配到在处理S104中已分配共同对象对的对象检查表(S105)。然后,创建的对象检查表与时间计数器t = n关联并且保持在存储单元12中。
[0094]计算部分35综合在处理S102中识别的共同对象对和新对象以制作处理对象对。然后,关于处理对象对,计算部分35求解对象对的约束条件以计算将按照在处理S105中创建的对象检查表中分配的阶段编号的顺序赋予相应对象的物理量(S106)。
[0095]在物理模拟等中,在预定时段d期间对象的位置很少大幅变化。因此,当比较t= n_1的被获取对象对和t = n的被获取对象对时,共同对象对的数量大于新对象对的数量。通过简化共同对象对的分配(其包括如上所述的大量处理),分配部分34的分配处理的速度可以增加。
[0096]接着,将描述由处理S5产生的对象的睡眠管理处理。对象的睡眠管理处理由图3中所示的对象对信息获取部分31、值赋予部分41、指针重写部分42、路线值重写部分43、对象链接部分44和指针值更新部分45执行。
[0097]在执行睡眠管理的情况下,彼此相接触的多个对象需要作为一组进行管理,并且属于相同组的多个对象需要同时进入睡眠并且同时从睡眠解除。这是由于,否则对象具有不自然的行为(如突然出现和抖动)并且在一些情况下(例如在对象的一部分的睡眠解除,但是相接触的其他对象保持睡眠的情况下)不可能保持行为的连续性。具体地,模拟设备I通过将相同管理ID赋予包括在通过链接彼此相接触的多个对象形成的链接对象中的所有对象作为一组管理彼此相接触的多个对象。
[0098]首先,将描述由对象链接部分44创建链接对象的处理。创建链接对象的处理主要由对象对信息获取部分31、值赋予部分41、路线值重写部分42和指针值更新部分43执行。
[0099]对象链接部分44链接由上述对象对信息获取部分31获取的被获取对象对。对象链接部分44使用彼此相接触的三个或更多个对象的任何一个作为终止对象并且赋予每个对象指示接触配对对象的指针值以链接相应对象。然后,由对象链接部分44链接的三个或更多个对象变为链接对象。此外,指针值设置为接触配对对象的标识并且终止对象的指针值不变地是其自身标识。也就是说,终止对象的指针值不指示另一对象。由此,链接对象在一个方向上链接使得相应对象可以朝着终止对象定向。
[0100]在这里,将通过使用示出链接对象的程序的一个例子的图10描述创建链接对象的处理。例如,假设三个对象(对象A、对象B和对象C)存在于虚拟空间中。这些对象由对象对信息获取部分34在时间计数器t = η获取作为被获取对象对(A,C)和(B,C)。假设在时间计数器t = n彼此相接触的这样的三个对象将被链接。
[0101]作为创建链接对象的前提,在这里,这样链接相应对象使得具有小标识的对象用作终止对象。为了该目的,首先值赋予部分41赋予每个对象路线值和指针值。路线值是用于决定由指针值指示的方向的值从而使用具有小标识的对象作为终止对象。此外,假设指针值设置为基本上从具有更大路线值的对象指示具有更小路线值的对象。应当注意具有大标识的对象可以用作终止对象。在该情况下,指针值设置为基本上从具有更小路线值的对象指示具有更大路线值的对象。
[0102]如图10中所示,初始状态(步骤O)设置为不链接任何对象的状态并且在这里值赋予部分41赋予每个对象路线值和指针值的初始值。赋予每个对象的路线值和指针值的初始值设置为对象的标识。
[0103]在步骤I中,当获取被获取对象对(B,C)时,路线值重写部分43将赋予其路线值在包括在被获取对象对中的对象中更大的对象(在下文中,限定为更大路线对象)的路线值更新为赋予具有更小路线值的对象(在下文中,限定为更小路线对象)的路线值。然后,指针值重写部分42将赋予更大路线对象的指针值更新为更小路线对象的标识。也就是说,赋予对象C的路线值和指针值变为B,使得示出从对象C到对象B的指针。
[0104]在步骤2中,当获取被获取对象对(A,C)时,路线值重写部分43将赋予更大路线对象(对象C)的路线值更新为赋予更小路线对象(对象A)的路线值。然后,与步骤I 一样指针值重写部分42将赋予更大路线对象的指针值更新为更小路线对象的标识。也就是说,赋予对象C的路线值和指针值变为A。
[0105]在步骤3中,当时间计数器t变为t= n+l时,初始化赋予相应对象的指针值。当时间计数器t变为t = n+l时,对象对信息获取部分31获取时间计数器t = n+l的被获取对象对并且因此初始化时间计数器t = n的相应对象的指针值。然而,赋予相应对象的路线值是在时间计数器t = η的处理结束的定时的值。
[0106]在步骤4中,当获取被获取对象对(B,C)时,路线值重写部分43将赋予更大路线对象(对象B)的路线值更新为赋予更小路线对象(对象C)的路线值。然后,指针值重写部分42将赋予更大路线对象的指针值更新为更小路线对象的标识。也就是说,对象B的路线值变为A并且指针值变为C,使得示出从对象B到对象C的指针。
[0107]在步骤5中,当获取被获取对象对(A,C)时,比较对象A和对象C的路线值。在这里,赋予对象A的路线值和赋予对象C的路线值相等。在这样的情况下,通过对象的标识的比较,指针值重写部分42将赋予具有更大标识的对象(对象C)的指针值更新为具有更小标识的对象(对象A)的标识。也就是说,赋予对象C的指针值变为A,使得示出从对象C到对象A的指针。此外,在步骤5的结束的定时,链接对象C和对象B,对象A是终止。
[0? 08]以该方式,在由对象链接部分44进行的时间计数器t = n的处理结束的定时的路线值设置作为时间计数器t = n+l的处理的开始定时的路线值。由此,即使当链接对象不能由一次处理创建时,当时间计数器递增时,也可以链接相应对象,具有小标识的对象用作终止对象。
[0109]在上述例子中,在时间计数器t = n,针对每一对一次处理被获取对象(B,C)和(A,C)。可以并行地执行相应步骤的该处理。而且,对象链接部分44可以关于时间计数器t = n的被获取对象(B,C)和(A,C)重复地执行上述的处理。在该情况下,当在步骤2之后获取被获取对象(B,C)时,对象B的路线值变为A并且指针值变为C,其提供与步骤5的结束定时相同的状态。在任何情况下,每当更新路线值时,路线值重写部分43保持更新的路线值。这可以最后创建链接对象,其中具有最小标识的对象用作终止。
[0110]图1lA是示意性地示出由对象链接部分44链接的链接对象的一个例子的图示。如图1IA中所示,链接对象由对象A至对象E组成并且对象A是终止对象。此外,箭头指向赋予相应对象的指针值所指示的接触配对对象。也就是说,图1lA中的对象A的指针值是A,对象B的指针值是A,对象C的指针值是B,对象D的指针值是C,并且对象E的指针值是D。
[0111]在这里,相同管理ID赋予类似于图1lA中所示配置链接对象的所有对象并且由此这些对象受到组管理。因此,为了将相同管理ID赋予所有对象,终止对象用作链接对象的代表并且相应对象设置成全部指向终止对象。也就是说,配置链接对象的相应对象的指针值全部设置为终止对象的标识。这将终止对象的标识赋予所有对象,其允许组管理,该终止对象的标识用作管理ID。
[0112]与此一起,指针值更新部分45将赋予相应对象的指针值更新为相应对象的指针值所指示的接触配对对象的指针值。具体地,当指针值更新部分45关于图1lA中所示的链接对象一次更新相应对象的指针值时,对象C的指针值更新为对象B的指针值并且因此变为A ο此夕卜,对象D的指针值变为B,其是对象C的指针值,并且对象E的指针值变为C,其是对象D的指针值。在图1lB中,示出由关于图1lA中所示的链接对象更新相应对象的指针值产生的图示。如图1IB中所示,所有对象的指针值不通过一次更新指示终止对象。因此,指针值更新部分45再次关于图1IB中所示的链接对象更新相应对象的指针值。在图1lC中,示出由关于图1lB中所示的链接对象更新相应对象的指针值产生的图示。如图1lC中所示,对象D的指针值变为A,其是对象B的指针值,并且对象E的指针值变为A,其是对象C的指针值。图12是示出当指针值更新部分45关于图1lA中所示的链接对象更新相应对象的指针值时每个对象的指针值的转变的图示。也如图12中所示,通过第二轮更新,所有对象的指针值变为指示终止对象(对象A)的值。
[0113]尽管在这里举例说明对象的数量为五的情况,但是即使当对象的数量增加时所有对象的指针值也可以设置为通过类似处理指示终止对象。此外,通过由指针值更新部分45更新处理,如果对象的数量为R,所有对象的指针值可以通过1g2R次处理更新,并且处理的速度比从每个对象一个接着一个跟踪到达终止对象的路线的情况更高。
[0114]另外,在由指针值更新部分45进行的更新处理中,所有对象由将指针值更新为指针值所指示的对象的指针值的相同算法处理。因此,指针值更新部分45可以执行关于配置链接对象的对象的每一个并行地更新指针值的处理。
【主权项】
1.一种模拟设备,其关于在虚拟空间中随着时间移动的多个对象在多个计算定时的每一个确定对象之间的冲突,所述模拟设备的特征在于包括: 完整二叉树创建部分,其在所述多个计算定时的每一个,使指示在所述计算定时的虚拟空间中的对象的位置的各条位置信息与叶关联,并创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联;以及 节点变换部分,其在与属于每层中的2n节点的2.2n子节点的每一个关联的位置信息的基础上,顺序地从完整二叉树中的最下层的紧接上层,变换关于2"节点的每个组的2.2n(n2 I)子节点,其中通过使用由所述节点变换部分的变换产生的完整二叉树执行对象之间的冲关确定。2.根据权利要求1所述的模拟设备,其特征在于 指示对象的位置的位置信息是对应的对象内接在其中的区域,并且 所述节点变换部分将属于2η节点的2.2η子节点变换成母节点的区域变小的组合。3.根据权利要求2所述的模拟设备,其特征在于 关于通过变换2.2"子节点获得的多个组合候选的每一个,所述节点变换部分随机地改变具有组合候选的母节点的区域的尺寸,并且所述节点变换部分变换属于2η节点的2.2"子节点以产生由尺寸的变化产生的区域小的组合候选。4.根据权利要求2或3所述的模拟设备,其特征在于还包括 确定部分,其顺序地从由所述节点变换部分的变换产生的完整二叉树中的最上层,针对每层中的两个节点的每一对确定在节点的区域之间是否存在重叠。5.根据权利要求4所述的模拟设备,其特征在于 所述确定部分还确定在属于在先前的层中的、由所述确定部分确定存在重叠的两个节点的四个子节点的所有组合中,在节点的区域之间是否存在重叠。6.根据权利要求1所述的模拟设备,其特征在于 所述完整二叉树创建部分在创建将用于第二或随后的计算定时的冲突确定的完整二叉树的情况下,通过使用用于先前的计算定时的冲突确定的完整二叉树中的叶和对象之间的对应关系创建完整二叉树。7.—种用于控制模拟设备的控制方法,所述模拟设备关于在虚拟空间中随着时间移动的多个对象在多个确定定时的每一个确定对象之间的冲突,所述控制方法的特征在于包括: 完整二叉树创建步骤,其使指示在某个确定定时的虚拟空间中的对象的位置的各条位置信息与叶关联,并且创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联;以及 节点变换步骤,其在与属于每层中的2η节点的2.2η子节点的每一个关联的位置信息的基础上,顺序地从完整二叉树中的最下层的紧接上层,变换关于2"节点的每个组的2.2η(η> I)子节点。8.—种程序,其用于导致模拟设备用作完整二叉树创建装置和节点变换装置,所述模拟设备关于在虚拟空间中随着时间移动的多个对象在多个确定定时的每一个确定对象之间的冲突, 所述完整二叉树创建部件,其使指示在某个确定定时的虚拟空间中的对象的位置的各条位置信息与叶关联并且创建完整二叉树,其中反映子节点的各条位置信息的位置信息与内部节点关联, 所述节点变换部件,其在与属于每层中的2n节点的2.2"子节点的每一个关联的位置信息的基础上,顺序地从完整二叉树中的最下层的紧接上层,变换关于2"节点的每个组的2.2n(n2 1)子节点。9.一种计算机可读信息存储介质,根据权利要求8所述的程序存储在其中。
【文档编号】G06T19/00GK105874511SQ201480067196
【公开日】2016年8月17日
【申请日】2014年4月25日
【发明人】石川仁, 松生裕史, 吉田弘, 吉田弘一
【申请人】索尼互动娱乐股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1