冲突判定方法及冲突判定装置转让专利

申请号 : CN200510097444.2

文献号 : CN1828670B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 味冈嘉孝水木洁

申请人 : 任天堂株式会社

摘要 :

本发明提供一种冲突判定方法及冲突判定装置。对虚拟三维空间中的犬目标而言,根据犬或其周围的状态,比如在匍匐状态下,将中心处于犬的胸部、半径为30的球体设定为冲突判定区域,在站立的状态下,将中心处于腰部、半径为10的球体设定为冲突判定区域,在与虚拟三维空间内的其它犬玩耍的状态下,将中心处于头部、半径为10的球体设定为冲突判定区域。利用如此设定的冲突判定区域,来进行与其它目标的冲突判定。由此,可抑制冲突判定所需的计算量的增加,同时可进行对应于状况的适当的冲突判定。

权利要求 :

1.一种冲突判定方法,用于判定显示单元所显示的虚拟空间中第一目标与第二目标的冲突,其特征在于,包括:更新步骤,其用于对存储于存储单元的前述第一目标或前述第二目标的位置信息进行更新;

第一设定步骤,其用于对前述第一目标设定冲突判定区域,该区域是与第一目标的形状不同形状的冲突判定区域,其大小及/或位置随着该第一目标的状态或该第一目标的周边状态而异;

第二设定步骤,其用于对前述第二目标设定冲突判定区域;

冲突判定步骤,其通过判定在前述第一设定步骤中设定的前述第一目标的冲突判定区域与在前述第二设定步骤中设定的前述第二目标的冲突判定区域是否重复,来判定该第一目标与该第二目标的冲突。

2.根据权利要求1所述的冲突判定方法,其特征在于:在前述第一设定步骤中对前述第一目标设定的冲突判定区域,具有比该第一目标的形状更为简单的形状。

3.根据权利要求1所述的冲突判定方法,其特征在于:在前述第一设定步骤中对前述第一目标设定的冲突判定区域,只由一个球体来构成。

4.根据权利要求1所述的冲突判定方法,其特征在于:在前述第一设定步骤中,对前述第一目标设定冲突判定区域,该区域的大小及/或位置在该第一目标与其它目标即第三目标相结合时及非结合时是不同的。

5.根据权利要求4所述的冲突判定方法,其特征在于:在前述第一设定步骤中,对前述第一目标设定冲突判定区域,该区域在该第一目标与其它目标即第三目标相结合时,包含该第三目标的至少一部分。

6.根据权利要求1所述的冲突判定方法,其特征在于:在前述第一设定步骤中,对前述第一目标设定冲突判定区域,该区域在容许该第一目标与其它目标接触的状态时,小于不容许接触的状态时。

7.根据权利要求1所述的冲突判定方法,其特征在于:在前述第一设定步骤中,对前述第一目标设定冲突判定区域,该区域的大小及/或位置,随着该第一目标的当前位置或该第一目标与其它目标的位置关系而异。

8.根据权利要求1所述的冲突判定方法,其特征在于:前述第一设定步骤包括:

从前述存储单元,读出设定为规定的大小及位置的前述第一目标的基本冲突判定区域的步骤;

根据该第一目标的状态或该第一目标的周边状态,来变更所读出的该基本冲突判定区域的大小及/或位置的步骤。

9.根据权利要求1所述的冲突判定方法,其特征在于:在前述第一设定步骤中,参照冲突判定区域列表来设定前述第一目标的冲突判定区域,其中冲突判定区域列表按照所设想的每种前述第一目标的状态或该第一目标的周边状态而规定了前述冲突判定区域的大小及位置。

10.根据权利要求1所述的冲突判定方法,其特征在于:还包括:移动步骤,其用于当在前述冲突判定步骤中检测出前述第一目标与前述第二目标发生冲突时,对前述存储单元中存储的前述第一目标或前述第二目标的位置信息进一步更新,由此,使该第一目标及该第二目标的至少一个移动到前述第一目标的冲突判定区域与前述第二目标的冲突判定区域不重复的位置;

输出步骤,其用于参照前述存储单元中存储的前述第一目标或前述第二目标的位置信息,来生成包含前述第一目标及前述第二目标的图像,并输出到前述显示单元。

11.一种冲突判定装置,用于判定显示单元所显示的虚拟空间中第一目标与第二目标的冲突,其特征在于,具有:前述显示单元;

