CN113703570B - 基于vr环境的虚拟手模型构建方法及系统 - Google Patents
基于vr环境的虚拟手模型构建方法及系统 Download PDFInfo
- Publication number
- CN113703570B CN113703570B CN202110940377.5A CN202110940377A CN113703570B CN 113703570 B CN113703570 B CN 113703570B CN 202110940377 A CN202110940377 A CN 202110940377A CN 113703570 B CN113703570 B CN 113703570B
- Authority
- CN
- China
- Prior art keywords
- model
- virtual
- skeleton
- skeleton model
- virtual hand
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例公开了一种基于VR环境的虚拟手模型构建方法及系统,所述方法包括:步骤1:构建虚拟手的手指骨骼模型B;步骤2:构建一个虚拟手的手指骨骼模型T,建立非穿透约束;步骤3:建模得到虚拟手的皮肤模型;步骤4:将用户的手部姿态输入应用到骨骼模型T中;步骤5:判断虚拟手是否处于抓取状态;步骤6:动态调整软体的刚度值;步骤7:动态调整虚拟手的软体的摩擦系数;步骤8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。本发明可以使抓取更加稳定,针对用户抓取时无法收到力反馈而产生的穿透、剧烈碰撞问题,同时可以避免出现软体的过度塌陷和弹出的问题。
Description
技术领域
本发明涉及虚拟交互技术领域,尤其涉及一种基于VR环境的虚拟手模型构建方法及系统。
背景技术
手是人类与世界交互的主要工具之一,因此在虚拟现实环境中,模拟稳定的手部模型用于人机交互是非常重要的。通过跟踪用户真实手的运动,将真实手的运动姿态映射到虚拟空间的虚拟手上,并让虚拟手在与虚拟物体接触时做出反应,可以使交互更加真实、自然。目前建立虚拟手模型主要有刚体模拟和软体模拟两种方法。用刚体模拟虚拟手,即虚拟手建模为由刚性指骨制成的铰接体,用摩擦锥法、惩罚法或弹簧阻尼器等方法制定约束,使虚拟手产生合理的抓取行为。刚体模拟计算效率较高,但刚性手指与物体接触时接触面积小,抓握比较困难,所以人们更倾向于用软体模拟虚拟手。柔软的手指和物体接触时,接触面会快速膨胀,只要为其中每个接触点建立精确的摩擦模型,就能使抓握更加稳定。
刚体在与虚拟物体接触时接触面积小,使刚体模拟的虚拟手抓取困难且不稳定。目前现有技术的解决方法是使用数据驱动的方法(如HTC Vive、Occulus Rift),从示例中学习来模拟手部的变形,随后直接将抓取的物体绑定到虚拟手上来移动和旋转物体。虽然此方法可以实现抓取和释放动作的动画,但缺乏真实性和准确性。
使用软体模拟虚拟手能使抓握更加稳定,但同时也会增加接触点的数量,因而系统求解的复杂度也随之增加,并且在抓握力过大的情况下,会出现软体过度塌陷甚至弹出的现象。
另外,与真实环境下的手抓取物体不同,虚拟手在抓取虚拟物体时,虚拟手的表面与虚拟对象的表面接触不会给用户力反馈,容易发生手与物体互相穿透的现象。
发明内容
本发明实施例所要解决的技术问题在于,提供一种基于VR环境的虚拟手模型构建方法及系统,以保证虚拟手模型不会过度塌陷和弹出,同时防止虚拟手和虚拟物体相互穿透。
为了解决上述技术问题,本发明实施例提出了一种基于VR环境的虚拟手模型构建方法,包括:
步骤1:根据手的生理结构,使用Unity3D引擎构建虚拟手的手指骨骼模型B,手指骨骼模型B由胶囊体制成的铰接体组成;
步骤2:在同一场景中,构建一个虚拟手的手指骨骼模型T,骨骼模型T与骨骼模型B形状、大小一致,但不与场景中的物体交互,骨骼模型B通过一定的约束连接到骨骼模型T,如果模型骨骼B处于非接触的状态,则骨骼模型B与骨骼模型T重合;当骨骼模型T由于跟随设备的位姿穿透物体时,骨骼模型B仍然位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透;
步骤3:使用Blender建模得到虚拟手的皮肤模型,在所述皮肤模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼模型B上;
步骤4:用户与虚拟环境交互时,将用户的手部姿态输入应用到骨骼模型T中;
步骤5:判断虚拟手是否处于抓取状态,当虚拟物体处于被抓住的状态时,如果虚拟骨骼模型B根据用户的手部姿态的发生移动和旋转,则控制虚拟物体跟随骨骼模型B进行移动和旋转,使物体移动和旋转到相应的位置;
步骤6:根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值;
步骤7:根据调整之后的刚度值计算软体粒子的位置,动态调整虚拟手的软体的摩擦系数;
步骤8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
进一步地,步骤2中,采用以下算法计算:
记xT,xB分别为骨骼模型T和骨骼模型B的质心,mB为骨骼模型B的质量,Δt为当前帧与上一帧的时间间隔,位置误差CB=xB-xT;
当T处于非接触状态时,
当T处于接触状态时,
如果B在时刻t0恰好与虚拟物体A在点P接触,记xA为虚拟物体A的质心,Pa和Pb分别是A和B上的点,满足Pa(t0)=P=Pb(t0),则定义向量D=Pb-xB,D’=Pa-xA;
如果B处于非接触状态或与虚拟物体互相穿透,则定义C=Pb-Pa,B的位置约束为C=0,Pb对时间t微分可以得到点Pb的速度
即
为了使B满足位置约束C=0,令
记
则得到
JV+b=0;
点-面、点-线和点-点接触只产生一个接触点;而线-面、线-线和面-面接触则会形成接触区域;设接触点的数量为n,则得到n个约束:
对其求解即可得到虚拟手指骨骼处在合理位置的约束;向手指骨骼施加力:
F=-kmBCB;
最终使手指骨骼得到合理的位置更新。
进一步地,步骤3中,在模型的表面网格上生成一组粒子Xi,其中i=1,…,l;记粒子的质量为mi,粒子的动摩擦系数为μk,静摩擦系数为μs,初始位置为
在粒子发生位移、旋转后,粒子回到目标位置gi,旋转矩阵R满足:
gi=Rqi+xc;
令
∑imi||Aqi-pi||2;
取最小值,得最优变换
其中α代表刚度值。
进一步地,步骤6中,根据粒子相对质心的位置和虚拟手的速度,动态调整刚度值的大小;定义Δxi=||xc-xi||,Δxmax=max{Δxi,i=1,…,l};则粒子的刚度
其中
进一步地,步骤6中,每个粒子与接触物体的动摩擦系数μk和静摩擦系数μs与相对距离CB成正相关,令
μs=1.5μk。
进一步地,步骤8之后还包括放开步骤:
在用户主动放下物体时或抓取时的摩擦力不足导致物体滑落时,放开物体。
相应地,本发明实施例还提供了一种基于VR环境的虚拟手模型构建系统,包括:
模块1:根据手的生理结构,使用Unity3D引擎构建虚拟手的手指骨骼模型B,手指骨骼模型B由胶囊体制成的铰接体组成;
模块2:在同一场景中,构建一个虚拟手的手指骨骼模型T,骨骼模型T与骨骼模型B形状、大小一致,但不与场景中的物体交互,骨骼模型B通过一定的约束连接到骨骼模型T,如果模型骨骼B处于非接触的状态,则骨骼模型B与骨骼模型T重合;当骨骼模型T由于跟随设备的位姿穿透物体时,骨骼模型B仍然位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透;
模块3:使用Blender建模得到虚拟手的皮肤模型,在所述皮肤模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼模型B上;
模块4:用户与虚拟环境交互时,将用户的手部姿态输入应用到骨骼模型T中;
模块5:判断虚拟手是否处于抓取状态,当虚拟物体处于被抓住的状态时,如果虚拟骨骼模型B根据用户的手部姿态的发生移动和旋转,则控制虚拟物体跟随骨骼模型B进行移动和旋转,使物体移动和旋转到相应的位置;
模块6:根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值;
模块7:根据调整之后的刚度值计算软体粒子的位置,动态调整虚拟手的软体的摩擦系数;
模块8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
进一步地,模块2中,采用以下算法计算:
记xT,xB分别为骨骼模型T和骨骼模型B的质心,mB为骨骼模型B的质量,Δt为当前帧与上一帧的时间间隔,位置误差CB=xB-xT;
当T处于非接触状态时,
当T处于接触状态时,
如果B在时刻t0恰好与虚拟物体A在点P接触,记xA为虚拟物体A的质心,Pa和Pb分别是A和B上的点,满足Pa(t0)=P=Pb(t0),则定义向量D=Pb–xB,D’=Pa–xA;
如果B处于非接触状态或与虚拟物体互相穿透,则定义C=Pb-Pa,B的位置约束为C=0,Pb对时间t微分可以得到点Pb的速度
即
为了使B满足位置约束C=0,令
记
则得到
JV+b=0;
点-面、点-线和点-点接触只产生一个接触点;而线-面、线-线和面-面接触则会形成接触区域;设接触点的数量为n,则得到n个约束:
对其求解即可得到虚拟手指骨骼处在合理位置的约束;向手指骨骼施加力:
F=-kmBCB;
最终使手指骨骼得到合理的位置更新。
进一步地,模块3中,在模型的表面网格上生成一组粒子Xi,其中i=1,…,l;
记粒子的质量为mi,粒子的动摩擦系数为μk,静摩擦系数为μs,初始位置为实时位置为xi,软体初始的质心为定义软体初始质心与手指骨骼质心的位置偏差xc=xB+φ,初始时粒子相对质心的位置偏差当前时刻粒子相对xc的位置偏差pi=xi-xc;
在粒子发生位移、旋转后,粒子回到目标位置gi,旋转矩阵R满足:
gi=Rqi+xc;
令
∑imi||Aqi-pi||2;
取最小值,得最优变换
其中α代表刚度值。
进一步地,模块6中,根据粒子相对质心的位置和虚拟手的速度,动态调整刚度值的大小;定义Δxi=||xc-xi||,Δxmax=max{Δxi,i=1,…,l};则粒子的刚度
其中
进一步地,模块6中,每个粒子与接触物体的动摩擦系数μk和静摩擦系数μs与相对距离CB成正相关,令
μs=1.5μk。
进一步地,还包括放开模块:
在用户主动放下物体时或抓取时的摩擦力不足导致物体滑落时,放开物体。
本发明的虚拟手模型能够在VR虚拟环境中实现灵巧、稳定抓取;该模型由刚体和软体组合而成,刚体模拟指骨,软体模拟指垫;该模型既能保证足够的接触面以增加摩擦,又能保证虚拟手模型不会过度塌陷和弹出,还可以防止虚拟手和虚拟物体相互穿透;本发明的动态调整软体刚度值和摩擦系数的方法,可以使抓取更加稳定,针对用户抓取时无法收到力反馈而产生的穿透、剧烈碰撞问题,本发明提出的约束方法可以保证不会出现虚拟物体和虚拟手互相穿透和剧烈碰撞的问题,同时可以避免出现软体的过度塌陷和弹出的问题。
附图说明
图1是本发明实施例的基于VR环境的虚拟手模型构建方法的流程示意图。
图2是本发明实施例的虚拟手和物体接触状态示意图。
图3是本发明实施例的线-面和面-面接触示意图。
图4是本发明实施例的形状匹配示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本发明作进一步详细说明。
请参照图1,本发明实施例的基于VR环境的虚拟手模型构建方法,包括:
步骤1:根据手的生理结构,使用Unity3D引擎构建虚拟手的手指骨骼模型B,手指骨骼模型B由胶囊体制成的铰接体组成;
步骤2:在同一场景中,构建一个虚拟手的手指骨骼模型T,骨骼模型T与骨骼模型B形状、大小一致,但不与场景中的物体交互,骨骼模型B通过一定的约束连接到骨骼模型T,如果模型骨骼B处于非接触的状态,则骨骼模型B与骨骼模型T重合;当骨骼模型T由于跟随设备的位姿穿透物体时,骨骼模型B仍然位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透;
步骤3:使用Blender建模得到虚拟手的皮肤模型,在所述皮肤模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼模型B上;
步骤4:用户与虚拟环境交互时,将用户的手部姿态输入应用到骨骼模型T中;
步骤5:判断虚拟手是否处于抓取状态,当虚拟物体处于被抓住的状态时,如果虚拟骨骼模型B根据用户的手部姿态的发生移动和旋转,则控制虚拟物体跟随骨骼模型B进行移动和旋转,使物体移动和旋转到相应的位置;
步骤6:根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值;
步骤7:根据调整之后的刚度值计算软体粒子的位置,动态调整虚拟手的软体的摩擦系数;
步骤8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
本发明实施例的基于VR环境的虚拟手模型构建系统包括:
模块1:根据手的生理结构,使用Unity3D引擎构建虚拟手的手指骨骼模型B,手指骨骼模型B由胶囊体制成的铰接体组成;
模块2:在同一场景中,构建一个虚拟手的手指骨骼模型T,骨骼模型T与骨骼模型B形状、大小一致,但不与场景中的物体交互,骨骼模型B通过一定的约束连接到骨骼模型T,如果模型骨骼B处于非接触的状态,则骨骼模型B与骨骼模型T重合;当骨骼模型T由于跟随设备的位姿穿透物体时,骨骼模型B仍然位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透;
模块3:使用Blender建模得到虚拟手的皮肤模型,在所述皮肤模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼模型B上;
模块4:用户与虚拟环境交互时,将用户的手部姿态输入应用到骨骼模型T中;
模块5:判断虚拟手是否处于抓取状态,当虚拟物体处于被抓住的状态时,如果虚拟骨骼模型B根据用户的手部姿态的发生移动和旋转,则控制虚拟物体跟随骨骼模型B进行移动和旋转,使物体移动和旋转到相应的位置;
模块6:根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值;
模块7:根据调整之后的刚度值计算软体粒子的位置,动态调整虚拟手的软体的摩擦系数;
模块8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
实施例:
[1]根据手的生理结构,使用Unity3D引擎将虚拟手建模为由胶囊体制成的铰接体模型B,该骨骼模型包括手掌和手指,其中手指包括拇指、食指、中指、无名指和小指,每根手指由三个胶囊体构成。
[2]在同一场景中,另外创建一个不可见的手指骨骼模型T,与模型B形状、大小一致,但不与场景中的物体交互。B通过一定的约束连接到T,如果B处于非接触的状态,则B与T重合;当T由于跟随设备的位姿穿透物体时,B仍然会位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透。具体算法如下:
为了防止虚拟手与抓取物体的互相穿透,在VR场景中,另外创建一个不可见的手指骨骼模型T,与模型B大小、形状一致,但不与场景中的物体交互。
将Leap motion的输入应用到模型T中,如果T处于非接触状态(即没有与除B之外的其他物体接触),则B通过一定的约束与T重合;如果T处于接触状态,B仍然会位于物体表面,不会与虚拟物体互相穿透。我们提出的具体实现算法如下。
记xT,xB分别为T和B的质心,mB为B的质量,Δt为当前帧与上一帧的时间间隔,位置误差CB=xB-xT。
1)T处于非接触状态
2)T处于接触状态
如果B在时刻t0恰好与虚拟物体A在点P接触,记xA为虚拟物体A的质心,Pa和Pb分别是A和B上的点,满足Pa(t0)=P=Pb(t0),则定义向量D=Pb-xB,D’=Pa-xA。
请参照图2,如果B处于非接触状态或与虚拟物体互相穿透,则定义C=Pb-Pa,B的位置约束为C=0,Pb对时间t微分可以得到点Pb的速度
即
为了使B满足位置约束C=0,令
记
则式(3)可写成
JV+b=0
点-面、点-线和点-点接触只产生一个接触点;而线-面、线-线和面-面接触则会形成接触区域,为简化计算,只需要将线段两端的端点和多边形的顶点考虑为接触点即可。请参照图3。
设接触点的数量为n,则由式(3)可以得到n个约束
对其求解即可得到虚拟手指骨骼处在合理位置的约束。向手指骨骼施加力
F=-kmBCB (5)
最终使手指骨骼得到合理的位置更新,解决了虚拟手与抓取物体互相穿透的问题,更加符合真实环境下的情形。
本发明建立非穿透约束,对手指骨骼施加非穿透约束,避免了在交互时可能出现的穿透问题和刚体剧烈碰撞的问题。
[3]使用Blender建模得到外观较为真实的虚拟手皮肤模型。
[4]在模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的虚拟手部的软体,并将软体耦合到手指骨骼B上。具体算法如下:
为了保证足够的接触点以增加摩擦,使抓取更加真实,我们在模型的表面网格上生成一组粒子Xi,其中i=1,…,l。使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼B上,即可避免出现软体过度塌陷和弹出的问题。
具体的实现算法如下。
记粒子的质量为mi,粒子的动摩擦系数为μk,静摩擦系数为μs,初始位置为实时位置为xi,软体初始的质心为定义软体初始质心与手指骨骼质心的位置偏差xc=xB+φ,初始时粒子相对质心的位置偏差当前时刻粒子相对xc的位置偏差pi=xi-xc。
请参照图4,粒子之间不会相互作用,但会与虚拟环境中其他物体发生碰撞、挤压和摩擦,在粒子发生位移、旋转后,我们希望粒子最终回到目标位置gi,为此,需要求旋转矩阵R,使
gi=Rqi+xc (6)
令
取最小值,得最优变换
其中α代表刚度值。
本发明的虚拟手模型由刚体和软体组成,既能保证有足够的接触点增加摩擦,又能保证虚拟手模型不会过度塌陷和弹出。
[5]用户与虚拟环境交互,使用leap motion追踪用户的手部姿态,并将Leapmotion的输入应用到模型T中。
[6]判断虚拟手是否处于抓取状态。每一个胶囊状骨骼都是一个触发器,当B接触到虚拟物体时,则记录相应的接触点P和接触法线n。判断每一对接触点的向量差(Pi-Pj)与对应的两个接触法线向量(ni、nj)的点积是否大于阈值δ。如果大于阈值,则认为该虚拟物体被抓住;如果小于阈值,则认为该虚拟物体没有被抓住。
[7]当虚拟物体处于被抓住的状态时,如果虚拟手模型B根据Leap motion的输入发生移动和旋转,此时虚拟物体也需要跟随模型B进行移动和旋转。这是一个正交Procrustes问题,具体的解决方法是先将虚拟物体移动到相应的位置,再计算协方差矩阵并进行奇异值分解,最终得到最佳旋转矩阵,使物体移动和旋转到相应的位置。
[8]根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值。具体算法如下:
在不同的区域,我们希望软体有不同的刚度值。如在靠近指骨的区域,其刚度值应该较大;而在靠近物体的区域,其刚度值应该相对较小。当软体的运动速度较小时,我们希望软体的刚度值也较小;而当运动速度较大时,软体可能会发生不合理的形变,所以软体的刚度值应该相对较大,这样在抓取的时候能加大接触面积,使抓取更加稳定。
因此,我们根据粒子相对质心的位置和虚拟手的速度,动态调整刚度值的大小。定义Δxi=||xc-xi||,Δxmax=max{Δxi,i=1,…,l}。则粒子的刚度
其中
本发明提出的动态调整软体刚度值的方法,增加了交互时的稳定性和真实性。
[9]根据调整之后的刚度值计算软体粒子的位置。
[10]考虑软体中每个粒子与接触物体的动摩擦力和静摩擦力,动态调整虚拟手软体的摩擦系数。具体算法如下:
考虑软体中每个粒子与接触物体的动摩擦力和静摩擦力,动摩擦系数μk和静摩擦系数μs与相对距离CB成正相关,令
μs=1.5μk。CB越大,动态摩擦力和静态摩擦力越大,这是非常符合真实情况的。
本发明实时、动态地计算虚拟手与物体的摩擦,使虚拟手在抓取时的更加稳定、可靠。
[11]计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
[12]放开物体。放开物体有两种触发情况:一是用户主动放下;二是抓取时的摩擦力不足导致物体滑落。
[13]实验结果
在Unity3D引擎中,我们实现了虚拟手模型的模拟,经过实验验证,本发明的虚拟手模型操作简单,延迟较低,可以稳定、灵巧地抓取任意刚性物体,方便用户使用。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围。
Claims (12)
1.一种基于VR环境的虚拟手模型构建方法,其特征在于,包括:
步骤1:根据手的生理结构,使用Unity3D引擎构建虚拟手的手指骨骼模型B,手指骨骼模型B由胶囊体制成的铰接体组成;
步骤2:在同一场景中,构建一个虚拟手的手指骨骼模型T,骨骼模型T与骨骼模型B形状、大小一致,但不与场景中的物体交互,骨骼模型B通过一定的约束连接到骨骼模型T,如果模型骨骼B处于非接触的状态,则骨骼模型B与骨骼模型T重合;当骨骼模型T由于跟随设备的位姿穿透物体时,骨骼模型B仍然位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透;
步骤3:使用Blender建模得到虚拟手的皮肤模型,在所述皮肤模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼模型B上;
步骤4:用户与虚拟环境交互时,将用户的手部姿态输入应用到骨骼模型T中;
步骤5:判断虚拟手是否处于抓取状态,当虚拟物体处于被抓住的状态时,如果虚拟骨骼模型B根据用户的手部姿态的发生移动和旋转,则控制虚拟物体跟随骨骼模型B进行移动和旋转,使物体移动和旋转到相应的位置;
步骤6:根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值;
步骤7:根据调整之后的刚度值计算软体粒子的位置,动态调整虚拟手的软体的摩擦系数;
步骤8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
2.如权利要求1所述的基于VR环境的虚拟手模型构建方法,其特征在于,步骤2中,采用以下算法计算:
记xT,xB分别为骨骼模型T和骨骼模型B的质心,mB为骨骼模型B的质量,Δt为当前帧与上一帧的时间间隔,相对距离CB=xB-xT;
当T处于非接触状态时,
当T处于接触状态时,
如果B在时刻t0恰好与虚拟物体A在点P接触,记xA为虚拟物体A的质心,Pa和Pb分别是A和B上的点,满足Pa(t0)=P=Pb(t0),则定义向量D=Pb–xB,D’=Pa–xA;
如果B处于非接触状态或与虚拟物体互相穿透,则定义C=Pb–Pa,B的位置约束为C=0,Pb对时间t微分可以得到点Pb的速度
即
为了使B满足位置约束C=0,令
记
则得到
JV+b=0;
点-面、点-线和点-点接触只产生一个接触点;而线-面、线-线和面-面接触则会形成接触区域;设接触点的数量为n,则得到n个约束:
向手指骨骼施加力:
F=-kmBCB;
最终使手指骨骼得到合理的位置更新;其中,k为常量参数。
3.如权利要求2所述的基于VR环境的虚拟手模型构建方法,其特征在于,步骤3中,在模型的表面网格上生成一组粒子Xi,其中i=1,…,l;
记粒子的质量为mi,粒子的动摩擦系数为μk,静摩擦系数为μs,初始位置为实时位置为xi,软体初始的质心为定义软体初始质心与手指骨骼质心的位置偏差初始时粒子相对质心的位置偏差当前时刻粒子相对xc的位置偏差pi=xi–xc;
在粒子发生位移、旋转后,粒子回到目标位置gi,旋转矩阵R满足:
gi=Rqi+xc;
令
∑imi||Aqi-pi||2;
取最小值,得最优变换
其中α代表刚度值,v为粒子的速度。
6.如权利要求5所述的基于VR环境的虚拟手模型构建方法,其特征在于,步骤8之后还包括放开步骤:
在用户主动放下物体时或抓取时的摩擦力不足导致物体滑落时,放开物体。
7.一种基于VR环境的虚拟手模型构建系统,其特征在于,包括:
模块1:根据手的生理结构,使用Unity3D引擎构建虚拟手的手指骨骼模型B,手指骨骼模型B由胶囊体制成的铰接体组成;
模块2:在同一场景中,构建一个虚拟手的手指骨骼模型T,骨骼模型T与骨骼模型B形状、大小一致,但不与场景中的物体交互,骨骼模型B通过一定的约束连接到骨骼模型T,如果模型骨骼B处于非接触的状态,则骨骼模型B与骨骼模型T重合;当骨骼模型T由于跟随设备的位姿穿透物体时,骨骼模型B仍然位于物体表面,并同时允许在障碍物表面上滑动,防止虚拟物体之间的互相穿透;
模块3:使用Blender建模得到虚拟手的皮肤模型,在所述皮肤模型的表面网格上生成一组粒子,使用这些粒子模拟可变形的软体,并将软体耦合到手指骨骼模型B上;
模块4:用户与虚拟环境交互时,将用户的手部姿态输入应用到骨骼模型T中;
模块5:判断虚拟手是否处于抓取状态,当虚拟物体处于被抓住的状态时,如果虚拟骨骼模型B根据用户的手部姿态的发生移动和旋转,则控制虚拟物体跟随骨骼模型B进行移动和旋转,使物体移动和旋转到相应的位置;
模块6:根据粒子相对质心的位置和虚拟手的速度,动态调整软体的刚度值;
模块7:根据调整之后的刚度值计算软体粒子的位置,动态调整虚拟手的软体的摩擦系数;
模块8:计算抓取过程中的动摩擦力和静摩擦力,调整被抓取物体的姿态,得到更加真实的抓取过程。
8.如权利要求7所述的基于VR环境的虚拟手模型构建系统,其特征在于,模块2中,采用以下算法计算:
记xT,xB分别为骨骼模型T和骨骼模型B的质心,mB为骨骼模型B的质量,Δt为当前帧与上一帧的时间间隔,相对距离CB=xB-xT;
当T处于非接触状态时,
当T处于接触状态时,
如果B在时刻t0恰好与虚拟物体A在点P接触,记xA为虚拟物体A的质心,Pa和Pb分别是A和B上的点,满足Pa(t0)=P=Pb(t0),则定义向量D=Pb–xB,D’=Pa–xA;
如果B处于非接触状态或与虚拟物体互相穿透,则定义C=Pb–Pa,B的位置约束为C=0,Pb对时间t微分可以得到点Pb的速度
即
为了使B满足位置约束C=0,令
记
则得到
JV+b=0;
点-面、点-线和点-点接触只产生一个接触点;而线-面、线-线和面-面接触则会形成接触区域;设接触点的数量为n,则得到n个约束:
向手指骨骼施加力:
F=-kmBCB;
最终使手指骨骼得到合理的位置更新;其中,k为常量参数。
9.如权利要求8所述的基于VR环境的虚拟手模型构建系统,其特征在于,模块3中,在模型的表面网格上生成一组粒子Xi,其中i=1,…,l;
记粒子的质量为mi,粒子的动摩擦系数为μk,静摩擦系数为μs,初始位置为实时位置为xi,软体初始的质心为定义软体初始质心与手指骨骼质心的位置偏差初始时粒子相对质心的位置偏差当前时刻粒子相对xc的位置偏差pi=xi–xc;
在粒子发生位移、旋转后,粒子回到目标位置gi,旋转矩阵R满足:
gi=Rqi+xc;
令
∑imi||Aqi-pi||2;
取最小值,得最优变换
其中α代表刚度值,v为粒子的速度。
12.如权利要求11所述的基于VR环境的虚拟手模型构建系统,其特征在于,还包括放开模块:
在用户主动放下物体时或抓取时的摩擦力不足导致物体滑落时,放开物体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110940377.5A CN113703570B (zh) | 2021-08-16 | 2021-08-16 | 基于vr环境的虚拟手模型构建方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110940377.5A CN113703570B (zh) | 2021-08-16 | 2021-08-16 | 基于vr环境的虚拟手模型构建方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113703570A CN113703570A (zh) | 2021-11-26 |
CN113703570B true CN113703570B (zh) | 2023-01-31 |
Family
ID=78652886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110940377.5A Active CN113703570B (zh) | 2021-08-16 | 2021-08-16 | 基于vr环境的虚拟手模型构建方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113703570B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719284B (zh) * | 2009-12-25 | 2011-08-31 | 北京航空航天大学 | 一种基于层次模型的虚拟人皮肤物理变形方法 |
CN102663197A (zh) * | 2012-04-18 | 2012-09-12 | 天津大学 | 一种基于运动捕获的虚拟手抓取的仿真方法 |
CN103729879A (zh) * | 2013-12-20 | 2014-04-16 | 浙江大学 | 基于力觉计算的虚拟手稳定抓取方法 |
US10140745B2 (en) * | 2015-01-09 | 2018-11-27 | Vital Mechanics Research Inc. | Methods and systems for computer-based animation of musculoskeletal systems |
ES2725128B2 (es) * | 2018-03-15 | 2020-07-22 | Univ Rey Juan Carlos | Método implementado por ordenador, sistema y producto del programa de ordenador para simular el comportamiento de una mano que interactúa con objetos en un entorno virtual. |
CN108664126B (zh) * | 2018-05-16 | 2021-06-04 | 上海大学 | 一种虚拟现实环境下可变形手抓取交互方法 |
JP2020077069A (ja) * | 2018-11-05 | 2020-05-21 | exiii株式会社 | フィードバック生成装置 |
CN110728739B (zh) * | 2019-09-30 | 2023-04-14 | 杭州师范大学 | 一种基于视频流的虚拟人控制与交互方法 |
-
2021
- 2021-08-16 CN CN202110940377.5A patent/CN113703570B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113703570A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Höll et al. | Efficient physics-based implementation for realistic hand-object interaction in virtual reality | |
Zenner et al. | Drag: on: A virtual reality controller providing haptic feedback based on drag and weight shift | |
Abtahi et al. | Beyond the force: Using quadcopters to appropriate objects and the environment for haptics in virtual reality | |
Oprea et al. | A visually realistic grasping system for object manipulation and interaction in virtual reality environments | |
Garre et al. | Interactive simulation of a deformable hand for haptic rendering | |
Jacobs et al. | A soft hand model for physically-based manipulation of virtual objects | |
Verschoor et al. | Soft hand simulation for smooth and robust natural interaction | |
KR19990063940A (ko) | 가상 환경 조종 장치의 모델링 및 제어 | |
Kim et al. | Physics-based hand interaction with virtual objects | |
Tong et al. | Survey on hand-based haptic interaction for virtual reality | |
Hirschmanner et al. | Virtual reality teleoperation of a humanoid robot using markerless human upper body pose imitation | |
LEite et al. | Mani-pull-action: Hand-based digital puppetry | |
Abate et al. | A pervasive visual–haptic framework for virtual delivery training | |
CN113703570B (zh) | 基于vr环境的虚拟手模型构建方法及系统 | |
Han et al. | Vr-handnet: A visually and physically plausible hand manipulation system in virtual reality | |
Bouzbib et al. | Palmex: Adding palmar force-feedback for 3d manipulation with haptic exoskeleton gloves | |
Ritchie et al. | COMFlex: an adaptive haptic interface with shape-changing and weight-shifting mechanism for immersive virtual reality | |
Artal-Sevil et al. | Control of a Bionic Hand using real-time gesture recognition techniques through Leap Motion Controller | |
Shi et al. | Grasping 3d objects with virtual hand in vr environment | |
Ficuciello et al. | A Human Gesture Mapping Method to Control a Multi‐Functional Hand for Robot‐Assisted Laparoscopic Surgery: The MUSHA Case | |
He et al. | Multi-modal human interactions with an intelligent interface utilizing images, sounds, and force feedback | |
Kim et al. | Direct hand manipulation of constrained virtual objects | |
Devine et al. | " HapticVive"-a point contact encounter haptic solution with the HTC VIVE and Baxter robot | |
Du et al. | Modeling and interaction of virtual hand based on virtools | |
Khan et al. | Comparative Analysis of Interaction Techniques in Virtual Reality |
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 |