CN111784850A - 基于虚幻引擎的物体抓取仿真方法及相关设备 - Google Patents
基于虚幻引擎的物体抓取仿真方法及相关设备 Download PDFInfo
- Publication number
- CN111784850A CN111784850A CN202010630560.0A CN202010630560A CN111784850A CN 111784850 A CN111784850 A CN 111784850A CN 202010630560 A CN202010630560 A CN 202010630560A CN 111784850 A CN111784850 A CN 111784850A
- Authority
- CN
- China
- Prior art keywords
- rotation
- target object
- collision body
- collision
- collider
- 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.)
- Granted
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000008859 change Effects 0.000 claims abstract description 64
- 230000009471 action Effects 0.000 claims abstract description 36
- 238000006243 chemical reaction Methods 0.000 claims description 35
- 238000004422 calculation algorithm Methods 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000009466 transformation Effects 0.000 claims description 9
- 230000033001 locomotion Effects 0.000 claims description 5
- 238000000926 separation method Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims 2
- 230000006870 function Effects 0.000 description 43
- 238000001514 detection method Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000008676 import Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009191 jumping Effects 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
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (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)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Manipulator (AREA)
Abstract
本发明涉及计算机视觉识别技术领域,公开了一种基于虚幻引擎的物体抓取仿真方法及相关设备,所述方法包括:获取碰撞体发生抓取动作时目标物体的第一位置旋转以及碰撞体的第二位置旋转,碰撞体包括第一碰撞体与第二碰撞体;在碰撞体抓取目标物体移动时,获取当前碰撞体的第三位置旋转,并根据述第二位置旋转与第三位置旋转,计算碰撞体的旋转变化值;根据第一位置旋转与旋转变化值,计算当前目标物体预计移动到的第四位置旋转;基于第四位置旋转,控制目标物品跟随第一碰撞体、第二碰撞体移动。本发明实现了基于虚幻引擎实现双手同时抓取物品的仿真,使物品抓取操作更贴近场景需求,扩展了物品抓取并移动的应用场景。
Description
技术领域
本发明涉及计算机视觉识别技术领域,尤其涉及一种基于虚幻引擎的物体抓取仿真方法及相关设备。
背景技术
VR(Virtual Reality,虚拟现实)技术是我们通过一个虚拟***模仿另一个真实***,形成一个可以自由搭配物品与操作物品的虚拟空间,随着VR仿真技术的发展,我们在这个虚拟虚拟空间中对物品的自由搭配程度越来越高,对物品的执行行为越来越多元化,在VR世界中,虚拟角色可以模仿真人完成各种各样的操作,包括虚拟驾驶、虚拟划艇、虚拟飞行、虚拟踢足球等,而这些操作背后由多个独立的行为连接构成,而每一个独立的行为需要一个独立的技术内容去支撑,而现今虽然很多动作的构建技术已经非常成熟,但仍有一部分动作的构建存在技术壁垒难以突破。
现有技术中,抓取物体的功能基本上是通过粘附的方式实现,将一个物体附着在另一个物体或组件上,子物体跟随这个父物体移动与旋转,但是这种只能实现单手抓取物品的仿真过程,做法不能处理双手抓取物体的逻辑,因为子物体只能有一个父物体,即物品只能被一只手抓取,无法同时跟着两双手进行移动,如果使用UE4(Unreal Engine 4,虚幻4引擎)的物理铰链操作实现物品的抓取,UE4物理铰链操作目前也无法支持两个铰链操作同时链接一个物体的功能。故难以在虚拟现实空间中实现两只手同时抓取物体。
发明内容
本发明的主要目的在于提供一种基于虚幻引擎的物体抓取仿真方法及相关设备,旨在解决如何在虚拟现实世界中实现双手同时抓取物品的问题的技术问题。
本发明第一方面提供了一种基于虚幻引擎的物体抓取仿真方法,包括:
获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
可选的,在本发明第一方面的第一种实现方式中,在所述获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转之前,还包括:
判断所述碰撞体是否未抓取任何物品;
若所述碰撞体未抓取任何物品,则检测所述碰撞体是否接触到目标物体所在的碰撞框;
若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作。
可选的,在本发明第一方面的第二种实现方式中,所述若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作包括:
若所述碰撞体接触到所述碰撞框,则判断所述目标物体是否未被其他碰撞体抓取;
若所述目标物体未被其他碰撞体抓取,则检测所述目标物体是否未被所述第一碰撞体或所述第二碰撞体抓取;
若所述目标物体未被所述第一碰撞体或所述第二碰撞体抓取,则根据所述第一碰撞体、所述第二碰撞体与所述目标物体的接触顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
若所述目标物体已被所述第一碰撞体或所述第二碰撞体抓取,则判断已对所述目标物体进行抓取的碰撞体是否与再次对所述目标物品进行抓取的碰撞体不同;
若已对所述目标物体进行抓取碰撞体与再次对所述目标物进行抓取的碰撞体不同,则根据抓取顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
当所述第一碰撞体、所述第二碰撞体与所述目标物体完成铰链操作时,确定所述碰撞体对所述目标物体构成抓取动作。
可选的,在本发明第一方面的第三种实现方式中,所述第一位置旋转包括所述目标物体的第一旋转值与第一位置坐标,所述第二位置旋转包括所述碰撞体的中心点的第二旋转值与第二位置坐标,所述第三位置旋转包括当前所述碰撞体的中心点的第三旋转值与第三位置坐标;
其中,所述第二旋转值通过所述第一碰撞体到所述第二碰撞体的第一向量计算得到,所述第三旋转值通过当前所述第一碰撞体到所述第二碰撞体的第二向量计算得到。
可选的,在本发明第一方面的第四种实现方式中,所述根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值包括:
根据所述第二旋转值与所述第三旋转值,构建所述碰撞体移动时位置旋转变化的相对旋转转换变量;
根据所述相对旋转转换变量,采用预置相对旋转转换算法,计算所述碰撞体的旋转变化值。
可选的,在本发明第一方面的第五种实现方式中,所述根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转包括:
对所述第一旋转值与所述旋转变化值进行相加,得到当前所述目标物体预计移动后的第四旋转值;
根据所述第一位置坐标与所述第二位置坐标,设置所述中心点到所述目标物的第三向量,以及根据所述第二位置坐标与所述旋转变化值,构建所述碰撞体抓取所述目标物体移动时所述目标物体的相对坐标转换变量;
根据所述第三向量与所述相对坐标转换变量,采用预置相对坐标转换算法,计算当前所述目标物体预计移动到的第四位置坐标;
根据所述第四位置坐标与所述第四旋转值,得到所当前所述目标物体预计移动到的第四位置旋转。
可选的,在本发明第一方面的第六种实现方式中,在所述基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动之后,还包括:
检测所述第一碰撞体或所述第二碰撞体是否与所述目标物体的碰撞框分离;
若所述第一碰撞体或所述第二碰撞体与所述目标物体的碰撞框分离,则将分离瞬间当前所述第一位置旋转设置为最终位置旋转;
以所述最终位置旋转为起点,对所述目标物体进行掉落仿真。
本发明第二方面提供了一种基于虚幻引擎的物体抓取仿真装置,包括:
获取模块,用于获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
第一计算模块,用于在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
第二计算模块,用于根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
控制模块,用于基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
可选的,在本发明第二方面的第一种实现方式中,所述物体抓取仿真装置还包括抓取动作检测模块,所述抓取动作检测模块用于:
判断所述碰撞体是否未抓取任何物品;
若所述碰撞体未抓取任何物品,则检测所述碰撞体是否接触到目标物体所在的碰撞框;
若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作。
可选的,在本发明第二方面的第二种实现方式中,所述抓取动作检测模块包括铰链操作单元,所述铰链操作单元用于:
若所述碰撞体接触到所述碰撞框,则判断所述目标物体是否未被其他碰撞体抓取;
若所述目标物体未被其他碰撞体抓取,则检测所述目标物体是否未被所述第一碰撞体或所述第二碰撞体抓取;
若所述目标物体未被所述第一碰撞体或所述第二碰撞体抓取,则根据所述第一碰撞体、所述第二碰撞体与所述目标物体的接触顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
若所述目标物体已被所述第一碰撞体或所述第二碰撞体抓取,则判断已对所述目标物体进行抓取的碰撞体是否与再次对所述目标物品进行抓取的碰撞体不同;
若已对所述目标物体进行抓取碰撞体与再次对所述目标物进行抓取的碰撞体不同,则根据抓取顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
当所述第一碰撞体、所述第二碰撞体与所述目标物体完成铰链操作时,确定所述碰撞体对所述目标物体构成抓取动作。
可选的,在本发明第二方面的第三种实现方式中,所述第一位置旋转包括所述目标物体的第一旋转值与第一位置坐标,所述第二位置旋转包括所述碰撞体的中心点的第二旋转值与第二位置坐标,所述第三位置旋转包括当前所述碰撞体的中心点的第三旋转值与第三位置坐标;
其中,所述第二旋转值通过所述第一碰撞体到所述第二碰撞体的第一向量计算得到,所述第三旋转值通过当前所述第一碰撞体到所述第二碰撞体的第二向量计算得到。
可选的,在本发明第二方面的第四种实现方式中,所述第一计算模块还包括:
构建单元,用于根据所述第二旋转值与所述第三旋转值,构建所述碰撞体移动时位置旋转变化的相对旋转转换变量;
第一算法计算单元,用于根据所述相对旋转转换变量,采用预置相对旋转转换算法,计算所述碰撞体的旋转变化值。
可选的,在本发明第二方面的第五种实现方式中,所述第二计算模块还包括:
相加单元,用于对所述第一旋转值与所述旋转变化值进行相加,得到当前所述目标物体预计移动后的第四旋转值;
设置与构建单元,用于根据所述第一位置坐标与所述第二位置坐标,设置所述中心点到所述目标物的第三向量,以及根据所述第二位置坐标与所述旋转变化值,构建所述碰撞体抓取所述目标物体移动时所述目标物体的相对坐标转换变量;
第二算法计算单元,用于根据所述第三向量与所述相对坐标转换变量,采用预置相对坐标转换算法,计算当前所述目标物体预计移动到的第四位置坐标;
组合单元,用于根据所述第四位置坐标与所述第四旋转值,得到所当前所述目标物体预计移动到的第四位置旋转。
可选的,在本发明第二方面的第六种实现方式中,所述物体抓取仿真装置还包括掉落仿真模块,所述掉落仿真模块还包括:
检测单元,用于检测所述第一碰撞体或所述第二碰撞体是否与所述目标物体的碰撞框分离;
定位单元,用于若所述第一碰撞体或所述第二碰撞体与所述目标物体的碰撞框分离,则将分离瞬间当前所述第一位置旋转设置为最终位置旋转;
掉落仿真单元,用于以所述最终位置旋转为起点,对所述目标物体进行掉落仿真。
本发明第三方面提供了一种基于虚幻引擎的物体抓取仿真设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于虚幻引擎的物体抓取仿真设备执行上述的基于虚幻引擎的物体抓取仿真方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于虚幻引擎的物体抓取仿真方法。
本发明提供的技术方案中,通过获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。本发明实现了基于虚幻引擎实现双手同时抓取物品的仿真,使物品抓取操作更贴近场景需求,扩展了物品抓取并移动的应用场景。
附图说明
图1为本发明基于虚幻引擎的物体抓取仿真方法的第一个实施例示意图;
图2为本发明基于虚幻引擎的物体抓取仿真方法的第二个实施例示意图;
图3为本发明基于虚幻引擎的物体抓取仿真方法的第三个实施例示意图;
图4为本发明基于虚幻引擎的物体抓取仿真方法的第四个实施例示意图;
图5为本发明基于虚幻引擎的物体抓取仿真装置的一个实施例示意图;
图6为本发明基于虚幻引擎的物体抓取仿真装置的另一个实施例示意图;
图7为本发明基于虚幻引擎的物体抓取仿真设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种基于虚幻引擎的物体抓取仿真方法及相关设备,包括通过将目标物体被碰撞体抓取瞬间获取目标物体的第一位置旋转与第二位置旋转,然后再碰撞体抓取目标物体移动时,再确定当前碰撞体的第三位置旋转,然后通过碰撞体的第二位置旋转与第三位置旋转,计算碰撞体从抓取瞬间到移动后的旋转变化值;最后将该旋转变化值转化为碰撞体的第四位置旋转,以跟随碰撞体进行移动,本发明实现了基于虚幻引擎实现双手同时抓取物品的仿真,使物品抓取操作更贴近场景需求,扩展了物品抓取并移动的应用场景。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本技术方案的核心思路是让双手在抓取目标物体的瞬间,确定目标物体的位置旋转与双只手之间的位置旋转,然后在每次双手抓取目标物体移动时,计算出相对于抓取瞬间双手的位置旋转变化值,然后将该位置旋转变化值转化为目标物体的当前位置旋转。
首先在UE4中定义目标物体的对象类InteractableObject,其中,对象类InteractableObject包括FPickupInfo结构体类型变量、FRotation类型变量、FVector类型变量、FVector类型变量,并在对象类InteractableObject中声明以下几个重要的变量:
1、FPickupInfo结构体类型变量PickupInfo,一共有三个变量,分别为bool(布尔)类型变量(1)bPickUp,若目标物体被碰撞体抓取设为true,否则设为false,组件指针(2)第一碰撞体HandCollision,(3)第二碰撞体WeightsOtherHandCollision,分别记录碰撞体的指针,(2)表示比较早进行抓取的碰撞体,(3)表示比较晚进行抓取的碰撞体。
2、FRotation类型变量第一旋转值WeightsBaseRotation,记录碰撞体发生抓取动作瞬间,目标物体的第一旋转值。
3、FVector类型变量第一向量WeightsBaseTwoCollisionVector,记录碰撞体发生抓取动作瞬间,第一碰撞体到第二碰撞体的第一向量。
4、FVector类型变量第二位置坐标WeightsBaseCollisionToThisVector,记录碰撞体发生抓取动作时瞬间碰撞体的中心点到物体的第三向量。
接着,在UE4中添加几个关键的函数:
1、在虚拟角色类上声明抓取检测函数PickUp,用于碰撞体做出抓取动作时调用。
2、在对象类InteractableObject类上声明抓取函数WeightEnableOnePlayer,用于在碰撞体抓取目标物体时调用,并以指针传入参数InputHandCollision用于传进进行抓取的碰撞体的指针。
3、在对象类InteractableObject类上声明掉落函数WeightsDropOnePlayer,用于在碰撞体丢弃目标物体时调用的函数,参数指针传入参数InputHandCollision用于传进进行丢弃的碰撞体的指针。
4、更新函数UpdateWeightTransfrom,当目标物体被抓取过程中,对目标物体的移动位置进行计算。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中基于虚幻引擎的物体抓取仿真方法的第一个实施例包括:
101、获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
可以理解的是,本发明的执行主体可以为基于虚幻引擎的物体抓取仿真装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
本实施例中,碰撞体中的第一碰撞体与第二碰撞体可为虚拟空间中虚拟角色的双手或通过双手分别控制的道具;接下来以双手作为碰撞体进行实施例的介绍。
碰撞体发生抓取动作是指第一碰撞体与第二碰撞体对目标物体构成抓取形态,比如双手只是触碰目标物体或者双手碰巧与物体接触,均不构成抓取动作;
第一位置旋转包括目标物体的第一旋转值与第一位置坐标,用于确定目标物体的空间显示状态与显示位置;第二位置旋转包括碰撞体的中心点的第二旋转值与第二位置坐标,用于确定碰撞体的空间显示状态与其中心点的位置,而第二旋转值由第一碰撞体到第二碰撞体的第一向量计算得到;其中,第一位置旋转与第二位置旋转均为在虚拟空间中的全局位置旋转。
具体的,比如当双手抓取目标物品时,在UE4中执行以下变量设置:
1、调用抓取函数WeightEnableOnePlayer;
2、判断PickupInfo.bPickup是否为false,若是,则继续执行该函数;
3、双手抓取目标物品:利用指针传入参数InputHandCollision将第一碰撞体HandCollision、第二碰撞体WeightsOtherHandCollision顺序传入抓取函数WeightEnableOnePlayer函数中;
4、设置第一位置旋转:WeightsBaseRotation设置为第一旋转值、将WeightsBaseLocation设置第一位置坐标,其中,第一位置旋转包括第一旋转值和第一位置坐标;
5、设置第二位置旋转:将WeightsBaseTwoCollisionVector设置为第一向量,并通过FindLookAtRotation函数以确定双手的第二旋转值、将WeightsBaseCollisionToThisVector设置为第二位置坐标,其中,第二位置旋转包括第二旋转值和二位置坐标;
6、抓取函数WeightEnableOnePlayer执行结束,PickupInfo.bPickUp变量设为true。
102、在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
本实施例中,每个预设周期,获取碰撞体抓取目标物体移动时的第三位置旋转,并根据碰撞体的第三位置旋转对目标物体的第四位置旋转进行转化,以调整目标物体的空间形态;第三位置旋转包括当前碰撞体的中心点的第三旋转值与第三位置坐标,用于确定当前碰撞体的空间显示状态与其中心点的位置,而第二旋转值由当前第一碰撞体到第二碰撞体的第二向量计算得到;其中,第二位置旋转为在虚拟空间中的全局位置旋转。值得注意的是,此处预设周期一般较短,在视觉感官上无法分辨其移动间隔,故可理解为根据碰撞体的位置旋转实时调整目标物体的实时旋转。
碰撞体与目标物体相对于抓取瞬间时,移动后的空间形态变化可用位置旋转变化值进行确定,位置旋转变化值包括位置坐标变化与旋转变化值,但此处只需通过碰撞体的旋转变化,即可将其转化为目标物体移动后的位置坐标与旋转值,以确定其空间形态。
具体的,比如在双手抓取目标物体移动时,在UE4中,对第三位置旋转进行以下设置:
1、将CurrentTwoCollisionVec设置为第二向量,并作为临时变量进行存储,并通过FindLookAtRotation函数以确定第三旋转值;
2、将CurrentCollisionLocation设置为第三位置坐标,并作为临时变量进行存储,其中,第三位置旋转包括第三旋转值和第三位置坐标;
并在UE4中,对于双手抓取目标物体移动时双手的旋转变化值进行以下计算:
1、调用更新函数UpdateWeightTransfrom;
2、将第二旋转值与第三旋转值输入更新函数UpdateWeightTransfrom中的相对旋转转换函数InverseTransformRotation;
3、计算出第一向量WeightsBaseTwoCollisionVector到第二向量CurrentTwoCollisionVec,即双手移动后的旋转变化值。
103、根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
本实施例中,将碰撞体的旋转变化值转化为目标物体的第四位置旋转,使得目标物体模拟现实情况跟随物体进行移动。第四位置旋转包括目标物体预计移动到的位置的第四位置坐标与第四旋转值,以用于确定目标物体移动后的空间现实形态与显示位置。
具体的,在UE4中,对目标物体的第四位置旋转进行以下计算:
1、将第一旋转值WeightsBaseRotation与旋转变化值输入更新函数UpdateWeightTransfrom中的组合函数ComposeRotators;
2、计算出第四旋转值;
3、将第三位置坐标CurrentCollisionLocation、第二位置坐标WeightsBaseCollisionToThisVector、旋转变化值输入更新函数UpdateWeightTransfrom中的相对坐标转换函数TransformLocation;
4、计算出第四位置坐标;
5、更新函数UpdateWeightTransfrom执行结束,将第四旋转值和第四位置坐标作为第四位置旋转。
104、基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
本实施例中,在碰撞体抓取目标物品进行移动时,通过碰撞体的旋转变化值确定了目标物体移动后的第四位置旋转,目标物品根据第四位置旋转进行空间形态与位置的展示。值得注意的是,虽通过碰撞体的旋转变化值确定了目标物体移动后的第四位置旋转,但由于两者计算时间间隔极短,肉眼不可见,故从视觉上形成碰撞体抓取着目标物体进行移动,而不会形成碰撞体先行,目标物体紧随其后的视觉效果。在UE4中,以旋转执行函数SetActorRotation设置目标物体进行旋转。
另外,在碰撞体丢弃目标物体时,执行步骤如下所示:
检测所述第一碰撞体或所述第二碰撞体是否与所述目标物体的碰撞框分离;
若所述第一碰撞体或所述第二碰撞体与所述目标物体的碰撞框分离,则将分离瞬间当前所述第一位置旋转设置为最终位置旋转;
以所述最终位置旋转为起点,对所述目标物体进行掉落仿真。
具体的,在UE4中,通过以下步骤完成双手对目标物体的掉落仿真:
1、当其中一只手与目标物体的碰撞框分离,则调用掉落函数WeightsDropOnePlayer;
2、将与预碰撞框分离的第一碰撞体HandCollision或第二碰撞体WeightsOtherHandCollision输入掉落函数WeightsDropOnePlayer中;
3、判断抓取函数WeightsEnableOnePlayer中,PickupInfo.bPickup是否为true;
4、若是,则判断抓取函数WeightsEnableOnePlayer中,指针传入参数InputHandCollision是否与PickupInfo.HandCollision或PickInfo.WeightsOtherHandCollision相同;
5、若是,则将PickupInfo.bPickup设置为false,将4中的PickupInfo.HandCollision或者PickInfo.WeightsOtherHandCollision设置为空,以模仿目标物体的掉落仿真。
本发明实施例中,通过将目标物体被碰撞体抓取瞬间获取目标物体的第一位置旋转与第二位置旋转,然后再碰撞体抓取目标物体移动时,再确定当前碰撞体的第三位置旋转,然后通过碰撞体的第二位置旋转与第三位置旋转,计算碰撞体从抓取瞬间到移动后的旋转变化值;最后将该旋转变化值转化为碰撞体的第四位置旋转,以跟随碰撞体进行移动,实现了基于虚幻引擎实现双手同时抓取物品的仿真,使物品抓取操作更贴近场景需求,扩展了物品抓取并移动的应用场景。
请参阅图2,本发明实施例中基于虚幻引擎的物体抓取仿真方法的第二个实施例包括:
201、判断所述碰撞体是否未抓取任何物品;
本实施例中,碰撞体抓取目标物体前,需确认第一碰撞体与第二碰撞体均未抓取任何物品,才能进行目标物体的抓取。
在UE4中,调用抓取检测函数PickUp,检测抓取检测函数PickUp中设置为true或false,若为true,则双手已抓取物品,若为false,则碰撞体未抓取任何物品。
202、若所述碰撞体未抓取任何物品,则检测所述碰撞体是否接触到目标物体所在的碰撞框;
本实施例中,若碰撞体未抓取任何物品,则通过执行碰撞检测,逐一筛查碰撞体接触到的所有物品所在的碰撞框,以确定物品中是否存在目标物品。
具体的,在UE4中,通过以下步骤检测双手是否接触到目标物品所在的碰撞框:
1、执行碰撞检测函数GetOverlapComponents:
(1)获取与双手接触的所有物品;
(2)检测当前最新物品的所在对象类是否为目标物品的对象类InteractableObject;
(3)若是,则确定当前最新物品为目标物品,并停止碰撞检测;
(4)若否,则跳转至(2),直到检测到当前最新物品的所在对象类为目标物品的对象类InteractableObject为止,则确定当前最新物品为目标物品,并停止碰撞检测。
2、停止碰撞检测函数GetOverlapComponents,确定目标物品对应的碰撞框。
203、若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作;
本实施例中,目标物体无法同时与双手分别进行铰链操作,故此处以双手为一个整体,通过双手的中心点与目标物体进行一对一的铰链;当双手与目标物体进行铰链操作之后,则可确定碰撞体与目标物体构成抓取动作。
具体的,对所述碰撞体与所述目标物体进行铰链操作包括:
判断所述目标物体是否未被其他碰撞体抓取;
若所述目标物体未被其他碰撞体抓取,则检测所述目标物体是否未被所述第一碰撞体或所述第二碰撞体抓取;
若所述目标物体未被所述第一碰撞体或所述第二碰撞体抓取,则根据所述第一碰撞体、所述第二碰撞体与所述目标物体的接触顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
若所述目标物体已被所述第一碰撞体或所述第二碰撞体抓取,则判断已对所述目标物体进行抓取的碰撞体是否与再次对所述目标物品进行抓取的碰撞体不同;
若已对所述目标物体进行抓取碰撞体与再次对所述目标物进行抓取的碰撞体不同,则根据抓取顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
当所述第一碰撞体、所述第二碰撞体与所述目标物体完成铰链操作时,确定所述碰撞体对所述目标物体构成抓取动作。
另外,在UE4中,如双手对目标物体构成抓取动作具体如下
1、调用抓取函数WeightEnableOnePlayer;
2、判断对象类InteractableObject中,PickupInfo.bPickup是否为false;
3、若是,则判断PickupInfo.HandCollision是否为空指针;
4、若是,则将PickupInfo.HandCollision设置为输入的InputHandCollision指针;否则判断PickupInfo.HandCollision与再次输入的双手的指针是否不同;
5、若是,则将第二碰撞体WeightsOtherHandCollision设置为InputHandCollision指针,使双手对目标物体构成抓取动作。
204、获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
205、在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
206、根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
207、基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
本发明实施例中,描述了检测碰撞体预进行抓取的目标物体的详细过程,使得碰撞体只获取权限内或者明确进行抓取的物品,而非与其他物品接触后主动或者被动地获取不应该获取的物品,增加抓取效率。
请参阅图3,本发明实施例中基于虚幻引擎的物体抓取仿真方法的第三个实施例包括:
301、获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
302、在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转;
具体的,所述第一位置旋转包括所述目标物体的第一旋转值与第一位置坐标,所述第二位置旋转包括所述碰撞体的中心点的第二旋转值与第二位置坐标,所述第三位置旋转包括当前所述碰撞体的中心点的第三旋转值与第三位置坐标;
其中,所述第二旋转值通过所述第一碰撞体到所述第二碰撞体的第一向量计算得到,所述第三旋转值通过当前所述第一碰撞体到所述第二碰撞体的第二向量计算得到。
303、根据所述第二旋转值与所述第三旋转值,构建所述碰撞体移动时位置旋转变化的相对旋转转换变量;
本实施例中,在UE4中,相对旋转转换变量transform在相对旋转转换函数InverseTransformRotation函数,通过设置全局旋转值A,输入全局旋转值B,然后将全局旋转值B转化为A至B的旋转变化值,其中,旋转变化值为局部的相对旋转值;此处先对相对旋转转换变量transform进行初始化,然后将全局旋转值A设置为第一向量WeightsBaseTwoCollisionVector对应的第二旋转值,将全局旋转值B输入为第二向量CurrentTwoCollisionVec对应的第四旋转值,初步构建完成相对旋转转换变量。
304、根据所述相对旋转转换变量,采用预置相对旋转转换算法,计算所述碰撞体的旋转变化值;
本实施例中,相对旋转转换算法采用相对旋转转换函InverseTransformRotation函数,然后通过该函数内的相对旋转变量,以上一步骤设置的第一向量WeightsBaseTwoCollisionVector对应的第二旋转值,输入的第二向量CurrentTwoCollisionVec对应的第四旋转值,计算得到第一向量WeightsBaseTwoCollisionVector到第二向量CurrentTwoCollisionVec的增量旋转,即双手从抓取瞬间到移动后的位置旋转的旋转变化值。
305、根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
306、基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
本发明实施例中,详细介绍了碰撞体的旋转变化值在UE4中的计算过程,以供后续目标物体根据该旋转变化值,计算其移动后的第四位置旋转,以真实模拟现实情况物体跟随双手移动时的空间形态。
请参阅图4,本发明实施例中基于虚幻引擎的物体抓取仿真方法的第四个实施例包括:
401、获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
402、在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转;
具体的,所述第一位置旋转包括所述目标物体的第一旋转值与第一位置坐标,所述第二位置旋转包括所述碰撞体的中心点的第二旋转值与第二位置坐标,所述第三位置旋转包括当前所述碰撞体的中心点的第三旋转值与第三位置坐标;
其中,所述第二旋转值通过所述第一碰撞体到所述第二碰撞体的第一向量计算得到,所述第三旋转值通过当前所述第一碰撞体到所述第二碰撞体的第二向量计算得到。
403、根据所述第二旋转值与所述第三旋转值,构建所述碰撞体移动时位置旋转变化的相对旋转转换变量;
404、根据所述相对旋转转换变量,采用预置相对旋转转换算法,计算所述碰撞体的旋转变化值;
405、对所述第一旋转值与所述旋转变化值进行相加,得到当前所述目标物体预计移动后的第四旋转值;
本实施例中,由于目标物品与双手的中心点的相对位置关系固定不变,双手的旋转变化值等同于其中心点的旋转变化值,故此处只需对第一旋转值与旋转变化值进行相加,即可得到目标物体预计移动后的第四旋转值。值得注意的是,双手抓取目标物体移动后,双手与目标物体的第三位置旋转与第四位置旋转均以抓取瞬间的第一位置旋转、第二位置旋转作为参照进行计算。
具体的在UE4中,通过组合函数ComposeRotators函数,让第一旋转值WeightsBaseRotation与双手的旋转变化值进行相加即可得到目标物体移动后的第四旋转值。
406、根据所述第一位置坐标与所述第二位置坐标,设置所述中心点到所述目标物的第三向量,以及根据所述第二位置坐标与所述旋转变化值,构建所述碰撞体抓取所述目标物体移动时所述目标物体的相对坐标转换变量;
本实施例中,通过目标物体的第一位置坐标与双手之间的中心点的第二位置坐标,确定前者到后者的第三向量并进行设置。在UE4中,将第二位置坐标WeightsBaseCollisionToThisVector设置为第三向量;而通过对相对坐标转换变量transform T进行初始化,并设置旋转值为旋转变化值,设置位置坐标为第三位置坐标CurrentCollisionLocation,即可得到相对坐标转换变量transform T。
407、根据所述第三向量与所述相对坐标转换变量,采用预置相对坐标转换算法,计算当前所述目标物体预计移动到的第四位置坐标;
本实施例中,在UE4中,调用相对坐标转换函数TransformLocation,然后将第二位置坐标WeightsBaseCollisionToThisVector与T输入该函数中,即可得到目标物体的第四位置坐标,其中,所述第四位置坐标与第四旋转值都为全局位置旋转。
408、根据所述第四位置坐标与所述第四旋转值,得到所当前所述目标物体预计移动到的第四位置旋转;
本实施例中,第四位置坐标与第四旋转值共同构成目标物体随双手移动的第四位置旋转,以用于确定目标物体在移动后的空间形态显示与位置显示。
409、根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
410、基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
本发明实施例中,详细描述了通过碰撞体的旋转变化值,计算目标物体的第四位置旋转,通过固定目标物体与碰撞体中心点的相对位置旋转,目标物体移动后的第四位置旋转跟随着碰撞体的旋转变化值进行变化,可更真实仿真现实情况,双手抓取物品进行移动的空间形态展示。
上面对本发明实施例中基于虚幻引擎的物体抓取仿真方法进行了描述,下面对本发明实施例中基于虚幻引擎的物体抓取仿真装置进行描述,请参阅图5,本发明实施例中基于虚幻引擎的物体抓取仿真装置一个实施例包括:
获取模块501,用于获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
第一计算模块502,用于在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
第二计算模块503,用于根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
控制模块504,用于基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
本发明实施例中,通过将目标物体被碰撞体抓取瞬间获取目标物体的第一位置旋转与第二位置旋转,然后再碰撞体抓取目标物体移动时,再确定当前碰撞体的第三位置旋转,然后通过碰撞体的第二位置旋转与第三位置旋转,计算碰撞体从抓取瞬间到移动后的旋转变化值;最后将该旋转变化值转化为碰撞体的第四位置旋转,以跟随碰撞体进行移动,在虚拟现实世界中,实现双手同时抓取物品的仿真过程。
请参阅图6,本发明实施例中基于虚幻引擎的物体抓取仿真装置的另一个实施例包括:
获取模块501,用于获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
第一计算模块502,用于在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
第二计算模块503,用于根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
控制模块504,用于基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
具体的,所述物体抓取仿真装置还包括抓取动作检测模块505,所述抓取动作检测模块505用于:
判断所述碰撞体是否未抓取任何物品;
若所述碰撞体未抓取任何物品,则检测所述碰撞体是否接触到目标物体所在的碰撞框;
若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作。
具体的,所述抓取动作检测模块505包括铰链操作单元,所述铰链操作单元用于:
若所述碰撞体接触到所述碰撞框,则判断所述目标物体是否未被其他碰撞体抓取;
若所述目标物体未被其他碰撞体抓取,则检测所述目标物体是否未被所述第一碰撞体或所述第二碰撞体抓取;
若所述目标物体未被所述第一碰撞体或所述第二碰撞体抓取,则根据所述第一碰撞体、所述第二碰撞体与所述目标物体的接触顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
若所述目标物体已被所述第一碰撞体或所述第二碰撞体抓取,则判断已对所述目标物体进行抓取的碰撞体是否与再次对所述目标物品进行抓取的碰撞体不同;
若已对所述目标物体进行抓取碰撞体与再次对所述目标物进行抓取的碰撞体不同,则根据抓取顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
当所述第一碰撞体、所述第二碰撞体与所述目标物体完成铰链操作时,确定所述碰撞体对所述目标物体构成抓取动作。
具体的,所述第一位置旋转包括所述目标物体的第一旋转值与第一位置坐标,所述第二位置旋转包括所述碰撞体的中心点的第二旋转值与第二位置坐标,所述第三位置旋转包括当前所述碰撞体的中心点的第三旋转值与第三位置坐标;
其中,所述第二旋转值通过所述第一碰撞体到所述第二碰撞体的第一向量计算得到,所述第三旋转值通过当前所述第一碰撞体到所述第二碰撞体的第二向量计算得到。
具体的,所述第一计算模块502还包括:
构建单元5021,用于根据所述第二旋转值与所述第三旋转值,构建所述碰撞体移动时位置旋转变化的相对旋转转换变量;
第一算法计算单元5022,用于根据所述相对旋转转换变量,采用预置相对旋转转换算法,计算所述碰撞体的旋转变化值。
具体的,所述第二计算模块503还包括:
相加单元5031,用于对所述第一旋转值与所述旋转变化值进行相加,得到当前所述目标物体预计移动后的第四旋转值;
设置与构建单元5032,用于根据所述第一位置坐标与所述第二位置坐标,设置所述中心点到所述目标物的第三向量,以及根据所述第二位置坐标与所述旋转变化值,构建所述碰撞体抓取所述目标物体移动时所述目标物体的相对坐标转换变量;
第二算法计算单元5033,用于根据所述第三向量与所述相对坐标转换变量,采用预置相对坐标转换算法,计算当前所述目标物体预计移动到的第四位置坐标;
组合单元5034,用于根据所述第四位置坐标与所述第四旋转值,得到所当前所述目标物体预计移动到的第四位置旋转。
具体的,所述物体抓取仿真装置还包括掉落仿真模块506,所述掉落仿真模块506还包括:
检测单元5061,用于检测所述第一碰撞体或所述第二碰撞体是否与所述目标物体的碰撞框分离;
定位单元5062,用于若所述第一碰撞体或所述第二碰撞体与所述目标物体的碰撞框分离,则将分离瞬间当前所述第一位置旋转设置为最终位置旋转;
掉落仿真单元5063,用于以所述最终位置旋转为起点,对所述目标物体进行掉落仿真。
本发明实施例中,本发明实施例中,通过将目标物体被碰撞体抓取瞬间获取目标物体的第一位置旋转与第二位置旋转,然后再碰撞体抓取目标物体移动时,再确定当前碰撞体的第三位置旋转,然后通过碰撞体的第二位置旋转与第三位置旋转,计算碰撞体从抓取瞬间到移动后的旋转变化值;最后将该旋转变化值转化为碰撞体的第四位置旋转,以跟随碰撞体进行移动,在虚拟现实世界中,实现双手同时抓取物品的仿真过程。其中,还具体描述了检测碰撞体预进行抓取的目标物体的详细过程,使得碰撞体只获取权限内或者明确进行抓取的物品,而非与其他物品接触后主动或者被动地获取不应该获取的物品,增加抓取效率;然后详细介绍了碰撞体的旋转变化值在UE4中的计算过程,以供后续目标物体根据该旋转变化值,计算其移动后的第四位置旋转,以真实模拟现实情况物体跟随双手移动时的空间形态;接着详细描述了通过碰撞体的旋转变化值,计算目标物体的第四位置旋转,通过固定目标物体与碰撞体中心点的相对位置旋转,目标物体移动后的第四位置旋转跟随着碰撞体的旋转变化值进行变化,可更真实仿真现实情况,双手抓取物品进行移动的空间形态展示。
上面图5和图6从模块化功能实体的角度对本发明实施例中的基于虚幻引擎的物体抓取仿真装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于虚幻引擎的物体抓取仿真设备进行详细描述。
图7是本发明实施例提供的一种基于虚幻引擎的物体抓取仿真设备的结构示意图,该基于虚幻引擎的物体抓取仿真设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于虚幻引擎的物体抓取仿真设备700中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在基于虚幻引擎的物体抓取仿真设备700上执行存储介质730中的一系列指令操作。
基于虚幻引擎的物体抓取仿真设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和/或,一个或一个以上操作***731,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图7示出的基于虚幻引擎的物体抓取仿真设备结构并不构成对基于虚幻引擎的物体抓取仿真设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于虚幻引擎的物体抓取仿真方法的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于虚幻引擎的物体抓取仿真方法,其特征在于,所述物体抓取仿真方法包括:
获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
2.根据权利要求1所述的物体抓取仿真方法,其特征在于,在所述获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转之前,还包括:
判断所述碰撞体是否未抓取任何物品;
若所述碰撞体未抓取任何物品,则检测所述碰撞体是否接触到目标物体所在的碰撞框;
若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作。
3.根据权利要求2所述的物体抓取仿真方法,其特征在于,所述若所述碰撞体接触到所述碰撞框,则对所述碰撞体与所述目标物体进行铰链操作,以确定所述碰撞体对所述目标物体构成抓取动作包括:
若所述碰撞体接触到所述碰撞框,则判断所述目标物体是否未被其他碰撞体抓取;
若所述目标物体未被其他碰撞体抓取,则检测所述目标物体是否未被所述第一碰撞体或所述第二碰撞体抓取;
若所述目标物体未被所述第一碰撞体或所述第二碰撞体抓取,则根据所述第一碰撞体、所述第二碰撞体与所述目标物体的接触顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
若所述目标物体已被所述第一碰撞体或所述第二碰撞体抓取,则判断已对所述目标物体进行抓取的碰撞体是否与再次对所述目标物品进行抓取的碰撞体不同;
若已对所述目标物体进行抓取碰撞体与再次对所述目标物进行抓取的碰撞体不同,则根据抓取顺序,分别将所述第一碰撞体、所述第二碰撞体与所述目标物体进行铰链操作;
当所述第一碰撞体、所述第二碰撞体与所述目标物体完成铰链操作时,确定所述碰撞体对所述目标物体构成抓取动作。
4.根据权利要求1所述的物体抓取仿真方法,其特征在于,所述第一位置旋转包括所述目标物体的第一旋转值与第一位置坐标,所述第二位置旋转包括所述碰撞体的中心点的第二旋转值与第二位置坐标,所述第三位置旋转包括当前所述碰撞体的中心点的第三旋转值与第三位置坐标;
其中,所述第二旋转值通过所述第一碰撞体到所述第二碰撞体的第一向量计算得到,所述第三旋转值通过当前所述第一碰撞体到所述第二碰撞体的第二向量计算得到。
5.根据权利要求4所述的物体抓取仿真方法,其特征在于,所述根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值包括:
根据所述第二旋转值与所述第三旋转值,构建所述碰撞体移动时位置旋转变化的相对旋转转换变量;
根据所述相对旋转转换变量,采用预置相对旋转转换算法,计算所述碰撞体的旋转变化值。
6.根据权利要求5所述的物体抓取仿真方法,其特征在于,所述根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转包括:
对所述第一旋转值与所述旋转变化值进行相加,得到当前所述目标物体预计移动后的第四旋转值;
根据所述第一位置坐标与所述第二位置坐标,设置所述中心点到所述目标物的第三向量,以及根据所述第二位置坐标与所述旋转变化值,构建所述碰撞体抓取所述目标物体移动时所述目标物体的相对坐标转换变量;
根据所述第三向量与所述相对坐标转换变量,采用预置相对坐标转换算法,计算当前所述目标物体预计移动到的第四位置坐标;
根据所述第四位置坐标与所述第四旋转值,得到所当前所述目标物体预计移动到的第四位置旋转。
7.根据权利要求1-6中任一项所述的物体抓取仿真方法,其特征在于,在所述基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动之后,还包括:
检测所述第一碰撞体或所述第二碰撞体是否与所述目标物体的碰撞框分离;
若所述第一碰撞体或所述第二碰撞体与所述目标物体的碰撞框分离,则将分离瞬间当前所述第一位置旋转设置为最终位置旋转;
以所述最终位置旋转为起点,对所述目标物体进行掉落仿真。
8.一种基于虚幻引擎的物体抓取仿真装置,其特征在于,所述基于虚幻引擎的物体抓取仿真装置包括:
获取模块,用于获取碰撞体发生抓取动作时目标物体的第一位置旋转以及所述碰撞体的第二位置旋转,所述碰撞体包括第一碰撞体与第二碰撞体;
第一计算模块,用于在所述碰撞体抓取所述目标物体移动时,获取当前所述碰撞体的第三位置旋转,并根据所述第二位置旋转与所述第三位置旋转,计算所述碰撞体的旋转变化值;
第二计算模块,用于根据所述第一位置旋转与所述旋转变化值,计算当前所述目标物体预计移动到的第四位置旋转;
控制模块,用于基于所述第四位置旋转,控制所述目标物品跟随所述第一碰撞体、所述第二碰撞体移动。
9.一种基于虚幻引擎的物体抓取仿真设备,其特征在于,所述物体抓取仿真设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述物体抓取仿真设备执行如权利要求1-7中任一项所述的物体抓取仿真方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的物体抓取仿真方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010630560.0A CN111784850B (zh) | 2020-07-03 | 2020-07-03 | 基于虚幻引擎的物体抓取仿真方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010630560.0A CN111784850B (zh) | 2020-07-03 | 2020-07-03 | 基于虚幻引擎的物体抓取仿真方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111784850A true CN111784850A (zh) | 2020-10-16 |
CN111784850B CN111784850B (zh) | 2024-02-02 |
Family
ID=72758358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010630560.0A Active CN111784850B (zh) | 2020-07-03 | 2020-07-03 | 基于虚幻引擎的物体抓取仿真方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111784850B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112121410A (zh) * | 2020-10-22 | 2020-12-25 | 深圳市瑞立视多媒体科技有限公司 | 一种基于vr游戏的装备入柜的方法 |
CN113041621A (zh) * | 2021-03-02 | 2021-06-29 | 深圳市瑞立视多媒体科技有限公司 | 虚拟现实游戏中工具回收方法、装置和计算机设备 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955295A (zh) * | 2014-04-17 | 2014-07-30 | 北京航空航天大学 | 一种基于数据手套和物理引擎的虚拟手的实时抓取方法 |
US20160239080A1 (en) * | 2015-02-13 | 2016-08-18 | Leap Motion, Inc. | Systems and methods of creating a realistic grab experience in virtual reality/augmented reality environments |
CN106582012A (zh) * | 2016-12-07 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 一种vr场景下的攀爬操作处理方法和装置 |
US20170329488A1 (en) * | 2016-05-10 | 2017-11-16 | Google Inc. | Two-handed object manipulations in virtual reality |
CN107515674A (zh) * | 2017-08-08 | 2017-12-26 | 山东科技大学 | 一种基于虚拟现实与增强现实的采矿操作多交互实现方法 |
CN107773978A (zh) * | 2017-10-26 | 2018-03-09 | 广州市雷军游乐设备有限公司 | 控制抓取道具模型的方法、装置、终端设备及存储介质 |
CN107993545A (zh) * | 2017-12-15 | 2018-05-04 | 天津大学 | 基于虚拟现实技术的小儿针灸训练仿真***及仿真方法 |
CN108227928A (zh) * | 2018-01-10 | 2018-06-29 | 三星电子(中国)研发中心 | 一种虚拟现实场景中的拾取方法和装置 |
CN108958471A (zh) * | 2018-05-17 | 2018-12-07 | 中国航天员科研训练中心 | 虚拟空间中虚拟手操作物体的仿真方法及*** |
CN108983978A (zh) * | 2018-07-20 | 2018-12-11 | 北京理工大学 | 虚拟手控制方法及装置 |
CN109358748A (zh) * | 2018-09-30 | 2019-02-19 | 深圳仓谷创新软件有限公司 | 一种用手与手机ar虚拟物体交互的设备和方法 |
CN109690450A (zh) * | 2017-11-17 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Vr场景下的角色模拟方法和终端设备 |
CN109785420A (zh) * | 2019-03-19 | 2019-05-21 | 厦门市思芯微科技有限公司 | 一种基于Unity引擎的3D场景拾色方法及*** |
CN110431513A (zh) * | 2018-01-25 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 媒体内容发送方法、装置及存储介质 |
US20190366539A1 (en) * | 2017-02-28 | 2019-12-05 | Siemens Product Lifecycle Management Software Inc. | System and method for determining grasping positions for two-handed grasps of industrial objects |
CN110598297A (zh) * | 2019-09-04 | 2019-12-20 | 浙江工业大学 | 一种基于零件几何变换信息的虚拟装配方法 |
US10607413B1 (en) * | 2015-09-08 | 2020-03-31 | Ultrahaptics IP Two Limited | Systems and methods of rerendering image hands to create a realistic grab experience in virtual reality/augmented reality environments |
CN111177888A (zh) * | 2019-12-09 | 2020-05-19 | 武汉光庭信息技术股份有限公司 | 一种仿真场景碰撞检测方法及*** |
-
2020
- 2020-07-03 CN CN202010630560.0A patent/CN111784850B/zh active Active
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955295A (zh) * | 2014-04-17 | 2014-07-30 | 北京航空航天大学 | 一种基于数据手套和物理引擎的虚拟手的实时抓取方法 |
US20160239080A1 (en) * | 2015-02-13 | 2016-08-18 | Leap Motion, Inc. | Systems and methods of creating a realistic grab experience in virtual reality/augmented reality environments |
CN107430437A (zh) * | 2015-02-13 | 2017-12-01 | 厉动公司 | 在虚拟现实/增强现实环境中创建真实的抓取体验的***和方法 |
US10607413B1 (en) * | 2015-09-08 | 2020-03-31 | Ultrahaptics IP Two Limited | Systems and methods of rerendering image hands to create a realistic grab experience in virtual reality/augmented reality environments |
US20170329488A1 (en) * | 2016-05-10 | 2017-11-16 | Google Inc. | Two-handed object manipulations in virtual reality |
CN106582012A (zh) * | 2016-12-07 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 一种vr场景下的攀爬操作处理方法和装置 |
US20190366539A1 (en) * | 2017-02-28 | 2019-12-05 | Siemens Product Lifecycle Management Software Inc. | System and method for determining grasping positions for two-handed grasps of industrial objects |
CN107515674A (zh) * | 2017-08-08 | 2017-12-26 | 山东科技大学 | 一种基于虚拟现实与增强现实的采矿操作多交互实现方法 |
CN107773978A (zh) * | 2017-10-26 | 2018-03-09 | 广州市雷军游乐设备有限公司 | 控制抓取道具模型的方法、装置、终端设备及存储介质 |
CN109690450A (zh) * | 2017-11-17 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Vr场景下的角色模拟方法和终端设备 |
CN107993545A (zh) * | 2017-12-15 | 2018-05-04 | 天津大学 | 基于虚拟现实技术的小儿针灸训练仿真***及仿真方法 |
CN108227928A (zh) * | 2018-01-10 | 2018-06-29 | 三星电子(中国)研发中心 | 一种虚拟现实场景中的拾取方法和装置 |
CN110431513A (zh) * | 2018-01-25 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 媒体内容发送方法、装置及存储介质 |
CN108958471A (zh) * | 2018-05-17 | 2018-12-07 | 中国航天员科研训练中心 | 虚拟空间中虚拟手操作物体的仿真方法及*** |
CN108983978A (zh) * | 2018-07-20 | 2018-12-11 | 北京理工大学 | 虚拟手控制方法及装置 |
CN109358748A (zh) * | 2018-09-30 | 2019-02-19 | 深圳仓谷创新软件有限公司 | 一种用手与手机ar虚拟物体交互的设备和方法 |
CN109785420A (zh) * | 2019-03-19 | 2019-05-21 | 厦门市思芯微科技有限公司 | 一种基于Unity引擎的3D场景拾色方法及*** |
CN110598297A (zh) * | 2019-09-04 | 2019-12-20 | 浙江工业大学 | 一种基于零件几何变换信息的虚拟装配方法 |
CN111177888A (zh) * | 2019-12-09 | 2020-05-19 | 武汉光庭信息技术股份有限公司 | 一种仿真场景碰撞检测方法及*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112121410A (zh) * | 2020-10-22 | 2020-12-25 | 深圳市瑞立视多媒体科技有限公司 | 一种基于vr游戏的装备入柜的方法 |
CN112121410B (zh) * | 2020-10-22 | 2024-04-12 | 深圳市瑞立视多媒体科技有限公司 | 一种基于vr游戏的装备入柜的方法 |
CN113041621A (zh) * | 2021-03-02 | 2021-06-29 | 深圳市瑞立视多媒体科技有限公司 | 虚拟现实游戏中工具回收方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111784850B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111784850A (zh) | 基于虚幻引擎的物体抓取仿真方法及相关设备 | |
CN107694093B (zh) | 在游戏中控制道具模型抓取方法、装置、设备及存储介质 | |
CN114972958B (zh) | 关键点检测方法、神经网络的训练方法、装置和设备 | |
CN112206515B (zh) | 游戏物体状态切换方法、装置、设备及存储介质 | |
JP2019121388A (ja) | 仮想現実の長距離相互作用のためのシステム及び方法 | |
Hilman et al. | Virtual hand: VR hand controller using IMU and flex sensor | |
CN110929422A (zh) | 一种机器人集群仿真方法及装置 | |
CN113119104B (zh) | 机械臂控制方法、机械臂控制装置、计算设备及*** | |
CN107145706B (zh) | 虚拟现实vr设备融合算法性能参数的评估方法及装置 | |
CN113870418B (zh) | 虚拟物品抓取方法及装置、存储介质、计算机设备 | |
CN116978112A (zh) | 运动检测及其虚拟操作方法、***及存储介质和终端设备 | |
CN115861496A (zh) | 基于动捕***的电力场景虚拟人体驱动方法及装置 | |
CN117033954A (zh) | 一种数据处理方法及相关产品 | |
CN112276947B (zh) | 一种机器人动作模仿方法、装置、设备及存储介质 | |
CN116069157A (zh) | 虚拟对象显示方法、装置、电子设备及可读介质 | |
Han et al. | Multi-sensors based 3D gesture recognition and interaction in virtual block game | |
CN111310347B (zh) | 仿真灭火器松动干粉的方法、装置、设备及存储介质 | |
Gordón et al. | Autonomous robot KUKA YouBot navigation based on path planning and traffic signals recognition | |
Gomes et al. | Deep Reinforcement learning applied to a robotic pick-and-place application | |
CN116824014B (zh) | 用于虚拟形象的数据生成方法、装置、电子设备、介质 | |
CN109948579B (zh) | 一种人体肢体语言识别方法及*** | |
Majeed et al. | Trajectory Controller Building for the (KUKA, JACO) simulated manipulator robot arm Using ROS | |
Li et al. | Application and research of kinect motion sensing technology on substation simulation training system | |
CN111009022B (zh) | 一种模型动画生成的方法和装置 | |
CN116736976A (zh) | 基于意图理解的虚实映射方法及装置、介质、电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |