在虚拟空间内判断碰撞及判断碰撞点的处理方法

文档序号:6414429阅读:308来源:国知局
专利名称:在虚拟空间内判断碰撞及判断碰撞点的处理方法
技术领域
本发明有关于一种在虚拟空间内判断碰撞及判断碰撞点的处理方法,特别是电脑所模拟出的三维虚拟空间内,判断出两个物件是否发生碰撞,以及在发生碰撞之后决定出碰撞点的方法及系统。
目前由于微处理器的速度提高以及各种显示技术的逐渐成熟和普及,将3D(3维)甚至虚拟实镜(virtual reality,VR)等等技术应用在电脑游戏中已经是相当普遍。在一般3D的游戏中的所有游戏角色,例如玩家所控制的主角或者是由电脑所控制的敌人,大都是许多个物件所构成。而实际上的每个物件都代表了整个物体内的一个部分,这些部分在物体移动旋转时做为一个整体,一起移动旋转,例如人体上的头部、胸部等等。然而,这些物件也各自有其与其他物件不同的特性。例如人体上的手部可以摆动。如此,即构成一个3D空间上的物体模型。
在一般的3D游戏中,特别是属于3D类型的格斗游戏,经常需要使用到物体之间的碰撞判断。然而对于大部分呈现不规则形状的3D物体而言,要能够精确地判断出是否发生碰撞是一件相当复杂的工作。因此,一般的作法是将构成3D物体的每个物件利用一个立体的矩形范围框加以涵盖,再对矩形框进行碰撞的判断,以其结果作为物体之间是否发生碰撞的判断基准。
图1表示在一般3D虚拟空间中物体间发出碰撞的示意图。图中,对打的双方分别为利用多边形所构成的甲方12和乙方14。甲方12上所具有的剑部分,是由矩形范围框12a所包围,用以定义此剑部分的范围。另外,乙方14上所具有的腰部,则是由矩形范围框14a所包围,用以定义乙方14的腰部。至于其余部分的范围框则加以省略不予标示。如图所示,当甲方12挥动剑击向乙方14的腰部时,判断是否发生碰撞的标准是根据矩形范围框12a是否切入矩形范围框14a而决定。当矩形范围框12a被判断出已经切入矩形范围框14a时,表示发生了碰撞。接着游戏程序可以决定出碰撞点,并且在该处产生预设特效,如爆炸效果等等。
一般的矩形范围框在3D空间内可以利用两个坐标点,亦即最大端点(maximum end-point)和最小端点(manimum end-point)来加以表示。最大端点是表示在该矩形的所有点中,其坐标值(包括X坐标值、Y坐标值和Z坐标值)皆为最大,最小端点是表示在该矩形的所有点中,其坐标值皆为最小。图2表示在3D空间中一物件和其矩形范围框的示意图。物件20是由矩形范围框10所包围,做为其判断碰撞时的基准点。在矩形范围框10的八个端点上,分别标示为这、P2、P3、P4、P5、P6、P7、P8,其坐标分别为(3,3,3)、(6,3,3)、(6,3,6)、(3,3,6)、(3,6,3)、(6,6,3)、(6,6,6)、(3,6,6)。根据图中所示的坐标(X轴、Y轴、Z轴),各坐标轴的箭点部分均表示坐标值增加的方向。因此,在矩形范围框10中的端点P1即为最小端点,坐标值为(3,3,3),在矩形范围框10中的端点P7即为最大端点,坐标值为(6,6,6)。
以下配合


习知技术中判断是否发生碰撞以及在碰撞后决定碰撞点的处理方法。图3表示在3D空间中两物件的矩形范围框发生碰撞的第一例示意图。在图3中,矩形范围框10a和10b分别表示3D空间中两个物件的矩形范围框。矩形范围框10a上具有端点P11、P12、P13、P14、P15、P16、P17、P18,矩形范围框10b上则具有端点P21、P22、P23、P24、P25、P26、P27、P28。以下为方便说明,将3D空间上各点的坐标值分别以下列方式标示点P的X坐标值表示为P.X,Y坐标值表示为P.Y,Z坐标值表示为P.Z。另外,如前所述,每一个矩形范围框可以利用其最大端点和最小端点来定出其范围,例如范围框10a中的端点P11和P17分别为其最小端点和最大端点,范围框10b中的端点P21和P29分别为其最小端点和最大端点。
习知的第一种判断碰撞方法是将第一个矩形范围框的8个端点分别与第二个矩形范围框的范围进行比较,如果有任何一个或是多个端点落在该范围内,就认定两个矩形范围框所代表的物件发生了碰撞;如果没有任何一个端点落在该范围内,则认定两者间没有发生碰撞。以图3为例,第一种习知判断碰撞方法可以根据端点P18落在矩形范围框10b而决定两者发生碰撞,或是根据端点P22落在矩形范围框10a而决定两者发生碰撞。其详细的判断方式如下所述。
当利用矩形范围框10a的8个端点与矩形范围框10b的范围进行比较时,必须依序对8个点进行判断。以端点P11为例,点P11要落在范围框10b的充分必要条件为P21.X<P11.X<P27.X (1a)P21.Y<P11.Y<P27.Y (1b)P21.Z<P21.Z<P27.Z (1c)
因此,对于每一个端点而言,都需要进行6次的比较运算。以两个矩形范围框来说,就需要进行6×16=96次的比较运算。
另外,第一种习知判断碰撞处理方法尚有缺点,即比较的结果较不准确。图4表示在3D空间中两物件的矩形范围框发生碰撞的第二例示意图,利用第一种习知判断碰撞处理方法来决定图4所示情况时,便会出现错误的判断。在图4中,矩形范围框10c和10d分别表示3D空间中两个物件的矩形范围框,而两者间是呈现贯穿状态。矩形范围框10c上具有端点P41、P42、P43、P44、P45、P46、P47、P58,矩形范围框10d上则具有端点P31、P32、P33、P34、P35、P36、P37、P38。其中,范围框10c中的端点P41和P47分别为其最小端点和最大端点,范围框10d中的端点P31和P37分别为其最小端点和最大端点。
由图4可以清楚地了解,任何一个矩形范围框的端点,都不会落入另一个矩形范围框的范围内。换言之,利用第一种习知判断方法对图4的贯穿情况进行判断时,根本无法判断出实际发生碰撞的情况。要对此种情况做出正确的判断,就必须利用以下所述的第二种习知判断方法。
第二种习知判断方法则远较第一种来得复杂,其主要是利用矩形框边的12条边线是否穿过另一个矩形加以判断,同样地,每条边线也是要进行多次的比较判断运算。以矩形范围框10d的边线L1为例,其两端点分别为端点P31和端点P35。其中,端点P31和端点P35的X坐标值和Z坐标值是相同的,差别是在于其中的Y坐标值。若是相同的X和Z坐标值在矩形范围框10c的最小端点P41和最大端点47所定义的范围内,才能可能会通过矩形范围框10c中。换言之,其条件为P41.X<P31.X(或P35.X)<P47.X (2a)P41.Z<P31.Z(或P35.Z)<P47.Z (2a)然而,利用公式(2a)和(2b)并无法决定边线L1必定通过矩形范围框10d。举例来说,当图4中的矩形范围框1c向下(即负Y方向)平移并且脱离矩形范围框10d时,仍然可以满足公式(2a)和(2b)的条件,但是实际此时两者并未发了碰撞。因此,尚需要对于边线L1是否真的通过端点P41和端点P47所在平面进行检验。
实际判断时,有三种情况可以会发生。第一种即边线L1的情况,此时边线L1会贯穿上、下表面,代表矩形范围框10d的对应物件为贯穿形状。第二种即线段L2的情况,其两端点分别为端点PL21和端点PL22,其中端点PL21是位于矩形范围框10d的内部,代表矩形范围框10d所对应物件系以上半部插入。第三种即线段L3的情况,其两端点分别为端点PL31和端点PL32,其中端点PL32是位于矩形范围框10d的内部,代表矩形范围框10d所对应物件系以下半部插入。根据以上所述,要符合线段L1(即贯穿情况)状态的条件为P35.Y>P47.Y且P31.Y<P41.Y(3a)要符合线段L2(即插进上半部)状态的条件为PL21.Y>P47.Y且PL22.Y<P41.Y (3b)要符合线段L3(即插进下半部)状态的条件为PL31.Y>P47.Y且PL32.Y<P41.Y (3c)至于其他情况,就表示两者没有发生碰撞。因此,在公式(3a)、(3b)、(3c)中无论在何种情况下,最少要经过两次的判断运算。所以,在加上公式(2a)和(2b)中对于X坐标值和Z坐标值中进行的4次判断运算,总共至少要6次的判断。再加以两个矩形范围框的24条边线,一共需要有144次的判断运算。如此庞大数量的运算需要,会耗费相当大的处理器时间,同时也会降低游戏进行时的流畅性。
无论是第一种或是第二种习知判断碰撞的方法,都需要使用到相当数量的判断运算,可以想象要在具有许多物件的3D物体间,判断出是否发生任何的碰撞,是非常费时的,尤其是第二种的习知判断方式。而且,第一种的判断方式在某些情况下仍有可能会发生错误。由此可知,习知的判断方法并非有效率且无错误的碰撞判断方法,所以在实务上实有必要提出一种新的替代方案。
另外,目前亦没有提出过任何一种方法能够有效的计算出正确的碰撞点。对于某些情况而言,得到正确的碰撞点是必要的,例如在游戏软件中需要使用到碰撞点,来播放各种特效或是其他的处理。目前的作法大多是以碰撞面为准(以第二种习知判断方法可以获得),而以此碰撞面的中点来模拟碰撞点。然而,这种方法实际上是存在有很大误差。
有鉴于此,本发明的主要目的在于提出一种在虚拟空间内,特别是虚拟3D空间内,来判断碰撞的处理方法,能够利用很少数量的运算,藉以获得快速并且准确的判断结果。
本发明的另一目的在于提出一种在虚拟空间内判断碰撞点的处理方法,能够以更为精确的位置模拟出碰撞点,藉以提高后续处理时的真实程度。
根据以上所述,本发明提出一种在虚拟空间内判断碰撞的处理方法,特别是用以判断在3D虚拟空间内判断第一物件和第二物件之间是否发生碰撞。每一物件具有范围框,分别由最小端点和最大端点加以定义,做为判断碰撞的基准。此方法是藉由两物件范围框是否有重叠体积来判断两物件是否有碰撞。处理方法是首先将对应第一物件和第二物件的最小端点和最大端点的坐标值储存在存储器内,构成在虚拟空间内判断两物件间发生碰撞的判断范围。接着分别两物件的两个最小端点的对应坐标值取出比较,再将对应坐标值中较大者组合成第一个判断端点。同样地,分别将两物件的两个最大端点的对应坐标值取出比较,再将对应坐标值中较小者组合成第二个判断端点。最后,分别比较第一判断端点和第二判断点的对应坐标值,当第二判断端点的坐标值均分别大于或等于第一判断端点的对应坐标值时,表示第一物件和第二物件发生碰撞。反之,当第二判断点的坐标值之任一者小于第一判断端点的对应坐标值时,表示第一物件和第二物件未发生碰撞。
另外,本发明亦提供一种在虚拟空间内判断碰撞点的处理方法,用以判断第一物件和第二物件之间发生碰撞的碰撞点。首先,在判断出两者发生碰撞之后,决定对应两物件的范围框的中心点,此中心点可以是范围框的质心。接着,决定出两范围框的一种特征值,例如对角线长度。最后,利用此特征值的比例来分别两个中心点所构成的连接线,决定出分割点,此分割点即做为两物件间的碰撞点。
为使本发明上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并配合附图,作详细说明如下图1表示在一般3D虚拟空间中物体间发生碰撞的示意图。
图2表示在3D空间中一物件和其矩形范围框的示意图。
图3表示在3D空间中两物件的矩形范围框发生碰撞的第一例示意图。
图4表示在3D空间中两物件的矩形范围框发生碰撞的第二例示意图。
图5表示应用本实施例的判断碰撞和判断碰撞点的系统方块图。
图6表示在本实施例中用以说明判断碰撞处理方法的3D示意图。
图7表示在本实施例中用以说明判断碰撞点处理方法的3D示意图。
图8表示本实施例中的3D格斗游戏的控制流程图。
图9表示在图8所示的流程图中,用以判断是否发生碰撞的步骤的详细流程图。
图10表示在图8所示的流程图中,用以判断碰撞点位置的步骤的详细流程图。
本发明针对在虚拟三维空间内的两个物件,提出一种新的判断碰撞以及判断碰撞点的处理方法及系统。同样地,此两个物件的范围亦是由矩形范围框来界定,而此矩形范围框则可以利用最小端点(坐标值相加所得最小之值)和最大端点(坐标值相加所得最大之值)来加以描述。以下以一实施例来详细描述本发明,此实施例所采用的操作环境为一种3D格斗游戏,类似于图1所示的情况。以下先就本发明判断碰撞以及判断碰撞点的技术部分加以说明,接着再详细说明本实施例的执行步骤。
图5表示本发明实施例中的硬件结构方块图。如图所示,系统硬件结构中包括了中央处理器1、数学逻辑运算单元3、储存装置5、输入装置7和显示装置9。中央处理器1为系统的中央控制单元,用以执行游戏主程序,同时也包括控制本实施例中判断碰撞和判断碰撞点的处理程序。数学逻辑运算单元3则是可以用来执行数学运算和逻辑运算,例如本实施例中所进行的判断运算,在部分系统中,数学逻辑运算单元3可以并入中央处理器1,执行相同的功能。储存装置5则可利用DRAM等存储器加以实施,用以储存进行的游戏程序,同时也包括3D物件的矩形范围框的最小端点和最大端点。输入装置7则是提供使用者进行游戏的操作控制,如鼠标、键盘和摇杆等等。显示器9则是用来显示3D虚拟空间上的物体。在游戏程序进行的过程中,显示器9上会出现操作者所控制的3D物体。上述本实施例系统的硬件结构,可以采用一般个人电脑,或是特定规格的电视游戏器来加以实施。
图6表示在本实施例中用以说明判断碰撞处理方法的3D示意图。在图6中,矩形范围框40和50分别表示3D空间中两个物件的矩形范围框。矩形范围框40上具有端点P51、P52、P53、P54、P55、P56、P57、P58,矩形范围框50上则具有端点P61、P62、P63、P64、P65,P66、P67、P68。其中,矩形范围框40中的端点P51和P57分别为其最小端点和最大端点,矩形范围框50中的端点P61和P67分别为其最小端点和最大端点。
在本发明中判断碰撞的观念,是源自于两矩形范围框发生碰撞时,必定会出现体积重叠的现象而产生。两个矩形范围框一旦发生碰撞,如图6所示的情况,便会出现碰撞区域30。因此,要判断是否发生碰撞,只需要检验出是否真的出现了所示的碰撞区域30。以下详述本实施例中检验是否出现碰撞区域的方式,然而,本实施例的检验方式并非用以限定本发明,熟知此技艺者亦可以依据不同的实际应用环境来调整所采用的方法,仍不脱离本发明之范围。
在本实施例中,要决定是否发生碰撞区域,首先必须决定出此碰撞区域的最小端点和最大端点。如图6所示,利用矩形范围框40的最小端点P51和矩形范围框50的最小端点P61,可以决定出此碰撞区域的最小端点MIN。详言之,将X座标值的P51.X和P61.X进行比较,决定出较大值,以图6为例,较大值为P51.X。接着,将Y座标值的P51.Y和P61.Y进行比较,决定出较大值,以图6为例,较大值为P61.Y。最后,将Z坐标值的P51.Z和P61.Z进行比较,决定出较大值,以图6为例,较大值为P61.Z。再将这些最大值组合成该碰撞区域的最小端点,即MIN(P51.X,P61.Y,P61.Z)。此一步骤总共进行了3个比较运算。
另一方面,利用矩形范围框40的最大端点P57和矩形范围框50的最大端点P67,可以决定出此碰撞区域的最大端点MAX。详言之,将X坐标值的P57.X和P67.X进行比较,决定出较小值,以图6为例,较小值为P67.X。接着,将Y坐标值的57.Y和P67.Y进行比较,决定出较小值,以图6为例,较小值为P57.Y。最后,将Z坐标值的P57.Z和P67.Z进行比较,决定出较小值,以图6为例,较小值为P57.Z。再将这些最大值组合成该碰撞区域的最小端点,即MAX(P67.X,P57.Y,P57.Z)。此一步骤中亦进行了3个比较运算。
最后,利用所得的MIN和MAX,可以决定出是否存在此一碰撞区域。要存在碰撞区域30的充分必要条件是端点MAX的所有坐标值,都必须大于或等于端点MIN的对应坐标值。亦即MAX.X≥MIN.X (4a)MAX.Y≥MIN.Y (4b)MAX.Z≥MIN.Z (4c)换言之,只要端点MAX有任何一个坐标值是小于端点MIN的对应坐标值,便可以判断出不存在此一碰撞区域。此一部分可以轻易地由一般几何图形加以验证,此处不再赘述。在此一步骤中,同样也只需要使用到3次的比较运算。因此,利用碰撞区域的最小端点和最大端点以及公式(4a)、(4b)、(4c),即可判断出两个矩形范围框是否发生了碰撞,而所需要的判断运算,总共只需要6次。
利用上述的本实施例判断碰撞方法,可以用以检查图4的碰撞情况。图中的碰撞区域即为其中的虚线框部分,利用P31和P41的最大端点以及P37和P47的最小端点,即可得到此虚线部分的最小端点和最大端点。而其最大端点和最小端点是可以满足公式(4a)、(4b)、(4c),因此正确判断现两者发生了碰撞。由此可知,利用本实施例的判断方法,的确可以正确地判断出碰撞的情况。
图7则是在本实施例中用以说明判断碰撞点处理方法的3D示意图。图中,矩形范围框60的最小端点MIN1的坐标值为(4,0,1),最大端点MAX1的坐标值为(8,4,5)。另外,矩形范围框70的最小端点MIN2的坐标值为(0,3,0),最大端点MAX2的坐标值为(4,7,4)。首先,判断两个矩形范围框是否发生碰撞。利用MINI和MIN2,可以得到碰撞区域的端点MIN(4,3,1)。利用MAXI和MAX2,可以得到碰撞区域的端点MAX(4,4,4)。其符合公式(4a)、(4b)、(4c)的判断式,因此已发生了碰撞。必须注意的是,利用其中的X坐标可知,此时两者实际的碰撞区域体积为零。
接着,要决定两者间的碰撞点。首先分别决定矩形范围框60的中心点C1,其坐标值为((4+8)/2,(0+4)/2,(1+5)/2)=(6,2,3),以及矩形范围框70的中心点C2,其坐标值为((0+4)/2,(3+7)/2,(0+4)/2)=(2,5,2)。本实施例中所设定的碰撞点,即位于中心点C1和C2之间的连线L4上。接着,是利用两个矩形范围框的特征值来决定碰撞点。在本实施例中,此特征值为其最小端点至最大端点的线段长度,亦即此矩形范围框的最大对角线长度。以矩形范围框60为例,其对角线长度为4×sqrt(3),其中sqrt(.)表示平方根。同样的,矩形范围框70的对角线长度亦为4×sqrt(3)。此时利用两者的对角线长度比例,来分割连线L4,取得一分割点CP。此分割点CP的坐标值为(2,5,2)+((6-2),(2-5),(3-2))×4×sqrt(3)/(4×sqrt(3)+4×sqrt(3))=(4,3.5,2.5)。此时,设定此分割点为碰撞点,可以较精确地决定出两者碰撞的位置。
利用以上所述的判断碰撞以及判断碰撞点的处理方式,以下详细描述本实施例的细部操作流程。图8示出本实施例中的3D格斗的控制流程图。首先,中央处理器1的游戏主程序会先在显示装置8上画出打斗角色的3D模型图像(S1),同时也在储存装置5中建立了此3D模型物体的各构成物件的矩形范围框。矩形范围框的数量愈多愈线,代表所能够检查出的碰撞现象更精致。接着,游戏主程序会依据使用者通过输入装置7所输出的指令,来进行游戏(步骤S2)。在游戏进行过程中,游戏主程序会持续地判断是否打斗角色间发出了碰撞(步骤S3)。如果没有,则回到步骤S2继续进行游戏。但是如果发生了碰撞,接着就必须决定出对打角色之间的碰撞点位置(步骤S4)。利用步骤S4所得到的碰撞点,即可以在碰撞点的位置上画出预设的碰撞特效,例如爆炸等等(步骤S5)。最后,由于碰撞会使得打斗角色位置发生变化,因此有必要重新计算碰撞之后打斗角色的位置并重画在显示器9上(步骤S6)。随后,再回到步骤S2继续进行游戏。由于本实施例主要是针对步骤S3的判断碰撞方法以及步骤S4的判断碰撞点方法加以改进,因此,以下即详细说明步骤S3和步骤S4的详细处理流程。
图9表示在图8所示的流程图中,用以判断是否发生碰撞的步骤S3的详细流程图。首先必须选择所欲判断是否发生碰撞的对打角色的特定物件(步骤S31)。如前所述,3D物体是由多个物件所构成,因此,对打角色中的每个物件都有机会发生碰撞。接着从储存装置5中,读取第一角角所选择欲判断碰撞的特定物件的范围框最小端点MIN1和最大端点MAX1,同时读取第二角色所选择欲判断碰撞的特定物件的范围框最小端点MIN2和最大端点MAX2(步骤S32)。接着,利用以上所述方式,比较MIN1和MIN2之间对应坐标值,分别取其中较高者,产生MIN。同时,比较MAX1和MAX2之间对应坐标值,分别取其中较高者,产生MAX(步骤S33)。其中的MIN和MAX即代表碰撞区域的最小端点和最大端点。此时,利用MIN和MAX即可判断出两者是否发生碰撞,亦即,当MAX中的所有坐标值均分别大于或等于MIN中的所有对应坐标值(步骤S34),即表示两者发生了碰撞(步骤S35),否则若MAX中的任一个坐标值是小于MIN中对应的坐标值时,即表示两者未发生碰撞(步骤S36)。最后,返回图8所示的主控制程序。
图10则是表示在图8所示的流程图中,用以判断碰撞点位置的步骤S4的详细流程图。在判断出两个矩形范围框已经发生碰撞之后(步骤S3),即进入图10所示的步骤S4。首先,分别计算发生碰撞的两个矩形范围框的中心点(步骤S4),而碰撞点即在两中心点的边线上。接着,分别计算矩形范围框的对角线长度(步骤S42),做为分割中心点连续的标准。依据所得的对角线长度之比例,分割两个矩形范围框中心点的连线,并以此分割点做为两个物件之间的碰撞点(步骤S43)。最后,并将此碰撞点送出主控制程序中,而进行之后的碰撞效果处理(步骤S44)以及碰撞后位置修正处理(步骤S45)。
由以上所述可知,利用本实施例的判断碰撞方法,在对两个物件的范围框进行碰撞判断时,只需要进行6次的比较运算。相较于习知技术重辄数十次甚至上百次的比较,本发明可以达到更有效率的效果。此外,本实施例的判断方法亦不会在某些情况下发生错误的判断,因此极具有应用上的价值。
本发明虽以一较佳实施例揭示如上,然其并非用以限定本发明,任何熟习此项技术者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,例如将本发明的技术应用在2D的环境下,或是应用在不同于较佳实施例所揭示3D格斗游戏,因此本发明的保护范围当视所附权利要求所界定者为准。
权利要求
1.一种在虚拟空间内判断碰撞的处理方法,用以在上述虚拟空间内判断第一物件和第二物件之间是否发生碰撞,上述第一物件具有第一范围框,其由第一最小端点和第一最大端点所定义,上述第二物件具有第二范围框,其由第二最小端点和第二最大端点所定义,其特征在于,包括下列步骤储存上述第一最小端点、第一最大端点、第二最小端点、第二最大端点的坐标值,藉以构成在上述虚拟空间内上述第一物件和上述第二物件的碰撞判断范围;分别撷取且比较上述第一最小端点和上述第二最小端点的对应坐标值,将其中对应坐标值较大者组合成第一判断端点;分别撷取且比较上述第一最大端点和上述第二最大端点的对应坐标值,将其中对应坐标值较小者组合成第二判断端点;以及分别比较上述第一判断端点和上述第二判断端点的对应坐标值,当上述第二判断端点的坐标值均分别大于或等于上述第一判断端点的对应坐标值时,表示上述第一物件和上述第二物件发生碰撞,当上述第二判断端点的坐标值的任一者小于上述第一判断端点的对应坐标值时,表示上述第一物件和上述第二物件未发生碰撞。
2.如权利要求1所述的处理方法,其特征在于,上述虚拟空间为一虚拟三维空间,每一端点的坐标值分别具有X坐标值、Y坐标值和Z坐标值。
3.如权利要求1所述的处理方法,其特征在于,上述虚拟空间为一虚拟二维空间,每一端点的坐标值分别具有X坐标值和Y坐标值。
4.如权利要求1所述的处理方法,其特征在于,上述第一范围框为一柜形,上述第一最小端点为上述矩形中各点的各坐标值相加具有最小值的点,上述第一最大端点为上述矩形中各点的各坐标值相加具有最大值的点。
5.如权利要求1所述的处理方法,其特征在于,上述第二范围框为一矩形,上述第二最小端点为上述矩形中各点的各坐标值相加具有最小值的点,上述第二最大端点为上述矩形中各点的各坐标值相加具有最大值的点。
6.一种在虚拟空间内判断碰撞点的处理方法,用以判断在上述虚拟空间内判断第一物件和第二物件之间发生碰撞的碰撞点,上述第一物件具有第一范围框,上述第二物件具有第二范围框,其特征在于,包括下列步骤提供上述第一范围框的范围值,以及上述第二范围框的范围值,储存于一存储器内,藉以构成在上述虚拟空间内上述第一物件和上述第二物件的碰撞判断范围;判断上述第一物件和上述第二物件是否发生碰撞;当发生碰撞时,决定上述第一范围框的第一中心点和上述第二范围框的第二中心点;决定上述第一范围框的第一特征值和上述第二范围框的第二特征值;利用上述特征值和上述第二特征值的比例,分割上述第一中心点和上述第二中心点的连接线,决定一分割点;以及设定上述分割点为上述第一物件和上述第二物件的碰撞点。
7.如权利要求6所述的处理方法,其特征在于,上述第一范围框为一矩形,其范围值由第一最小端点和第一最大端点所定义,上述第一最小端点为上述矩形中各点的各坐标值相加具有最小值的点,上述第一最大端点为上述矩形中各点的各坐标值相加具有最大值的点。
8.如权利要求6所述的处理方法,其特征在于,上述第二范围框为一矩形,其范围值由第二最小端点和第二最大端点所定义,上述第二最大端点为上述矩形中各点的各坐标值相加具有最小值的点,上述第二最大端点为上述矩形中各点的各坐标值相加具有最大值的点。
9.如权利要求6所述的处理方法,其特征在于,上述虚拟空间为一虚拟三维空间。
10.如权利要求6所述的处理方法,其特征在于,上述虚拟空间为一虚拟二维空间。
11.如权利要求6所述的处理方法,其特征在于,上述第一中心点和上述第二中心点为对应的上述第一范围框和上述第二范围框的质心位置。
12.如权利要求6所述的处理方法,其特征在于,上述第一特征值和上述第二特征值为对应的上述第一范围框和上述第二范围框的最长对角线长度。
13.如权利要求6所述的处理方法,其特征在于,上述第一物件和上述第二物件是否发生碰撞的步骤中,上述第一范围框由第一最小端点和第一最大端点所定义,上述第二范围框由第二最小端点和第二最大端点所定义,其包括下列步骤比较上述第一最小端点和上述第二最小端点的对应坐标值,将其中对应坐标值较大者组合成第一判断端点;比较上述第一最大端点和上述第二最大端点的对应坐标值,将其中对应坐标值较小者组合成第二判断端点;以及分别比较上述第一判断端点和上述第二判断端点的对应坐标值,当上述第二判断端点的坐标值均分别大于或等于上述第一判断端点的对应坐标值时,表示上述第一物件和上述第二物件发生碰撞。
14.一种在虚拟空间内判断碰撞的处理方法,用以判断在上述虚拟空间内判断第一物件和第二物件之间是否发生碰撞,上述第一物件具有第一范围框,上述第二物件具有第二范围框,其特征在于,包括下列步骤提供上述第一范围框的范围值,以及上述第二范围框的范围值,储存于一存储器,藉以构成在上述虚拟空间内上述第一物件和上述第二物件的碰撞判断范围;根据储存于上述存储器中的上述第一范围框的范围值以及上述第二范围框的范围值,判断上述第一范围框和上述第二范围框是否有相叠区域;以及当存在上述相叠区域时,表示上述第一物件和上述第二物件发生碰撞,当不存在上述相叠区域时,表示上述第一物件和上述第二物件未发生碰撞。
全文摘要
一种在虚拟空间内判断碰撞和判断碰撞点的处理方法。在判断碰撞处理方法中,先比较两物件的两个最小端点的对应坐标值,再将对应坐标值中较大者组合成第一个判断端点。同样地,分别比较两物件的两个最大端点的对应坐标值,再将对应坐标值中较小者组合成第二个判断端点。如果第二判断端点的坐标值均分别大于或等于第一判断端点之对应坐标值时,即表示两个物件发生碰撞。本发明还提供一种判断碰撞点的方法。
文档编号G06F17/00GK1245934SQ9811863
公开日2000年3月1日 申请日期1998年8月20日 优先权日1998年8月20日
发明者温世义, 詹浩博, 徐志刚 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1