存储单元,其至少存储前述第一目标及前述第二目标的位置信息;

更新单元,其对前述存储单元中所存储的前述第一目标或前述第二目标的位置信息进行更新;

第一设定单元,其对前述第一目标设定冲突判定区域,该区域是与第一目标的形状不同形状的冲突判定区域,其大小及/或位置随着该第一目标的状态或该第一目标的周边状态而异;

第二设定单元,其对前述第二目标设定冲突判定区域;

冲突判定单元,其通过判定前述第一目标的冲突判定区域与前述第二目标的冲突判定区域是否重复,来判定该第一目标与该第二目标的冲突。

说明书 :

技术领域

本发明涉及判定作为二维图像来显示的虚拟空间的目标之间的冲突的技术。

背景技术

有一种技术,用于将虚拟三维空间的三维目标群近似成球体等立体形状,并通过该近似的立体形状(球体等)之间是否重复,来判定目标之间的冲突。与使用正确反映了目标的形状来进行冲突判定的场合相比,该技术可以减轻冲突判定所必需的计算量。
在特开平10-165648号公报中,公开了一种将目标近似成椭圆面体的技术。特开平7-152807号公报公开了一种下列技术,其将目标形状近似成球体,并进行粗略的检查,然后将具有干涉可能性的目标进一步近似成至少一个基本的立体形状,并进行精密的检查。特开平7-230559号公报中,公开了一种将目标的形状近似成多个球体的技术。
在特开平10-165648号公报技术的场合下,与近似成单纯的球体的场合相比,在有的情况下可进行精度良好的冲突判定,但在有些情况下,却不能适当地进行冲突判定。在特开平7-152807号公报技术的场合下,由于除了粗略的检查之外还有必要进行精密的检查,因而存在着增加计算量的问题。在特开平7-230559号公报技术的场合下,由于对一个目标有必要进行多个球体的冲突判定,因而也存在着增加计算量的问题。

发明内容

因此,本发明的主要目的在于,抑制冲突判定所需的计算量的增加,同时可进行基于状况的适当的冲突判定。
为达到前述目的,本发明采用了以下构成。括号内的参照符号、附图编号及注言,用于帮助理解本发明,表示与附图的对应关系一例,丝毫不限定本发明的范围。
本发明的第一方面是一种冲突判定方法,用于判定显示单元(12)所显示的虚拟空间中第一目标(犬A)与第二目标(犬B)的冲突,该冲突判定方法包括:更新步骤(S12)、第一设定步骤(S16)、第二设定步骤(S16)及冲突判定步骤(S22).其中,更新步骤,是用于对存储于存储单元(24)的前述第一目标或前述第二目标的位置信息(51)进行更新的步骤.第一设定步骤,是用于对前述第一目标设定冲突判定区域(图8A~图8F)的步骤,该区域是与该第一目标的形状不同形状的冲突判定区域,其大小及/或位置随着该第一目标的状态或该第一目标的周边状态(图7的状态A~状态F)而异.第二设定步骤,是用于对前述第二目标设定冲突判定区域的步骤.冲突判定步骤是一种判定步骤,其通过判定在前述第一设定步骤中设定的前述第一目标的冲突判定区域与在前述第二设定步骤中设定的前述第二目标的冲突判定区域是否重复,来判定该第一目标与该第二目标的冲突.此外,虚拟空间可以是二维也可以是三维.第一目标及冲突判定区域也同样,可以是二维也可以是三维.作为冲突判定区域,可利用比如球体、长方体、圆柱、椭圆体等形状的区域.在第一目标中设定的冲突判定区域可以是一个,也可以是多个.第一目标的冲突判定区域的所谓「位置」,系指针对第一目标的相对位置.对第二目标的冲突判定区域而言,可以将与第二目标不同形状的区域,设定为第二目标的冲突判定区域,也可以将第二目标的形状本身用作第二目标的冲突判定区域.
本发明第二方面的特征在于:在前述第一方面中,在前述第一设定步骤对前述第一目标设定的冲突判定区域,具有比该第一目标的形状更为简单的形状。
本发明第三方面的特征在于:在前述第一方面中,在前述第一设定步骤对前述第一目标设定的冲突判定区域,只由一个球体来构成。
本发明第四方面的特征在于:在前述第一方面中,在前述第一设定步骤,对前述第一目标(犬A)设定冲突判定区域,该区域的大小及/或位置在该第一目标与其它目标即第三目标(飞碟)相结合时(图7的状态E、图8E)及非结合时(图8A)是不同的。此外,所谓第一目标与第三目标「相结合」,系指第一目标与第三目标以互相接触或相交的状态来一体存在的状态。
本发明第五方面的特征在于:在前述第四方面中,在前述第一设定步骤,对前述第一目标设定冲突判定区域,该区域在该第一目标与其它目标即第三目标相结合时,包含该第三目标的至少一部分(图8E)。
本发明第六方面的特征在于:在前述第一方面中,在前述第一设定步骤,对前述第一目标设定冲突判定区域,该区域在容许该第一目标与其它目标接触的状态时(图7的状态D,图8D),小于不容许接触的状态时(图8A)。所谓「容许与其它目标接触的状态」,系指容许以大于平常的程度来接近其它目标的状态,比如,系指在第一目标为犬的场合下,该犬与其它犬一起玩耍的状态。
本发明第七方面的特征在于:在前述第一方面中,在前述第一设定步骤,对前述第一目标设定冲突判定区域,该区域的大小及/或位置,随着该第一目标的当前位置或该第一目标与其它目标的位置关系而异。
本发明第八方面的特征在于:在前述第一方面中,前述第一设定步骤包括:从前述存储单元,读出设定为规定的大小及位置的前述第一目标的基本冲突判定区域的读出步骤;根据该第一目标的状态或该第一目标的周边状态,来变更所读出的该基本冲突判定区域的大小及/或位置的变更步骤。在变更步骤中,也可以参照按照所设想的每种前述第一目标的状态或该第一目标的周边状态来规定了前述冲突判定区域的大小及位置的变化量(相对基本冲突判定区域的变化量)的列表,来变更基本冲突判定区域的大小及/或位置。前述列表中的「相对基本冲突判定区域的变化量」,可以由数值本身来规定,也可以由用于求算变化量的函数来规定。
本发明第九方面的特征在于:在前述第一方面中,在前述第一设定步骤,参照按照所设想的每种前述第一目标的状态或该第一目标的周边状态来规定了前述冲突判定区域的大小及位置的冲突判定区域列表(44,图7),来设定前述第一目标的冲突判定区域。冲突判定列表中的「冲突判定区域的大小及位置」,可以由表示大小及位置的数值本身来规定,也可以由用于求算大小及位置的函数来规定。
本发明第十方面的特征在于:在前述第一方面中,前述冲突判定方法还包括:移动步骤(S30)及输出步骤(S34).移动步骤用于当在前述冲突判定步骤中检测出前述第一目标与前述第二目标发生冲突时,对前述存储单元中存储的前述第一目标或前述第二目标的位置信息(51)进一步更新,由此,使该第一目标及该第二目标的至少一个移动到前述第一目标的冲突判定区域与前述第二目标的冲突判定区域不重复的位置.输出步骤用于参照前述存储单元中存储的前述第一目标或前述第二目标的位置信息(51),来生成包含前述第一目标及前述第二目标的图像,并输出到前述显示单元.
本发明第十一方面,是一种冲突判定装置,用于判定显示单元所显示的虚拟空间中第一目标与第二目标的冲突。该冲突判定装置(10)具有:前述显示单元(12)、存储单元(24)、更新单元(21,S12)、第一设定单元(21,S16)、第二设定单元(21,S16)及冲突判定单元(21,S22)。其中,存储单元至少存储前述第一目标及前述第二目标的位置信息(51)。更新单元,对前述存储单元中所存储的前述第一目标或前述第二目标的位置信息进行更新。第一设定单元,对前述第一目标设定冲突判定区域(图8A~图8F),该区域是与第一目标的形状不同形状的冲突判定区域,其大小及/或位置随着该第一目标的状态或该第一目标的周边状态(图7的状态A~状态F)而异。第二设定单元,对前述第二目标设定冲突判定区域。冲突判定单元,通过判定前述第一目标的冲突判定区域与前述第二目标的冲突判定区域是否重复,来判定该第一目标与该第二目标的冲突。
根据前述第一方面,由于第一目标的冲突判定区域大小及位置的至少一个,随着该第一目标或周围状态而变,因而可根据第一目标或周围状态来进行适当的冲突判定。
根据前述第二方面,由于利用比第一目标的形状更为简单的形状,来进行冲突判定,因而可减少冲突判定所需的计算量。
根据前述第三方面,可大幅削减冲突判定所需的计算量。
根据前述第四方面,可根据第一目标与第三目标是否结合,来适当设定第一目标的冲突判定区域。
根据前述第五方面,当第一目标与第三目标结合时,按照包含该第三目标的一部分或全部的形式来设定第一目标的冲突判定区域,因而可利用该冲突判定区域来进行与其它目标的冲突判定,由此可省略第三目标与其它目标之间的冲突判定。因此,不必再个别进行第一目标与其它目标之间的冲突判定及第三目标与其它目标之间的冲突判定,从而可削减冲突判定所需的计算量。
根据前述第六方面,可以避免比如尽管允许第一目标与其它目标相接触,但只能在两个目标相隔的状态下予以显示这一不便。
根据前述第七方面,在比如第一目标接近被障碍物所夹的狭窄通路时等,可以适当设定第一目标的冲突判定区域。
根据前述第八方面,通过适宜变更基本的冲突判定区域的大小及位置,可获得与前述第一方面同样的效果。
根据前述第九方面,通过参照冲突判定区域列表,可适宜设定冲突判定区域。
根据前述第十方面,可以基于冲突判定的结果,按照目标之间不发生干涉的形式来控制这些位置,并在画面上显示出各目标。
参照附图及以下的详细说明,可以更加了解本发明的前述及其它目的、特征、方面及效果。

