...

授業資料 - NPAL: 非数値処理アルゴリズム研究室

by user

on
Category: Documents
17

views

Report

Comments

Transcript

授業資料 - NPAL: 非数値処理アルゴリズム研究室
コンピュータグラフィックス
基礎
第10回 アニメーション
(物理シミュレーション)
学習の目標
• さまざまなアニメーション手法について学ぶ
• オイラー法を用いた簡単な物理シミュレーション
の仕組みについて理解する
• Spring-Massモデルによる布の挙動シミュレーショ
ンを実装する
キーフレームアニメーション
• 代表フレーム(キーフレーム)を用い、その間の
フレームを自動的に補間してアニメーションを生
成
• 補間パラメータ:物体位置、向き、大きさ、色お
よびカメラパラメータ
キーフレームの補間
 単純直線補間

なめらかな動きの生成が困難
 スプライン補間

スプライン曲線による滑らかな補間
キーフレームアニメーションの制御
• テンションの制御
• 誇張表現
• イーズイン・イーズアウト
• 速度変化を滑らかにすることにより、画面へのキャラクタの入り方、
出方を滑らかに
2006/7/10
Computer Graphics
5
形状変形アニメーション
• 画像のモーフィング
• ある画像を別の画像に滑らかに変化させる手法
• 画像Aと画像B上で、対応点を指定
• 2枚の画像の混合比をもとに画像の2次元変換を行
い、合成画像を生成
形状変形アニメーション
• 自由形状変形(Free Form Deformation: FFD)
• 柔軟な物体の形状変形を実現
• オブジェクトを囲む格子点を動かすことで内部の空間
を変形、それに応じてオブジェクトを変形
• 有限要素法による変形の再現(シミュレーション)
手続き型アニメーション
 物理法則・自然法則をシミュレートすることによ
る動きの生成
• 進化・生長のアニメーション
• 植物の生長過程をモデル化し、自動でアニメー
ションを生成
• 受光量や植生等の環境要因を考慮
手続き型アニメーション
 自然現象


流体や火花など、不定形オブジェクトのア
ニメーション
流体:ナビエ・ストークス方程式(粘性流
体の挙動を記述するための運動方程式)
手続き型アニメーション
• パーティクル(粒子)の応用
• 物理シミュレーション
• 乱数を利用したパラメータの変化
• 雨、噴水、滝、炎、煙 など
スケルトン法
• キーフレーム法
• 複雑な形状 → キーフレーム間の対
応点が多くなる
• スケルトン法
• 動物、人間など、骨格形状が既知の対
象にスケルトンを当てはめ、形状を変
化
キャラクタ・アニメーション
 フォワードキネマティクス


多関節物体を階層構造で表現
目的とする動作を得るため、各関節
の回転角度を直接指定
目標位置
初期位置
2006/7/10
Computer Graphics
12
キャラクタ・アニメーション
 インバースキネマティクス


