Imagire Day 2009破壊シミュレーション入門
株式会社バンダイナムコゲームス コンテンツ制作本部 技術部 プロジェクトサポート課ソフトウェアテクノロジスト 今給黎 隆
本日の進行
はじめに
歴史
破壊シミュレーション
細かな破壊の表現
Imagire Day 2009
まとめ
本日の進行
はじめに
歴史
破壊シミュレーション
細かな破壊の表現
Imagire Day 2009
まとめ
はじめに
本講演では数式を多用しております
本講演ではシェーダの話はでてきません
社内で予行演習を行った際にGPUの話をいれたら「懐かしい香りがする」言われたので、方向性を90度変えています
Imagire Day 2009
方向性を90度変えています
破壊って?
物を引っ張ると
Imagire Day 2009
内部で力が発生して
限界を超えると切れる
近年の動向
商用ライブラリの発展
Havok Destruction
NVIDIA APEX Destruction
破壊に重点をおいたゲームの出現
Imagire Day 2009
破壊に重点をおいたゲームの出現
レッドファクション:ゲリラ
人為的
車両の衝突…道路の分離帯、路側帯のガードフェンスなど
重量物の落下…工場、建設現場など
高所からの落下…高層マンション、高層ビルなど
航空機の落下事故…
船舶の衝突事故…
テロによる攻撃…
破壊現象
(薄い物体は対象外)
(構造が複雑な物体は対象外)
Imagire Day 2009
テロによる攻撃…
ミサイル砲弾…
自然的
落石、岩盤崩壊…落石覆行など
土石流…砂防ダムなど
崩壊土砂…家屋など
波浪、津波…防波堤、護岸構造物、港湾施設など
直下地震…橋脚、建物など
竜巻…家屋、ビル破壊など
溶解…
(細かな物体の運動は正確ではない)
(波は対象外)
(徐々に融ける現象は対象外)
本日の進行
はじめに
歴史
破壊シミュレーション
細かな破壊の表現
Imagire Day 2009
まとめ
破壊の歴史1
Modeling inelastic deformation:viscolelasticity, plasticity, fracture(非弾性変形のモデリング:粘弾性 、塑性、破壊)
Demetri Terzopoulos, Kurt W. Fleischer (SIGGRAPH 1988)
Imagire Day 2009
紙のような薄い膜をぴりぴりと破く
破壊の歴史2 : マススプリングモデル
Animation of fracture by physical modeling(物理モデルに基づく破砕アニメーション)
Alan Norton, Greg Turk, Bob Bacon, John Gerth, Paula Sweeney (TVC 1991)
初3D破壊注:読み難い
Imagire Day 2009
Fast and controllable simulation of theshattering of brittle objects(脆い物体の粉砕に関する高速で制御可能なアニメーション)
Jeffrey Smith, Andrew Witkin and David Baraff (Graphics Interface 2000)
注:読み難い
高速化
破壊の歴史3: 有限要素法(主応力を計算し大きさに応じて断裂)
Graphical modeling and animation of brittlefracture(物理モデルに基づく破砕アニメーション)
James F. O’Brien and Jessica K. Hodgin (SIGGRAPH ‘99)
Real-time simulation of deformation andfracture of stiff materials
Imagire Day 2009
fracture of stiff materials(堅い物体における変形と破砕のリアルタイムシミュレーション)
Matthias Muller, Leonard McMillan, Julie Dorsey and Robert Jagnow (CAS 2001)
Physically-based simulation of objectsrepresented by surface meshes(表面メッシュで表現された物体の物理ベースシミュレーション)
Matthias Muller, Matthias Teschner, and Markus Gross (CGI2004)
メッシュレスベース手法
物体に粒子を振りまいて、粒子単位で変形、分裂を計算
破壊の歴史4: そのほかの手法
Imagire Day 2009
形状マッチング
ブロック等を繋げて形状変形を計算
カリフォルニア大学バークレー校 准教授
物理ベースの複雑な変形と流体
Graphical modeling and animation of brittle fracture(物理モデルに基づく破砕アニメーション)James F. O’Brien and Jessica K. Hodgin (SIGGRAPH ’99)
GDC2009 : Real-Time Deformation and Fracture: Finite
Prof. James F. O’Brien
Imagire Day 2009
GDC2009 : Real-Time Deformation and Fracture: Finiteelement simulation and it’s use in “Star Wars The ForceUnleashed”
Real-Time Deformation and Fracture in a Game Environment (SCA2009)
事前分割した物体を用意
有限要素法で破断を計算
分割した物体の中心が含まれる要素の位置、向きの情報から各物体の位置を決定
Dr. Matthias Müller-Fischer
Research Lead PhysX SDK NVIDIA
Real-time simulation of deformation andfracture of stiff materials(堅い物体における変形と破砕のリアルタイムシミュレーション)
Matthias Muller, Leonard McMillan, Julie Dorsey and RobertJagnow (CAS 2001)
Imagire Day 2009
Jagnow (CAS 2001)
Physically-based simulation of objectsrepresented by surface meshes(表面メッシュで表現された物体の物理ベースシミュレーション)
Matthias Muller, Matthias Teschner, and Markus Gross(CGI2004)
HPは物理エンジンを作る人にお勧め
本日の進行
はじめに
歴史
破壊シミュレーション
細かな破壊の表現
Imagire Day 2009
まとめ
座標系
マテリアル座標系:
モデリングツールで作った時の頂点(や補間された点)の位置
ワールド座標系:
物体の実際の空間での位置
),,(),,( 210 wvuuuu u
),,(),,( 210 zyxxxx x
Imagire Day 2009
物体の実際の空間での位置
物体の変形
マテリアル空間で長さΔu
ワールド空間でΔx(引き延ばされた)
引き延ばされた割合
du
dx 小さな一部分に注目したときの延び率
u
x
Imagire Day 2009
x+Δxx
u u+Δu
duu
iu
x3次元の場合のある方向について
wuvuuu 210 ,,
相対変位テンソル
変形のものさし
物体の一部分が変形した時の関係
ux
uu d xx d
udxd
j
j
ii du
u
xdx
Imagire Day 2009
dww
xdv
v
xdu
u
xdx
j
dww
ydv
v
ydu
u
ydy
dww
zdv
v
zdu
u
zdz
歪み
変位を対照と非対称に分解u
x
uu d xx d
udxd
dw
dv
du
w
z
v
z
u
zw
y
v
y
u
yw
x
v
x
u
x
dz
dy
dx
j
j
ii du
u
xdx
Imagire Day 2009
dw
dv
du
rotrot
rotrot
rotrot
dw
dv
du
w
z
w
y
v
z
w
x
u
zv
z
w
y
v
y
v
x
u
yu
z
w
x
u
y
v
x
u
x
dw
dv
du
w
z
w
z
w
y
v
z
w
x
u
zv
z
w
y
v
y
v
y
v
x
u
yu
z
w
x
u
y
v
x
u
x
u
x
dw
dv
du
w
z
w
z
w
y
v
z
w
x
u
zv
z
w
y
v
y
v
y
v
x
u
yu
z
w
x
u
y
v
x
u
x
u
x
dz
dy
dx
xy
xz
yz
0
0
0
2
1
2
1
2
12
1
2
12
1
2
1
2
1
2
1
xx
xx
xx
v
x
u
y
u
z
w
x
w
y
v
zrot xx u
歪み 回転
コーシーの歪みテンソル
ちょっと専門用語
応力:単位面積あたりの力
ある面の法線の方向にかかる力(垂直応力)
ある面の接線の方向へのすべりの力(せん断応力)
S
nF S
nnFF )(
ひっぱる
F
Imagire Day 2009
SS
F内部に力が発生適当に決める
考えたい面
フックの法則
ばねはある範囲なら掛かる力はばねの長さに比例する
だからばねは、はかりになる
xkf
Imagire Day 2009
弾性体(変形する物体)の場合
xkf
mgf
kfx /ばね定数
2
0
2
0
)(
k lklijklij C
応力 係数(3x3x3x3=81個のパラメータ)
歪み
Lame の定数 (1/2)
材質が等方的な場合
木の内部の様な特別な方向性を持たない
座標系のある成分の符号を変えても値は同じ
2
0
2
0
)(
k lklijklij C
Imagire Day 2009
座標系のある成分の符号を変えても値は同じ
座標系を入れ替えても値は変わらない
xx 例えば:
0001C のような、同じ添え字が来るような成分は0になる
11000011 CC のように、添え字を入れ替えた場合の値は同じ
jkilljikklijijkl CBAC
Lame の定数 (2/2)
2
0
2
0
)(
k lklijklij C
jkilljikklijijkl CBAC
CBA 2 2
)(
Imagire Day 2009
ijijijij 2Tr)(
jiijkkij
k lkljkilljikklijij
CBA
CBA
0 0
)(
ラメの弾性定数
こんな計算して何がうれしいの?
実測できる値との対応
単位面積当たりfの力で引っ張る
ijijijij 2Tr)(
SFf /S
Imagire Day 2009
ijijijij
f 0000)(
00 2Tr
02Tr 1111)(
11
02Tr 2222)(
22
0)(20
)(12
)(01
)1(2,
)1)(21(
EE
0011
00
/
/
fE : ヤング率: ポアソン比
(一方向の引っ張り(圧縮)応力の方向に対する歪み量の関係)
(軸方向とそれに直交する方向の歪みとの比)
歪みエネルギー
エネルギー:
時間がたっても総和が変わらないもの
mghkmE 22
2
1
2
1xv
Imagire Day 2009
弾性体(変形する物体)の場合
xkf εσ :2
1
2
1 )(2
0
2
0
)( i j
ijijU
仮想仕事の原理:実際に解くときに大事
微小な変位が与えられた時、物体全体の応力と外力の仮想仕事は等しい
)()()( uXup ijij dVdSdV
応力のエネルギーの仕事 表面から受ける外力
Imagire Day 2009
VS
ijij
v
物体全体 内部に直接受ける外力(重力、磁力)
ug
p up : 仮想的に圧力は変化した場合の仕事
: 重力による仕事
主応力
応力の行列の固有値(主応力)を求めて対角化
UUij
2
1
0
1)(
対称行列の固有値は、全て実数
Imagire Day 2009
U で対角化された座標系でみると、軸にそって物体は引っ張られる
+:引く
ー:押す
せん断はない
破断
主応力が大きな時に断裂
最大主応力説
UUij
2
1
0
1)(
),,max( 210 B
1
Imagire Day 2009
最大せん断応力説(トレスカの説)
せん断ひずみエネルギー説(ミーゼスの説)
分離テンソル
主応力の分散を閾値と比較
),,max( 210 B
2,
2,
2max 022110
B
202
2
21
2
10
22 B
20
10
FEM (Finite Element Method)
物体を要素に分解して解析
4面体に分解
力を等価節点力として作用
Imagire Day 2009
有限要素
節点
節点変位を固定
重心座標
マテリアル座標:
ワールド座標:
物体内の点
]3[]2[]1[]0[ ,,, mmmm
]3[]2[]1[]0[ ,,, pppp
][][
]1[
]0[
]3[]2[]1[]0[ ii bb
b
b
mmmmmu
][][
]1[
]0[
]3[]2[]1[]0[ ii bb
b
b
pppppx
Imagire Day 2009
][][
]3[
]2[]3[]2[]1[]0[ ii b
b
bmmmmmu
][][
]3[
]2[]3[]2[]1[]0[ ii b
b
bpppppx
1][ ib
それ以外 = 0
][imu
][ipx
座標変換
ローカル座標:
ワールド座標:
][][ ii bmu
][][ ii bpx
umppx 1 b
um 1][][
iib
Imagire Day 2009
umppx 1][][][][
iiii b
オブジェクト内の位置から、モデルの形状と物体の位置を通してワールド座標での位置が分かる
歪みテンソル
i
j
j
iij
u
x
u
x
2
1
ijjjjuu
δmpu
mpx 1
][][1][][
Tiiii ][ 210 δ
Imagire Day 2009
jkikij
T
kkkkij ][1][][
1][][
2
1pBmpmp
ijj
i
jj
i uuδmpmp ][][][][
iiii 210
要素内の場所に依存しない=要素内ですべて同じ
応力も要素内ですべて同じ
仮想仕事の原理を四面体分割
四面体に分割
)()(:)( uXupεσ VSv
dVdSdV
物体内部の面は接する面の力が互いに打ち消す
Imagire Day 2009
0)()(:)(
全ての四面体 四面体内表面三角形四面体内
uXupεσ dVdSdV
jkileijkljkikij kBdV ][][][
)( ppp
四面体内
要素剛性マトリックス
外力の四面体分割化
0)()()(
全ての四面体 四面体内表面三角形四面体内
uXup dVdSdV ijij
]1[p
e]1[Q
e]1[F
Imagire Day 2009
表面にかかる力を要素の頂点に分散
jke
jkdS ][][)( pQup 表面三角形
]0[p
]2[p
e]0[Q
e]2[Q
重心にかかる力を計算し要素の頂点に分散
jke
jkdV ][][)( pFuX 四面体内
e]0[F
e]2[F
e]3[F
剛性方程式
頂点の位置は自由に動かせることができる=和の中身は全て0でないといけない
隣接している要素で共有された頂点にかかる力は
0][][][][][][ 全ての四面体
jke
jkjke
jkjkileijklk pFpQpp
0][][][ ejk
ejkil
eijklk FQp : 要素の剛性方程式
Imagire Day 2009
隣接している要素で共有された頂点にかかる力は各要素における力の和
要素の剛性方程式だけで解ける部分(固定端、力が掛からない)を先に解き、その後、全体の剛性方程式でないと解けない部分を解く
頂点を共有している要素の数はドロネー分割ではO(1)
0][][][ 四面体四面体四面体
ejk
ejkil
eijklk FQp : 全体の剛性方程式
ポリゴンの分割
頂点の力の和に関する主応力から分離することが決まれば、主応力等を法線とする平面4面体をで分割
ijijijij 2Tr)(
Imagire Day 2009
Star Wars: The Force Unleashed さんの場合
細かなモデルを作成しておき、重心が入る要素の位置、向きで描画
メリット
メモリ使用量に
Imagire Day 2009
メモリ使用量に上限がつけやすい
欠点
作成したモデル以上の細かさが実現できない
本日の進行
はじめに
歴史
破壊シミュレーション
細かな破壊の表現
Imagire Day 2009
まとめ
粒子シミュレーションによる微小破片
非常に細かな破砕物をまじめに計算するのは大変
ある程度大きな力を受けたら小さなパーティクルで表現すれば良いんじゃない?
それぞれはどんな大きさにすればよい?
Imagire Day 2009
それぞれはどんな大きさにすればよい?
全てが同じ大きさなのはダサい
現実には、破砕物はどんな大きさの分布をしているの?
微小破片を考慮したシステム
物理シミュレーション レンダリング
事前準備されたモデル粗い破片有限要素法、マスばねモデル
Imagire Day 2009
粒子シミュレーション元のモデルを
縮小させたレンダリング小片
破壊されたら沢山の粒子に差し替え
破砕物の大きさの分布
粉体工学で幾つかの分布関数が知られている
ふるいの目より小さな質量(ふるいの下に落ちた物体の重さ)の関数
Gaudin-Schuhmann分布[Gaudin 1926, Schuhmann 1980]
粗砕(数10cm-数10mm)ないし中砕(数10cm-数10μm)
Imagire Day 2009
ふるいの目の開き
粗砕(数10cm-数10mm)ないし中砕(数10cm-数10μm)程度の粉砕物に当てはまることが多い
Rosin-Rammler 分布[Rosin and Rammler 1933]
石炭粉砕物のふるいの目より大きな質量の量を表すのに用いる粒度分布
ふるい目より小さな破砕物の重量
Gaudin-Schuhmann分布
m
x : 粒度特性数
ふるいの目の開き
ふるい目より小さな破砕物の重量Gaudin-Schuhmann分布
ふるいの目より小さな質量を持つ破砕物に関する粒度分布粗砕(数10cm-数10mm)ないし中砕
(数10cm-数10μm)程度の粉砕物に当てはまることが多い
)(xU
Imagire Day 2009
m
eR
xxU
)(
: 粒度特性数: 均等数
eRm
dxxDxxU )()( 3
me
m
R
xmxDxxU
13 )()('
)4()( m
me
xR
mxD
)(xD :半径xの破砕物の数
粒度分布は一般に次のように書くことができる
2つの式を微分すると
おやすみなさい…
粒子数分布とパーティクルシミュレーション
dxxDxxU )()( 3 )4()( mxAxD ふるいの目の開き
ふるい目程度の大きさの破砕物の量 )(xD
R Rから の大きさの破砕物をN個の粒子で表現する
meR
mA
Imagire Day 2009
dustR maxRから の大きさの破砕物をN個の粒子で表現する
dustR
i
dxxDxN )(1)(1
)()(1
3dust
N
ii RUrxU
dxxDxxU )()( 3
同じ近似として、次の式が成り立つ。
i
dust
r
Ri dxxDrNRN
N
i)()()( max
ゆえに、次の式を解いて、i番目の粒子の大きさを求める
Imagire’s formula
以上の式を解くと…
)3()3(
)3()4(
3
3)()(
mm
dust
R
m
R
m
R
xRm
A
xm
AdxxAdxxDxN
dustdustdust
i
Imagire Day 2009
)()( max irNRNN
i
)3()3()3(
max
)3(
33
m
i
m
dust
mm
dust rRm
ARR
m
A
N
i
mm
dustmm
dusti
RRN
iR
RRr
3
1
33max
3max
max
0
0.2
0.4
0.6
0.8
1
1.2
1 611
16
21
26
31
36
41
46
51
56
61
66
71
76
81
86
91
96[Imagire et al. 2009]
小難しいことは忘れて明日役立つちょっとしたノウハウ
細かな破砕物をパーティクルとして表現
数個は大きめ
ほとんどの粒子は小さく
1
1.2
Imagire Day 2009
0
0.2
0.4
0.6
0.8
1
1 4 7
10
13
16
19
22
25
28
31
34
37
40
43
46
49
52
55
58
61
64
67
70
73
76
79
82
85
88
91
94
97
100
80
100
120
要素数の変更に伴うシミュレーション結果の違い
密度、限界応力を固定23 /,
3
4RadiusxkRadius
Number
Volumecutoff
fps
Imagire Day 2009
0
20
40
60
80
32 64 128 256 512 1024 2048 4096 8192 16392
実行速度の変化 要素数
64要素
16384要素16384
おまけ:物理シミュレーションのコツ
重力は大きい
正確な計算するなら構造力学を考慮してモデリングをする必要がある
固定している時には、重力が掛からないようにするのは(ゲーム的には)悪くないと思います
Imagire Day 2009
( )
本日の進行
はじめに
歴史
破壊シミュレーション
細かな破壊の表現
Imagire Day 2009
まとめ
まとめ
有限要素法を勉強してみました
細かな破片の表現をどうすれば良いか提案しました
Imagire Day 2009
破壊シミュレーションのこれから
剛体シミュレーションに似ている
なんとか作れそう
でも、市販されている物にたどりつくのは大変
そもそも面白い?
なんでも壊せるのはレベルデザインを難しくする
Imagire Day 2009
なんでも壊せるのはレベルデザインを難しくするだけでは…
かといって、壊せるものと壊せないものがあるのはダサいしね。
本当に破壊を生かしたゲームかメリットが大きい場合以外は作らなくていいんじゃない?
ご清聴ありがとうございました
質問はございませんか?
Imagire Day 2009