logo好方法网

基于UE4引擎的物体同步方法、装置、设备及存储介质


技术摘要:
本发明涉及VR技术领域,公开了一种基于UE4引擎的物体同步方法、装置、设备及存储介质,通过在施力物与物体碰撞时,判断配置属性变量中的指针是否为空,若否,则碰撞无效,若是,则计算施力物碰撞物体的瞬间与碰撞后下一帧的偏移向量;获取物体在可移动方向上的向前向量  全部
背景技术:
虚拟现实(virtual  reality,简称VR)技术是一种可以在虚拟环境中完成一系列 动作的计算机技术,随着计算机软硬件的不断发展,虚拟环境的搭建越发完整,功能越发完 善。而虚拟现实技术常常会应用到在各类游戏应用场景中。 在游戏应用中,常常需要操作虚拟物体进行移动,在现有的技术中,使用UE4自带 的物理模拟的物理约束方式实现此功能会存在诸多不稳定的因素,因为在基于UE4引擎的 游戏环境中同时存在多个用户对同一物体进行碰撞推动,这些用户的碰撞推动会相互影 响,并且周边的物体也会相互影响,从而导致最终的推动唯一,由于相互的影响使得引擎的 数据处理较为复杂,从而导致推不动卡住,使得在多人环境下的游戏体现表现不好,甚至可 能出现物理碰撞推动在各个端同步不一样,造成抖动卡顿的感觉。
技术实现要素:
本发明的主要目的在于解决现有UE4引擎的物体移动同步实现,在多人环境中用 户对物体的操作会相互影响,而导致最终的物体移动同步不准确的技术问题。 本发明第一方面提供了一种基于UE4引擎的物体同步方法,包括: 检测用户当前位置上的物体,并获取所述物体的配置属性变量,所述配置属性变 量包括用于保存施力物推物体的碰撞框是否有效的指针; 当所述施力物与所述物体碰撞时,判断所述配置属性变量中的指针是否为空; 若所述指针不为空,则确定所述物体存在多个方向上的推动,并将所述施力物与 所述物体的当前碰撞设置为无效; 若所述指针为空,则确定所述物体可在当前碰撞的方向上被推动,并记录所述物 体被碰撞瞬间所述施力物的坐标位置,根据所述坐标位置更新第一变量,所述第一变量表 示当前帧所述施力物推动所述物体的最后坐标位置; 获取所述物体被碰撞后的下一帧的所述施力物的起始坐标位置,并根据所述第一 变量和所述起始坐标位置计算所述施力物的偏移向量; 获取所述物体在可移动方向上的向前向量,并利用点积函数计算所述偏移向量与 所述向前向量的点积值; 若所述点积值大于零,则基于投影计算原理计算所述偏移向量在所述物体的可移 动方向上的位移向量; 根据所述位移向量控制所述物体向移动,并记录所述物体移动后的位置信息; 调用所述UE4引擎中的服务器对所述位置信息进行插值平滑过渡处理后,广播至 所述UE4引擎中的所有客户端。 5 CN 111603773 A 说 明 书 2/16 页 可选的,在本发明第一方面的第一种实现方式中,所述获取所述物体被碰撞后的 下一帧的所述施力物的起始坐标位置,并根据所述第一变量和所述起始坐标位置计算所述 施力物的偏移向量包括: 获取所述物体停止移动时,所述施力物所在的位置信息; 基于所述位置信息和预置的世界坐标系的坐标原点,计算出所述施力物相对于所 述坐标原点的三维坐标值,得到下一帧的所述施力物的起始坐标位置; 将所述起始坐标位置减去所述最后坐标位置,得到所述偏移向量。 可选的,在本发明第一方面的第二种实现方式中,所述获取所述物体在可移动方 向上的向前向量,并利用点积函数计算所述偏移向量与所述向前向量的点积值包括: 根据所述指针确定所述物体被推动的方向的向前向量; 基于所述偏移向量和向前向量分别进行单位化处理,得到偏移向量的单位向量和 向前向量的单位向量; 调用点积函数对所述偏移向量的单位向量和所述向前向量的单位向量进行点积 计算,得到对应的点积值。 可选的,在本发明第一方面的第三种实现方式中,所述基于投影计算原理计算所 述偏移向量在所述物体的可移动方向上的位移向量包括: 根据所述第一变量和起始坐标位置计算所述偏移向量的长度; 将所述长度乘以所述点积值,再乘以所述向前向量的单位向量,得到所述物体的 可移动方向上的位移向量。 可选的,在本发明第一方面的第四种实现方式中,所述配置属性变量还包括用于 记录所述物体被碰撞推动的历史位移的物体移动变量,在所述根据所述位移向量控制所述 物体向移动,并记录所述物体移动后的位置信息之后,还包括: 从所述配置属性变量中获取物体移动变量的值,其中,所述物体移动变量的值为 所述物体在当前帧之前被施力物推动的历史总推动距离; 将所述物体移动变量的值加上所述偏移向量投影在所述物体对应的可移动方向 上的模,得到所述物体的当前总移动距离; 判断所述当前总移动距离是否小于所述物体的预置可移动阈值; 若否,则将所述物体设置为不可移动状态。可选的,在本发明第一方面的第五种实 现方式中,所述调用所述UE4引擎中的服务器对所述位置信息进行插值平滑过渡处理后,广 播至所述UE4引擎中的所有客户端包括: 通过所述UE4引擎中的服务器确定所述UE4引擎中各客户端上对应物体的当前位 置,并将所述当前位置设置为起始点; 将所述位置信息设置为终点,并调用时间线函数和线性插值函数,在所述起始点 和所述终点之间进行插值平滑移动处理,得到所述物体的推动结果; 通过所述服务器,将所述物体的推动结果广播至所述UE4引擎中的所有客户端。 可选的,在本发明第一方面的第六种实现方式中,其特征在于,所述将所述位置信 息设置为终点,并调用时间线函数和线性插值函数,在所述起始点和所述终点之间进行插 值平滑处理,得到所述物体的推动结果包括: 将所述位置信息设置为终点,并调用所述时间线函数; 6 CN 111603773 A 说 明 书 3/16 页 将预置时间输入到所述时间线函数中,输出曲线值; 调用所述线性插值函数,并将所述曲线值输入至所述线性插值函数中,所述线性 插值函数根据输入的曲线值,设置所述物体在所述起止点和所述终点之间的位置,进行插 值平滑移动,得到所述物体的推动结果。 本发明第二方面提供了一种基于UE4引擎的物体同步装置,包括: 获取模块,用于检测用户当前位置上的物体,并获取所述物体的配置属性变量,所 述配置属性变量包括用于保存施力物推物体的碰撞框是否有效的指针; 判断模块,用于当所述施力物与所述物体碰撞时,判断所述配置属性变量中的指 针是否为空; 配置模块,用于在所述指针不为空时,确定所述物体存在多个方向上的推动,并将 所述施力物与所述物体的当前碰撞设置为无效; 更新模块,用于在所述指针为空时,确定所述物体可在当前碰撞的方向上被推动, 并记录所述物体被碰撞瞬间所述施力物的坐标位置,根据所述坐标位置更新第一变量,所 述第一变量表示当前帧所述施力物推动所述物体的最后坐标位置; 偏移向量计算模块,获取所述物体被碰撞后的下一帧的所述施力物的起始坐标位 置,并根据所述第一变量和所述起始坐标位置计算所述施力物的偏移向量; 点积模块,获取所述物体在可移动方向上的向前向量,并利用点积函数计算所述 偏移向量与所述向前向量的点积值; 位移向量计算模块,用于在所述点积值大于零时,基于投影计算原理计算所述偏 移向量在所述物体的可移动方向上的位移向量; 记录模块,用于根据所述位移向量控制所述物体向移动,并记录所述物体移动后 的位置信息; 同步模块,用于调用所述UE4引擎中的服务器对所述位置信息进行插值平滑过渡 处理后,广播至所述UE4引擎中的所有客户端。 可选的,在本发明第二方面的第一种实现方式中,所述偏移向量模块具体用于: 获取所述物体停止移动时,所述施力物所在的位置信息; 基于所述位置信息和预置的世界坐标系的坐标原点,计算出所述施力物相对于所 述坐标原点的三维坐标值,得到下一帧的所述施力物的起始坐标位置; 将所述起始坐标位置减去所述最后坐标位置,得到所述偏移向量。 可选的,在本发明第二方面的第二种实现方式中,所述点积模块具体用于: 根据所述指针确定所述物体被推动的方向的向前向量; 基于所述偏移向量和向前向量分别进行单位化处理,得到偏移向量的单位向量和 向前向量的单位向量; 调用点积函数对所述偏移向量的单位向量和所述向前向量的单位向量进行点积 计算,得到对应的点积值。 可选的,在本发明第三方面的第三种实现方式中,所述位移向量模块具体用于: 根据所述第一变量和起始坐标位置计算所述偏移向量的长度; 将所述长度乘以所述点积值,再乘以所述向前向量的单位向量,得到所述物体的 可移动方向上的位移向量。 7 CN 111603773 A 说 明 书 4/16 页 可选的,在本发明第二方面的第四种实现方式中,所述基于UE4引擎的物体同步装 置还包括设置模块,所述设置模块具体用于: 从所述配置属性变量中获取物体移动变量的值,其中,所述物体移动变量的值为 所述物体在当前帧之前被施力物推动的历史总推动距离; 将所述物体移动变量的值加上所述偏移向量投影在所述物体对应的可移动方向 上的模,得到所述物体的当前总移动距离; 判断所述当前总移动距离是否小于所述物体的预置可移动阈值; 若否,则将所述物体设置为不可移动状态。 可选的,在本发明第二方面的第五种实现方式中,所述同步模块包括: 起始设置单元,用于通过所述UE4引擎中的服务器确定所述UE4引擎中各客户端上 对应物体的当前位置,并将所述当前位置设置为起始点; 平滑处理单元,用于将所述位置信息设置为终点,并调用时间线函数和线性插值 函数,在所述起始点和所述终点之间进行插值平滑移动处理,得到所述物体的推动结果; 通知单元,用于通过所述服务器,将所述物体的推动结果广播至所述UE4引擎中的 所有客户端。 可选的,在本发明第二方面的第六种实现方式中,所述平滑处理单元具体用于: 将所述位置信息设置为终点,并调用所述时间线函数; 将预置时间输入到所述时间线函数中,输出曲线值; 调用所述线性插值函数,并将所述曲线值输入至所述线性插值函数中,所述线性 插值函数根据输入的曲线值,设置所述物体在所述起止点和所述终点之间的位置,进行插 值平滑移动,得到所述物体的推动结果。 本发明第三方面提供了一种基于UE4引擎的物体同步设备,包括:存储器和至少一 个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所 述至少一个处理器调用所述存储器中的所述指令,以使得所述基于UE4引擎的物体同步设 备执行上述的基于UE4引擎的物体同步方法。 本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中 存储有指令,当其在计算机上运行时,使得计算机执行上述的基于UE4引擎的物体同步方 法。 本发明提供的技术方案中,当施力物与物体碰撞时,判断所述配置属性变量中的 指针是否为空,若否,则设置当前碰撞无效,若是,则计算所述施力物碰撞物体的瞬间与碰 撞后下一帧的偏移向量;获取物体在可移动方向上的向前向量并计算偏移向量与向前向量 的点积值,若点积值大于零,则将偏移向量投影在物体的可移动方向上,得到物体的位移向 量;将位移向量施加在物体上,推动所述物体移动,并调用服务器将物体移动后的位置广播 至各客户端。本方法通过设置了指针来对各用户的碰撞进行区分,以实现了多用户对同一 物体进行碰撞时,屏蔽用户碰撞之间的相互影响干扰,从而简化了对碰撞位移向量的计算 过程,提高了计算的精准度,同时通过平滑处理的方式将计算到的位移向量和推动的过程 简化处理,减少了服务器在多个客户端之间的同步数据的处理量,避免了数据同步的卡顿 现象。 8 CN 111603773 A 说 明 书 5/16 页 附图说明 图1为本发明实施例中基于UE4引擎的物体同步方法的第一个实施例示意图; 图2为本发明实施例中基于UE4引擎的物体同步方法的第二个实施例示意图; 图3为本发明实施例中基于UE4引擎的物体同步方法的第三个实施例示意图; 图4为本发明实施例中基于UE4引擎的物体同步方法的第四个实施例示意图; 图5为本发明实施例中基于UE4引擎的物体同步方法的第五实施例示意图; 图6为本发明实施例中基于UE4引擎的物体同步装置的一个实施例示意图; 图7为本发明实施例中基于UE4引擎的物体同步装置的另一个实施例示意图; 图8为本发明实施例中基于UE4引擎的物体同步设备的一个实施例示意图。
分享到:
收藏