中国西部科技 2 0 0 8年2月 (中旬 )第0 7卷第0 5期总第, 3 0期
3D 游戏中硼勤撇组的应用
黄海芳 , 余宇华2
(l 湖南信 .忽职业技术学院计算机
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
系, 湖南 长沙 41 0 2 0 0; 2 . 中国工商银行湖南金种培训学校 , 4 1 0 2 0 0
摘 要 : 为了使游戏有较高的真实性 , 必须处理游戏场景中的模型间的碰撞问题 。 本文介绍 了在3。游戏中简单实用的廷撞检浏MATCH_
word
word文档格式规范word作业纸小票打印word模板word简历模板免费word简历
_1714012605860_2一
-一球形包围盒 , 通过 简单比较法和RDc( 递归逐维分组)对游戏场景中多个模型进行碰撞检浏 , 并分析比较 了各 自的优缺点 . 劝c葬法不
仅显著提高了碰撞检 a.] 的速度 , 而且使3D 游戏能够更实时 、 准确地检刻出碰撞模型组 .
关键词 : 碰撞检浏 ; 包围盒 ; RD c
肠 str a c t: Fo r e r ea tin g hig h r eality in the g am e , the Pro ble m o f m o d els’ c o llisio n s m u st be d ete eted . In th is PaPe r , a
sim Ple a n d p r a etiea lm etho d o fe o llisio n d etee tio n 一 sPhe r e s bo u n d in g bo x 15 Pu t fo rw a r d to so lv e the e o llisio n d etee tio n
in 3 D g am e
.
Th
e Pa Per d iseu ssed a n d e o m Pa r ed the Pr in eiPle a n d effe
e tiV en e ss o f sim Ple e o m Pa riso n m etho d
,
Re
e u r s
ive
D im en sio n a lClu ste rin g (R D C )m etho d in d e ta il
, an d a n alysis the ad v a n tag e s
a n d d isadva n ta g e s o f eae h
.
R D C alg o r ithm n o t o n ly im p rove
the sPeed o f e o llisio n d etee tio n
,
bu t also ean m e asu r e the
c o llisio n o fm o d e lgr o u P in r eal
·
tim e
.
K ev wo
r d s : e o llisio n d etee tio n ; b o u n d in g bo x ; R D C
1 引言
碰撞检测问题是计算机辅助设计与制造 忧AD /c 胡) 、
计算机几何 、 机器人和 自动化 、 工程分析 、 计算机图形
学 、 虚拟现实等领域中的基本研究问题 , 有着广泛的应用
空间。 伴随着计算机计算机技术的发展和个人Pc 的普及 ,
玩游戏已经成为很多人休闲娱乐的一种方式 , 游戏软件制
作成为一种热门职业 。 在游戏中物体的碰撞是经常发生
的 , 怎样检测物体的碰撞是一个很关键的技术问题 。
碰撞检测也称为干涉检测或接触检测 , 就是对物体在
运动或装配过程中可能出现的碰撞或干涉进行检查 , 避免
碰撞或干涉的发生 , 或进行响应的碰撞处理£1] 。 碰撞检测是
构造虚拟环境的 一个重要部分 , 在游戏中如果没有碰撞检
测 , 人物就可以在场景中任意游走 , 穿山过墙 , 让玩家失
去了兴趣 , 合理精确的碰撞对游戏软件来说是不可缺少
的。
在 2D 即G游戏中 , 一般将场景分为许多矩形的单元来
简化碰撞问题 , 只要判断精灵所在的单元是不是有其它的
东西就可以了 。 但是碰撞问题在3D 游戏中就相对复杂一
些 。 因为对于Pc 机的运算能力 , 几乎不可能使用检测每个
物体的多边形和顶点的穿透 , 那样的运算量对PC 来讲几乎
是不可完成的。 所以PC游戏上使用的碰撞检测不可能使用
太精确的检测 。 而且对于3D 碰撞检测问题 , 还没有几乎完
美的解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。 目前只能采取根据需要来取舍运算速度和
精确性 。 目前成功商业 3D 游戏普遍采用的碰撞检测是采用
包围盒方式 。 简单讲就是采用一个描述用的正方体或者球
型体包裹住3D 物体对象整体 (或者是主要部分 ) , 之后根
据包装盒的 距离、 位置等信息来计算是否发生碰撞 。
2 球形包 . 盆检侧法
包围盒方法的基本思想是通过建立对象的包围盒层次
来逐渐逼近对象的几何模型 , 从而用体积略大而形状简单
的包围盒代替复杂的几何对象参加碰撞检测 , 通过包围盒
间的相交测试
快速地排除不相交的基本集合元素对 , 以减少相交测
试的次数〔5] 。 用球形来近似地表示物体或物体的一部分 , 然
后再判断这些包围球是否相交 。 这样仅需要测试两个球体
中心的距离是否小于它们的半径和 (这表示发生了碰
撞 ) 。
球形和球形的碰撞应该说是一种最简单的碰撞 , 因为
在数学上对于两个球形是否发生重叠 , 有计算两个球心之
间的距离的
公式
小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载
。 那么条件就变为 : 计算两个球心之间的
距离是否小于两个球的半径和 。
假设球形 l的左上角坐标是 (x l , yl , 2 1) , 半径是r l ,
收稿日期 : 2 0 0 7 一1 2 一29 修回日期: 20 08 一0 2 一 1 3
作者简介 : 黄海芳 (19 81 一 ) , 女 , 望城人 , 助教 , 学士 , 主要研究领域为游戏开发 , C #应用。
州 。“ ‘
球形2的左上角的坐标是(x Z , yZ , 2 2) , 半径是rZ 。
因为浮点数的运算比较慢 , 我们将条件做一个简单的
变换, 对于条件的两边都进行平方 , 这样就去掉了开方的运
算步骤。
下面是数学表达式:
(x l
一 x Z)
’ + (yl
一 yZ)
’ + (2 1
一 2 2)
’ < (r l +
r Z)
’
在程序中 , 只需要将上面的条件转换成代码就可以了。
3 30游戏碰扭检洲
在3D 游戏中, 三维游戏空间R用三维儿何坐标系统Fw表
示 , 其中有n个运动游戏模型 , 它们的空间位置和姿态随着
时间而改变 , Fi 表示第i个模型所占的空间 。 Fw随着时间的
变化形成四维坐标系统Cw , 模型Fi 沿一定的轨迹运动形成
四维坐标系统Ci , 〔8〕碰撞检测就是判断下式是否成立 :
c , n CZ 自C3⋯⋯n= 。 用球形包围盒方法进行碰撞检测 。
算法不断递归 , 以便将分组划分为最小的簇 。
V o id RD C( Pa ir s & pa ir s
,
G r o u p & g r o u p
,
Ax is x
,
Ax is v
.
Ax is z )
Lis t bo u n da r ie s ;
Fin do p e n Clo s eBo u n da r ie s (x
,
g r o u p
,
b o u n d a r ie s) :
S o r t (bo u n da r ie s) :
G r o u p s u b g r o u P :
in t e o u n t二 0 ;
b o o l g r o uPs ub d iv id e二fa l s e :
f o r (e ve r y e u r Bo u n da r y in b o u n d a r ie s lis t ) {
if (e u rBo u n d a r y n o t m a t eh) {
Ad dT o Gr o u p (s ub g r o u p
简单比较法
fo r (in t i= 0 ; i(n ; i+ + )
e o u n t + + ;
, e u rBo u n da r y 一)e n t it y) :
fo r (in t j
二 i+ 1 : j(n : j+ + )
if( Dis t a n e e ( i
,
j)(Ra d iu s (i) + R a d iu s (j))
} } }
以上表述的算法要遍历所有的基本集合元素 , 是最基
本 , 也是速度最慢的碰撞检测算法 , 需要对距离进行n Z次比
较 , 复杂度为。(n 2) 。 为了提高碰撞检测速度 , 可以用RDC 方
法进行改进优化。
3
.
2 RD C(递归逐维分组)
递归逐维分组是任天堂公司一个职员发明一种多物体
碰撞的优化方法 , 该算法对每个运动物体的边界进行标
记 , 通过遍历所有的实体 , 并将其在给定维中的起始边界
和结束边界存储在边界链表 , 用排序算法按位置从低到高
的顺序对链表进行排序 , 然后使用这些数据找出边界重叠
的物体组 , 找出碰撞物体组 「2] 。 组指的是一系列彼此接触或
彼此的距离在某个半径范围内的物体 , 即如果A与B相接
触 , 而B又与C相接触 , 则A 、 B和C属于同一组 。
在3D 游戏的三维空间中 , 可以对所有运动的游戏模型
按照以下步骤进行分组 :
1 ) 从x 轴开始;
2 ) 创建这一维的物体边界链表 ;
3) 按边界位置从低到高的顺序对链表进行排序;
4) 使用链表中的每个游戏模型开始/ 结束找出物体
组 ;
5) 对于找到的每个分组 , 沿y轴 , z轴重复第2) 一
5) 步 , 直到分组不能被进一步划分 , 且沿所有坐标轴对该
分组进行分析 ;
e ls e { e o u n t一 :
if (e o u n t
二二0) {
If (e u r Bo u n d a r y !招e t La s t Bo u n d a r y (bo u n da r ie s )) (
g r o u p s u bd iv id e二 t r u e : }
R e e u r s ive elu s t e r in g (p a r is
, s u b g r o u p
,
y
, z ) :
Cle a r (s u b g r o u p ) :
}
}
}
由于三维空间的物理限制 , 最糟的情况出现的可能性
非常小 , 相反 , 只要游戏中大部分模型没有相碰 , 则该算
法的复杂度为0 (nl og Zn) 。 在两种极端情况下 , RDC 的性
能非常糟 。
1) 游戏模型的分布情况导致递归层次非常深 , 这发生
在分布最不对称时 , 即其中一个模型属于一组 , 其它n 一 l模
型属于另一组 , 这样大的一组被递归地传递给函数 , 如果
每个递归层的情况都如此 , 则需要进行n一l次递归调用 , 复
杂度为。(n ) ; 组的平均大小 m 为n / 2 , 排序的复杂度。(n lo g Zn ),
总体复杂度为0 (n Zlo g Zn ) :
2) 所有模型碰撞到一起 , 在这种情况下 , 沿每维进行
分析时 , 得到的都是一组 。 然后 , 整个组将被传递给比较
函数 , 以找出相互碰撞对 , 复杂度为O(n Z) 。
虽然递归逐维分组(RDC) 算法并非一种完整的碰撞检测
解决方案 , 但它是一个强大的过滤器 , 能够确定可能碰撞
的物体组 , 其速度很快 , 远远超过简单比较法 。 在实际应
用中 , RDC 最适合用于分析大量物体 (超过25 个 ) 。
中. 西部科技 2 0 0 8年2月 (中旬 )第0 7 . 第0 5翔总第1 3 0翔
4 结束语
碰撞检测是游戏中重要的组成部分 , 由于实时性要
求 , 在游戏场景中, 一般用相对简单的球形包围盒代替运
动的游戏模型进行碰撞检测 。
本文分析比较了简单比较法和RDC (递归逐维分组)两种
算法的优缺点 , 但在使用中, 我们选用哪种算法来检测 ,
要根据实际需要进行抉择 , 可以选择其中一种 , 也可以选
用两种综合运用 。
参考文献:
【l] 刘 涛, 王增波 , 李占丽 . 碰撞检测过程中的包围盒技术及应
用[J] . 西安科技大学学报 2 0 0 6 , ( 0 9 )
[2 ] M
a r k A
.
De lo u r a著 . 袁国忠 , 陈蔚译 . 游戏编程精粹2「Ml. 北
京 : 人民邮电出版社 2003 , ( 12)
[ 3 ] An dr e L幽o t he著 . 沙鹰译 . , i n d o , s 游戏编程大师技巧
[M]
. 北京 : 中国电力出版社 , 2006 , (0 1)
【41 魏迎梅 . 虚拟环境中碰撞检测问题的研究【J] . 国防科技大
学, 2000
【5] 李井辉 , 申静波. 基于包围盒的碰撞检测技术研究{J] . 高校实
验室工作研究 , 2006 , ( 12)
[6 ] Blo
, ,
Jon
a tha n
.
Pr a e t ie a l Co lli s io n De t e e t io n
[R〕Co叩u t e r Gam e De v e lo p er s Co n fe r e n e e 1997
〔7 ] Ro be r t s , Da v e . Co lli s io n De t e e t io n [M] Dr . Do bb ’ s
So u r e e Bo o k 1 9 9 5
.
5
[8 〕王立文 , 刘壁瑶 , 韩俊伟 . 基于包围盒的碰撞检测算法
[J]
. 中国民航大学学报 , 20 07 , (08 )
科技短讯 我国功能化电极界面研究取得系列创新成果
中科院长春应化所的科技人员面向国家战略需求和世
界科学发展前沿 , 不断探索开拓 , 在 “功能化电极界面的
研究—从化学修饰到自组装 ” 方面取得系列具有国际影响力的创新成果 , 不久前荣获国家自然科学奖二等奖 。
《化学修饰电极》 ; 为英国 《分析科学大全》撰写了 《化
学修饰电极专论》 。
化学修饰电极是开展能源 、 材料 、 环境 、 生命科学研
究的重要理论基础之一 , 是电化学界面研究从被动认识到
主动控制的重要标志 。 上世纪 90 年代自组装技术被引入电
极界面修饰后 , 以自组装的有序、 定向、 密集的特征为电
化学研究实验平台和研究表面 、 界面现象的理想模型 , 用
以开拓电化学研究和应用的新局面 , 引起了国内外同行的
广泛关注 , 并迅速发展为国际电化学领域的重要前沿方向
之一 。
提出了光透法用于定量分析的理论、 方法及生物大分
子构象变化的圆二色谱解析法 ; 构建了EC一SPR装置并用于
检测 ; 出版了专著 《光谱电化学方法—理论和应用》 ;为 科 学 丛 书 美 国 Me th o d s En z y m o lo g y和 英 国
Re v
.
An a l
.
Ch e m
. 撰写专论2篇。
建立了化学修饰电极电催化的理论和方法 。 提出了研
究不稳定体系电催化的流体动力学和超微修饰电极电催化
的两种理论方法 , 被美国Lyo n s在如n u . Re p t . p r o e . Che o . 中
推荐为现代电化学新方法 。
长春应化所早在上世纪80 年代初就率先在国内开展了
化学修饰电极的研究 , 并于 19 87 年获国家自然科学奖三等
奖 ; 90 年代后 , 他们迅速开展了分子自组装有序修饰电
极、 在碳电极上进行有序自组装 、 界面微结构和电极功能
关系等研究。 经过多年的奋发探索 , 不懈拼搏 , 他们在化
学修饰电极 、 自组装 、 表征 、 理论和应用等方面开拓出了
相关新理论 、 新原理 、 新方法 , 取得了系列原创性的创新
成果 :
发现导电聚合物氧化还原中离子的掺杂/ 去掺杂 , 并可
控药物释放 ; 首创一类新型电化学传感器 : 欠电位沉积纳
米把D0 传感器己商品化 ; 提出将分离 、 富集和测定结合的
化学修饰电极检测痕量金属 ; 发现亚甲基兰化学传感器促
进血红蛋白的电子转移有广谱意义 , 在Bi oc he m . 中被大篇
幅引用 。
同时 , 在项 目研究过程中共发表论文 168 篇 , 全部被
SCI 收录 ; 出版专著2部 、 专论4篇册 ; 获权发明专利 n 项 。
开拓了界面修饰 、 自组装和表征方法 。 研制新型化学
修饰电极90 多种 。 从分子水平设计并拓展在金特别是碳上
单层和多层分子及纳米金属膜的有序组装 。 出版了专著