2011/9/30 Smalltalk勉強会 46
2011/9/30 Smalltalk勉強会 47
流体以外は扱えないの?
2011/9/30 Smalltalk勉強会 48
● バターの塊はどうするのさ?
● ナイフはどうするのさ?
● 壁はどうするのさ?
2011/9/30 Smalltalk勉強会 49
最近、
SPH
でも流体以外のものを扱うのが流行中●
●
●
●
●
●
●
●
●
●
http://www.youtube.com/watch?v=BP6C8-UZWzc
弾体
剛体
2011/9/30 Smalltalk勉強会 50
例えば、弾体
(Elastic Body)
●
HoneyGinger
の場合、三角形パッチを形成して、弾性のある物体を表現する
● 三角形の辺の距離を記憶しておいて、
その距離をできるだけ保つようにする
2011/9/30 Smalltalk勉強会 51
SPHSimulator rocknjello
2011/9/30 Smalltalk勉強会 52
例えば、剛体
(Rigid Body)
●
HoneyGinger
の場合、円とか三角形など、幾何的な形状を置いて、
● 粒子がその内部に入らないようにできる
2011/9/30 Smalltalk勉強会 53
SPHSimulator butterBall
SPHSimualtor butterBallAtDie
SPHSimulator butterBallAtTriangle
2011/9/30 Smalltalk勉強会 54
どうやって流体とお話しするの?
2011/9/30 Smalltalk勉強会 55
● お話しする人その
1
:シミュレーションをつくる人
● お話しする人その
2
:シミュレーションをつかう人
2011/9/30 Smalltalk勉強会 56
まずは、シミュレーションをつくる場合
2011/9/30 Smalltalk勉強会 57
シミュレーションを、
1
連のアクションとして記述2011/9/30 Smalltalk勉強会 58
アクション
:
● 弾体系
● 流体系
(
ニュートン粘性、ストークス)
● 熱力系
(
ニュートン冷却)
● 積分系
(
加速度→
速度,
速度→
位置)
● 環境系
(
空間定義、局所アクション、発火条件付アクション)
● 通信系
(
状態データの同期)
●
UI
系(
シミュレーションへの干渉、可視化)
2011/9/30 Smalltalk勉強会 59
これを適当な順番に並べると、
好きな法則の組み合わせでシミュレーションでき る。
2011/9/30 Smalltalk勉強会 60
ほんとうはこれで
スクラッチ的なものを作りたいんだよねー
2011/9/30 Smalltalk勉強会 61
つぎに、
シミュレーションを使う人とのお話し
2011/9/30 Smalltalk勉強会 62
まずは可視化
2011/9/30 Smalltalk勉強会 63
● 粒を見せる
(
その1)
● 点を表示
SPHSimulator impossibleRiver
2011/9/30 Smalltalk勉強会 64
● 粒を見せる
(
その2)
● 画像を見せる
(SPHSimulator stickybeans)
2011/9/30 Smalltalk勉強会 65
● 場を見せる
(
その1)
● 定点上の「流速」を見せる
(SPHSimulator impossibleRiverSensor)
2011/9/30 Smalltalk勉強会 66
● 場を見せる
(
その2)
● 格子上の「流速」を見せる
SPHSimulator impossibleRiverMesh
2011/9/30 Smalltalk勉強会 67
● 流体を見せる
● 点を頂点にしたドロネー三角形分割
– SPHSimulator impossibleRiverPolygon
2011/9/30 Smalltalk勉強会 68
● 三角形分割のようす
SPHSimulator impossibleRiverWireframe
ステップ毎に三角形分割をやり直してます
2011/9/30 Smalltalk勉強会 69
ドロネー三角形分割
● できるだけ「尖った」三角形をつくらないように三角形に分割する
http://t1.gstatic.com/images?q=tbn:ANd9GcQp15JKOsQkZdtl5Fh5e26Z7w7UCJGsJXb5wyK_21NNMqhLG6omxw http://t2.gstatic.com/images?q=tbn:ANd9GcQgWTzMeWFc6Ny39VDlA4zmiPeDPWQzOy9-qDki3y5yKL5JJ4gF
2011/9/30 Smalltalk勉強会 70
● 弾体、剛体を見せる
● 弾体、剛体をシミュレートする「アクション」が描画する
SPHSimulator rockAtDie
SPHSimulator rockAtMouse
2011/9/30 Smalltalk勉強会 71
● 流れを感じさせる
● ニセ
HandMorph
を流体に流させるSPHSimulator mouseInCreek2
SPHSimulator mouseInCreekPoygon
2011/9/30 Smalltalk勉強会 72
さらに入力
2011/9/30 Smalltalk勉強会 73
● 特定の粒をつかむ
/
投げる●
SPHParticleHand
●
SPHSimulator bouncingBalls
2011/9/30 Smalltalk勉強会 74
● 周辺の粒をつかむ
/
投げる●
SPHParticleGripper
●
SPHSimulator rocknjello
2011/9/30 Smalltalk勉強会 75
● マウスカーソル自体を粒にする
●
SPHFakeHand
●
SPHSimulator mouseInCreek
2011/9/30 Smalltalk勉強会 76
多人数もできるよ!
2011/9/30 Smalltalk勉強会 77
詳しくは「非対称分散」で検索!
2011/9/30 Smalltalk勉強会 78
非対称分散
2011/9/30 Smalltalk勉強会 79
シミュレーション =
人間からの干渉 + 計算 + 人間への干渉
2011/9/30 Smalltalk勉強会 80
シミュレーション計算
● デスクトップとかサーバとか
人間との対話
● マルチタッチタブレットとかノート
PC
とか3DS
とか2011/9/30 Smalltalk勉強会 81
コンピュータによって、得意不得意があるよね
2011/9/30 Smalltalk勉強会 82
だから分担しましょう
2011/9/30 Smalltalk勉強会 83
共有レポジトリとのデータ同期を介した
ゆる〜〜〜〜い
分散協調
2011/9/30 Smalltalk勉強会 84
MapReduce
みたいに均質的で計算を平等に分散するんじゃなくて、
2011/9/30 Smalltalk勉強会 85
動的で
自分ができることを
自分の責任で飛び入り参加できるようなヤツ
2011/9/30 Smalltalk勉強会 86
記憶
(
レポジトリ)
●
HoneyGinger
サーバ計算
(
シミュレータ)
●
SPHSimulator (
アクションの組み合わせ)
人間とのメッセージング
●
SPHSimulator (
アクションの組み合わせ)
2011/9/30 Smalltalk勉強会 87
(HoneyGingerServer port: 9800) startup.
SPHSimulator bouncingBallsServer.
SPHSimulator footballViewer.
2011/9/30 Smalltalk勉強会 88
まとめ
バターを熱いナイフで切る?
バターの塊を壁にベチャっと投げつける?
Jello
の塊を壁にベチャっと投げつける?とにかく壁に投げつける!
● 流体シミュレーション
● 計算速度とかより柔軟性です
● 計算だけじゃなくインタラクションも大事なんです
● スタンドアロンでも分散
UI
でも動くよ“This isn't magic - it's logic.”
“Simulation isn't computation – it's interaction!”
オブジェクト指向は計算モデルじゃないんだぜ、 という熱い心!
今後の課題
● 計算を分散
● アクションの組み立て
UI
● もっと
Smalltalk
臭く!今後の課題
● 計算を分散
–
更新の同期● できるだけ非同期にやりたいなあ
…
–
アクション分担のネゴ今後の課題
● アクションの組み立て