目的位置を指定することで、その間の各関節角
度を自動計算
逆運動学による動作付け(Inverse Kinematics)
解が一意に決まらない
↓
効果的な制約条件の付与
(曲がりやすさ、可動範囲など)
キャラクタ・アニメーション
• パスアニメーション
• 曲線(パス)や曲面に沿って移動させ、自動的に姿
勢を変えながらアニメーションを生成
• 物体、カメラ双方に利用
• パス上で様々なデータ(3次元位置や法線ベクトルの
向きなど)を補間
キャラクタ・アニメーション
• モーションキャプチャ
• 演者の実際の動きを測定し、動きデータを収集
• 微妙で自然な動作を表現可能
• 個人の形状、個人の運動 ⇔ 一般的なCGモデ
ル
http://www.youtube.com/watch?v=19u7IBZ6dJ8
キャラクタ・アニメーション
• 筋肉変形アニメーション
• 筋肉→骨→肉体→皮膚の解剖学構造をモデ
ル化
• 筋肉の伸縮→骨→肉体の変形
キャラクタ・アニメーション
• 表情のアニメーション
• 表情を作り出す頭部の筋肉を三層の
ばね-質点系モデルで近似
• 与えられた特徴点に基づくモーフィングなど
キャラクタ・アニメーション
• 布地のアニメーション
• ばね-質点系モデルによる変形予測
リアルタイム・アニメーション
• 画像生成の高速化・簡略化
• モデルの適応的な詳細度(LOD)制御
• ビデオゲーム、テレビのバーチャルセット等
動きの数値シミュレーション
• 動きを伴う物理現象をシミュレートする
•
•
•
•
惑星の動き
剛体の落下、衝突
水・空気の流れ
柔物体(布)の動き
自由落下のシミュレート
1 2
𝑦𝑦 = 𝑔𝑔𝑡𝑡
2
時刻を与えれば数式から位置が定まる。
このような簡単な数式で表現できることは稀。
空気抵抗があったら? 風が吹いてきたら?
y
バネの振動
𝑘𝑘
𝑦𝑦 = A𝑠𝑠𝑠𝑠𝑠𝑠(
𝑡𝑡 + 𝛼𝛼)
𝑚𝑚
?
オイラー法による物理シミュレーションの考え方
時刻 t における位置・速度・加速度から時間 ∆𝑡𝑡 経過
後の位置・速度を求める
・位置 𝒙𝒙 𝑡𝑡
・速度 𝒗𝒗 𝑡𝑡
・加速度 𝒂𝒂 𝑡𝑡
← 単位時間あたりの位置の変化量
← 単位時間あたりの速度の変化量
時間 ∆𝑡𝑡 経過後の位置と速度
𝒙𝒙 𝑡𝑡 + ∆𝑡𝑡 = 𝒙𝒙 𝑡𝑡 + ∆𝑡𝑡 𝒗𝒗(𝑡𝑡)
𝒗𝒗 𝑡𝑡 + ∆𝑡𝑡 = 𝒗𝒗 𝑡𝑡 + ∆𝑡𝑡 𝒂𝒂(𝑡𝑡)
時刻Δt後の位置=現在の位置+微小時間×現在の速度
時刻Δt後の速度=現在の速度+微小時間×現在の加速度
オイラー法の考え方:現在の様子から少し先の様子を計算する。この繰り返し。
※ 自由落下の場合は加速度一定
加速度
時刻 t における加速度 𝒂𝒂 𝑡𝑡 は外力 𝑭𝑭 𝑡𝑡 を質量で
割ったもの
𝒂𝒂 𝑡𝑡 = 𝑭𝑭 𝑡𝑡 /𝑚𝑚
外力の例:
バネによる引っ張り力、後ろから物体を押す力、
空気抵抗
※ 自由落下の場合は、加速度は一定(重力加速度)
物理シミュレーションのアルゴリズム
double dt = 0.01; // 時間の刻み幅
double t = 0; // 現在の時刻をゼロに設定
while(true) { // ループ処理でシミュレーションを実行
(1) 物体に働く力(外力)を求める
さまざまに働く力を合計する
・連結しているバネによって加えられる力
・空気抵抗
・重力
(2) (1)で求めた外力から物体の加速度を計算する
(3) (2)で求めた加速度を用いて速度を更新する
(4) (3)で求めた速度を用いて位置を更新する
描画更新
if(シミュレーション終了) break;
t += dt; // 時刻を進める
}
※ 物体に働く力さえ適切に設定できれば、後は決まったルーチン
布のシミュレーション
• 布をどのような物理モデルで表現するか?
Spring - Mass Model
• 質点をバネのネットワークで連結する
• 柔物体のシミュレーションで広く使われる
• 実装が容易
Spring - Mass Model
• 各質点に働く力を独立に計算
• 各質点の加速度・速度・位置を独立に計算
• 結果的に自然な布の動き
が得られる
物理シミュレーションのアルゴリズム
double dt = 0.01; // 時間の刻み幅
double t = 0; // 現在の時刻をゼロに設定
while(true) { // ループ処理でシミュレーションを実行
(1) 物体に働く力(外力)を求める
さまざまに働く力を合計する
・連結しているバネによって加えられる力
全ての質点で計算
・空気抵抗
・重力
(2) (1)で求めた外力から物体の加速度を計算する
全ての質点で計算
(3) (2)で求めた加速度を用いて速度を更新する
全ての質点で計算
(4) (3)で求めた速度を用いて位置を更新する
全ての質点で計算
描画更新
if(シミュレーション終了) break;
t += dt; // 時刻を進める
}
※ 物体に働く力さえ適切に設定できれば、後は決まったルーチン
衝突判定
球と衝突
(ワイヤフレーム)
球と衝突
(面表示)
円柱と衝突
(面表示)
物理シミュレーションのアルゴリズム
double dt = 0.01; // 時間の刻み幅
double t = 0; // 現在の時刻をゼロに設定
while(true) { // ループ処理でシミュレーションを実行
(1) 物体に働く力(外力)を求める
さまざまに働く力を合計する
・連結しているバネによって加えられる力
全ての質点で計算
・空気抵抗
・重力
(2) (1)で求めた外力から物体の加速度を計算する
全ての質点で計算
(3) (2)で求めた加速度を用いて速度を更新する
全ての質点で計算
(4) (3)で求めた速度を用いて位置を更新する
全ての質点で計算
(5) 物体内部に入り込むようなら元の位置に戻す
描画更新
if(シミュレーション終了) break;
t += dt; // 時刻を進める
}
※ 物体に働く力さえ適切に設定できれば、後は決まったルーチン
試験
• 日時:12月27日2限(10:10~11:25)
• 場所:3A202
• 出題範囲: これまでの講義内容および実習内容
• 座標変換、パラメトリック曲面、形状モデリング、
レンダリング、アニメーション、etc.
• 注意事項: 机の上に学生証提示、持ち込み不可
Fly UP