CN112915542B - 一种碰撞数据处理方法、装置、计算机设备及存储介质 - Google Patents
一种碰撞数据处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112915542B CN112915542B CN202110352747.3A CN202110352747A CN112915542B CN 112915542 B CN112915542 B CN 112915542B CN 202110352747 A CN202110352747 A CN 202110352747A CN 112915542 B CN112915542 B CN 112915542B
- Authority
- CN
- China
- Prior art keywords
- cutting
- model
- collision
- rigid body
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000005520 cutting process Methods 0.000 claims abstract description 695
- 238000012545 processing Methods 0.000 claims abstract description 91
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000001514 detection method Methods 0.000 claims description 91
- 230000000704 physical effect Effects 0.000 claims description 52
- 239000000463 material Substances 0.000 claims description 20
- 230000033001 locomotion Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 5
- 238000004088 simulation Methods 0.000 abstract description 67
- 230000008569 process Effects 0.000 description 25
- 230000037237 body shape Effects 0.000 description 19
- 230000000694 effects Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 229910052742 iron Inorganic materials 0.000 description 5
- 239000011449 brick Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000005484 gravity Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 206010039203 Road traffic accident Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004441 surface measurement Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/577—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/573—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using trajectories of game objects, e.g. of a golf ball according to the point of impact
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/65—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
- A63F2300/643—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Architecture (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例公开了一种碰撞数据处理方法、装置、计算机设备及存储介质,该方法包括:在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型;通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于碰撞数据确定碰撞点对应的法向量信息;基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。采用本申请实施例,可以提高碰撞仿真效率以及碰撞仿真流畅性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种碰撞数据处理方法、装置、计算机设备及存储介质。
背景技术
目前,设计用户可以在具有仿真环境的计算机设备中,通过多个独立模型来搭建需要进行碰撞仿真的模型。比如,对于某一虚拟游戏中的游戏建筑物(例如,墙体)而言,该设计用户需要将大量的独立模型(例如,砖块)依次摆放到对应位置以构建墙体,整个搭建过程需要耗费较多的时间,且在所需搭建的模型尺寸较大,形状不规则时,将会耗费更多的时间,以至于提高了人工成本,降低了碰撞仿真效率。
因此,在检测模型A(例如,铁球)与模型B(例如,墙体)是否发生碰撞时,计算机设备会将用于构成该墙体的每一个独立砖块与该铁球作为一组碰撞检测对象。比如,当墙体由100个独立砖块组成时,意味着本次检测将会存在100组碰撞检测对象。换言之,该计算机设备需要根据独立砖块的数量进行多次检测,以至于增加了该计算机设备的中央处理器(Central Processing Unit,简称CPU)以及图形处理器(Graphics Processing Unit,简称GPU)的计算量,进而导致画面出现卡顿现象,从而使得碰撞仿真的流畅性降低。
发明内容
本申请实施例提供一种碰撞数据处理方法、装置、计算机设备及存储介质,可以提高碰撞仿真效率以及碰撞仿真流畅性。
本申请实施例一方面提供一种碰撞数据处理方法,包括:
在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型;第一物理属性和第二物理属性均是由物理引擎所确定的;
通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据,确定碰撞点对应的法向量信息;
基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
本申请实施例一方面提供一种碰撞数据处理装置,包括:
初始切割模型确定模块,用于在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型;第一物理属性和第二物理属性均是由物理引擎所确定的;
法向量信息确定模块,用于通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据,确定碰撞点对应的法向量信息;
第一切割处理模块,用于基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
其中,该装置还包括:
原始模型创建模块,用于启动与浏览器平台相关联的模型创建引擎,通过模型创建引擎为虚拟游戏创建N个原始模型;N个原始模型包括第一模型和第二模型;N为大于或者等于2的正整数;
第一绑定模块,用于基于物理引擎确定第一模型的第一模型信息,根据第一模型信息确定包含第一模型的第一刚体的第一刚体信息,基于第一刚体信息创建待与第一模型进行绑定的第一刚体,且将第一刚体与第一模型中的第一变量参数进行绑定;第一变量参数用于指示物理引擎确定第一模型对应的第一刚体;
第二绑定模块,用于基于物理引擎确定第二模型的第二模型信息,根据第二模型信息确定包含第二模型的第二刚体的第二刚体信息,基于第二刚体信息创建待与第二模型进行绑定的第二刚体,且将第二刚体与第二模型中的第二变量参数进行绑定;第二变量参数用于指示物理引擎确定第二模型对应的第二刚体。
其中,一个原始模型对应一个刚体;
该装置还包括:
物理属性获取模块,用于基于物理引擎,获取N个原始模型对应的N个刚体的物理属性,从N个刚体中获取碰撞参考刚体,将N个刚体中除碰撞参考刚体之外的其他刚体作为碰撞候选刚体;
碰撞区域确定模块,用于基于碰撞参考刚体的物理属性以及物理引擎对应的碰撞距离阈值,确定与碰撞参考刚体相关联的碰撞区域;
候选接触对确定模块,用于若碰撞候选刚体中存在落入碰撞区域中的碰撞候选刚体,则将落入碰撞区域中的碰撞候选刚体确定为目标碰撞刚体,将目标碰撞刚体与碰撞参考刚体作为候选接触对;
碰撞组确定模块,用于获取用于进行碰撞检测的碰撞检测条件,基于碰撞检测条件对候选接触对进行碰撞检测,从候选接触对中筛选满足碰撞检测条件的候选接触对,将筛选出的候选接触对作为包含碰撞参考刚体的碰撞组;碰撞组中的碰撞参考刚体为第一刚体;碰撞组中的目标碰撞刚体为第二刚体。
其中,该碰撞组确定模块包括:
碰撞检测单元,用于基于候选接触对中的目标碰撞刚体的物理属性以及候选接触对中的碰撞参考刚体的物理属性,对候选接触对中的目标碰撞刚体与碰撞参考刚体进行碰撞检测;
预测距离确定单元,用于在目标碰撞刚体中确定第一预测接触点,在碰撞参考刚体中确定第一预测接触点对应的第二预测接触点,且通过物理引擎确定第一预测接触点与第二预测接触点之间的预测距离;
检测条件获取单元,用于获取用于进行碰撞检测的碰撞检测条件;碰撞检测条件用于筛选预测距离为非正数的候选接触对;
碰撞组确定单元,用于在候选接触对中,将筛选出的满足碰撞检测条件的候选接触对作为包含碰撞参考刚体的碰撞组。
其中,该法向量信息确定模块包括:
碰撞点捕获单元,用于在初始切割模型所在的模型坐标系中,通过物理引擎捕获第一刚体与第二刚体发生碰撞时的碰撞点;
碰撞数据确定单元,用于通过物理引擎获取第一刚体与第二刚体发生碰撞时所产生的碰撞冲量以及碰撞冲量的冲量方向,将碰撞冲量以及冲量方向作为与碰撞点相关联的碰撞数据;碰撞冲量用于确定与碰撞点相关联的法向量的法向量长度;冲量方向用于确定法向量的法向量方向;
法向量信息确定单元,用于基于法向量方向以及法向量长度,确定碰撞点对应的法向量信息。
其中,该第一切割处理模块包括:
空间坐标系确定单元,用于在初始切割模型所在的模型坐标系中,确定以初始切割模型的中心点为坐标原点的空间坐标系;
位置信息确定单元,用于基于模型坐标系与空间坐标系之间的相对坐标转换信息,在空间坐标系中确定初始切割模型的中心点的第一中心位置信息,且在空间坐标系中确定碰撞点的碰撞位置信息;
第一切割面确定单元,用于基于第一中心位置信息、碰撞位置信息以及法向量信息,在初始切割模型中确定第一切割面;
切割处理单元,用于基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
其中,法向量信息包括与碰撞点相关联的法向量的法向量长度以及法向量方向;法向量长度是基于第一刚体与第二刚体发生碰撞时所产生的碰撞冲量所确定的;法向量方向为碰撞冲量的冲量方向;
该第一切割面确定单元包括:
辅助点确定子单元,用于将第一中心位置信息对应的中心点确定为第一辅助点,将碰撞位置信息对应的碰撞点确定为第二辅助点,沿着法向量方向,将与碰撞位置信息相距法向量长度的位置信息所对应的坐标点作为第三辅助点;
待切割面确定子单元,用于在初始切割模型中,基于第一辅助点、第二辅助点以及第三辅助点,确定第一待切割面;
切割面确定子单元,用于基于与物理引擎相关联的角度区间,获取用于旋转第一待切割面的第一角度,以法向量为旋转轴,以碰撞点为旋转点,将第一待切割面按照第一角度进行旋转,将旋转后的第一待切割面作为第一切割面。
其中,该切割处理单元包括:
轮廓线段确定子单元,用于基于初始切割模型的模型信息,获取初始切割模型的顶点的顶点位置信息,基于顶点位置信息,确定初始切割模型的轮廓线段;
切割点获取子单元,用于获取轮廓线段与第一切割面之间的切割点,在空间坐标系中确定切割点的切割位置信息;
切割子单元,用于基于切割位置信息以及顶点位置信息,将初始切割模型切割为第一切割模型和第二切割模型,基于第一切割模型和第二切割模型,得到用于在移动终端上进行展示的切割处理数据。
其中,该切割子单元还用于:
通过模型创建引擎,从初始切割模型的模型信息中,确定初始切割模型的几何材质;
基于切割位置信息以及顶点位置信息,确定用于构建第一切割模型的第一坐标数组以及用于构建第二切割模型的第二坐标数组;第一切割模型与第二切割模型是对初始切割模型进行切割处理后所得到的;
利用第一坐标数组创建第一切割模型的第一几何结构,利用第二坐标数组创建第二切割模型的第二几何结构;
基于第一几何结构以及几何材质创建第一切割模型,基于第二几何结构以及几何材质创建第二切割模型,且将第一切割模型和第二切割模型确定为目标切割模型;
获取与物理引擎相关联的切割结束条件,在目标切割模型满足切割结束条件时,得到用于在移动终端上进行展示的切割处理数据。
其中,该切割子单元具体还用于:
获取与物理引擎相关联的切割结束条件;切割结束条件包括模型尺寸阈值;
获取目标切割模型的模型尺寸,若目标切割模型的模型尺寸小于或者等于模型尺寸阈值,则确定目标切割模型满足切割结束条件时,且将满足切割结束条件的目标切割模型作为目标模型;
基于物理引擎以及目标模型的目标模型信息,确定目标模型对应的目标刚体;
获取目标刚体的物理属性,基于目标刚体的物理属性控制目标模型执行物理运动,获取执行物理运动时的动画图像帧,基于动画图像帧得到用于在移动终端上进行展示的切割处理数据。
其中,该装置还包括:
切割面确定模块,用于在目标切割模型不满足切割结束条件时,基于目标切割模型的中心点的第二中心位置信息、法向量信息以及第一切割面,在目标切割模型中确定第二切割面;
第二切割处理模块,用于基于第二切割面对目标切割模型进行切割处理,直到切割处理后的模型满足切割结束条件。
其中,该切割面确定模块包括:
第一关键点确定单元,用于在目标切割模型不满足切割结束条件时,在空间坐标系中确定目标切割模型的中心点的第二中心位置信息,将第二中心位置信息对应的中心点作为第一关键点;
第二关键点确定单元,用于获取法向量信息中的法向量方向以及法向量长度,沿着法向量方向,将与第二中心位置信息相距法向量长度的位置信息所对应的坐标点作为第二关键点;
第三关键点确定单元,用于基于与物理引擎相关联的角度区间,获取用于旋转第一切割面的第二角度,基于碰撞点、法向量信息以及第二角度,对第一切割面进行旋转,得到旋转后的第一切割面,确定旋转后的第一切割面与目标切割模型之间具有最小距离的目标交点以及目标交点的位置信息,将目标交点作为第三关键点;
第二切割面确定单元,用于基于第一关键点、第二关键点以及第三关键点,在目标切割模型中构建第二待切割面,且基于第二待切割面,在目标切割模型中确定第二切割面。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
在本申请实施例中,具备碰撞仿真功能的计算机设备所引入的物理引擎能够实时获取刚体的物理属性。其中,一个刚体对应一个原始模型。在该物理引擎检测到具备第一物理属性的第一刚体与具备第二物理属性的第二刚体发生碰撞时,该计算机设备可以基于第一物理属性与第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型,进而可以基于物理引擎,确定第一刚体与第二刚体发生碰撞时的碰撞点以及碰撞点对应的法向量信息,以在初始切割模型中确定第一切割面,进而可以基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据,从而模拟将初始切割模型撞裂成碎片的仿真效果。可以理解的是,由于本申请实施例中的第一模型和第二模型均为独立的原始模型,而并非由其他独立模型搭建而成,因此在碰撞仿真过程中,物理引擎可以直接对第一模型所绑定的第一刚体和第二模型所绑定的第二刚体进行碰撞检测,而无需对第一模型和第二模型进行多次碰撞检测,从而可以有效减少碰撞检测的次数,进而降低了计算机设备的计算量,以至于提高了碰撞仿真的流畅性。此外,由于原始模型的创建过程无需人工参与模型搭建,因此在整个碰撞仿真过程中,不仅可以降低了人工成本,还可以减少模型搭建所耗费的时间,以至于提高碰撞仿真效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的结构示意图;
图2是本申请实施例提供的一种进行数据交互的场景示意图;
图3是本申请实施例提供的一种碰撞数据处理方法的流程示意图;
图4a是本申请实施例提供的一种为原始模型绑定刚体的场景示意图;
图4b是本申请实施例提供的一种为原始模型绑定刚体的场景示意图;
图5是本申请实施例提供的一种确定碰撞组的场景示意图;
图6是本申请实施例提供的一种确定法向量信息的场景示意图;
图7是本申请实施例提供的一种旋转第一待切割面的场景示意图;
图8是本申请实施例提供的一种同一碰撞点所产生的不同切割效果的对比图;
图9是本申请实施例提供的一种碰撞数据处理方法的流程示意图;
图10是本申请实施例提供的一种碰撞数据处理的流程图;
图11是本申请实施例提供的一种碰撞数据处理装置的结构示意图;
图12是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,该网络架构可以包括服务器10和用户终端集群。该用户终端集群可以包括一个或者多个用户终端,这里将不对用户终端的数量进行限制。如图1所示,具体可以包括用户终端100a、用户终端100b、用户终端100c、…、用户终端100n。如图1所示,用户终端100a、用户终端100b、用户终端100c、…、用户终端100n可以分别与上述服务器10进行网络连接,以便于每个用户终端可以通过该网络连接与服务器10进行数据交互。其中,这里的网络连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他方式,本申请在此不做限制。
其中,该用户终端集群中的每个用户终端均可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、可穿戴设备、智能家居、头戴设备等智能终端。应当理解,图1所示的用户终端集群中的每个用户终端的浏览器平台中可以运行有模型创建引擎。其中,这里的模型创建引擎是用于创建原始模型的多维引擎(比如,二维引擎、三维引擎等)。其中,这里的模型创建引擎可以为Threejs引擎。该Threejs引擎是一款运行在浏览器中的三维引擎(又称3D引擎),本申请实施例中的具备碰撞仿真功能的计算机设备(例如,图1所示的服务器10),可以通过该Threejs引擎在一种分布式图形信息系统(World Wide Web,简称Web)中创建各种三维场景。可以理解的是,Threejs引擎是通过对绘图协议(Web Graphics Library,简称WebGL)接口的封装与简化而形成的一个易用的3D图形库,包括了摄影机、光影、材质等各种对象。
应当理解,该模型创建引擎所创建的原始模型可以为与用户终端中的目标应用(即应用客户端)相关联的虚拟对象。这里的应用客户端可以包括社交客户端、多媒体客户端(例如,视频客户端)、娱乐客户端(例如,游戏客户端)、教育客户端、直播客户端等。其中,该应用客户端可以为独立的客户端,也可以为集成在某客户端(例如,社交客户端、教育客户端以及多媒体客户端等)中的嵌入式子客户端,在此不做限定。比如,在游戏场景中,该原始模型可以为某一游戏客户端对应的虚拟游戏中的虚拟对象(例如,游戏枪、游戏铁球、游戏墙等)。可选的,该模型创建引擎所创建的原始模型也可以为现实世界中的实际物体所对应的仿真模型。比如,该原始模型可以为用于模拟车祸现场的涉事车辆,以便于帮助交警还原交通事故。此外,该原始模型还可以为其他场景下的模型,这里将不对其进行限定。
如图1所示,本申请实施例中的服务器10可以为该浏览器平台对应的服务器。该服务器10可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
为便于理解,本申请实施例可以在图1所示的多个用户终端中选择一个用户终端作为用于展示切割处理数据的目标用户终端。这里的切割处理数据可以为计算机设备在基于物理引擎进行碰撞仿真过程中所生成的动画文件。例如,本申请实施例可以将图1所示的用户终端100a作为目标用户终端。
其中,本申请实施例中的物理引擎能够为模型创建引擎所创建的原始模型绑定刚体,进而可以将实时获取到的刚体的物理属性赋予至对应的原始模型中,以控制该原始模型执行相应的物理运动。这里的刚体是指在运动和受力作用后,形状和大小不变,而且内部各点的相对位置也不变的物体。应当理解,绝对刚体实际上是不存在的,它只是一种理想模型。刚体常被用于物理引擎中,使用它可以降低仿真物体物理性质时的计算量。可以理解的是,物理引擎可以通过为物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。
应当理解,在物理引擎检测到具备第一物理属性的第一刚体与具备第二物理属性的第二刚体发生碰撞时,需要从第一刚体对应的第一模型和第二刚体对应的第二模型中确定初始切割模型,进而可以基于物理引擎,确定第一刚体与第二刚体发生碰撞时的碰撞点以及碰撞点对应的法向量信息,且在初始切割模型中确定第一切割面,以模拟将初始切割模型撞裂成碎片的仿真效果。可以理解的是,本申请实施例中的第一模型与第二模型是完整且独立的原始模型,而并非是由其他独立的小模型搭建而成,因此在进行碰撞仿真的过程中,无需设计用户参与模型的搭建过程,不仅降低了人工成本,还减少了模型搭建所耗费的时间,进而导致碰撞仿真效率得以提升。其中,由于第一模型与第二模型是独立的原始模型,且一个原始模型对应一个刚体,因此在物理引擎检测第一模型与第二模型发生碰撞时,计算机设备可以对第一模型所绑定的第一刚体与第二模型所绑定的第二刚体进行检测,而无需对同一个模型进行多次碰撞检测,从而可以有效减少碰撞检测的次数,进而降低了计算机设备的计算量,以至于提高了碰撞仿真的流畅性。
为便于理解,进一步地,请参见图2,图2是本申请实施例提供的一种进行数据交互的场景示意图。如图2所示,本申请实施例中的计算机设备可以通过物理引擎实现将模型撞裂成碎片的仿真效果,整个过程具体可以拆分为模型场景、碰撞检测以及物理仿真这三个阶段。其中,该计算机设备可以为上述图1所示的服务器10。
应当理解,在模型场景阶段中,该计算机设备可以启动与浏览器平台相关联的模型创建引擎(例如,Threejs引擎),进而可以基于该模型创建引擎,创建需要进行碰撞仿真的原始模型。其中,该原始模型可以包括原始模型a、原始模型b、…、以及原始模型n。如图2所示,动画图像帧2100中的原始模型a可以为某一虚拟游戏中的游戏铁球,原始模型b可以为该虚拟游戏中的一个游戏建筑物(例如,墙体),原始模型c可以为该虚拟游戏中的其他建筑物,在此不进行一一举例。进一步地,由于物理引擎需要对刚体进行物理模拟,而模型创建引擎所创建的原始模型默认是没有绑定刚体的,因此,该计算机设备需要基于该物理引擎为原始模型绑定刚体,且一个原始模型对应一个刚体。比如,该计算机设备可以基于物理引擎,为图2所示的原始模型a绑定刚体20A,为图2所示的原始模型b绑定刚体20B,以此类推。
可以理解的是,物理引擎可以在浏览器平台中刷新每一帧的刚体的物理属性,进而可以将获取到的刚体的物理属性赋予给与其绑定的原始模型,以控制原始模型在浏览器平台中执行物理运动,进而可以基于每个刚体的物理属性,检测是否存在发生碰撞的两个刚体。这里的物理属性可以包括刚体的位置信息、线速度、角速度、旋转角度、摩擦系数、动量、冲量等属性信息。其中,冲量可以表述对质点作用一段时间的积累效应的物理量,是改变质点机械运动状态的原因。
在碰撞检测阶段中,在动画图像帧2100中,该计算机设备可以基于刚体20A的物理属性(即第一物理属性)与刚体20B的物理属性(即第二物理属性),检测到该刚体20A与刚体20B已经发生碰撞。此时,该计算机设备可以基于刚体20A的物理属性和刚体20B的物理属性,从原始模型a和原始模型b中确定初始切割模型(例如,原始模型b)。这里的初始切割模型可以是基于原始模型a的密度信息以及原始模型b的密度信息所确定的。
进一步地,在初始切割模型中,该计算机设备可以通过物理引擎捕获刚体20A与刚体20B之间的碰撞点(例如,图2所示的坐标点O1),进而可以基于与该碰撞点相关联的碰撞数据,确定该碰撞点对应的法向量信息。其中,这里的法向量信息可以包括与碰撞点相关联的法向量的法向量长度以及法向量方向;该法向量长度(例如,图2所示的坐标点O1至坐标点O3之间的长度)是基于刚体A与刚体B发生碰撞时所产生的碰撞冲量所确定的;该法向量方向(例如,图2所示的坐标点O1指向坐标点O3的方向)为碰撞冲量的冲量方向。
此时,该计算机设备可以获取初始切割模型的模型信息。这里的模型信息可以包括初始切割模型的模型尺寸、模型形状信息(例如,立方体)以及几何材质。如图2所示,该初始切割模型的模型形状信息中可以包括顶点信息(例如,顶点A1、顶点B1、顶点C1、顶点D1、顶点A、顶点B、顶点C和顶点D这8个顶点)以及该初始切割模型的中心点信息(例如,中心点O2)。进一步地,该计算机设备可以基于碰撞点、法向量信息以及初始切割模型的模型信息,在该初始切割模型中确定如图2所示的第一切割面。其中,初始切割模型中的切割点m1、切割点m2、切割点m3、切割点m4、切割点m5以及切割点m6是第一切割面与初始切割模型的轮廓线段之间的交点。进一步地,该计算机设备可以基于第一切割面对初始切割模型进行切割处理。
此时,该计算机设备可以获取与物理引擎相关联的切割结束条件。这里的切割结束条件可以是指切割处理后的模型的模型尺寸小于或者等于模型尺寸阈值。可选的,该切割结束条件还可以是指本次碰撞仿真过程中所记录的切割次数达到切割次数阈值。若切割处理后的模型不满足模型切割结束条件,则该计算机设备可以将对初始切割模型进行切割处理后的模型作为目标切割模型,进而可以对目标切割模型进行二次切割处理,直到切割处理后的模型满足切割结束条件。若切割处理后的模型满足切割结束条件,则该计算机设备可以将满足切割结束条件的模型作为目标模型。如图2所示,动画图像帧2200中的目标模型可以为该计算机设备对原始模型b进行切割处理后所得到的满足切割结束条件的模型。
进一步地,该计算机设备可以通过物理引擎,为目标模型绑定目标刚体,同时可以根据冲量确定目标刚体的线速度和角速度,以获取目标刚体的物理属性,进而可以基于将该目标刚体的物理属性赋予至目标模型,以控制该目标模型在重力仿真下倒塌,进而可以得到用于在移动终端(图1所示的用户终端集群中的任意一个用户终端,例如,用户终端100a)上进行展示的切割处理数据。其中,该切割处理数据是基于图2所示的动画图像帧2100、动画图像帧2200、动画图像帧2300以及动画图像帧2400所得到的,而动画图像帧2300以及动画图像帧2400可以为该计算机设备在重力仿真下所获取的两个不同时刻的动画图像帧。
可以理解的是,本申请实施例中的物理引擎可以为每一个原始模型绑定刚体,且一个原始模型对应一个刚体。由于原始模型a与原始模型b是独立的原始模型,而并非由其他独立模型搭建而成,因此该计算机设备无需对原始模型a与原始模型b进行多次碰撞检测,从而可以有效减少碰撞检测的次数,进而降低了计算机设备的计算量,以至于提高了碰撞仿真的流畅性。本申请实施例中的原始模型a与原始模型b无需人工参与模型搭建,,因此在整个碰撞仿真过程中,不仅能够降低了人工成本,还可以减少模型搭建所耗费的时间,以至于提高碰撞仿真效率。
其中,在物理引擎检测到第一刚体与第二刚体发生碰撞时,具有碰撞仿真功能的计算机设备可以借助于物理引擎以及程序的自动化处理,对从第一刚体对应的第一模型和第二刚体对应的第二模型中所确定的初始切割模型进行切割处理的具体实现方式可以参见下述图3-图10所对应的实施例。
进一步地,请参见图3,图3是本申请实施例提供的一种碰撞数据处理方法的流程示意图。如图3所示,该方法可以由具备碰撞仿真功能的计算机设备执行,该计算机设备可以为用户终端(例如,上述图1所示的用户终端100a),也可以为服务器(例如,上述图1所示的服务器10),在此不做限定。为便于理解,本申请实施例以该方法由服务器执行为例进行说明,该方法至少可以包括以下步骤S101-步骤S103:
步骤S101,在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型。
具体地,具备碰撞仿真功能的计算机设备可以引入物理引擎,以实时获取原始模型所绑定刚体的物理属性,进而可以检测是否存在发生碰撞的两个刚体。在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,计算机设备可以基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型。其中,该初始切割模型可以是基于模型的密度信息所确定的,该密度信息可以根据对应刚体的物理属性所得到。例如,该计算机设备可以从该第一物理属性中确定第一刚体对应的第一模型的密度信息,且从第二物理属性中确定第二刚体对应的第二模型的密度信息。进一步地,该计算机设备可以基于这两个密度信息,从第一模型和第二模型中确定出具有最小密度信息的模型,进而可以将确定的模型作为初始切割模型。可选的,该初始切割模型还可以是开发用户提前设定的。比如,开发用户可以预先设定某虚拟游戏中的游戏子弹在射击到游戏墙体(即游戏子弹与游戏墙体发生碰撞)时,游戏墙体发生碎裂。此时,该计算机设备可以将开发用户所设定的产生碎裂的对象(即游戏墙体)直接作为初始切割模型。其中,初始切割模型的确定方式还可以为其他形式,在此不做限定。
应当理解,本申请实施例中的碰撞仿真过程可以包括模型场景、碰撞检测以及物理仿真这三个部分。可以理解的是,该计算机设备可以在与浏览器平台相关联的模型场景(例如,3D场景)中创建一些原始模型。可以理解的是,这里的原始模型均不是由多个独立的小物块堆积而成的,而是由模型创建引擎所创建的独立模型。比如,这里的原始模型可以为任何3D制作软件所创建的标准几何体,而无需人工参与模型的搭建过程,使得3D技术人员能够从繁重的模型碎片组合工作中解脱出来,不仅节省了人工成本,还减少了模型搭建所消耗的时间,以至于碰撞仿真效率得以提高。
进一步地,该计算机设备可以通过几行代码快速接入物理引擎,以实现将原始模型撞碎的仿真效果。该物理引擎使用对象属性(动量、扭矩、弹性等)来模拟刚体行为,不仅可以得到更加真实的结果,对于开发用户来说也比编写行为脚本要更加容易掌握。比如,本申请实施例中的物理引擎可以为Ammo.js物理引擎。该Ammo.js物理引擎可以帮助用于处理原始模型之间的碰撞、模拟重力效应等物理现象。可以理解的是,由于Bullet Physics物理模拟引擎是一个能够被广泛应用于游戏开发和电影制作中的开源的物理模型引擎,为了能够在浏览器平台中使用该Bullet Physics物理模拟引擎,本申请实施例可以通过Ammo.js物理引擎将该Bullet Physics物理模拟引擎移植到了JavaScript语言,以通过JavaScript语言在移动终端的浏览器平台中使用Bullet Physics物理模拟引擎的功能。其中,这里的Bullet Physics物理模拟引擎能够使用GPU(即图形处理器)完成物理模拟计算,GPU有着CPU(即中央处理器)无法比拟的并行计算和浮点计算能力,而复杂的物理模拟计算十分依赖并行计算能力和浮点计算能力。
其中,该计算机设备引入物理引擎的伪代码(例如,伪代码1)可以如下所示:
“//默认碰撞配置信息
var collisionConfiguration=new Ammo.btDefaultCollisionConfiguration();
//默认碰撞调度程序
var dispatcher=new Ammo.btCollisionDispatcher (collisionConfiguration);
//刚体碰撞信息,可以在较短的时间内筛选出可能相互碰撞的刚体对
broadphase=new Ammo.btDbvtBroadphase();
//约束解算器
solver=new Ammo.btSequentialImpulseConstraintSolver();
//物理世界,所有的刚体都在这个世界中进行物理仿真
physicsWorld=new Ammo.btDiscreteDvnamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);
//为物理世界设置重量值
physicsWorld.setGravity(new Ammo.btVector3(0,-9.8,0));”
其中,在该伪代码1中,碰撞配置信息可以用来配置高速碰撞检测、堆栈分配器、池内存分配器等信息;本申请实施例中的计算机设备可以调用碰撞调度程序,使得约束解算器能够基于刚体碰撞信息,在较短时间内筛选出可能相互碰撞的刚体对(即候选接触对)。
可以理解的是,物理引擎是对刚体进行的物理模拟,换言之,该物理引擎是作用于刚体上,而并非直接作用于原始模型。由于3D软件中的模型创建引擎所创建的原始模型默认是没有绑定刚体的,因此在通过物理引擎实现模型撞碎效果的过程中,首先需要为原始模型绑定刚体。应当理解,刚体可以在各种主流3D软件(例如,Unity或者Unreal等)中进行可视化设置,也可以通过程序代码的方式来添加,项目运行时刚体默认是不可见的。
其中,用于创建刚体的刚体信息中可以包括刚体形状信息、刚体质量信息、刚体行为信息以及刚体惯性信息。由于本申请中的原始模型为独立模型,从而导致碰撞时的检测次数减少,因此该计算机设备本身的计算量较小,为了提高碰撞精准度,刚体形状信息可以更趋近于模型形状信息。可选的,为了简化碰撞时的计算量,刚体形状信息可以为包括模型的标准几何体,换言之,刚体形状信息可以与模型形状信息不同。
比如,该计算机设备可以启动与浏览器平台相关联的模型创建引擎,进而可以通过模型创建引擎为某游戏客户端对应的虚拟游戏创建N个原始模型。这里的N为大于或者等于2的正整数。其中,N个原始模型中可以包括第一模型和第二模型。可以理解的是,该计算机设备可以基于物理引擎确定第一模型的第一模型信息,进而可以根据第一模型信息确定包含第一模型的第一刚体的第一刚体信息。进一步地,该计算机设备可以基于第一刚体信息创建待与第一模型进行绑定的第一刚体,且将第一刚体与第一模型中的第一变量参数进行绑定。其中,该第一变量参数可以用于指示物理引擎确定第一模型对应的第一刚体。同理,该计算机设备可以基于物理引擎确定第二模型的第二模型信息,进而可以根据第二模型信息确定包含第二模型的第二刚体的第二刚体信息。进一步地,该计算机设备可以基于第二刚体信息创建待与第二模型进行绑定的第二刚体,且将第二刚体与第二模型中的第二变量参数进行绑定。其中,该第二变量参数可以用于指示物理引擎确定第二模型对应的第二刚体。
例如,该计算机设备通过物理引擎为原始模型(例如,3D球体)绑定刚体的伪代码(例如,伪代码2)可以如下所示:
“//通过Threejs创建3D球体
var ball=new THREE.Mesh(new THREE.SphereBufferGeometry(ballRadius,14,10),ballMaterial);
//通过Ammo.js创建球形刚体形状
var ballshape=new Ammo.btSphereShape(ballRadius);
//刚体信息,其中mass为刚体质量信息,motionState为刚体行为信息,ballshape为刚体形状信息,localInertia为刚体惯性信息;
var rbInfo=new Ammo.btRigidBodvConstruction Info(mass,motionState,ball-shape,localInertia);
//利用刚体信息创建刚体
var body=new Ammo.btRigidBody(rbInfo);
//将刚体绑定到3D模型的userData.physicsBody变量中,后续可以通过这个变量获取模型所绑定的刚体
ball.userData.physicsBody=body;”
可以理解的是,刚体质量信息与刚体形状信息是较为重要的两个属性。刚体质量信息所指示的数值越大,改变刚体运动状态所需的能量也就越大,而刚体形状信息则决定了刚体与刚体之间的碰撞检测范围。
为便于理解,进一步地,请参见图4a,图4a是本申请实施例提供的一种为原始模型绑定刚体的场景示意图。如图4a所示,本申请实施例中的原始模型a可以为计算机设备启动与浏览器平台相关联的模型创建引擎,为某一虚拟游戏(例如,枪战类游戏)所创建的原始模型。比如,该原始模型a可以为该虚拟游戏对应的游戏用户所能控制的游戏战机。
其中,物理引擎能够作用于该原始模型a的前提是需要为原始模型a绑定刚体。可以理解的是,具备碰撞仿真功能的计算机设备可以基于物理引擎,确定原始模型a的模型信息。该原始模型a的模型信息可以包括该原始模型a的模型尺寸,原始模型a的模型形状信息以及原始模型a的几何材质。进一步地,该计算机设备可以根据原始模型a的模型信息,创建与原始模型a的模型信息相贴合的刚体形状信息。为了减少后续碰撞检测的计算量,该计算机设备可以选择能够包含该原始模型a的标准几何体的形状信息作为所需绑定的刚体的刚体形状信息。此外,该计算机设备还可以获取开发用户所设定的刚体质量信息、刚体行为信息以及刚体惯性信息,进而可以基于这些信息得到用于该原始模型a所需绑定刚体的刚体信息。进一步地,该计算机设备可以基于所确定的刚体信息,创建待与原始模型a进行绑定的刚体(例如,图4a所示的刚体400A),进而可以将该刚体400A与原始模型a中的变量参数进行绑定。其中,原始模型a中的变量参数可以用于指示物理引擎确定原始模型a对应的刚体400A。
可以理解的是,在将刚体400A成功绑定至原始模型a时,可以以原始模型a的中心点为坐标原点,在该原始模型a中建立空间坐标系。其中。原始模型a所绑定的刚体400A可以在各种主流3D软件中进行可视化设置,也可以通过程序代码的方式来添加,在项目运行时刚体400A与刚体400A中的空间坐标系默认是不可见的。
进一步地,请参见图4b,图4b是本申请实施例提供的一种为原始模型绑定刚体的场景示意图。如图4b所示,本申请实施例中的原始模型b可以为计算机设备启动与浏览器平台相关联的模型创建引擎,为某一虚拟游戏(例如,枪战类游戏)所创建的另一原始模型。比如,该原始模型b可以为该虚拟游戏中的敌方战机。
其中,该计算机设备需要基于物理引擎为原始模型b绑定刚体,以控制原始模型b执行物理运动。可以理解的是,具备碰撞仿真功能的计算机设备可以基于物理引擎,确定原始模型b的模型信息。该原始模型b的模型信息可以包括该原始模型b的模型尺寸,原始模型b的模型形状信息以及原始模型b的几何材质。进一步地,该计算机设备可以根据原始模型b的模型信息,创建待与原始模型b进行绑定的刚体的刚体形状信息。
可以理解的是,为了减少后续碰撞检测的计算量,该计算机设备可以选择能够包含该原始模型b的几何体的形状信息作为所需绑定的刚体的刚体形状信息(例如,刚体形状信息1),进而可以得到包括该刚体形状信息1的刚体信息。此时,该计算机设备可以基于包括刚体形状信息1的刚体信息,创建待与原始模型b进行绑定的刚体(例如,图4b所示的刚体410B),进而可以将该刚体410B与原始模型b中的变量参数进行绑定。
可选的,为了提高后续碰撞检测的精准度,该计算机设备可以将更趋近于该原始模型b的模型形状信息作为所需绑定的刚体的刚体形状信息(例如,刚体形状信息2),进而可以得到包括该刚体形状信息2的刚体信息。此时,该计算机设备可以基于包括刚体形状信息2的刚体信息,创建待与原始模型b进行绑定的刚体(例如,图4b所示的刚体420B),进而可以将该刚体420B与原始模型b中的变量参数进行绑定。
可以理解的是,本申请实施例中的计算机设备中的物理引擎,可以根据伪代码2所示的刚体绑定方法,为每一个需要进行物理仿真(即碰撞仿真)的原始模型绑定刚体,进而可以自动处理各个刚体的物理属性。其中,这里的物理属性可以包括位置信息、线速度、角速度、旋转角度、摩擦系数、动量、冲量等属性信息。其中,冲量可以表述对质点作用一段时间的积累效应的物理量,是改变质点机械运动状态的原因。
应当理解,该计算机设备可以通过物理引擎,在浏览器平台中刷新每一动画图像帧中的刚体的物理属性,进而可以将刚体的物理属性赋予至与其绑定的原始模型,以使原始模型按照刚体的运动方式进行物理运动。其中,一个原始模型对应一个刚体。
此外,该计算机设备还可以基于物理引擎对这N个原始模型对应的N个刚体进行碰撞检测。可以理解的是,该计算机设备可以基于物理引擎,获取N个原始模型对应的N个刚体的物理属性,进而可以从N个刚体中获取碰撞参考刚体,且将N个刚体中除碰撞参考刚体之外的其他刚体作为碰撞候选刚体。进一步地,该计算机设备可以基于碰撞参考刚体的物理属性以及物理引擎对应的碰撞距离阈值(例如,3厘米),确定与碰撞参考刚体相关联的碰撞区域。换言之,该计算机设备可以基于碰撞参考刚体的位置信息,将与碰撞参考刚体相距3厘米以内的区域作为与碰撞参考刚体相关联的碰撞区域。
若碰撞候选刚体中存在落入碰撞区域中的碰撞候选刚体,则该计算机设备可以将落入碰撞区域中的碰撞候选刚体确定为目标碰撞刚体,进而可以将目标碰撞刚体与碰撞参考刚体作为候选接触对。进一步地,该计算机设备可以获取用于进行碰撞检测的碰撞检测条件,进而可以基于碰撞检测条件对候选接触对进行碰撞检测,从候选接触对中筛选满足碰撞检测条件的候选接触对,且将筛选出的候选接触对作为包含碰撞参考刚体的碰撞组。其中,本申请实施例可以将碰撞组中的碰撞参考刚体称之为第一刚体;将碰撞组中的目标碰撞刚体称之为第二刚体。
其中,可以理解的是,该计算机设备可以基于候选接触对中的目标碰撞刚体的物理属性以及候选接触对中的碰撞参考刚体的物理属性,对候选接触对中的目标碰撞刚体与碰撞参考刚体进行碰撞检测。应当理解,该计算机设备可以通过一种基于射线的碰撞检测方法,在目标碰撞刚体中确定第一预测接触点,进而可以在碰撞参考刚体中确定第一预测接触点对应的第二预测接触点,且通过物理引擎确定第一预测接触点与第二预测接触点之间的预测距离。
进一步地,该计算机设备可以获取用于进行碰撞检测的碰撞检测条件;碰撞检测条件可以用于筛选预测距离为非正数的候选接触对。换言之,若第一预测接触点与第二预测接触点之间的预测距离小于或者等于零,则该计算机设备可以将目标碰撞刚体与碰撞参考刚体所在的候选接触对作为满足碰撞检测条件的候选接触对;若第一预测接触点与第二预测接触点之间的预测距离大于零,则该计算机设备可以将目标碰撞刚体与碰撞参考刚体所在的候选接触对作为不满足碰撞检测条件的候选接触对。其中,该计算机设备可以将在候选接触对中筛选出的满足碰撞检测条件的候选接触对,作为包含碰撞参考刚体的碰撞组。
为便于理解,进一步地,请参见图5,图5是本申请实施例提供的一种确定碰撞组的场景示意图。如图5所示,本申请实施例中的计算机设备可以为每一个需要进行物理仿真(即碰撞仿真)的原始模型进行刚体绑定,且一个原始模型对应一个刚体。为便于阐述碰撞组的确定过程,本申请实施例中的原始模型的总数量可以以6个为例,该计算机设备可以基于物理引擎,获取这6个原始模型对应的6个刚体的物理属性。其中,这6个刚体具体可以包括刚体A、刚体B1、刚体B2、刚体B3、刚体B4以及刚体B5。
可以理解的是,该计算机设备所确定的碰撞参考刚体可以为这6个刚体中任意一个刚体。比如,若图5所示的刚体A为某一虚拟游戏中由游戏用户所控制的虚拟对象,例如,游戏子弹。此时,该计算机设备可以将该刚体A作为碰撞参考刚体,进而可以将6个刚体中除刚体A之外的其他刚体作为碰撞候选刚体。比如,刚体B1、刚体B2、刚体B3、刚体B4以及刚体B5均可以统称为碰撞候选刚体。
该计算机设备可以从刚体A的物理属性中确定刚体A的位置信息,进而可以基于该刚体A的位置信息以及物理引擎对应的碰撞距离阈值(例如,3厘米),确定与刚体A相关联的碰撞区域(例如,图5所示的碰撞区域50q)。进一步地,该计算机设备可以对该碰撞区域50q进行检测。
若碰撞候选刚体中存在落入碰撞区域50q中的碰撞候选刚体,则该计算机设备可以将落入碰撞区域50q中的碰撞候选刚体确定为目标碰撞刚体,进而可以将目标碰撞刚体与碰撞参考刚体作为候选接触对。如图5所示,该碰撞区域50q中存在刚体B1、刚体B3以及刚体B4,此时,该计算机设备可以将这3个刚体统称为目标碰撞刚体,进而可以确定与刚体A相关联的候选接触对。其中,该计算机设备确定候选接触对可以包括接触对1、接触对2以及接触对3。该接触对1可以是由刚体A与刚体B1所构成的,该接触对2是由刚体A与刚体B3所构成的,该接触对3是由刚体A与刚体B4所构成的。
进一步地,该计算机设备可以通过一种基于射线的碰撞检测方法,基于每一对接触对中的两个刚体的物理属性,预测每一对接触对中的预测接触点。比如,该计算机设备可以基于两个刚体的线速度、位置信息,角速度,旋转角度等,预测该接触对中的两个刚体可能发生碰撞时的接触点(即预测接触点),进而可以基于获取到的碰撞检测条件确定两个刚体是否相交,以筛选发生碰撞的候选刚体对。
对于接触对1而言,该计算机设备可以确定刚体A中的第一预测接触点(例如,图5所示的预测接触点1)与刚体B1中的第二预测接触点(例如,图5所示的预测接触点1’)之间的预测距离大于0,此时,该计算机设备可以将该接触对1确定为不满足碰撞检测条件的候选接触对,即该接触对1中的两个刚体并未发生碰撞。同理,针对接触对2而言,该计算机设备可以确定刚体A中的第一预测接触点(例如,图5所示的预测接触点2)与刚体B3中的第二预测接触点(例如,图5所示的预测接触点2’)之间的预测距离大于0,此时,该计算机设备可以将该接触对2确定为不满足碰撞检测条件的候选接触对。同理,针对接触对3而言,该计算机设备可以确定刚体A中的第一预测接触点(例如,图5所示的预测接触点3)与刚体B4中的第二预测接触点(例如,图5所示的预测接触点3’)之间的预测距离等于0,此时,该计算机设备可以将该接触对3确定为满足碰撞检测条件的候选接触对。换言之,刚体A与刚体B4之间发生碰撞,即该接触对3为包含碰撞参考刚体的碰撞组。此时,该计算机设备可以将接触对3中的刚体A作为第一刚体,将接触对中的刚体B4作为第二刚体。
进一步地,该计算机设备可以基于刚体A的第一物理属性和刚体B4的第二物理属性,从刚体A对应的原始模型(即第一模型)与刚体B4对应的原始模型(即第二模型中)确定初始切割模型。例如,第一物理属性指示刚体A对应的原始模型的密度信息为密度信息1,第二物理属性指示刚体B4对应的原始模型的密度信息为密度信息2,且密度信息1小于密度信息2,那么,该计算机设备可以将刚体A对应的原始模型作为初始切割模型。
可以理解的是,图5所示的这6个刚体中的每个刚体均可以视作为碰撞参考刚体,比如,在将刚体B1作为碰撞参考刚体时,该计算机设备可以基于与该刚体B1相关联的碰撞区域,从碰撞候选刚体(例如,刚体A、刚体B2、刚体B3、刚体B4以及刚体B5)中确定目标碰撞刚体,以构成候选接触对,进而可以筛选满足碰撞检测条件的碰撞组,这里将不再继续进行赘述。
步骤S102,通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据,确定碰撞点对应的法向量信息。
具体地,该计算机设备可以在初始切割模型所在的模型坐标系(即碰撞仿真所在物理世界的世界坐标系)中,通过物理引擎捕获第一刚体与第二刚体发生碰撞时的碰撞点。进一步地,该计算机设备还可以通过物理引擎获取第一刚体与第二刚体发生碰撞时所产生的碰撞冲量以及碰撞冲量的冲量方向,且将碰撞冲量以及冲量方向作为与碰撞点相关联的碰撞数据。其中,这里的碰撞冲量可以用于确定与碰撞点相关联的法向量的法向量长度;这里的冲量方向可以用于确定法向量的法向量方向,此时,该计算机设备可以基于法向量方向以及法向量长度,确定碰撞点对应的法向量信息。
其中,该计算机设备进行碰撞检测,且确定碰撞点与法向量信息的伪代码(例如,伪代码3)可以如下所示:
其中,本申请实施例中的物理引擎可以以候选接触对(接触组,即contactManifold)的形式返回所有可能发生碰撞的刚体对的信息。根据伪代码3所示内容:该计算机设备可以调用碰撞调度程序,获取检测到的每一对候选接触对,进而可以基于碰撞检测条件,判定每一对候选接触对中的两个刚体是否相交。刚体相交是指候选接触对中的两个刚体中的对应预测接触点之间的距离小于或者等于零。其中,il可以表示该计算机设备所确定候选接触对的总数量,jl可以表示该计算机设备所确定的某一候选接触对的预测接触点的总数量。在检测到两个刚体发生碰撞时,该计算机设备可以确定两个刚体发生碰撞时的碰撞冲量,以及捕获到的碰撞点的坐标信息,进而可以确定该碰撞点对应的法向量信息。
为便于理解,进一步地,请参见图6,图6是本申请实施例提供的一种确定法向量信息的场景示意图。如图6所示,本申请实施例中的刚体A与刚体B可以为计算机设备通过碰撞调度程序所获取的候选接触对。其中,刚体A与刚体B均为该计算机设备通过物理引擎为模型创建引擎所创建的两个原始模型所绑定的刚体。其中,一个原始模型对应一个刚体。
可以理解的是,该计算机设备可以通过物理引擎,在刚体A中确定预测接触点6(即第一预测接触点),且在刚体B中确定与预测接触点6对应的预测接触点6’(即第二预测接触点),进而可以确定预测接触点6与预测接触点6’之间的预测距离。其中,如图6所示,该预测接触点6与预测接触点6’之间的预测距离小于零,此时,该计算机设备可以确定刚体A与刚体B为发生碰撞的两个刚体。
进一步地,该计算机设备可以基于刚体A的物理属性以及刚体B的物理属性,确定刚体B对应的原始模型为初始切割模型。此时,该计算机设备可以在刚体B对应的原始模型的模型坐标系中,通过物理引擎捕获刚体A与刚体B发生碰撞时的碰撞点(即图6所示的预测接触点6’)。进一步地,该计算机设备可以通过物理引擎,获取刚体A与刚体B发生碰撞时所产生的碰撞冲量以及该碰撞冲量的冲量方向,进而可以将该碰撞冲量与冲量方向作为与该碰撞点相关联的碰撞数据。其中,该碰撞冲量可以用于确定与图6所示的碰撞点6相关联的法向量的法向量长度,冲量方向可以用于确定该法向量的法向量方向。进一步地,该计算机设备可以基于该法向量长度与法向量方向,确定该碰撞点对应的法向量信息(例如,图6所示的法向量信息6f)。
步骤S103,基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
具体地,该计算机设备可以在初始切割模型所在的模型坐标系中,确定以初始切割模型的中心点为坐标原点的空间坐标系,进而可以基于模型坐标系与空间坐标系之间的相对坐标转换信息,在空间坐标系中确定初始切割模型的中心点的第一中心位置信息,且在空间坐标系中确定碰撞点的碰撞位置信息。进一步地,该计算机设备可以基于第一中心位置信息、碰撞位置信息以及法向量信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
应当理解,该初始切割模型所在的模型坐标系可以是指碰撞仿真所在物理世界的世界坐标系,而在针对初始切割模型进行切割处理的过程中,该计算机设备可以在初始切割模型中,建立以初始切割模型的中心点为原点的空间坐标系,以便于获取初始切割模型中的各个坐标点的坐标位置信息。当然,该空间坐标系的原点还可以是与初始切割模型相关联的其他坐标点,例如,某一顶点。本申请实施例将不对空间坐标系的原点进行限定。其中,该模型坐标系与该空间坐标系之间的相对坐标转换信息可以用于指示计算机设备转换某一坐标点的坐标位置信息。例如,在模型坐标系中初始切割模型的中心点的中心位置信息可以为(23000,59456,20361),而在空间坐标系中,该计算机设备基于相对坐标转换信息所确定的该初始切割模型的中心点的中心位置信息可以为(0,0,0)。由此可见,坐标系的转换可以使得初始切割模型中的坐标点的的坐标位置信息简化,进而可以为后续待切割面的确定提供便利,以减少该计算机设备的计算复杂度。
其中,法向量信息可以包括与碰撞点相关联的法向量的法向量长度以及法向量方向。其中,该法向量长度是基于第一刚体与第二刚体发生碰撞时所产生的碰撞冲量所确定的;该法向量方向可以为碰撞冲量的冲量方向。
可以理解的是,在确定初始切割模型的第一切割面的过程中,计算机设备可以将第一中心位置信息对应的中心点确定为第一辅助点(例如,图2所示的初始切割模型中的坐标点O2),将碰撞位置信息对应的碰撞点确定为第二辅助点(例如,图2所示的初始切割模型中的坐标点O1),沿着法向量方向,将与碰撞位置信息相距法向量长度的位置信息所对应的坐标点作为第三辅助点(例如,图2所示的初始切割模型中的坐标点O3)。进一步地,在初始切割模型中,该计算机设备可以基于第一辅助点、第二辅助点以及第三辅助点,确定第一待切割面,进而可以基于第一待切割面确定第一切割面。
其中,本申请实施例可以直接将第一待切割面作为第一切割面。可选的,为了不让同一碰撞点在每一次碰撞时所产生的切割效果相同,该计算机设备还可以通过对第一待切割面进行随机旋转,以将随机旋转后的第一待切割面作为第一切割面。可以理解的是,该计算机设备可以在与物理引擎相关联的角度区间(例如,[0,π])内,随机获取一个角度作为用于旋转第一待切割面的第一角度,进而可以以法向量为旋转轴,以碰撞点为旋转点,将第一待切割面按照第一角度进行旋转,且将旋转后的第一待切割面作为第一切割面。
为便于理解,进一步地,请参见图7,图7是本申请实施例提供的一种旋转第一待切割面的场景示意图。如图7所示,本申请实施例中的待切割面700可以为计算机设备在初始切割模型(例如,圆柱体模型)中所确定的第一待切割面。其中,这里的计算机设备可以为上述图1所示的服务器10。
可以理解的是,本申请实施例中的待切割面700的长可以为该圆柱体模型的侧面高度h,该待切割面700的宽可以为该圆柱体模型的底面半径r。其中,为了不让同一碰撞点(例如,碰撞点7)在每一次碰撞时所产生的切割效果相同,该计算机设备可以对图7所示的待切割面700进行随机旋转,并将随机旋转后的待切割面700作为第一切割面。其中,图7所示的坐标x与坐标y可以用于表示碰撞点7在初始切割模型的空间坐标系中的碰撞位置信息。
其中,该计算机设备可以在与物理引擎相关联的角度区间(例如,[0,π])内,随机获取一个角度作为用于旋转待切割面700的角度(例如,π/2)。进一步地,该计算机设备可以以图7所示的法向量为旋转轴,以碰撞点7为旋转点,将待切割面700按照图7所示旋转方向旋转π/2,进而可以将旋转π/2后的待切割面700作为用于切割该圆柱体模型的第一切割面。
此时,该计算机设备可以基于第一切割面对初始切割模型进行切割处理。可以理解的是,该计算机设备可以基于初始切割模型的模型信息,在该初始切割模型的空间坐标系中,获取初始切割模型的顶点的顶点位置信息,并且可以基于顶点位置信息,确定初始切割模型的轮廓线段,进而可以获取轮廓线段与第一切割面之间的交点(即切割点),且在该空间坐标系中确定切割点的切割位置信息。
其中,第一切割面与初始切割模型的各个面的交点的计算可以通过模型创建引擎(例如,Threejs引擎)的Plane类的intersectLine方法完成。具体地,该计算机设备确定第一切割面与轮廓线段的交点的伪代码(例如,伪代码4)可以如下所示:
“var plane=new THREE.Plane();//切割面
plane.setFromCoplanarPoints(a,b,c);//3个点可以确定1个平面,a为第一辅助点(例如,模型中心点)、b为第二辅助点(例如,碰撞点)、c为第三辅助点(例如,沿着法向量方向,与碰撞位置信息相距法向量长度的位置信息所对应的坐标点)
var line=new THREE.Line3();//两个顶点可以确定1条轮廓线段
line.start.copy(p0);//设置轮廓线段起点
line.end.copy(p1);//设置轮廓线段终点
var intersection=new Vector3();//轮廓线段与切割面的交点(即切割点)
intersection=plane.intersectLine(line,intersection);//检测轮廓线段与平面的交点,并将结果写入intersection参数中”
如图2所示,初始切割模型可以包括顶点A1、顶点B1、顶点C1、顶点D1、顶点A、顶点B、顶点C和顶点D这8个顶点。该计算机设备所确定的轮廓线段与第一切割面之间的切割点可以包括切割点m1、切割点m2、切割点m3、切割点m4、切割点m5以及切割点m6。其中,切割点m1可以为轮廓线段C1D1与第一待切割面之间的交点;切割点m1可以为轮廓线段C1D1与第一待切割面之间的交点;切割点m2可以为轮廓线段B1C1与第一待切割面之间的交点;切割点m3可以为轮廓线段BB1与第一待切割面之间的交点;切割点m4可以为轮廓线段AB与第一待切割面之间的交点;切割点m5可以为轮廓线段AD与第一待切割面之间的交点;切割点m6可以为轮廓线段DD1与第一待切割面之间的交点。
进一步地,该计算机设备可以基于切割位置信息以及顶点位置信息,将该初始切割模型切割为第一切割模型和第二切割模型,以基于第一切割模型和第二切割模型,得到用于在移动终端上进行展示的切割处理数据。其中,可以理解的是,该计算机设备通过模型创建引擎,从初始切割模型的模型信息中,确定初始切割模型的几何材质,进而可以基于切割位置信息以及顶点位置信息,确定用于构建第一切割模型的第一坐标数组以及用于构建第二切割模型的第二坐标数组。
如图2所示,该计算机设备所确定的第一坐标数组可以包括切割点m1的切割位置信息、切割点m2的切割位置信息、切割点m3的切割位置信息、切割点m4的切割位置信息、切割点m5的切割位置信息、切割点m6的切割位置信息、顶点A的顶点位置信息、顶点A1的顶点位置信息、顶点D1的顶点位置信息以及顶点B1的顶点位置信息。该计算机设备所确定的第二坐标数组可以包括切割点m1的切割位置信息、切割点m2的切割位置信息、切割点m3的切割位置信息、切割点m4的切割位置信息、切割点m5的切割位置信息、切割点m6的切割位置信息、顶点B的顶点位置信息、顶点C的顶点位置信息、顶点D的顶点位置信息以及顶点C1的顶点位置信息。
进一步地,该计算机设备可以利用第一坐标数组,创建第一切割模型的第一几何结构,且基于第一几何结构以及几何材质创建第一切割模型。同理,该计算机设备可以利用第二坐标数组创建第二切割模型的第二几何结构,且基于第二几何结构以及几何材质创建第二切割模型。
具体地,该计算机设备可以利用模型创建引擎(例如,Threejs引擎)封装好的ConvexGeometry,以根据一组坐标数组(例如,第一坐标数组或者第二坐标数组)来创建切割处理后的新模型。具体地,该计算机设备确定切割处理后的新模型的伪代码(例如,伪代码5)可以如下所示:
“//利用坐标数组创建控件几何结构,参数points是由多个顶点坐标组成的数组
var geometry=new ConvexGeometry(points);
//几何体材质
var material=new THREE.MeshBasicMaterial({color:0x00ff00});
//通过几何结构和材质创建新模型
var mesh=new THREE.Mesh(geometry,material)”
其中,该伪代码5可以用于将初始切割模型切割为两个新模型(即第一切割模型和第二切割模型),与此同时,该计算机设备可以将初始切割模型从模型场景中移除,以完成将初始切割模型一分为二的过程。
进一步地,该计算机设备可以将第一切割模型和第二切割模型确定为目标切割模型,与此同时,还可以获取与物理引擎相关联的切割结束条件,且在目标切割模型满足切割结束条件时,得到用于在移动终端上进行展示的切割处理数据。
其中,该切割结束条件可以包括模型尺寸阈值。基于此,该计算机设备可以获取该目标切割模型的模型尺寸。若目标切割模型的模型尺寸大于该模型尺寸阈值,则该计算机设备可以确定该目标切割模型不满足切割结束条件,此时,该计算机设备可以继续对该目标切割模型进行切割处理;若目标切割模型的模型尺寸小于或者等于该模型尺寸阈值,则该计算机设备可以确定目标切割模型满足切割结束条件。
可选的,该切割结束条件还可以包括切割次数阈值(例如,5次)。基于此,该计算机设备在对初始切割模型进行碰撞仿真的过程中,可以记录在得到目标切割模型时所执行的切割次数。若切割次数未达到该切割次数阈值,则该计算机设备可以确定该目标切割模型不满足切割结束条件,此时,该计算机设备可以继续对该不满足切割结束条件的目标切割模型进行切割处理。若切割次数达到该切割次数阈值,则该计算机设备可以确定该目标切割模型满足切割结束条件。
可以理解的是,该计算机设备可以将满足切割结束条件的目标切割模型作为目标模型,进而可以基于物理引擎以及目标模型的目标模型信息,确定目标模型对应的目标刚体。其中,该计算机设备确定目标模型对应的目标刚体的具体实施方式可以参见上述确定第一模型对应的第一刚体的具体实施方式,这里将不再继续进行赘述。进一步地,该计算机设备可以获取目标刚体的物理属性,从而可以基于目标刚体的物理属性控制目标模型执行物理运动。与此同时,该计算机设备可以获取执行物理运动时的动画图像帧,进而可以基于动画图像帧得到用于在移动终端上进行展示的切割处理数据。应当理解,在某一游戏用户在虚拟游戏中执行某一触发操作(例如,划屏操作),以使该虚拟游戏中的第一刚体和第二刚体发生碰撞时,该计算机设备可以将此次触发操作对应的切割处理数据输出至该游戏用户所使用的移动终端(例如,图1所示用户终端集群中的任意一个用户终端,例如,用户终端100a)。
进一步地,请参见图8,图8是本申请实施例提供的一种同一碰撞点所产生的不同切割效果的对比图。如图8所示,本申请实施例中的原始模型a可以为第一刚体对应的第一模型,原始模型b可以为第二刚体对应的第二模型。其中,原始模型a可以为某一虚拟游戏中的铁球,该原始模型b可以为该虚拟游戏中的被撞击建筑物(比如,柱子)。
如图8所示,计算机设备中的物理引擎在检测到原始模型a所绑定的第一刚体与原始模型b所绑定的第二刚体发生碰撞时,可以将原始模型b确定为初始切割模型。为了有效确保用户的视觉体验,在对原始模型b进行切割处理的过程中,每次进行切割处理的切割面均是按照一个随机角度对待切割面进行旋转后所得到的。其中,图8所示的切割效果1可以为该计算机设备在T1时刻(即第一时刻)检测到第一刚体与第二刚体在某一碰撞点发生碰撞时,对初始切割模型进行切割处理后所得到的切割效果。图8所示的切割效果2可以为该计算机设备在T2时刻(即第二时刻)检测到第一刚体与第二刚体在同一碰撞点发生碰撞时,对初始切割模型进行切割处理后所得到的切割效果。其中,第一时刻和第二时刻可以是指该计算机设备检测到的两个刚体在同一碰撞点发生碰撞的两个不同时刻。
本申请实施例可以在手机等移动设备上模拟将原始模型撞碎的仿真效果。其中,具备碰撞仿真功能的计算机设备所引入的物理引擎能够实时获取刚体的物理属性。其中,一个刚体对应一个原始模型。可以理解的是,由于本申请实施例中的第一模型和第二模型均为独立的原始模型,而并非由其他独立模型搭建而成,因此在碰撞仿真过程中,物理引擎可以直接对第一模型所绑定的第一刚体和第二模型所绑定的第二刚体进行碰撞检测,而无需对第一模型和第二模型进行多次碰撞检测,从而可以有效减少碰撞检测的次数,进而降低了计算机设备的计算量,以至于提高了碰撞仿真的流畅性。此外,由于原始模型的创建过程无需人工参与模型搭建,让设计用户不再负责模型碎裂的相关设计工作,同时也减轻了程序开发用户编码代码的难度,因此在整个碰撞仿真过程中,不仅可以降低了人工成本,还可以减少模型搭建所耗费的时间,以至于提高碰撞仿真效率。
进一步地,请参见图9,图9是本申请实施例提供的一种碰撞数据处理方法的流程示意图。如图9所示,该方法可以由具备碰撞仿真功能的计算机设备执行,该计算机设备可以为用户终端(例如,上述图1所示的用户终端100a),也可以为服务器(例如,上述图1所示的服务器10),在此不做限定。为便于理解,本申请实施例以该方法由服务器执行为例进行说明,该方法至少可以包括以下步骤S201-步骤S207:
步骤S201,在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型;
步骤S202,通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据,确定碰撞点对应的法向量信息;
步骤S203,基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理;
其中,其中,该步骤S201-步骤S203的具体实施方式可参见上述图3所对应实施例中对步骤S101-步骤S103的描述,这里将不再赘述。
步骤S204,获取与物理引擎相关联的切割结束条件,将切割处理后的第一切割模型和第二切割模型作为目标切割模型;
步骤S205,在目标切割模型不满足切割结束条件时,基于目标切割模型的中心点的第二中心位置信息、法向量信息以及第一切割面,在目标切割模型中确定第二切割面。
具体地,在目标切割模型不满足切割结束条件时,该计算机设备可以在空间坐标系中确定目标切割模型的中心点的第二中心位置信息,进而可以将第二中心位置信息对应的中心点作为第一关键点。与此同时,该计算机设备还可以获取法向量信息中的法向量方向以及法向量长度,进而可以沿着法向量方向,将与第二中心位置信息相距法向量长度的位置信息所对应的坐标点作为第二关键点。此外,该计算机设备还可以基于与物理引擎相关联的角度区间,获取用于旋转第一切割面的第二角度(例如,π/4),进而可以基于碰撞点、法向量信息以及第二角度,对第一切割面进行旋转,得到旋转后的第一切割面,以确定旋转后的第一切割面与目标切割模型之间具有最小距离的目标交点以及目标交点的位置信息,进而可以将目标交点作为第三关键点。此时,该计算机设备可以基于第一关键点、第二关键点以及第三关键点,在目标切割模型中构建第二待切割面,且基于第二待切割面,在目标切割模型中确定第二切割面。
其中,该计算机设备确定第二切割面的具体实施方式可以参见该计算机设备确定第一切割面的具体实施方式,这里将不再继续进行赘述。
步骤S206,基于第二切割面对目标切割模型进行切割处理,直到切割处理后的模型满足切割结束条件。
具体地,该计算机设备可以基于第二切割面对目标切割模型进行二次切割处理,以得到二次切割处理后的模型,在二次切割处理处理后的模型不满足切割结束条件时,该计算机设备可以将二次切割处理后的模型作为新的目标切割模型,进而可以对新的目标切割模型进行切割处理,直到满足切割结束条件。
步骤S207,在目标切割模型满足切割结束条件时,得到用于在移动终端上进行展示的切割处理数据。
为便于理解,进一步地,请参见图10,图10是本申请实施例提供的一种碰撞数据处理的流程图。其中,本申请实施例中的计算机设备可以为具备碰撞仿真功能的计算机设备,该计算机设备可以为上述图1所示的服务器10。
应当理解,该计算机设备在模拟碰撞仿真效果时需要执行步骤S11,以在浏览器平台中引入物理引擎,进而可以执行步骤S12,基于与该浏览器平台相关联的模型创建引擎所创建的原始模型的模型信息,为每个原始模型绑定对应的刚体,且一个原始模型对应一个刚体。进一步地,该计算机设备可以执行步骤S13,对该浏览器平台中的动画图像帧进行刷新,从而实时获取每个刚体的物理属性,进而可以执行步骤S14,从每个刚体的物理属性中获取每个刚体的位置、线速度以及角速度等属性信息。此时,该计算机设备可以通过物理引擎将每个刚体的物理属性中的相关属性信息(例如,位置信息和旋转角度等)赋予至与其绑定的原始模型中,以控制该原始模型执行相应物理运动。进一步地,该计算机设备可以执行步骤S15,在每一次WebGL渲染屏幕前使用刚体的物理属性更新与其绑定的原始模型的位置信息和旋转角度等。
可以理解的是,在物理引擎检测到该计算机设备中的第一刚体与第二刚体发生碰撞时,该计算机设备可以基于这两个刚体的物理属性,确定初始切割模型,进而可以执行步骤S16,确定第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据(例如,碰撞冲量和冲量方向),确定该碰撞点对应的法向量信息。进一步地,该计算机设备可以执行步骤S17,确定初始切割模型的切割面(即第一切割面),进而可以执行步骤S18,基于该第一切割面,将初始切割模型一分为二,利用初始切割模型的切割点的切割位置信息以及初始切割模型的顶点的顶点位置信息,构建出两个全新的子模型(例如,第一切割模型和第二切割模型)。与此同时,该计算机设备还可以执行步骤S18,移除被切割的旧模型(即初始切割模型)。
应当理解,该计算机设备可以获取与物理引擎相关联的切割结束条件,将第一切割模型和第二切割模型作为目标切割模型,进而可以执行步骤S20,确定目标切割模型是否满足切割结束条件。在目标切割模型的模型尺寸小于或者等于切割结束条件中的模型尺寸阈值(或者切割次数达到切割结束条件中的切割次数阈值)时,该计算机设备可以确定目标切割模型满足切割结束条件,此时,该计算机设备可以执行步骤S21,结束本次切割。
在目标切割模型的模型尺寸大于切割结束条件中的模型尺寸阈值(或者切割次数未达到切割结束条件中的切割次数阈值)时,该计算机设备可以确定目标切割模型不满足切割结束条件,此时,该计算机设备可以执行步骤S17,将确定不满足该切割结束条件的目标切割模型的切割面(即第二切割面),进而可以执行步骤S18-S19,对目标切割模型进行切割处理,直到切割处理后的模型满足切割结束条件,该计算机设备可以执行步骤S21,结束本次切割。
在本申请实施例中,具备碰撞仿真功能的计算机设备所引入的物理引擎能够实时获取刚体的物理属性。其中,一个刚体对应一个原始模型。在该物理引擎检测到具备第一物理属性的第一刚体与具备第二物理属性的第二刚体发生碰撞时,该计算机设备可以基于第一物理属性与第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型,进而可以基于物理引擎,确定第一刚体与第二刚体发生碰撞时的碰撞点以及碰撞点对应的法向量信息,以在初始切割模型中确定第一切割面,进而可以基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据,从而模拟将初始切割模型撞裂成碎片的仿真效果。可以理解的是,由于本申请实施例中的第一模型和第二模型均为独立的原始模型,而并非由其他独立模型搭建而成,因此在碰撞仿真过程中,物理引擎可以直接对第一模型所绑定的第一刚体和第二模型所绑定的第二刚体进行碰撞检测,而无需对第一模型和第二模型进行多次碰撞检测,从而可以有效减少碰撞检测的次数,进而降低了计算机设备的计算量,以至于提高了碰撞仿真的流畅性。此外,由于原始模型的创建过程无需人工参与模型搭建,因此在整个碰撞仿真过程中,不仅可以降低了人工成本,还可以减少模型搭建所耗费的时间,以至于提高碰撞仿真效率。
进一步地,请参见图11,图11是本申请实施例提供的一种碰撞数据处理装置的结构示意图。如图11所示,该碰撞数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该碰撞数据处理装置1为一个应用软件;该碰撞数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图11所示,该碰撞数据处理装置1可以运行于具有碰撞仿真功能的计算机设备,该计算机设备可以为上述图1所对应实施例中的服务器10。该碰撞数据处理装置1可以包括:初始切割模型确定模块11,法向量信息确定模块12,第一切割处理模块13,原始模型创建模块14,第一绑定模块15,第二绑定模块16,物理属性获取模块17,碰撞区域确定模块18,候选接触对确定模块19,碰撞组确定模块20,切割面确定模块21以及第二切割处理模块22。
该初始切割模型确定模块11,用于在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型;第一物理属性和第二物理属性均是由物理引擎所确定的;
该法向量信息确定模块12,用于通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据,确定碰撞点对应的法向量信息。
其中,该法向量信息确定模块12包括:碰撞点捕获单元121,碰撞数据确定单元122以及法向量信息确定单元123。
该碰撞点捕获单元121,用于在初始切割模型所在的模型坐标系中,通过物理引擎捕获第一刚体与第二刚体发生碰撞时的碰撞点;
该碰撞数据确定单元122,用于通过物理引擎获取第一刚体与第二刚体发生碰撞时所产生的碰撞冲量以及碰撞冲量的冲量方向,将碰撞冲量以及冲量方向作为与碰撞点相关联的碰撞数据;碰撞冲量用于确定与碰撞点相关联的法向量的法向量长度;冲量方向用于确定法向量的法向量方向;
该法向量信息确定单元123,用于基于法向量方向以及法向量长度,确定碰撞点对应的法向量信息。
其中,该碰撞点捕获单元121,碰撞数据确定单元122以及法向量信息确定单元123的具体实现方式可以参见上述图3所对应实施例中对步骤S102的描述,这里将不再继续进行赘述。
该第一切割处理模块13,用于基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
其中,该第一切割处理模块13包括:空间坐标系确定单元131,位置信息确定单元132,第一切割面确定单元133以及切割处理单元134。
该空间坐标系确定单元131,用于在初始切割模型所在的模型坐标系中,确定以初始切割模型的中心点为坐标原点的空间坐标系;
该位置信息确定单元132,用于基于模型坐标系与空间坐标系之间的相对坐标转换信息,在空间坐标系中确定初始切割模型的中心点的第一中心位置信息,且在空间坐标系中确定碰撞点的碰撞位置信息;
该第一切割面确定单元133,用于基于第一中心位置信息、碰撞位置信息以及法向量信息,在初始切割模型中确定第一切割面。
其中,法向量信息包括与碰撞点相关联的法向量的法向量长度以及法向量方向;法向量长度是基于第一刚体与第二刚体发生碰撞时所产生的碰撞冲量所确定的;法向量方向为碰撞冲量的冲量方向;
该第一切割面确定单元133包括:辅助点确定子单元1331,待切割面确定子单元1332以及切割面确定子单元1333。
该辅助点确定子单元1331,用于将第一中心位置信息对应的中心点确定为第一辅助点,将碰撞位置信息对应的碰撞点确定为第二辅助点,沿着法向量方向,将与碰撞位置信息相距法向量长度的位置信息所对应的坐标点作为第三辅助点;
该待切割面确定子单元1332,用于在初始切割模型中,基于第一辅助点、第二辅助点以及第三辅助点,确定第一待切割面;
该切割面确定子单元1333,用于基于与物理引擎相关联的角度区间,获取用于旋转第一待切割面的第一角度,以法向量为旋转轴,以碰撞点为旋转点,将第一待切割面按照第一角度进行旋转,将旋转后的第一待切割面作为第一切割面。
其中,该辅助点确定子单元1331,待切割面确定子单元1332以及切割面确定子单元1333的具体实现方式可以参见上述图3所对应实施例中对第一切割面的描述,这里将不再继续进行赘述。
该切割处理单元134,用于基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
其中,该切割处理单元134包括:轮廓线段确定子单元1341,切割点获取子单元1342以及切割子单元1343。
该轮廓线段确定子单元1341,用于基于初始切割模型的模型信息,获取初始切割模型的顶点的顶点位置信息,基于顶点位置信息,确定初始切割模型的轮廓线段;
该切割点获取子单元1342,用于获取轮廓线段与第一切割面之间的切割点,在空间坐标系中确定切割点的切割位置信息;
该切割子单元1343,用于基于切割位置信息以及顶点位置信息,将初始切割模型切割为第一切割模型和第二切割模型,基于第一切割模型和第二切割模型,得到用于在移动终端上进行展示的切割处理数据。
其中,该切割子单元1343还用于:
通过模型创建引擎,从初始切割模型的模型信息中,确定初始切割模型的几何材质;
基于切割位置信息以及顶点位置信息,确定用于构建第一切割模型的第一坐标数组以及用于构建第二切割模型的第二坐标数组;第一切割模型与第二切割模型是对初始切割模型进行切割处理后所得到的;
利用第一坐标数组创建第一切割模型的第一几何结构,利用第二坐标数组创建第二切割模型的第二几何结构;
基于第一几何结构以及几何材质创建第一切割模型,基于第二几何结构以及几何材质创建第二切割模型,且将第一切割模型和第二切割模型确定为目标切割模型;
获取与物理引擎相关联的切割结束条件,在目标切割模型满足切割结束条件时,得到用于在移动终端上进行展示的切割处理数据。
其中,该切割子单元1343还具体用于:
获取与物理引擎相关联的切割结束条件;切割结束条件包括模型尺寸阈值;
获取目标切割模型的模型尺寸,若目标切割模型的模型尺寸小于或者等于模型尺寸阈值,则确定目标切割模型满足切割结束条件时,且将满足切割结束条件的目标切割模型作为目标模型;
基于物理引擎以及目标模型的目标模型信息,确定目标模型对应的目标刚体;
获取目标刚体的物理属性,基于目标刚体的物理属性控制目标模型执行物理运动,获取执行物理运动时的动画图像帧,基于动画图像帧得到用于在移动终端上进行展示的切割处理数据。
其中,该轮廓线段确定子单元1341,切割点获取子单元1342以及切割子单元1343的具体实现方式可以参见上述图3所对应实施例中对初始切割模型进行切割处理的描述,这里将不再继续进行赘述。
其中,该空间坐标系确定单元131,位置信息确定单元132,第一切割面确定单元133以及切割处理单元134的具体实现方式可以参见上述图3所对应实施例中对步骤S103的描述,这里将不再继续进行赘述。
该原始模型创建模块14,用于启动与浏览器平台相关联的模型创建引擎,通过模型创建引擎为虚拟游戏创建N个原始模型;N个原始模型包括第一模型和第二模型;N为大于或者等于2的正整数;
该第一绑定模块15,用于基于物理引擎确定第一模型的第一模型信息,根据第一模型信息确定包含第一模型的第一刚体的第一刚体信息,基于第一刚体信息创建待与第一模型进行绑定的第一刚体,且将第一刚体与第一模型中的第一变量参数进行绑定;第一变量参数用于指示物理引擎确定第一模型对应的第一刚体;
该第二绑定模块16,用于基于物理引擎确定第二模型的第二模型信息,根据第二模型信息确定包含第二模型的第二刚体的第二刚体信息,基于第二刚体信息创建待与第二模型进行绑定的第二刚体,且将第二刚体与第二模型中的第二变量参数进行绑定;第二变量参数用于指示物理引擎确定第二模型对应的第二刚体。
其中,一个原始模型对应一个刚体;
该物理属性获取模块17,用于基于物理引擎,获取N个原始模型对应的N个刚体的物理属性,从N个刚体中获取碰撞参考刚体,将N个刚体中除碰撞参考刚体之外的其他刚体作为碰撞候选刚体;
该碰撞区域确定模块18,用于基于碰撞参考刚体的物理属性以及物理引擎对应的碰撞距离阈值,确定与碰撞参考刚体相关联的碰撞区域;
该候选接触对确定模块19,用于若碰撞候选刚体中存在落入碰撞区域中的碰撞候选刚体,则将落入碰撞区域中的碰撞候选刚体确定为目标碰撞刚体,将目标碰撞刚体与碰撞参考刚体作为候选接触对;
该碰撞组确定模块20,用于获取用于进行碰撞检测的碰撞检测条件,基于碰撞检测条件对候选接触对进行碰撞检测,从候选接触对中筛选满足碰撞检测条件的候选接触对,将筛选出的候选接触对作为包含碰撞参考刚体的碰撞组;碰撞组中的碰撞参考刚体为第一刚体;碰撞组中的目标碰撞刚体为第二刚体。
其中,该碰撞组确定模块20包括:碰撞检测单元201,预测距离确定单元202,检测条件获取单元203以及碰撞组确定单元204。
该碰撞检测单元201,用于基于候选接触对中的目标碰撞刚体的物理属性以及候选接触对中的碰撞参考刚体的物理属性,对候选接触对中的目标碰撞刚体与碰撞参考刚体进行碰撞检测;
该预测距离确定单元202,用于在目标碰撞刚体中确定第一预测接触点,在碰撞参考刚体中确定第一预测接触点对应的第二预测接触点,且通过物理引擎确定第一预测接触点与第二预测接触点之间的预测距离;
该检测条件获取单元203,用于获取用于进行碰撞检测的碰撞检测条件;碰撞检测条件用于筛选预测距离为非正数的候选接触对;
该碰撞组确定单元204,用于在候选接触对中,将筛选出的满足碰撞检测条件的候选接触对作为包含碰撞参考刚体的碰撞组。
其中,该碰撞检测单元201,预测距离确定单元202,检测条件获取单元203以及碰撞组确定单元204的具体实现方式可以参见上述图5所对应实施例中对碰撞组的描述,这里将不再继续进行赘述。
该切割面确定模块21,用于在目标切割模型不满足切割结束条件时,基于目标切割模型的中心点的第二中心位置信息、法向量信息以及第一切割面,在目标切割模型中确定第二切割面。
其中,该切割面确定模块21包括:第一关键点确定单元211,第二关键点确定单元212,第三关键点确定单元213以及第二切割面确定单元214。
该第一关键点确定单元211,用于在目标切割模型不满足切割结束条件时,在空间坐标系中确定目标切割模型的中心点的第二中心位置信息,将第二中心位置信息对应的中心点作为第一关键点;
该第二关键点确定单元212,用于获取法向量信息中的法向量方向以及法向量长度,沿着法向量方向,将与第二中心位置信息相距法向量长度的位置信息所对应的坐标点作为第二关键点;
该第三关键点确定单元213,用于基于与物理引擎相关联的角度区间,获取用于旋转第一切割面的第二角度,基于碰撞点、法向量信息以及第二角度,对第一切割面进行旋转,得到旋转后的第一切割面,确定旋转后的第一切割面与目标切割模型之间具有最小距离的目标交点以及目标交点的位置信息,将目标交点作为第三关键点;
该第二切割面确定单元214,用于基于第一关键点、第二关键点以及第三关键点,在目标切割模型中构建第二待切割面,且基于第二待切割面,在目标切割模型中确定第二切割面。
其中,该第一关键点确定单元211,第二关键点确定单元212,第三关键点确定单元213以及第二切割面确定单元214的具体实现方式可以参见上述图9所对应实施例中对S205的描述,这里将不再继续进行赘述。
该第二切割处理模块22,用于基于第二切割面对目标切割模型进行切割处理,直到切割处理后的模型满足切割结束条件。
其中,该初始切割模型确定模块11,法向量信息确定模块12,第一切割处理模块13,原始模型创建模块14,第一绑定模块15,第二绑定模块16,物理属性获取模块17,碰撞区域确定模块18,候选接触对确定模块19,碰撞组确定模块20,切割面确定模块21以及第二切割处理模块22的具体实现方式可以参见上述图9所对应实施例中对步骤S201-步骤S207的描述,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图12,图12是本申请实施例提供的一种计算机设备的示意图。如图12所示,该计算机设备1000可以为上述图1对应实施例中的服务器10,该计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图12所示,作为一种计算机存储介质的存储器1005可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图12所示的计算机设备1000中,网络接口1004主要用于进行网络通信;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于第一物理属性和第二物理属性,从第一刚体对应的第一模型与第二刚体对应的第二模型中确定初始切割模型;第一物理属性和第二物理属性均是由物理引擎所确定的;
通过物理引擎捕获第一刚体与第二刚体之间的碰撞点,且基于与碰撞点相关联的碰撞数据,确定碰撞点对应的法向量信息;
基于碰撞点、法向量信息以及初始切割模型的模型信息,在初始切割模型中确定第一切割面,且基于第一切割面对初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3和图9所对应实施例中对该碰撞数据处理方法的描述,也可执行前文图11所对应实施例中对该碰撞数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图3和图9中各个步骤所提供的数据传输方法,具体可参见图3以及图9各个步骤所提供的实现方式,在此不再赘述。
计算机可读存储介质可以是前述任一实施例提供的数据传输装置或者计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smartmedia card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图3或者图9所对应实施例中对碰撞数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种碰撞数据处理方法,其特征在于,包括:
在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于所述第一物理属性和所述第二物理属性,从所述第一刚体对应的第一模型与所述第二刚体对应的第二模型中确定初始切割模型;所述第一物理属性和所述第二物理属性均是由所述物理引擎所确定的;
通过所述物理引擎捕获所述第一刚体与所述第二刚体之间的碰撞点,且基于与所述碰撞点相关联的碰撞数据,确定所述碰撞点对应的法向量信息;
基于所述碰撞点、所述法向量信息以及所述初始切割模型的模型信息,在所述初始切割模型中确定第一切割面,且基于所述第一切割面对所述初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据;所述法向量信息包括与所述碰撞点相关联的法向量的法向量长度以及法向量方向;所述法向量长度是基于所述第一刚体与所述第二刚体发生碰撞时所产生的碰撞冲量所确定的;所述法向量方向为所述碰撞冲量的冲量方向;所述第一切割面是以与所述法向量为旋转轴、以所述碰撞点为旋转点,将第一待切割面按照第一角度进行旋转后所得到的;所述第一待切割面是在所述初始切割模型中基于第一辅助点、第二辅助点以及第三辅助点所确定的;所述第一辅助点为所述初始切割模型的中心点;所述第二辅助点为所述碰撞点;所述第三辅助点为沿着所述法向量方向,与所述碰撞点的碰撞位置信息相距所述法向量长度的位置信息所对应的坐标点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
启动与浏览器平台相关联的模型创建引擎,通过所述模型创建引擎为虚拟游戏创建N个原始模型;所述N个原始模型包括所述第一模型和所述第二模型;所述N为大于或者等于2的正整数;
基于所述物理引擎确定所述第一模型的第一模型信息,根据所述第一模型信息确定包含所述第一模型的所述第一刚体的第一刚体信息,基于所述第一刚体信息创建待与所述第一模型进行绑定的所述第一刚体,且将所述第一刚体与所述第一模型中的第一变量参数进行绑定;所述第一变量参数用于指示所述物理引擎确定所述第一模型对应的所述第一刚体;
基于所述物理引擎确定所述第二模型的第二模型信息,根据所述第二模型信息确定包含所述第二模型的所述第二刚体的第二刚体信息,基于所述第二刚体信息创建待与所述第二模型进行绑定的所述第二刚体,且将所述第二刚体与所述第二模型中的第二变量参数进行绑定;所述第二变量参数用于指示所述物理引擎确定所述第二模型对应的所述第二刚体。
3.根据权利要求2所述的方法,其特征在于,一个原始模型对应一个刚体;
所述方法还包括:
基于所述物理引擎,获取所述N个原始模型对应的N个刚体的物理属性,从所述N个刚体中获取碰撞参考刚体,将所述N个刚体中除所述碰撞参考刚体之外的其他刚体作为碰撞候选刚体;
基于所述碰撞参考刚体的物理属性以及所述物理引擎对应的碰撞距离阈值,确定与所述碰撞参考刚体相关联的碰撞区域;
若所述碰撞候选刚体中存在落入所述碰撞区域中的碰撞候选刚体,则将落入所述碰撞区域中的碰撞候选刚体确定为目标碰撞刚体,将所述目标碰撞刚体与所述碰撞参考刚体作为候选接触对;
获取用于进行碰撞检测的碰撞检测条件,基于所述碰撞检测条件对所述候选接触对进行碰撞检测,从所述候选接触对中筛选满足所述碰撞检测条件的候选接触对,将筛选出的候选接触对作为包含所述碰撞参考刚体的碰撞组;所述碰撞组中的所述碰撞参考刚体为所述第一刚体;所述碰撞组中的所述目标碰撞刚体为所述第二刚体。
4.根据权利要求3所述的方法,其特征在于,所述获取用于进行碰撞检测的碰撞检测条件,基于所述碰撞检测条件对所述候选接触对进行碰撞检测,从所述候选接触对中筛选满足所述碰撞检测条件的候选接触对,将筛选出的候选接触对作为包含所述碰撞参考刚体的碰撞组,包括:
基于所述候选接触对中的所述目标碰撞刚体的物理属性以及所述候选接触对中的所述碰撞参考刚体的物理属性,对所述候选接触对中的所述目标碰撞刚体与所述碰撞参考刚体进行碰撞检测;
在所述目标碰撞刚体中确定第一预测接触点,在所述碰撞参考刚体中确定所述第一预测接触点对应的第二预测接触点,且通过所述物理引擎确定所述第一预测接触点与所述第二预测接触点之间的预测距离;
获取用于进行碰撞检测的碰撞检测条件;所述碰撞检测条件用于筛选所述预测距离为非正数的候选接触对;
在所述候选接触对中,将筛选出的满足所述碰撞检测条件的候选接触对作为包含所述碰撞参考刚体的碰撞组。
5.根据权利要求1所述的方法,其特征在于,所述通过所述物理引擎捕获所述第一刚体与所述第二刚体之间的碰撞点,且基于与所述碰撞点相关联的碰撞数据,确定所述碰撞点对应的法向量信息,包括:
在所述初始切割模型所在的模型坐标系中,通过所述物理引擎捕获所述第一刚体与所述第二刚体发生碰撞时的碰撞点;
通过所述物理引擎获取所述第一刚体与所述第二刚体发生碰撞时所产生的碰撞冲量以及所述碰撞冲量的冲量方向,将所述碰撞冲量以及所述冲量方向作为与所述碰撞点相关联的碰撞数据;所述碰撞冲量用于确定与所述碰撞点相关联的法向量的法向量长度;所述冲量方向用于确定所述法向量的法向量方向;
基于所述法向量方向以及所述法向量长度,确定所述碰撞点对应的法向量信息。
6.根据权利要求1所述的方法,其特征在于,所述基于所述碰撞点、所述法向量信息以及所述初始切割模型的模型信息,在所述初始切割模型中确定第一切割面,且基于所述第一切割面对所述初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据,包括:
在所述初始切割模型所在的模型坐标系中,确定以所述初始切割模型的中心点为坐标原点的空间坐标系;
基于所述模型坐标系与所述空间坐标系之间的相对坐标转换信息,在所述空间坐标系中确定所述初始切割模型的中心点的第一中心位置信息,且在所述空间坐标系中确定所述碰撞点的碰撞位置信息;
基于所述第一中心位置信息、所述碰撞位置信息以及所述法向量信息,在所述初始切割模型中确定第一切割面;
基于所述第一切割面对所述初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一中心位置信息、所述碰撞位置信息以及所述法向量信息,在所述初始切割模型中确定第一切割面,包括:
将所述第一中心位置信息对应的中心点确定为第一辅助点,将所述碰撞位置信息对应的所述碰撞点确定为第二辅助点,沿着所述法向量方向,将与所述碰撞位置信息相距所述法向量长度的位置信息所对应的坐标点作为第三辅助点;
在所述初始切割模型中,基于所述第一辅助点、所述第二辅助点以及所述第三辅助点,确定第一待切割面;
基于与所述物理引擎相关联的角度区间,获取用于旋转所述第一待切割面的第一角度,以所述法向量为旋转轴,以所述碰撞点为旋转点,将所述第一待切割面按照所述第一角度进行旋转,将旋转后的第一待切割面作为第一切割面。
8.根据权利要求6所述的方法,其特征在于,所述基于所述第一切割面对所述初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据,包括:
基于所述初始切割模型的模型信息,获取所述初始切割模型的顶点的顶点位置信息,基于所述顶点位置信息,确定所述初始切割模型的轮廓线段;
获取所述轮廓线段与所述第一切割面之间的切割点,在所述空间坐标系中确定所述切割点的切割位置信息;
基于所述切割位置信息以及所述顶点位置信息,将所述初始切割模型切割为第一切割模型和第二切割模型,基于所述第一切割模型和所述第二切割模型,得到用于在移动终端上进行展示的切割处理数据。
9.根据权利要求8所述的方法,其特征在于,所述基于所述切割位置信息以及所述顶点位置信息,将所述初始切割模型切割为第一切割模型和第二切割模型,基于所述第一切割模型和所述第二切割模型,得到用于在移动终端上进行展示的切割处理数据,包括:
通过模型创建引擎,从所述初始切割模型的模型信息中,确定所述初始切割模型的几何材质;
基于所述切割位置信息以及所述顶点位置信息,确定用于构建第一切割模型的第一坐标数组以及用于构建第二切割模型的第二坐标数组;所述第一切割模型与所述第二切割模型是对所述初始切割模型进行切割处理后所得到的;
利用所述第一坐标数组创建所述第一切割模型的第一几何结构,利用所述第二坐标数组创建所述第二切割模型的第二几何结构;
基于所述第一几何结构以及所述几何材质创建所述第一切割模型,基于所述第二几何结构以及所述几何材质创建所述第二切割模型,且将所述第一切割模型和所述第二切割模型确定为目标切割模型;
获取与所述物理引擎相关联的切割结束条件,在所述目标切割模型满足所述切割结束条件时,得到用于在移动终端上进行展示的切割处理数据。
10.根据权利要求9所述的方法,其特征在于,所述获取与所述物理引擎相关联的切割结束条件,在所述目标切割模型满足所述切割结束条件时,得到用于在移动终端上进行展示的切割处理数据,包括:
获取与所述物理引擎相关联的切割结束条件;所述切割结束条件包括模型尺寸阈值;
获取所述目标切割模型的模型尺寸,若所述目标切割模型的模型尺寸小于或者等于所述模型尺寸阈值,则确定所述目标切割模型满足所述切割结束条件时,且将满足所述切割结束条件的目标切割模型作为目标模型;
基于所述物理引擎以及所述目标模型的目标模型信息,确定所述目标模型对应的目标刚体;
获取所述目标刚体的物理属性,基于所述目标刚体的物理属性控制所述目标模型执行物理运动,获取执行所述物理运动时的动画图像帧,基于所述动画图像帧得到用于在移动终端上进行展示的切割处理数据。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述目标切割模型不满足所述切割结束条件时,基于所述目标切割模型的中心点的第二中心位置信息、所述法向量信息以及所述第一切割面,在所述目标切割模型中确定第二切割面;
基于所述第二切割面对所述目标切割模型进行切割处理,直到切割处理后的模型满足所述切割结束条件。
12.根据权利要求11所述的方法,其特征在于,所述在所述目标切割模型不满足所述切割结束条件时,基于所述目标切割模型的中心点的第二中心位置信息、所述法向量信息以及所述第一切割面,在所述目标切割模型中确定第二切割面,包括:
在所述目标切割模型不满足所述切割结束条件时,在所述空间坐标系中确定所述目标切割模型的中心点的第二中心位置信息,将所述第二中心位置信息对应的中心点作为第一关键点;
获取所述法向量信息中的法向量方向以及法向量长度,沿着所述法向量方向,将与所述第二中心位置信息相距所述法向量长度的位置信息所对应的坐标点作为第二关键点;
基于与所述物理引擎相关联的角度区间,获取用于旋转所述第一切割面的第二角度,基于所述碰撞点、所述法向量信息以及所述第二角度,对所述第一切割面进行旋转,得到旋转后的第一切割面,确定所述旋转后的第一切割面与所述目标切割模型之间具有最小距离的目标交点以及所述目标交点的位置信息,将所述目标交点作为第三关键点;
基于所述第一关键点、所述第二关键点以及所述第三关键点,在所述目标切割模型中构建第二待切割面,且基于所述第二待切割面,在所述目标切割模型中确定第二切割面。
13.一种碰撞数据处理装置,其特征在于,包括:
初始切割模型确定模块,用于在物理引擎检测到具有第一物理属性的第一刚体与具有第二物理属性的第二刚体发生碰撞时,基于所述第一物理属性和所述第二物理属性,从所述第一刚体对应的第一模型与所述第二刚体对应的第二模型中确定初始切割模型;所述第一物理属性和所述第二物理属性均是由所述物理引擎所确定的;
法向量信息确定模块,用于通过所述物理引擎捕获所述第一刚体与所述第二刚体之间的碰撞点,且基于与所述碰撞点相关联的碰撞数据,确定所述碰撞点对应的法向量信息;
切割处理模块,用于基于所述碰撞点、所述法向量信息以及所述初始切割模型的模型信息,在所述初始切割模型中确定第一切割面,且基于所述第一切割面对所述初始切割模型进行切割处理,得到用于在移动终端上进行展示的切割处理数据;所述法向量信息包括与所述碰撞点相关联的法向量的法向量长度以及法向量方向;所述法向量长度是基于所述第一刚体与所述第二刚体发生碰撞时所产生的碰撞冲量所确定的;所述法向量方向为所述碰撞冲量的冲量方向;所述第一切割面是以与所述法向量为旋转轴、以所述碰撞点为旋转点,将第一待切割面按照第一角度进行旋转后所得到的;所述第一待切割面是在所述初始切割模型中基于第一辅助点、第二辅助点以及第三辅助点所确定的;所述第一辅助点为所述初始切割模型的中心点;所述第二辅助点为所述碰撞点;所述第三辅助点为沿着所述法向量方向,与所述碰撞点的碰撞位置信息相距所述法向量长度的位置信息所对应的坐标点。
14.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110352747.3A CN112915542B (zh) | 2021-03-31 | 2021-03-31 | 一种碰撞数据处理方法、装置、计算机设备及存储介质 |
PCT/CN2022/079809 WO2022206314A1 (zh) | 2021-03-31 | 2022-03-09 | 一种碰撞数据处理方法, 装置, 计算机设备及存储介质 |
US17/975,186 US12128311B2 (en) | 2021-03-31 | 2022-10-27 | Collision data processing method and apparatus, computer device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110352747.3A CN112915542B (zh) | 2021-03-31 | 2021-03-31 | 一种碰撞数据处理方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112915542A CN112915542A (zh) | 2021-06-08 |
CN112915542B true CN112915542B (zh) | 2022-07-22 |
Family
ID=76173574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110352747.3A Active CN112915542B (zh) | 2021-03-31 | 2021-03-31 | 一种碰撞数据处理方法、装置、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112915542B (zh) |
WO (1) | WO2022206314A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112915542B (zh) * | 2021-03-31 | 2022-07-22 | 腾讯科技(深圳)有限公司 | 一种碰撞数据处理方法、装置、计算机设备及存储介质 |
CN113577773B (zh) * | 2021-07-08 | 2024-01-23 | 武汉指娱互动信息技术有限公司 | 一种碰撞数据处理方法、装置、电子设备及存储介质 |
CN113642102B (zh) * | 2021-07-23 | 2024-03-15 | 一汽奔腾轿车有限公司 | 一种碰撞模型中刚体对的自动化建模方法 |
CN113704134B (zh) * | 2021-09-23 | 2023-06-06 | 腾讯科技(深圳)有限公司 | 一种模型检测方法和相关装置 |
CN114626293A (zh) * | 2022-02-23 | 2022-06-14 | 中国科学院深圳先进技术研究院 | 预测碰撞仿真结果的方法、装置、设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7663630B2 (en) * | 2005-12-08 | 2010-02-16 | Electronics And Telecommunications Research Institute | Apparatus and method for processing collision information in graphic system |
KR101886556B1 (ko) * | 2014-07-02 | 2018-08-07 | 신닛테츠스미킨 카부시키카이샤 | 신장 플랜지 균열 예측 방법, 신장 플랜지 균열 예측 장치, 컴퓨터 프로그램, 및 기록 매체 |
US9893974B2 (en) * | 2015-10-11 | 2018-02-13 | Microsoft Technology Licensing, Llc | Synchronization of data for colliding bodies |
US20170124225A1 (en) * | 2015-10-30 | 2017-05-04 | Microsoft Technology Licensing, Llc | Simulation of large structures |
US11030363B2 (en) * | 2016-05-25 | 2021-06-08 | Microsoft Technology Licensing, Llc | Physics engine with permissive rigid body penetration |
CN109785420B (zh) * | 2019-03-19 | 2023-08-04 | 厦门市思芯微科技有限公司 | 一种基于Unity引擎的3D场景拾色方法及系统 |
CN111192354A (zh) * | 2020-01-02 | 2020-05-22 | 武汉瑞莱保能源技术有限公司 | 一种基于虚拟现实的三维仿真方法及系统 |
CN111862052B (zh) * | 2020-07-22 | 2023-09-05 | 上海米哈游天命科技有限公司 | 检测缝隙的方法、装置、设备及介质 |
CN112915542B (zh) * | 2021-03-31 | 2022-07-22 | 腾讯科技(深圳)有限公司 | 一种碰撞数据处理方法、装置、计算机设备及存储介质 |
-
2021
- 2021-03-31 CN CN202110352747.3A patent/CN112915542B/zh active Active
-
2022
- 2022-03-09 WO PCT/CN2022/079809 patent/WO2022206314A1/zh active Application Filing
Non-Patent Citations (4)
Title |
---|
"Energy Stability and Fracture for Frame Rate Rigid Body Simulations";Jonathan Su et al.;《ACM SIGGRAPH Symposium on Computer Animation (2009)》;20091231;第155-164页 * |
基于Voronoi图的实时刚体破碎模拟;宁江凡等;《计算机辅助设计与图形学学报》;20110515(第05期);第825-832页 * |
基于体元刚体破碎特效仿真;曾亮等;《计算机工程与科学》;20091015;第260-262页 * |
实时刚体破碎特效仿真研究;曾亮等;《计算机研究与发展》;20100615(第06期);第1032-1037页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112915542A (zh) | 2021-06-08 |
WO2022206314A1 (zh) | 2022-10-06 |
US20230055516A1 (en) | 2023-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112915542B (zh) | 一种碰撞数据处理方法、装置、计算机设备及存储介质 | |
US11620800B2 (en) | Three dimensional reconstruction of objects based on geolocation and image data | |
EP3754464A1 (en) | Merged reality spatial streaming of virtual spaces | |
US11704868B2 (en) | Spatial partitioning for graphics rendering | |
US20160267705A1 (en) | System, method and device for three-dimensional modeling | |
CN103530495A (zh) | 增强现实仿真连续体 | |
CN112717404B (zh) | 虚拟对象的移动处理方法、装置、电子设备及存储介质 | |
CN110891659B (zh) | 对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和中心凹调适 | |
US8909506B2 (en) | Program, information storage medium, information processing system, and information processing method for controlling a movement of an object placed in a virtual space | |
CN102663808A (zh) | 一种基于数字家庭娱乐中三维模型的刚体模型建立方法 | |
WO2022184128A1 (zh) | 虚拟对象的技能释放方法、装置、设备及存储介质 | |
WO2023142609A1 (zh) | 虚拟场景中的对象处理方法、装置、设备、存储介质及程序产品 | |
CN115430153A (zh) | 虚拟环境中的碰撞检测方法、装置、设备、介质及程序 | |
US12128311B2 (en) | Collision data processing method and apparatus, computer device, and storage medium | |
CN113313796B (zh) | 场景生成方法、装置、计算机设备和存储介质 | |
CN104156999A (zh) | 一种三维场景渲染方法 | |
CN117695623A (zh) | 虚拟世界中物理场景资源的管理方法、装置及计算机设备 | |
Lee et al. | Unreal Engine: Game Development from A to Z | |
CN114307150A (zh) | 虚拟对象之间的互动方法、装置、设备、介质及程序产品 | |
CN111862345A (zh) | 信息处理方法及装置、电子设备和计算机可读存储介质 | |
WO2024199200A1 (zh) | 碰撞事件的确定方法、装置、存储介质、电子设备及程序产品 | |
US20240331301A1 (en) | Systems and methods to accelerate collision detection in cloth simulation | |
Qiu et al. | Design and Implementation of “Winning Luding Bridge” Immersion FPS Game Based on Unity3D Technology | |
Ballantyne et al. | Collision overload: Reducing the impact in real-time physics | |
JP6258552B1 (ja) | 情報処理装置、情報処理方法、プログラム、ならびに、端末 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40046812 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |