第!"卷 第!期
#$$%年!月
计算机辅助设计与图形学学报
&’()*+,’-.’/0(12)3+452552647*8.’/0(12)7)+
:;<=!",*;=!
&>?=,#$$%
收稿日期:#$$@A$BA#";修回日期:#$$@A$CA#!
基金项目:国家“八六三”高技术研究发展计划(#$$B++D!D$!!);湖北省科技攻关项目(#$$D++!$@E$D
!!!!!!!!
!!!!!!!!
"
""
"
)
应用荟萃
行为建模在基于粒子的物理仿真中的应用
宋建勇 陈定方
(武汉理工大学智能制造与控制研究所 武汉 DB$$%B)
(中国科学院计算技术研究所智能信息处理重点实验室 北京 !$$$"$)
(FGH;?I!!#%=J;K)
摘 要 提出了一种在基于粒子的物理仿真中以实体对象的行为建模为驱动的方法,充分结合了几何建模与物理
建模在仿真过程各自的优势,降低了其间的耦合度,提高了项目完成的效率=利用文中方法完成了一个实时的布料
仿真,对粒子对象行为的可扩展性进行了探讨,并给出了该方案的结果分析=
关键词 建模;行为;粒子系统;物理仿真;碰撞;’LM?7,
中图法分类号 10BN!=C#
!""#$%&’$()(*+,-&.$(/�(1,#$)2$)’-,3&/’$%#,4+&5,13-65$%$89#&’$()
6;?I&O>?G;?I .PM?5O?IQ>?I
(!"#$%&’(’)’#*+$%’#,,(-#%’./%)+/0’)1#/%23*%’1*,,4)"/%5%(6#1&(’7*+!#0"%*,*-7,4)"/% DB$$%B)
(8/9*1/’*17*+$%’#,,(-#%’$%+*1:/’(*%;1*0#&&(%-,$%&’(’)’#*+3*:<)’(%-!#0"%*,*-7,3"(%#&#=0/2#:7*+>0(#%0#&,?#(@(%- !$$$"$)
!:5’/&%’ +?>LLR;>JPSP>STHMHUMP>VO;R><K;WM<O?I;QJ<;SPL>RSOJ<MH;UFMJSS;WROVMSPMLPGHOJ><
HOKT<>S;ROHLRMHM?SMW,XPOJPTSO<OYMHSPM>WV>?S>IMH;QU;SPLPGHOJ><K;WM<O?I>?WIM;KMSROJ><K;WM<O?I
KMSP;WHXPO<MRM<>ZMHSPMJ;TL<O?IUMSXMM?SPMK,RMHT<SO?IO?RM><3SOKM>?OK>SO;?MQQMJS=
;,6<(/15 K;WM<O?I;UMP>VO;R;L>RSOJ<MHGHSMK;LPGHOJ><HOKT<>S;R;J;<<OHO;?;’LM?7,
= 引 言
虚拟现实、科学计算可视化及计算机仿真技术
是当前学术界研究的热点[!],其中,基于物理的建
模与仿真是主要的研究方向之一=基于物理的建模
方法不但在建模过程中弥补了几何建模的不足,在
交互式仿真过程中,实体对象的物理行为也增强了
仿真的真实感=
在环境的约束下,要实现逼真的仿真过程,解决
实时性与真实感之间的矛盾是问题的关键之一=本
文选择计算机图形仿真中的一个经典问题———布料
运动仿真,作为研究对象,它被计算机图形协会作为
研究的热门课题之一=国内外众多学者从不同的侧
面对其进行了大量的研究,早期基本上是以几何建
模为核心进行模拟的:[MO<的余弦曲线表示法[#];
9>W>L等采用的纹理与几何相结合的方法[B]=
纯几何表示的仿真结果并不理想,而引入质量、
力、能量等物理量,将织物各个部分的运动看成各种
力的作用下质点运动的结果,采用基于物理建模的
仿真方法,成为了新的研究方向=1MRY;L;T<;H等提
出的质点3弹簧模型[D]为后续的研究奠定了物理基
础,该模型把柔性物体描述成内部组织抵抗形变产
生的弹性力、外界作用力和阻尼力共同作用的结果=
而在经典的质点3弹簧模型中,采用2T<MR方法、
)T?IM3\TSS>
###############################################################
或共轭梯度法求解,需要迭代多次才
能收敛到平衡状态!针对于复杂的数学求解,"#$#%%
等提出的大步长隐式迭代法,降低了方程的迭代次
数[&]!
然而,在实现仿真的过程中,除了需要合理地处
理上述数学运算、物理建模和几何描述之外,还需要
根据系统的需求分别考虑人机交互、场景设置、光照
处理、纹理映射等一系列因素,诸多问题的糅合会使
得整个系统显得复杂和臃肿!虽然’()*+,,-.$)/01
等优秀的图形程序开发接口为程序的开发提供很多
便利,但从设计的角度而言,针对于仿真环境,如何
理清系统设计的条理,充分体现各实体的行为特征,
是本文所要解决的主要任务!
本文方法以行为建模为驱动,结合几何建模与
物理建模各自优势,按照实体对象的行为特征逐步
推进,可以很好地解决以上问题!充分地考虑了围
绕以粒子的物理特征为核心的仿真中几何建模与表
达的重要性,以及行为建模的规划和指导作用!物
理建模部分则以交互式2’创始者3#4567)*提出的
交互式物理建模理论[8]为基础,并针对本系统的特
点作了部分调整,同时改进了算法!
! 建模过程
为了完成仿真,我们以’()*+,作为开发工具!
作为一种连接到图形硬件的软件接口,’()*+,提
供了9-图形与建模快速开发函数库,以及由几何
表达、矩阵变换、纹理映射、光照特效、动画处理等技
术组成的综合应用的环境!
!"! 系统行为
为了按照时间序列依次产生动画,标记仿真的
时间步长为!70)(,仿真积累时间为!7.:;<#*,当前系
统运行时间为!/;$$)*0,对于时间的约束采用=>,
建模表示,如图?所示!
图? 对时间约束建模
图?中,!70)(@?:7;"为步长调整因子;当系统
满足!7.:;<#*!!/;$$)*0时,更新布料的状态,并刷新
屏幕显示;而当前系统运行时间的获取#$%!/;$$)*0()
以及显示状态的更新&$’($)*()可借助+,-%函数库
中的函数来完成!这样,即可完成仿真中对系统时
间约束行为的建模!至于系统的交互方式、场景设
置、光照处理等行为,要根据需求而定!我们认为,
小规模开发中可以视上述行为为后置行为,待完成
系统的基本行为后进一步扩展;而在大系统的开发
中则需要模块化并进行协同设计!
!"# 粒子对象划分
对于整个布料需要采用一种实时运动的自由曲
面来描述,若采用A=B"C技术等纯几何方法生成
曲面,计算量大且参数难于控制和调整,不能满足实
时仿真的需求!因此往往将曲面离散化,由离散点
的行为表现物理特征,这一系列离散的点即为本文
所描述的粒子系统!
定义!"由. 个粒子/0(%12,$345$2%对象组成
的粒子集合/0(%12,$)6$%,可标记为/0(%12,$6$%"@
(/0(%12,$345$2%1#1@?,⋯,7)!
为了简化描述,本文以方形布料为例,定义布料
的经纬方向的分解率为&/<50D,将布料网格化成7E
7的方格,如图F所示,粒子总数为.(#$0./<)7@&/<50DE
&/<50D!粒子之间的距离8(#$0./<)7取决于布料大小6/<50D
及其分解率&/<50D!
图F 布料分解为粒子化表示
!"$ 粒子对象行为
定义#"粒子对象/0(%12,$345$2%可表示为四
元组
/0(%12,$345$2%"@(/0(%12,$.09$,#$:9$%(;6$%,
/*;)12)6$%,<$*0=1:(6$%)!
其中,/0(%12,$.09$是/0(%12,$345$2%名称;#$:9$%(;6$%
?&??期 宋建勇等:行为建模在基于粒子的物理仿真中的应用
是!"#$%&’()*+(&$几何集合;!,-.%&./($是!"#$%&’()*+(&$
物理集合;0(,"1%2#/($是!"#$%&’()*+(&$行为集合!
本仿真中,每个粒子被标记为质量!"#$$为%单
位,空间位置为!&’$()(’*的对象,同时在外力(包括重
力、风力,撞击力、摩擦力、空气阻力等)与内力(粒子
间的阻尼力)共同作用下按照物理规律运动!这里,
从物理角度只考虑了重力3+,#-()#)(’*、风力3.(*/和空
气阻力3,0$($)#*10,而阻尼力3/#"&和撞击力31’22($(’*分
别通过粒子间约束和碰撞响应从几何角度给出了位
置补偿或从物理角度进行计算!考虑到摩擦力对粒
子影响的比较小,其暂时忽略不计!
!"# 几何描述
%!3!% 矢量计算
为了保证各物理量通过粒子的几何位置在空间
正确表达,需要将粒子进行矢量化表示!先计算每
个三角形面片的法向矢量,相邻三角形法向矢量的
累积赋值给三角形的顶点,即得到各粒子的法向矢
量!*’,"#2,并归一化!
如图4所示,取三角形的相邻两边,标记其空间
矢量"和#为$),(#*+205〈45,4-,46〉,%),(#*+205〈15,
1-,16〉,&,’,(分别表示与5,-,6坐标系平行的单
位矢量,则通过矢量间叉积)5"6#,得到三角形
的法向矢量
*),(#*+205$),(#*+206%),(#*+205(4-1671-46)6
&8(461571645)’8(451-7154-)(;
而各三角形法向矢量累积就得到粒子的法向矢量
!*’,"#25)8)78⋯!
图4 粒子矢量化表示
计算粒子法向矢量的模为
8!*’,"#289 :*’,"#2
9
5 ;:*’,"#2
9
- ;:*’,"#2
9! 6 ,
法向矢量归一化方法为
!*’,"#2(:09!*’,"#2!8!*’,"#28!
粒子矢量化表示是仿真过程中计算的关键部
分,是后续物理建模与碰撞检测的前提!
%!3!9 粒子间约束处理
质点<弹簧模型虽然常常作为仿真布料运动解
决方案,然而质点间弹簧模型的求解不但计算烦琐,
而且系统鲁棒性差!本文提出了一种位置补偿法,
通过几何的角度很好地解决了粒子之间的约束!
如图3所示,根据布料的大小及其分解率,任意
9个粒子之间位置关系!&’$()(’*决定了9个粒子间的
初始的距离!/($)#*10,如图3;所示!然而,当粒子在
力的作用下位置发生改变时,粒子间的距离则改变
为!!/($)#*10,如图3#,31所示!由此,可以通过补偿
的方法确保粒子间的合理位置,算法如下:
"描述粒子间约束的伪代码
-’(/!"#$%&’(/-.$(=#/"$%.>-?2@.$#"%@$.(){
对于任意粒子%:{
获得粒子%当前时刻的位置!%&’$()(’*;
获得粒子9当前时刻的位置!9&’$()(’*;
位置矢量
!/($&2#10"0*)5!9&’$()(’*7!%&’$()(’*;
距离
!!/($)#*105 !/($&2#10"0*)!/($&! 2#10"0*);
粒子%位置调整
!%&’$()(’*75
!/($&2#10"0*)(!!/($)#*107!/($)#*10
9!!/($)#*10
;
粒子9位置调整
!9&’$()(’*85
!/($&2#10"0*)(!!/($)#*107!/($)#*10)
9!!/($)#*10
;
}
}
该算法不但简洁实用,而且在系统仿真试验中
表现得非常稳定!同时,在力的作用下,粒子间的约
束表现为弹性形变,同样具备了质点<弹簧模型的效
果;而且可以通过设置位置调整因子,可以改变约束
间的刚性行为!
图3 粒子间位置补偿
!"$ 物理建模
下面将就粒子的物理行为,分别从受力、粒子间
约束以及与外界物体的碰撞进行分析!
%!<!% 粒子受力的计算
对于任意粒子,在重力++,#-()=,风力3.(*/和阻
力+/#"&作用下的示意图如图<所示,该粒子的行为
表现为在各力的合力+(*)0+,#)0作用下,按照经典力学
中的运动规律运动!
9<% 计算机辅助设计与图形学学报 9>>?年
图! 粒子受力示意图
在求解合力过程,为了与几何表示相对应,需要
分别计算各力在空间坐标系中的矢量方向,并以矢
量化的形式求解合力!"#$%&’($%;同时,与第)*+节关
于粒子法向矢量的计算结果"#,-(."/%相结合,即可以
解决作用在粒子上合力的几何表示*
)*!*0 动力学分析
为了进一步体现粒子的运动学性能,需要借助
动力学求解*牛顿第二定律是解决问题的基础
!"!#!$%"
&
10$%
1’0 "&(*
在模拟粒子运动时,本文采用的是2%’.%$积分
法[3],该方法具有计算精确、收敛性好、结果稳定、
轨迹与速度无关等优点*4(5,67%#对该方法进行深
入的研究,并在游戏开发领域推广,得到了良好的
效果[8]*
对于某时刻’,它的上一时刻’9!’与下一时
刻’:!’的位移分别为$(’9!’)和$(’:!’),!’为
时间间隔,((’)为加速度,)()表示精度误差,则它
们存在关系
$(’*!’)"$(’)*!’+(’)*)0!’
0((’)*
)
;!!’
;((’)*)(!’+) ())
$(’,!’)"$(’),!’+(’)*)0!’
0((’),
)
;!!’
;((’)*)(!’+) (0)
将式()),式(0)相加,得到
$(’*!’)"0$(’),$(’,!’)*
!’0((’)*)(!’+) (;)
根据式()),(0)还可以进一步求解’时刻的速度
+(’)"$
(’*!’),$(’,!’)
0!’ *)
(!’0)(+)
考虑到式(+)的误差)(!’0)比较大,而且与轨
迹无关,所以在该仿真过程中暂时不考虑速度*而
由于式(;)中误差)(!’+)相对较小,可以忽略,则简
化式(;)得到
$(’*!’)"0$(’),$(’,!’)*!’0((’)*
该方程即为仿真过程中运动学计算的理论依据*抽
象出算法表示如下:
"2%’.%$积分迭代伪代码
<,"1-($’%./0123’0($/0’(){
对于任意粒子%:{
指针5指向粒子当前时刻的位置;
’0&6=5;
指针5,.1指向粒子前一时刻的位置;
计算合力!"#$%&’($%;
5:=595,.1:!"#$%&’($%"--(77·707"->.($",#;
5,.1=’0&6;
}
}
! 粒子行为的扩展
完成布料的运动仿真后,若考虑仿真的表现效
果,可以通过添加纹理、光照、雾化等手法实现*然
而,仅就粒子的行为本身而言,还有很多需要进一步
完善和扩展的地方*下面仅从0个方面着重讨论*
!"# 基于物理的碰撞响应
碰撞是仿真中需要解决的主要技术点之一,针
对不同的环境,碰撞的方法也各不相同*在本文系
统中,解决方案主要针对0点:))基于几何的光线跟
踪法[?]解决碰撞检测问题,该方法简单易用,但缺
点是不能体现碰撞过程中的粒子能量损耗;0)基于
物理的动量、动能守恒法解决碰撞响应*
粒子在与外界物体碰撞过程中,需要从动量和
能量的角度考虑,才更能与实际的行为接近*用(
标记粒子,8为碰撞物,%和9分别为起始和终止状
态,& 为质量,+为速度,则线性动量守恒和动能守
恒分别为
&(+(%*&8+8%"&(+(9*&8+89 (!)
)"0&(+0(%*)"0&8+08%"
)"0&(+0(9*)"0&8+
0
89 (8)
考虑到碰撞过程中的能量损耗0以及碰撞线的
方向#,联立式(!)和式(8)并综合求解,得到碰撞后
粒子和碰撞物的法线方向的速度方程为
+(9"((0*))&8+8%#*+(%#:
(&(,0&8))"(&(*&8), (3)
+89"((0*))&(+(%#,+8%#:
;!))期 宋建勇等:行为建模在基于粒子的物理仿真中的应用
(!"#$!%))!(!"&!%), (!)
其中$"[’%(!#’"(!]![’%)!#’")!]$
为了获取粒子与碰撞物的初始速度,需要根据
粒子的属性对式(%)中速度的精度进行修正,进而可
以通过式(&),(!)仿真精确的碰撞过程$
!"! 动态曲面造型
考虑到粒子以质点形式存在,同时粒子之间存
在着约束关系,当调整弹性系数、增加其间的刚性
时,即可以保留粒子系统被碰撞或者扫掠后留下的
形体状态,这一点对动态曲面创建是一个启发$虽
然,’()*+,-./等提出的以具有弹性弹簧和铰链连接
的质量点作为控制点产生0样条形变的方法[1],结
合了23405技术和基于物理的建模技术,是一种
动态23405技术,但其还不能在实时的仿真系统
中通过交互生成自由曲面$充分考虑粒子的物理属
性,增强其惰性行为,保留交互后的形变,是解决该
问题的技术方案之一$
实际上,虽然基于粒子的视景仿真在流体运动、
火焰模拟[67]和生物医学仿真等方面已经展开了一
定的研究与应用,但工程上的应用相对较少,如果能
在机械加工、摩擦学、铸造、表面纹理等领域的仿真
中引入该技术方案,相信会获得新的突破与进展$
# 仿真结果
我们在 8)*/-9:;777操作系统,<=3为;$%7
>?@,4AB为;CDB0,显存为D%B0的=<机上,研
制了系统原型(实验系统),并进行了多种组合实验,
部分仿真结果如图D!6;所示$考虑各种计算、
显示、内存处理等系统开销,表6所示为仿真结果
统计$
图D 布料以粒子显示 图& 布料以三角形网格显示 图! 料添加;E纹理
图1 不同风速下的旗子 图66 基于粒子的曲面造型
图67 利用守恒法的碰撞检测
图6; 场景合成效果图
表$ 仿真结果统计
类型 粒子总数 三角形面片总数 质点间总约束 帧频"帧": 时间步长":
6 67;% 61;; C!;! &6 7$776
; ;F7% %%6! 16;7 C! 7$776
F %71D &1F! ;F1%7 %D 7$776
% C6!% 677!; F7F!! F; 7$776
%C6 计算机辅助设计与图形学学报 ;77D年
性能测试结果表明:如果以计算机生成平滑动
画的最小阈值!"帧!#约定,本文仿真系统可以仿真
由$万余个三角形面片组成的布料实体,完全能够
满足实时性的要求%这也为本文系统在复杂场景中
的加载奠定了基础%
同时,与&’()*积分法的截断误差!(!")或二
阶+’,-)./’001积分法的截断误差!(!"2)相比,
3)*()0积分法具有更高精度的截断误差!(!"4)%我
们为了证实3)*()0积分法的相对运算精度,完成了
计算求解的误差分析及其对策[$$]%
! 结 论
本文以系统和粒子的行为建模作为驱动,通过
几何建模和物理建模2种技术的结合,完成了一个
基于粒子的物理运动仿真%建模过程中,综合运用
几何建模与物理建模的各自特点和所长,交错使用
而不混杂;同时,基于行为建模的驱动作用,不仅使
得整个项目规划的条理清晰明快,而且使系统具有
更强的延展性%行为建模的研究正处于发展阶段,
合理地规划对象的行为,不但需要全面地了解系统,
而且需要一定的项目经验积累%随着研究的深入和
多学科的交叉与融合,相信几何建模、物理建模、行
为建模三者的有机结合与协同互补将成为建模研究
发展的必然趋势%
参 考 文 献
[$] 56),78,-91,-,:’;<1=;,#"$%%38*0’1(>)#8-,[?]%@)8A8,-:
568,1?1B68,)C*)##,2""2(8,568,)#))
(陈定方,罗亚波,等%虚拟设计[?]%北京:机械工业出版
社,2""2)
[2] D)8(E%F6)#G,06)#8#;9B(;06;=A)B0#[E]%5;HI’0)*J*1I68B#,
$KLM,2"(4):4KNO4
[!] P1>1I Q,#" $%% R,8H108,- S*8,/()# ;, B(;06)#[5]
!C*;B))>8,-# ;9 06) 5;,9)*),B) ;, 38#’1(8T108;,’KK:
5)()=*108,-F),<)1*#,Q1,U*1,B8#B;,5R,$KKK:$VON$L2
[4] F)*T;I;’(;#7,C(100E5,@1**RP%&(1#08B1((G>)9;*H1=()
H;>)(#[E]%5;HI’0)*J*1I68B#,$KLV,2$(4):2"ON2$4
[O] @1*1997,D80/8,R%:1*-)#0)I#8,B(;06#8H’(108;,[5]
!5;HI’0)*J*1I68B#C*;B))>8,-#,R,,’1(5;,9)*),B)Q)*8)#,
R5?QWJJ+RCP,X*(1,>;,U:,$KKL:$"MN$$V
[M]E1/;=#),F6;H1#%R>Y1,B)>B61*1B0)*I6G#8B#[5]!C*;B))>8,-#
;9J1H)7)Y)(;I)*’#5;,9)*),B)2""$,Q1,E;#),2""$,!:2"
"24
[V] 3)*()0 :% 5;HI’0)*)ZI)*8H),0#;, B(1##8B1(9(’8>#% W%
06)*H;>G,1H8B1(I*;I)*08)#;9:),,1*>.E;,)#H;()B’()#[E]%
C6G#8B1(+)Y8)S,$KMV,$OK($):KLN$"!
[L] 56*8#0;I;’(;#78H80*8;#%5;((8#8;,>)0)B08;,1,>I6G#8B1((G=1#)>
H;>)(8,-0’0;*81([X:]%600I:!,)6)%-1H)>)Y%,)0
[K] F68,-Y;(>ER,56;),&%C6G#8B1(H;>)(8,-S806@.#I(8,)
#’*91B)#9;*8,0)*1B08Y)>)#8-,1,>1,8H108;,[E]%5;HI’0)*
J*1I68B#,$KK",24(2):$2KN$!V
[$"] U)8Q61;H)8,C),-<1,G8,-,:’J’;>;,-,#"$%%38#’1(8T108;,
;90’*=’(),0B;H=’#08;,9(1H)=1#)>;,I1*08B()#G#0)H[E]%
E;’*,1(;95;HI’0)*.R8>)> 7)#8-, [ 5;HI’0)*J*1I68B#,
2""O,$V(!):4M$N4MM(8,568,)#))
(费少梅,彭艳莹,陆国栋,等%基于粒子系统的湍流燃烧火
焰的可视化研究[E]%计算机辅助设计与图形学学报,2""O,
$V(!):4M$N4MM
[$$] Q;,-E81,G;,-% +)#)1*B6;,/)G0)B6,;(;-8)#9;*=)61Y8;*
H;>)(8,-;9Y8*0’1(1*0891B0#[7]%D’61,:D’61,\,8Y)*#80G;9
F)B6,;(;-G,2""O(8,568,)#))
(宋建勇%面向虚拟实体对象的行为建模关键技术研究[硕士
学位论文]%武汉:武汉理工大学,2""O)
宋建勇 男,$KVK年生,硕士,主要研
究方向为计算机图形学、数字图像处理、虚
拟现实%
陈定方 男,$K4M年生,教授,博士生
导师,主要研究方向为智能5R7!5R?、复
杂问题与复杂系统、科学计算可视化与计
算机仿真、分布式虚拟现实等(>9B6),#
I’=(8B]S6]6=]B,)%
OO$$期 宋建勇等:行为建模在基于粒子的物理仿真中的应用