基于射线的虚拟手动态碰撞检测算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P 0 + T × α = V1 + U ( V2 - V1 ) + V ( V3 - V1 ) ( 5) 由式( 3 ) ~ ( 5 ) 整理得: T V2 - V1 , V3 - V1] O - V1 = [- α, U V ( 6)
若有解则行列式 [- α, 式( 6 ) 是一个线性方程组, V3 - V1]不为 0 。根据 T、 U、 V 的含义, V2 - V1 , 当T > 0, 0 < U < 1, 0 < V < 1, 0 < U + V < 1 时交点的坐标 V) , 在三角形内部。 解式 ( 6 ) 可得交点坐标为 ( U, 射线起始点到交点的距离为 T。接下来解这个方程 E2 = V3 - V1 , H = O - V1 , 式 组, 令 E1 = V2 - V1 , ( 6 ) 可以写成: T [- α, E1 , E2] U = H V 根据克莱姆法则有: T = U = V = 1 | - α E1 1 | - α E1 1 | - α E1 E2 | E2 | E2 | H E1 E2 E2 | H| ( 8) ( 7)
基于射线的虚拟手动态碰撞检测算法
朱希安 , 徐宇翔
( 北京信息科技大学 信息与通信工程学院, 北京 100192 )
要: 针对没有力反馈的数据手套, 结合刚体和软体模拟人手, 利用射线特性对虚拟 手抓取操作过程进行分析, 提出了基于射线的虚拟手动态碰撞检测算法 。 首先将射线碰撞应用于 摘 数据手套碰撞检测上。文中描述了该算法, 并给出了算法的流程图, 针对单个手指和物体接触过 程, 将该动态碰撞检测算法和传统的静态碰撞检测算法进行比较 , 结果证实: 该动态碰撞检测算法 能够提供具有真实感的虚拟手交互模拟视觉信息反馈 , 有效避免了虚拟手和物体间的穿透, 在总 体性能上优于传统静态碰撞检测算法 。该动态碰撞检测算法可以推广到其他的系统仿真应用 。 词: 力反馈; 虚拟手; 射线; 碰撞检测 中图分类号: TP391. 9 文献标志码: A 关 键
数 V 控制 V3 在结果中占多大的权值; 而 1 - U - V 则控制 V1 在结果中占有多大的权值。 则任何一点 V ) 来表示, 都可以用坐标 ( U, 这种坐标的定义方式 即为重心坐标。 1. 2 射线三角面相交 已知射线起始点 P0 ,射线方向 α,三角形的 3 V2 、 V3 , 个顶点: V1 、 需要判断出射线是否和三角面 V) , 相交, 如果相交计算出相交点的重心坐标 ( U, 以 及射线起始点到交点的距离 T。假设射线和三角面 相交, 交点为 O。则有: O = V1 + U ( V2 - V1 ) + V ( V3 - V1 ) O = P0 + T × α 所以, ( 3) ( 4)
| -α H | - α E1
2
2. 1
虚拟手抓取物体分析
力反馈
根据模拟对象性质的不同, 物理模拟可以分为 刚体和软体两类。刚体是指在运动过程中不会发生 形变的物体, 软体是指在运动过程中会发生形变的 物体。人手兼具了刚体和软体的特点。分析人手的 结构特征和运动特点, 在虚拟现实中可以将虚拟手
式中, 参数 U 控制 V2 在结果中占有多大的权值; 参
0
引言
在虚拟现实
[1 ] [2 ]
系统中, 虚拟手技术 是实现自 然、 高效人机交互的关键技术之一。 人手通过虚拟 手对虚拟环境中的操作对象进行直接操作, 虚拟手 接触、 抓取、 移动、 旋转、 释放物体时, 使用者在人机 交互过程中有着更加丰富直观的画面 。与传统的人 手通过键盘、 鼠标对操作对象的间接操作相比 , 虚拟
1
射线碰撞
射线碰撞
[6 ]
的基本思想: 一条光线在场景中可 以和所有的碰撞器发生碰撞, 并返回碰撞的细节信 息。在三维矢量空间中, 射线的定义为 P = P0 + t × α ( 1)
P 为射线上的某个点; P0 为射线的起点; α 为 式中, | α | = 1 。 P、 P0 、 t表 射线的方向, α 都是三维矢量, t ∈[ 0, P表 示时间, 当 t = 0 时, ∞ ) 。根据式( 1 ) , 示起点; t 为其他数值时,P 表 示 为 射 线 上 其 他 的 点。 α 仅为射线的方向, 则 t 表示射线上其他点离开 。 射线起点的距离 1. 1 重心坐标 一个三角形所在平面的任意点都能表示为顶点 的加权平均值, 这个权就叫重心坐标。 一个三角形 的 3 个顶点坐标在笛卡尔坐标系中可假设为 V1 ( x 1 , y1 , z1 ) , V2 ( x 2 , y2 , z2 ) , V3 ( x 3 , y3 , z3 ) ,则 三 角 形中任意一点的坐标可以表示为 P V = V1 + U ( V2 - V1 ) + V ( V3 - V1 ) ( 2)
Dynamic collision detection algorithm of virtual hand based on ray
ZHU Xi'an,XU Yuxiang
( School of Information and Communication Engineering ,Beijing Information Science & Technology University,Beijing 100192 ,China)
节, 其他 4 个手指则包括远、 中、 近 3 个指节和 3 个 关节; 每个指节包含独立的骨骼控制, 为刚体部分, 而 2 个指节之间的可变形关节为软体部分, 如图 1 所示。
图1
手指关节形体示意图
在虚拟手抓取仿真中, 虚拟手和物体都是三角 [9 ] 面片模型, 在没有力反馈 的情况下, 经常出现虚 拟手在接触物体后虚拟手指进入到物体内部的情 况。如果此时虚拟手和物体之间的碰撞检测采用的 是传统的静态碰撞检测算法, 会出现因为没有相交 的三角面片, 从而判断虚拟手指和物体是不接触的 情况, 这和真实情况相违背, 如图 2 所示。力反馈原 本是应用于军事上的一种虚拟现实技术 , 它利用机 械表现出的作用力, 将数据通过力反馈设备表现出 来。但力反馈数据手套成本较高, 且在使用时间长 后, 钢缆会因为反复受到拉扯而伸长, 万一钢缆断 裂, 力反馈效果也就失灵了。 本文算法能在没有力 反馈的情况下通过射线碰撞来预判虚拟手指与虚拟 物体持续接触, 使虚拟手指保持在物体表面, 无法完 全穿透物体内部, 保证碰撞检测效果与实际一致。
收稿日期: 2014 - 12 - 15 基金项目: 国家科技重大专项煤层气田地面集输信息集成及深度开发技术( 2011ZX05039 - 004 - 02 ) 作者简介: 朱希安, 男, 博士, 教授。
第2 期
朱希安等: 基于射线的虚拟手动态碰撞检测算法
21
间碰撞检测效率, 而对于动态环境下、 复杂的虚拟环 境中的物体之间的碰撞检测问题, 高效率的碰撞检 测算法还不多, 因此快速有效的碰撞检测算法对提 高虚拟环境的真实性起着至关重要的作用 。 目前离散碰撞检测应用最为广泛, 它同时保障 了碰撞检测的精确性, 且满足碰撞的实时性。 但离 散碰撞检测由于只是检测每个时间点的相交情况 , 容易造成漏测和穿透。连续碰撞检测将时间作为碰 撞检测的参数之一, 实时地检测运动物体与其他物 体之间的碰撞检测情况。虽然能够得到较精准的碰 撞情况, 但是检测的计算量大, 特别是在多运动实体 之间的碰撞检测, 因此系统的计算对碰撞检测算法 的要求很高。 本文作者提出的基于射线的虚拟手动态碰撞检 测算法利用手指抓取物体的特征规律, 可以减少模 型片面之间的底层碰撞检测的计算次数 , 同时还能 保证避免出现手指穿透模型、 测漏等现象, 保证了系 统的实时性和精准性。 其基本思想是: 通过射线判 断 2 个碰撞对象是否在同一运动方向, 并通过一个 距离值判断 2 个物体的相对运动方向, 如果 2 个物 体相互靠近, 则在上一帧 2 个物体接触的情况下, 本 帧仍然保持接触, 本帧不需要进行碰撞检测计算; 在 2 个物体有可能接触也可能不接触, 其他情况下, 需 要进行实质的碰撞检测计算来确定 。
22 模型
[7 - 8 ]
北京信息科技大学学报
第 30 卷
5根 做如下简化: 整个虚拟手由 1 个手掌、 手指组成; 其中拇指包括远、 近 2 个指节和 2 个关
为了作图和分析方便, 本文把虚拟手指抽象为 连杆铰链结构, 将 3 个指节看成 3 个连杆, 将指节之 间的关节看成相邻连杆的铰链。 同时假设: ① 抓取 过程中只有虚拟手末端指节运动, 其他 2 个指节不 动; ②认为虚拟手和物体接触瞬间, 可以看作物体静 止, 虚拟手指相对于物体运动; ③虚拟手指可以进入 物体内部。图 3 中立方体代表抓取对象, 而 3 个长 方形代表虚拟手指的 3 个指节。虚拟手指抓取物体 的过程可以作如下分析: 手指向物体这侧运动, 从跟 物体不接触到接触, 如图 3 ( a ) 所示; 手指背离物体 运动, 跟物体由接触到不接触, 如图 3 ( b) 所示; 手指 接触物体后, 在没有力反馈的操作设备阻止操作者 的手指继续运动, 手指将进入物体内部, 如图 3 ( c ) 所示。
第 30 卷 第 2 期 2015 年 4 月
北 京 信 息 科 技 大 学 学 报 Journal of Beijing Information Science & Technology University
Vol. 30 No. 2 Apr. 2015
文 章 编 号: 1674 - 6864 ( 2015 ) 02 - 0020 - 06
Abstract : By using a model combining both solid and deformable objects to simulate human hand , a new dynamic collision detection algorithm of virtual hand based on ray is put forward based on the analysis of ray features of fingers grasping virtual object. The algorithm could be applied in no force feedback data glove. The algorithm is studied and the flow charts of the algorithm are given in the paper. Also ,the comparison is conducted between this dynamic collision detection algorithm and the traditional static one in the collision detection of one finger and virtual object. The results indicate that the performance of the propoLeabharlann Baidued algorithm is faster than the traditional static one. Furthermore , the algorithm can provide realistic visual information feedback of virtual hand interaction , and avoid effectively penetration between virtual fingers and object. This dynamic algorithm can also be applied to other dynamic collision detection simulation systems. Key words: force feedback; virtual hand; ray; collision detection 手技术更符合人类的认知习惯, 极大提高了用户的 视觉信息反馈真实感。 在煤矿等领域的虚拟培训、 虚拟维修, 以及在医 学上虚拟手术等动态操作仿真中, 需要根据碰撞检 [3 ] 测 判断虚拟手是否抓住交互物体。 在该交互过 程中需要计算虚拟手同虚拟物体之间的实时碰撞检 测, 这是一个持续接触的过程, 对碰撞检测阶段的运 行提出了较高的要求。碰撞检测是计算机图形学和 虚拟现实中最基本且非常重要的组成部分 。目前的 碰撞检测算法主要是研究在静态环境下 2 个物体之