一种基于自然交互的物理仿真方法

文档序号:10489804阅读:184来源:国知局
一种基于自然交互的物理仿真方法
【专利摘要】本发明公开了一种基于自然交互的物理仿真方法。本方法为:1)构建一个二维或三维场景作为物理仿真环境;2)当仿真过程中需调整选定物体的参数时,获取智能移动设备当前姿态下的自然重力加速度g;3)调整g为待仿真重力环境的重力加速度值,赋予给该物理仿真环境中的所有物体;4)获取用户在智能移动设备屏幕上输入的滑动方向r、距离d;将滑动方向r变换到该物理仿真环境的坐标系的矢量方向,将距离d转换为选定物体所受外力的大小并与该矢量方向合并形成瞬间外力;5)根据当前参数的取值进行当前时间步的物理仿真。本方法大大提高游戏或者动画的娱乐性体验,并可以创造出更加多变的物理仿真或者游戏动画效果。
【专利说明】
一种基于自然交互的物理仿真方法
技术领域
[0001] 本发明涉及一种基于自然交互的物理仿真方法,属于计算机图形、动画、虚拟现实 以及人机交互技术领域。
【背景技术】
[0002] 传统的对三维物体进行运动物理仿真的系统往往需要在系统运行之前预设好各 项物理参数的初始值(既包括物体的运动参数例如初速度、加速度、角速度、角加速度,也包 括影响物体运动的参数如外力、外力作用时间,还物体的材料参数例如质量、密度、刚度、弹 性等,甚至还有仿真参数例如仿真的时间步长等),由于此类参数在仿真过程中难以通过直 观的方式交互指定和修改,因此这些参数在仿真过程中常常维持不变,这就导致了仿真过 程非常死板,无法根据当前仿真的进程以及仿真所达到的状态对仿真的各项参数进行动态 调整,因此欠缺灵活性。尤其是将物理仿真方法应用到动画或者游戏场景时,用户难以根据 游戏或者动画的进程即时交互调整,这将大大降低游戏或者动画的娱乐性体验。
[0003] 因此,如何在物理仿真进行阶段,以直观的方式动态调整相关的仿真参数,从而创 造出更加丰富多变的物理仿真效果以及更加自如快捷的交互体验,这是一个亟需解决的问 题。

【发明内容】

[0004] 针对上述问题,本发明的目的在于为物理仿真系统提供一种基于移动设备的自然 交互方法。本发明设计了一种基于智能移动设备上多种传感器进行自然交互,从而能够动 态修改待仿真场景中与运动相关的物理仿真的关键参数的方法,该方法可以让用户在智能 移动设备上通过调整移动设备的姿态修改物理仿真中的重力加速度方向,通过触摸屏幕并 在屏幕上滑动调整物理仿真系统中物体所受到的瞬间外力的方向和大小,通过向麦克风吹 气调整物理仿真系统中物体所受到大小持续变化的外力。本发明的自然交互方法对三维场 景的仿真和二维场景仿真皆有效,同样适用于三维或者二维的具有物理真实感的游戏或者 动画。下面的方法和步骤以三维场景为例。
[0005] 本方法的步骤包括:
[0006] 1.构建由一个或者多个三维物体构成的三维场景作为物理仿真环境或者游戏场 景,该场景中既可以包含单一形态的刚体、流体、形变体(即仅仅只包含一种形态的物体,场 景中物体全都为刚体,或者全部都是流体,或者全部都是形变体),也可以包含复合形态的 物体,例如刚体与流体耦合(即场景中包含刚体和流体两种形态的物体,其中刚体与刚体之 间相互作用,流体与流体之间相互作用,刚体与流体之间耦合作用),刚体与形变体耦合,流 体与形变体耦合,或者全部形态的物体相互耦合作用;
[0007] 2.设置物理仿真的初始参数,并开始仿真;在仿真过程中如果需要调整某些物理 参数,则进入下面步骤3,否则直接进入步骤4;
[0008] 3.在仿真过程中,即仿真中的当前时间步,通过智能移动设备进行交互修改物理 仿真中的关键参数,其过程的子步骤如下:
[0009] 3.1首先通过触摸屏幕点选中三维场景中的某个或者多个物体,除3.2,3.3所述的 重力加速度参数g外,后续的物体参数的调整皆是针对该被选中物体,如果不选定特定的物 体,则是针对三维场景中的所有物体;
[0010] 3.2用户调整智能移动设备的姿态,通过智能移动设备上的重力传感器获得当前 姿态下的自然重力加速度g(含方向),
[0011] 3.3通过双击显示出参数交互设置图形界面,在界面中通过滑动条或者调整重力 加速度g的数值大小或者通过数值对话框输入新的重力加速度g的数值,根据数值的调整从 而可以模拟不同重力环境下三维物体的运动(如超重力,微重力,甚至失重环境);
[0012] 3.4将该重力加速度g从智能设备所在的三维笛卡尔坐标系变换到物理仿真环境 下的三维坐标系,将该g赋予物理仿真环境中的所有三维物体;
[0013] 3.5通过双击显示出参数交互设置图形界面,选择所选三维物体的受力的时间模 式,分别为瞬间和持续两种模式,如果不做选择则默认模式被设置为瞬间模式;
[0014] 3.6在智能移动设备屏幕上用手指交互滑动,根据触摸传感器获得滑动的方向r, 滑动的距离d(该步骤可以与3.2并行实现);将滑动方向r从该智能移动设备所在坐标系变 换到该物理仿真环境的三维坐标系的矢量方向;
[0015] 3.7当物体受力处于瞬间模式时,将距离d转换为物体所受外力的大小(标量),与 3.6中转换之后的方向r合并形成仿真环境中三维物体所受到的瞬间外力(矢量,既包含方 向,也包含大小),所谓瞬间外力是指仅仅在当前时间步有效,对被选定的物体产生外力作 用;
[0016] 3.8当物体受力处于持续模式时,向智能移动设备的麦克风吹气,通过声音传感器 收集该气流,并将声音信号通过低通滤波转换成标量;(该步骤可以与3.2并行实现);
[0017] 3.9将该标量通过与指定标准的尺度(该尺度可以根据应用环境的不同而进行调 整)进行缩放转换为在三维虚拟仿真环境中被选定物体所受到的持续的外力的大小,外力 的方向通过3.6中转换之后的方向r确定,将这两者结合形成仿真环境中物体所受到的持续 的外力(矢量,既包含方向,也包含大小),所谓持续的外力是指上述步骤3.8中通过声音传 感器收集气流的过程持续不断发生,而由此产生的力会持续不断地作用于选定的物体上, 即在物理仿真的每一个时间步都会产生作用,直到改变外力作用的方式,或者停止外力作 用。在此持续外力作用过程中,根据声音信号的强弱,外力的大小会发生相应变化。
[0018] 4.按照当前仿真参数进行当前时间步的物理仿真计算;如果整个仿真步骤未结 束,并且有需要调整的物理参数则返回步骤3,否则继续执行步骤4。直至仿真过程结束,输 出仿真或者动画结果。上述过程如图1所示。
[0019] 5.上述步骤中对仿真参数的修改既可以作用于整个待仿真的三维场景中的所有 物体,也可以动态先选择某个具体的物体,使得外力的作用仅仅限于所指定的该物体,更细 化地甚至可以指定仅仅作用于指定物体表面的某个点上;此外可以是在某一时刻指定外力 作用于某一个或者某一些物体,而在另一个时刻指定外力作用于另一个或者另外一些物 体。上述交互系统和仿真系统既可以是统一在一个物理设备上(即都在智能移动设备上), 也可以是分离的,如图2所示,即步骤3所示的交互系统调整参数的过程运行在智能移动设 备上,而步骤4所示的仿真系统的计算的过程运行在另外一个独立的计算设备上。
[0020] 与现有技术相比,本发明的积极效果为:
[0021] 本交互方法可以为用户提供物理仿真系统中更加自如快捷的交互方式,让用户根 据当前仿真的进程以及仿真所达到的状态对仿真的对象及其各项参数进行动态调整,具有 高度的灵活性。尤其是将物理仿真方法应用到动画或者游戏场景时,用户可以根据游戏或 者动画的进程即时交互调整其中的物理相关的运动要素,这种直观动态调整相关的仿真参 数的方式将大大提高游戏或者动画的娱乐性体验,并可以创造出更加多变的物理仿真或者 游戏动画效果。
【附图说明】
[0022] 图1为交互物理仿真运行流程图;
[0023]图2为智能移动设备自然交互的物理仿真与动画系统框架图;
[0024]图3为在水流表面动态施加持续风力(外力)所形成的流体仿真效果图;
[0025]图4为在烟雾中动态施加持续风力场(外力)所形成的流体仿真效果图;
[0026] 图5为对指定的刚体施加瞬间外力所形成的三维场景仿真效果图(只对兔子模 型)。
【具体实施方式】
[0027] 下面对本发明的方案进行进一步详细描述。
[0028]自然交互的细节:
[0029] 目前的智能移动设备的各种传感器可谓花样繁多,并仍在不断地发展,但智能移 动设备上的传感器并没有得到有效的使用。我们通过全方位综合性地使用各种传感器,并 且通过对传感器传入内容的运算处理,来实现一些更加有趣的新型人机交互方式。
[0030] 1.智能移动设备传感器综述
[0031] 传感器是一种能把物理量或化学量转变成便于利用的电信号的器件。智能移动设 备上传统常见的传感器有重力传感器、触摸屏、麦克风、摄像头等,它们分别能捕捉到的物 理信号有重力加速度向量、手指触摸位置及触摸手指个数、外部实时音频流、外部实时视频 流等,本发明采用新型人机交互模型中这些传感器能够真实地将外部现实操作的物理量转 化成数字信息传输给三维物理仿真系统。
[0032] 2.重力传感器
[0033] 基于智能移动设备的重力传感器,智能手机横着放和竖着放切换自如的、截然不 同的布局正是将人与手机之间最基本的交互体现出来了。如今重力传感器更加精确,可以 获得的信息也更加多了,有些设备上还具有陀螺仪传感器,和重力传感器组合起来可以反 映出设备受到的重力方向及大小g(通常为常量9.8m/s 2),这些数据都可以用来得到你的设 备在真实世界中的位置、角度、运动方向和速度究竟是如何。
[0034]我们物理仿真过程中所有三维物体的加速度方向及大小正是利用了重力传感器 来计算。在iOS的SDK中,可以通过CMMotionManager类来访问移动管理器(其中包含重力传 感器和陀螺仪传感器),设置更新重力加速度数据的时间间隔以及回调函数,然后在回调函 数中获取重力加速度的数据。有了智能移动设备自然环境下的重力加速度,需要再进一步 把它转换到待模拟的三维场景空间,作用于该空间中的各种三维实体(如流体,刚体,形变 体等),由此改变三维仿真空间中的这些三维实体的运动方向。还可以通过图形或者文字界 面调整重力加速度g的数值大小,根据数值的调整从而可以模拟不同重力环境下三维物体 的运动,例如设置g' =k.g(k>l)表示超重力,g' =k.g(k〈G〈l)表示微重力,甚至失重环境。 [0035] 3.触摸传感器
[0036]随着触摸屏从电阻屏发展到电容屏,智能移动设备的触摸传感器已经能够非常精 细地捕捉到人对于屏幕的触摸操作了,从传统的识别一只手指触摸的位置,到之后能识别 两只手指的缩放操作等。在i〇S的SDK中,可以通过UITouch类来访问触摸事件,这里需要记 录的就是触摸事件的起始、移动、结束的位置,利用屏幕上触摸事件的起始位置和结束位 置,我们可以计算得到一个具有长度的矢量。我们建立屏幕坐标系和三维仿真空间中三维 场景所表示的坐标系之间的关联,也就是两个坐标系之间的转换矩阵M,则把该屏幕坐标系 中的矢量r转化为对应的三维仿真空间中的矢量W = (IT1)T · r,转换后的矢量方向将其作 为外力作用于该空间中的三维物体的力的方向。如果采用瞬间模式,则该矢量的长度d作为 力的大小,作用于被选中的物体上。
[0037] 4.声音/外力传感器
[0038]本发明通过向手机中的麦克风吹风作为一种独特的交互方式,将采集的声音信号 通过外力传感器将之转换为一种持续的外力作用于被仿真的场景。
[0039]我们选择通过麦克风来模拟风力并将风力通过外力传感器进行处理和转换。当麦 克风检测到的有声音的时候,即认为有风吹来。但是该方法存在着一些问题,该处理方式无 法将"风声"与其他声音进行区分,而导致只能手机对风的检测非常不准确。
[0040] 考虑到风的声音往往是由低频声音组成的。我们使用一个低通滤波算法,来降低 来自麦克风的高频声音;当滤波信号的电平级数突然增大时(比如电平级数变化值超过设 定阈值),就可以知道有风向智能手机吹来了。在i〇S系统的SDK中,可以通过 AVAudioRecorder类来访问麦克风,并且可以通过消息调用的方式(一种object ive-c语言 特性)[recorder peakPowerForChannel :0]来获取麦克风低频声音段的输入功率峰值,以 实现低通滤波。并且,我们使用自适应调整的方式来修正当前低频声音检测值,以减小突发 的不稳定低频噪声的影响。
[0041] 上述方法就能够模拟出一个基于低通滤波的声音检测的"风力"传感器,虽然它有 时候会错误地把不是风的声音认定为风声,但是对自然风进行检测的目的达到了。当设备 通过这一方法检测到风时,将会对三维待仿真场景中的物体产生一个扰动(外力的作用), 就好像智能设备中虚拟的三维对象真的被自然风吹到了一样。在本应用中,实时检测麦克 风的音频输入信号与获取其他传感器(如加速度传感器)信号的处理方式不同。在通常的传 感器信号获取中,只要注册监听器即可实时获取到数据,但检测麦克风的音频输入不能如 此。处理麦克风的音频信号需要单独使用一个线程,而并不能在SDK的Activity中直接实 现。程序中,设置每IOOms获取一次麦克风。获得到信号后,可以通过调用函数 MediaRecorder .getMaxAmplitude()获取到自上一周期结束(即上一次调用该函数)到当前 时刻间音频信号振幅的峰值,该函数返回值为〇~32767中的整型数,这与IOS API中的 PeakPowerForChannel返回0~-160DB(分贝)不同。经过多次的实验,我们发现将低通滤波 的阈值设为12000可以得到较好的效果。
[0042]当获得了声音传感器的数值a之后,我们对a进行比例缩放,例如设定三维场景中 数值b对应产生的力的大小为a牛顿,则最终由声音转化为外力的大小F = a/b*a。
[0043] 如图2所示,在交互系统中对物理参数的动态直观交互调整,将会影响物理仿真系 统的仿真过程,物理仿真系统的细节如下:
[0044] 1.流体仿真的细节
[0045] 流体仿真中,所有的流体的动力学计算皆采用著名的纳维-斯托克斯方程,简称N-S方程计算:
[0046
[0047]以上方程是动量方程的形式,均以P表示密度,V表示速度,t表示时间。υ = μ/ρ为运 动粘性系数(其中的μ是粘滞系数),ρ是压强,f表示流体受到的外力作用(含g重力在内)。由 此公式可知,通过调整外力f和重力加速度g,可以有效地影响流体的仿真计算,从而影响流 体的运动。图3,图4为流体(分别为气体和液体)在仿真过程中受到外力从而对仿真结果产 生影响的效果图。
[0048] 2.刚体仿真的细节
[0049] 刚体多体动力学系统是一个复杂的系统。通过利用广义质量矩阵M、广义坐标q以 及广义速度4,整个系统的广义运动学方程可以被构建。与单个物体的运动学方程类似,系 统的广义运动学方程描述了在收到一个广义冲量的作用后,整个系统的运动学状态变化, 即
[0050]
[0051 ]在离散的计算机仿真中,该方程可以离散化为
[0052]
[0053] 其中r和^分别表示碰撞前后物体的广义速度表示内部冲量,即物体 碰撞所产生的冲量,而AG Rk表示外部冲量,为重力或其他人为施加的作用力引起的冲 量。由于冲量I=mg· At,I=f· At(m为物体质量,At为时间)的关系,也就是说通过调整 外力f和重力加速度g,可以有效地影响的仿真计算,从而影响刚体物体的运动。图5为刚体 在仿真过程中物体受到外力从而对物体运动结果产生影响的效果图。
[0054] 3.形变体仿真的细节
[0055]在形变体仿真中,当物体不处于静态平衡状态时,内力与外力的合力会使物体产 生加速度。物体上任意点的动态行为可以用如下的运动方程(equation of motion)描述和 计算:
[0056]
[0057]
[0058] 其中P是材料的密度,?表示加速度。柯西应力(Cauchy stress)张量为〇,fext是外 部施加的作用力,fext = f ?mg,也就是fext是外力f与重力的合力的表示。因此通过调整外力 f和重力加速度g,可以有效地影响r xt的值,从而影响仿真计算的结果,并影响刚体物体的 运动。
【主权项】
1. 一种基于自然交互的物理仿真方法,其步骤为: 1) 构建一个二维或Ξ维场景作为物理仿真环境; 2) 设置该物理仿真环境的初始参数并开始仿真;当仿真过程中需要调整该物理仿真环 境中选定物体的参数时,通过智能移动设备上的重力传感器获取该智能移动设备当前姿态 下的自然重力加速度g; 3) 调整该重力加速度g的数值大小为待仿真重力环境的重力加速度值;然后将调整后 的该重力加速度从该智能移动设备所在的笛卡尔坐标系变换到物理仿真环境的坐标系,并 赋予给该物理仿真环境中的所有物体; 4) 设置所述选定物体受力的时间模式,包括瞬间模式和持续模式; 5) 通过该智能移动设备的触摸传感器获取用户在智能移动设备屏幕上输入的滑动方 向r、滑动距离d;将滑动方向r从该智能移动设备所在坐标系变换到该物理仿真环境的坐标 系的矢量方向; 6) 当选定物体受力设置为瞬间模式时,将滑动距离d转换为该选定物体所受外力的大 小并与该矢量方向合并形成物理仿真环境中该选定物体所受到的瞬间外力;当选定物体受 力设置为持续模式时,通过该智能移动设备的采集输入的持续外力,然后将采集的持续外 力生成该选定物体所受到的持续外力大小并与该矢量方向合并形成物理仿真环境中该选 定物体所受到的持续外力; 7) 根据当前参数的取值进行当前时间步的物理仿真。2. 如权利要求1所述的方法,其特征在于,所述通过该智能移动设备的采集输入的持续 外力,然后将采集的持续外力生成该选定物体所受到的持续外力大小的方法为:向该智能 移动设备的麦克风吹气,通过该智能移动设备的声音传感器采集吹气产生的气流,然后根 据声音传感器采集的信号转换生成该选定物体所受到的持续外力大小。3. 如权利要求2所述的方法,其特征在于,对声音传感器采集的信号先进行低通滤波, 将滤波信号的电平级数变化值超过设定阔值之后采集的信号转换生成该选定物体所受到 的持续外力大小。4. 如权利要求2或3所述的方法,其特征在于,生成该选定物体所受到的持续外力大小 为F = a/b*a;其中,a为采集的持续外力,场景中数值b对应产生的力为a牛顿。5. 如权利要求1或2或3所述的方法,其特征在于,该物理仿真环境中的物体为单一形态 的刚体、流体、形变体,或者该物理仿真环境中的物体为复合形态的物体。6. 如权利要求5所述的方法,其特征在于,该物理仿真环境中的物理仿真包含单一形态 的物体之间的相互作用和或复合形态之间物体的禪合作用。7. 如权利要求5所述的方法,其特征在于,当该物理仿真环境中的物体为流体时,采用 公式描述该物体;其中,P表示密度,V表示速度,t表示时间,μ是粘滞 系数,Ρ是压强,f表示流体受到的外力作用,υ=μ/ρ为运动粘性系数。8. 如权利要求5所述的方法,其特征在于,当该物理仿真环境中包含刚体物体时,该物 理仿真环境的运动学状态方程为:游錢+簿~1 晏'^私其中,參'和潭+分别表示碰撞前后物 体的广义速度,I康示内部冲量,I康示外部冲量。9.如权利要求5所述的方法,其特征在于,当该物理仿真环境中包含形变体物体时,形 变体物体上任意点的动态行为方程为:其中,P是材料的密度,? 表示加速度,σ为柯西应力张量,是外部施加的作用力。
【文档编号】G06T17/00GK105844698SQ201610145794
【公开日】2016年8月10日
【申请日】2016年3月15日
【发明人】李胜, 汪国平
【申请人】北京大学(天津滨海)新代信息技术研究院, 北京大学(天津滨海)新一代信息技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1