附图说明

图1是本发明一种实施方式涉及的游戏装置的外观图。
图2是表示本发明一种实施方式涉及的游戏装置的内部结构的方框图。
图3是RAM的存储分配图。
图4是虚拟三维空间中的虚拟摄像机及目标的配置一例。
图5是第二LCD所显示的游戏画面一例。
图6是目标信息一例。
图7是冲突判定区域列表一例。
图8A是匍匐状态下冲突判定区域的设定例。
图8B是站立状态下冲突判定区域的设定例。
图8C是蹲坐状态下冲突判定区域的设定例。
图8D是与其它的犬玩耍状态下冲突判定区域的设定例。
图8E是衔着飞碟状态下冲突判定区域的设定例。
图8F是要从狭窄通道中通过的状态下冲突判定区域的设定例。
图9是表示游戏装置的动作的流程图。
图10是表示冲突判定区域设定处理的详情的流程图。
图11是表示冲突判定方法及移动向量的计算方法的附图。
图12是表示合成移动向量的计算方法的附图。

具体实施方式

以下,说明本发明的一种实施方式所涉及的游戏装置的结构及动作。
图1是本发明一种实施方式涉及的游戏装置的外观图。图1中,游戏装置10包含:第一LCD(Liquid Crystal Display:液晶显示装置)11及第二LCD12。壳体13由上侧壳体13a与下侧壳体13b来构成,第一LCD11存置于上侧壳体13a内,第二LCD12存置于下侧壳体13b内。第一LCD11及第二LCD12的分辨率均为256点×192点。在本实施方式中,采用LCD来作为显示装置,但也可利用采用了比如EL(ElectroLuminescence:电场发光)的显示装置等其它任意的显示装置。可采用具有任意分辨率的显示装置。
在上侧壳体13a中,形成有用于将来自后述的一对扬声器(图2的30a、30b)的音响向外部放出的放音孔18a、18b。
在下侧壳体13b中,作为输入装置,设有:十字开关14a、启动开关14b、选择开关14c、A钮14d、B钮14e、X钮14f、Y钮14g、L钮14L、R钮14R。此外,作为输入装置,在第二LCD12的画面上,还安装有触摸面板15。在下侧壳体13b中,还设有电源开关19、以及用于存置存储卡17及棒杆16的插入口。
作为触摸面板15,可利用比如电阻膜方式及光学式(红外线方式)及静电电容结合式等任意方式的面板。触摸面板15,具有当用棒杆16接触其表面后便输出与该接触位置对应的坐标数据的功能。在下文中,以使用者用棒杆16来操作触摸面板15为例来进行说明,但当然也可以取代棒杆16,而采用笔(铁笔)或手指来操作触摸面板15。在本实施方式中,作为触摸面板15,采用分辨率(检测精度)与第二LCD12的分辨率同为256点×192点的面板。但是,触摸面板15的分辨率不必一定与第二LCD12的分辨率一致。
存储卡17,是记录有游戏程序的记录媒体,在设置于下部壳体13b的插入口内自由装卸地安装。
接下来,参照图2,来说明游戏装置10的内部构成。
图2中,在壳体13内所存置的电子电路基片20上,安装有CPU芯21。在CPU芯21上,经由总线22连接有连接器23,而且还接有:输入输出接口电路(附图中标为I/F电路)25;第一GPU(Graphics ProcessingUnit)26;第二GPU27;RAM24;LCD控制器31。在连接器23上,自由装卸地连接存储卡17。在存储卡17上搭载有:存储游戏程序的ROM17a;可改写地存储备份数据的RAM17b。存储卡17的ROM17a中所存储的游戏程序,被装入RAM24内,装入到RAM24内的游戏程序,由CPU芯21来执行。在RAM24中,除了游戏程序之外,还存储有用于生成CPU芯21执行游戏程序的暂存数据、以及用于生成游戏图像的数据。在I/F电路25上连接有:触摸面板15、右扬声器30a、左扬声器30b、由图1的十字开关14a及A钮14d等所组成的操作开关部14。右扬声器30a及左扬声器30b,分别配置于放音孔18a及18b的内侧。
第一GPU26与第一VRAM(Video RAM)28相接,第二GPU27与第二VRAM29相接。第一GPU26,根据来自CPU芯21的指示,并基于RAM24中存储的用于生成游戏图像的数据,来生成第一游戏图像,并描绘到第一VRAM28内。第二GPU27,同样根据来自CPU芯21的指示,来生成第二游戏图像,并描绘到第二VRAM29内。第一VRAM28及第二VRAM29,与LCD控制器31连接。
LCD控制器31包括寄存器32。寄存器32根据来自CPU芯21的指令,来存储0或1值。LCD控制器31,在寄存器32的值为0的场合下,将在第一VRAM28中描绘的第一游戏图像,输出给第一LCD11,并将在第二VRAM29中描绘的第二游戏图像,输出给第二LCD12。在寄存器32的值为1的场合下,将在第一VRAM28中描绘的第一游戏图像,输出给第二LCD12,并将在第二VRAM29中描绘的第二游戏图像,输出给第一LCD11。
前述的游戏装置10的结构不过是一个示例,本发明可适用于具有显示装置的任意信息处理装置。本发明的游戏程序,不仅通过存储卡17等外部存储媒体来提供给信息处理装置,也可以通过有线或无线通信线路来提供给信息处理装置,还可以预先记录到信息处理装置内部的非易失性存储装置内。
图3表示RAM24的存储分配图。RAM24的存储区域,大致由程序存储区及数据存储区来构成。
游戏程序41,从存储卡17的ROM17a装入到程序存储区。该游戏程序中,包含比如按规定的算法来自动控制虚拟三维空间内的目标的程序码、以及利用规定的冲突判定式,来进行采用了后述的冲突判定区域的冲突判定处理的程序码等。
在数据存储区中,存储有摄像机设定信息42、目标信息43、以及冲突判定区域列表44。
摄像机设定信息42,是有关配置于虚拟三维空间内的虚拟摄像机的各种设定值所组成的信息,比如,是虚拟摄像机的配置坐标、倾斜度(旋转角度)、方向(视线方向)、视野角等.图4表示虚拟三维空间中的虚拟摄像机的配置一例.在第二LCD12中,从虚拟摄像机观看配置于虚拟三维空间内的目标(在图4示例中为犬A、犬B及地面)的场景,作为游戏图像来显示.图5表示基于图4的虚拟摄像机来显示于第二LCD12上的游戏图像.由于基于虚拟摄像机来生成虚拟三维空间图像的方法是一种周知的技术,因而在这里省略其详细说明,只做下述简单说明:将用通用坐标系来表示的各目标的顶点坐标(更正确地说,是构成目标的多边形的顶点坐标),转换为以虚拟摄像机为基准的摄像机坐标系,并通过透视投影转换,来将这些顶点坐标转换为屏面坐标系.
目标信息43,是有关配置于虚拟三维空间内的目标的各种信息。图6表示该目标信息43的详情。在本实施方式中,作为可配置于虚拟三维空间内的目标,准备了犬A、犬B、犬C、飞碟、壁A以及壁B。在本实施方式中,配置于虚拟三维空间内的犬,以按照规定的自动控制算法,且按照自己的意志来活动的形式,在虚拟三维空间内自行移动。
如图6所示,犬A的目标信息43,由形状数据、纹理数据、配置坐标51、状态数据52以及冲突判定区域数据53来构成。
形状数据,是有关目标形状的数据,比如,是构成目标的多边形的顶点坐标等。纹理数据,是附加于构成目标的多边形的图像数据。
配置坐标51,是虚拟三维空间内犬A的配置坐标,基于前述自动控制算法来随时更新。
状态数据52,是表示犬A的状态或犬A的周围状态的数据。在本实施方式中,犬A或其周围的状态,如图7所示分为六种状态(状态A~F)。该状态数据52与配置坐标51同样,也基于前述自动控制算法来随时更新。
冲突判定区域数据53,是表示为了判定犬A与其它目标的接触而在犬A中设定的冲突判定区域的位置及大小的数据。在本实施方式中,对犬A~犬C,利用球体的冲突判定区域来进行冲突判定处理。因此,作为冲突判定区域数据53,至少存储用作犬A的冲突判定区域的球体中心坐标及半径即可。
对犬B及犬C也同样,作为目标信息43来存储与犬A同样的信息。
作为飞碟的目标信息43,存储有:形状数据、纹理数据、配置坐标以及冲突判定区域数据。对形状数据、纹理数据及配置坐标,也与犬的数据同样。作为飞碟的冲突判定区域,可采用任意形状的区域,但这里作为一例,采用圆盘状冲突判定区域。作为飞碟的冲突判定区域数据,存储表示该圆盘状冲突判定区域的位置及形状的数据。此外,也可以将飞碟的形状数据自身用作冲突判定区域数据。
对壁A及壁B的目标信息43也同样,存储与飞碟同样的信息。
图3所示的冲突判定区域列表44,是为决定对各犬所应设定的冲突判定区域而参照的列表。图7表示该冲突判定区域列表44的详情。
在冲突判定区域列表44中,如图7所示,分别按各状态A~F,来规定冲突判定区域的中心位置·半径。
比如,对状态A(匍匐状态)而言,作为冲突判定区域,如图8A所示,与中心位于犬的胸部、半径为30的球体相对应。
对状态B(站立状态)而言,作为冲突判定区域,如图8B所示,与中心位于犬的腰部、半径为10的球体相对应。这样,在犬站立的状态之时,使冲突判定区域的大小小于匍匐状态之时,且使该位置接近足下,由此,可使其它的犬相对站立的犬接近到适当的距离为止,这样,便可使犬的活动消除不自然感。
对状态C(蹲坐状态)而言,作为冲突判定区域,如图8C所示,与中心位于犬的胸部,半径为20的球体相对应.这样,在犬蹲坐的状态之时,使冲突判定区域的大小小于匍匐状态之时,由此,可使其它的犬相对蹲坐的犬接近到适当的距离为止,这样,便可使犬的活动消除不自然感.
对状态D(与其它的犬一起玩耍的状态)而言,作为冲突判定区域,如图8D所示,与中心位于犬的胸部,半径为10的球体相对应。这样,在犬互相玩耍(即比一般情况更为接近)的状态之时,使冲突判定区域的大小小于匍匐状态之时,由此,可接近其它的犬,直至达到从游戏者看去二个犬在互相玩耍的距离为止,这样,便可使犬的活动消除不自然感。
对状态E(衔着飞碟的状态)而言,作为冲突判定区域,如图8E所示,与中心位于犬的头部,半径为40的球体相对应。由此,可以只用比如犬A与犬B的冲突判定,来代替飞碟与犬B的冲突判定、以及犬A与犬B的冲突判定这二个冲突判定,因而可削减冲突判定所需的计算量。
对状态F(接近狭窄通路的状态)而言,作为冲突判定区域,如图8F所示,与中心位于犬的胸部,半径为10的球体相对应。这样,便可防止发生尽管在外观上好像能穿过通路,但犬走到通路前便停止这一不自然的状况。
以下,参照图9~图10的流程图,来说明基于游戏程序41的CPU芯21的处理流程。
图9中,在游戏程序41开始执行后,CPU芯21在步骤S10,在虚拟三维空间内将虚拟摄像机及目标配置到初始位置。
在步骤S12,按照规定的自动控制算法来决定各犬的动作(行动模式),并根据所决定的动作来适宜更新各犬的位置(配置坐标51)及姿势。
在步骤S14,根据该时刻的犬的姿势(匍匐、站立、蹲坐、衔着飞碟)、以及由自动控制算法来决定的犬的行动模式(与其它犬玩耍、要通过狭窄通路),来判定各犬的状态,并根据该判定结果来更新RAM24的状态数据52。
在步骤S16,基于在步骤S14中判定的各犬的状态,来进行冲突判定区域设定处理。以下,参照图10的流程图,来说明该冲突判定区域设定处理的详情。
图10中,在冲突判定区域设定处理开始后,CPU芯21在步骤S40,选择成为应设定冲突判定区域的对象的犬。这里,将犬A选择为处理对象来进行说明。
在步骤S42,从RAM24,读出处理对象即犬A的状态数据52。
在步骤S44,参照RAM24中所存储的图7的冲突判定区域列表,来取得在步骤S42中读出的状态数据52所对应的冲突判定区域中心位置及半径,并基于所取得的中心位置及半径,来更新犬A的冲突判定区域数据53。由于图7的冲突判定区域列表的中心位置由针对犬的相对位置来规定,而RAM24中所存储的冲突判定区域数据的中心坐标则由通用坐标系来表示,因而在步骤S44中,进行旨在将冲突判定区域列表的中心位置变换为通用坐标系的处理。
在步骤S46,判断对全部犬A~犬C的冲突判定区域的设定是否已结束,如果对所有犬的设定已结束,则结束冲突判定区域设定处理,从而进入图9的步骤S18,如果某个犬的设定尚未结束,则返回步骤S40,从而以该犬作为处理对象,进行与犬A同样的处理。其结果是,对所有的犬而言,RAM24的冲突判定区域数据53均得到更新。
在图9的步骤S18中,选择成为冲突判定处理的对象的犬。这里,将犬A选择为处理对象来进行说明。
在步骤S20,从除了处理对象即犬A之外的其它目标中,选择一个成为应进行与该犬A的冲突判定的对象的目标.这里,作为应进行与犬A的冲突判定的对象,选择犬B来进行说明.
在步骤S22中判定:在步骤S18中选择的目标(这里是犬A)与在步骤S20中选择的目标(这里是犬B)是否发生了冲突。具体而言,参照存储于RAM24的犬A的冲突判定区域数据与犬B的冲突判定区域数据,并利用规定的冲突判定式,来判定犬A的冲突判定区域与犬B的冲突判定区域是否重复(即,是否相交),由此来进行前述判定。比如,如图11所示,如果将犬A的冲突判定区域的半径设为a,将犬B的冲突判定区域的半径设为b,将犬A的冲突判定区域中心与犬B的冲突判定区域中心之间的距离设为c,则当a+b的值大于c时,便判定为犬A与犬B发生了冲突。对该判定结果而言,在判定出在步骤S18中选择的目标(这里是犬A)、与在步骤S20中选择的目标(这里是犬B)发生了冲突的场合下,进入步骤S24,在判定为未发生冲突的场合下,进入步骤S26。
在步骤S24中,算出用于使在步骤S18中选择的目标,移动到在步骤S18中选择的目标(这里是犬A)的冲突判定区域、与在步骤S20中选择的目标(这里是犬B)的冲突判定区域不重复的位置的移动向量。比如,当犬A的冲突判定区域与犬B的冲突判定区域处于图11所示的位置关系时,将方向是从犬B的冲突判定区域中心朝向犬A的冲突判定区域中心的方向、且大小是a+b-c的向量,作为犬A的移动向量。如此计算出的移动向量,被暂时存储到RAM24的适当的存储区域中。
在步骤S26,判断所有其它目标(这里是除了犬A之外的所有目标)与犬A之间的冲突判定是否已结束,如果已结束,则进入步骤S28,如果尚未结束,则返回步骤S20,从而对尚未进行冲突判定的其它目标重复同样的处理。这里假设:在重复步骤S20~S24的过程中,如图12所示,也检测出犬A的冲突判定区域与犬C的冲突判定区域发生了重复。
在步骤S28中,在重复步骤S20~S24从而在步骤S24中算出了多个移动向量的场合下,进行合成这些移动向量的处理。比如,在图12的示例中,对用于避免犬A的冲突判定区域与犬B的冲突判定区域发生重复的移动向量B、与用于避免犬A的冲突判定区域与犬C的冲突判定区域发生重复的移动向量C进行合成,从而计算出表示应使犬A移动的方向及移动量的移动向量(合成移动向量)。
在步骤S30,对在步骤S18中选择的目标(这里是犬A)的配置坐标51上,加上在步骤S28中合成的移动向量,由此,使该目标(这里是犬A)移动到不与其它目标冲突的位置。此外,在重复步骤S20~S24从而在步骤S24中只算出了一个移动向量的场合下,利用该移动向量来更新配置坐标51。在步骤S24中一个移动向量也未算出的场合下,不必在此更新配置坐标51。
在步骤S32,判断所有犬A~犬C的冲突判定处理是否已结束(即,在步骤S18,是否已将所有的犬均作为冲突判定处理的对象来选择),如果已结束,则进入步骤S34,如果尚有在步骤S18中未作为处理对象来选择的犬,则对该犬执行步骤S18~S30的处理。
在步骤S34,基于在步骤S30中更新的各犬的配置坐标51,来生成图5所示的游戏图像。在步骤S34中生成的游戏图像,被暂存于未图示的帧缓冲器内,然后按规定的定时,在第二LCD12的显示画面上显示出来。
在步骤S36,判断游戏者是否发出了结束游戏的指令,在发出游戏结束指令之前,按照比如六十分之一秒的周期来重复执行步骤S12~S34的处理。
如上所述,根据本实施方式,由于利用球体的冲突判定区域来进行犬的冲突判定,因而可大幅降低冲突判定所需的计算量。此外,由于根据犬的状态或犬的周围状态来适宜改变该球体的大小及位置,因而犬的活动便更为自然。
在本实施方式中,说明了虚拟三维空间内的目标的冲突判定,但本发明不限于此,本发明也可适用于二维虚拟空间内的目标冲突判定。
在本实施方式中,说明了作为冲突判定区域,对每个目标设定一个球体的示例,但本发明不限于此,也可以:作为冲突判定区域,对一个目标设定多个球体,且根据该目标的形状或该目标的周围状态,来改变这些球体中至少一个的大小及/或位置。此外,冲突判定区域不限于球体,如果比目标的形状更为简单,则也可以是任意的形状。作为球体之外的冲突判定区域的优选形状示例,可举出椭圆体、长方体及圆柱。
在本实施方式中,所说明的是按图7所示的六种状态(状态A~F)的每一个,来改变冲突判定区域的位置或大小的示例,但本发明不限于此。比如也可以:在设定某个目标(暂称为第一目标)的冲突判定区域时,根据第一目标的当前位置(比如根据图8F中犬A是否侵入通路的附近区域),来改变该冲突判定区域的位置或大小,也可以:根据第一目标与其它目标的位置关系(比如根据图8F中犬A与障碍物A及障碍物B双方的接近距离是否为一定距离以上),来改变该冲突判定区域。也可以:根据第一目标的附近温度(在虚拟三维空间内虚拟设定的温度),来改变该冲突判定区域。
在本实施方式中,所说明的是一种如图7所示的、各状态所对应的冲突判定区域的大小由数值来规定的示例,但本发明不限于此,冲突判定区域的大小也可以由函数来规定。比如,也可以与从地面至犬的头顶为止的距离成比例,来改变冲突判定区域的大小。对冲突判定区域的中心位置也同样,
在本实施方式中,所说明的是一种如图7所示的、各状态所对应的冲突判定区域的中心位置及大小由实际值来规定的示例,但本发明不限于此。比如也可以:以匍匐状态(图7的状态A)的冲突判定区域作为基本冲突判定区域,对各状态,利用规定了以该基本冲突判定区域为基准时的中心位置的偏差方向·偏差量及大小的差分值的冲突判定区域列表,来设定冲突判定区域。在该场合下,针对比如图7的状态B的冲突判定区域的半径,被规定为「-20」。
以上详细说明了本发明,但前述说明不过用来例示本发明,并非限定其范围。毋庸赘言,可以不脱离本发明的范围来进行各种改良及变形。
在本说明书中,参照并引进了特愿2005-057658号日本专利申请的内容。