Comments
Description
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. • 注意事項: 机の上に学生証提示、持ち込み不可