63.3K Views
March 07, 24
スライド概要
2023年10月18日に開講された東京大学松尾研究室「世界モデルと知能」の第4回シミュレーションとコンピュータグラフィクスで使用した資料を改変したものです.
奈良先端科学技術大学院大学修士2年生 研究分野: Task And Motion Planning
1 シミュレーションとコンピュータグラフィクス 世界モデルと知能 第4回資料を改変 2023/10/18 奈良先端科学技術大学院大学 ロボットラーニング研究室 佐藤誠人
2 自己紹介 佐藤誠人 (Makoto Sato) • NAISTロボットラーニング研究室修士2年 • 「ロボット学習」を研究 • モバイルマニピュレータによる長期的タスクの動作学習 • ロボットマニピュレータによる商品陳列動作の学習 • ロボットマニピュレータによる物体表面なぞりと物体識別 • 画像ベース強化学習を用いた四足歩行ロボットの歩行学習 • 松尾研究室で世界モデル研究に従事
この資料について 3 • この資料で扱う範囲 • シミュレーションの背景的知識を紹介 • コンピュータグラフィクスの背景的知識を紹介 • この資料の目的 • 近年のシミュレーション技術や最新の物理エンジンについて学ぶ • シミュレーションにおけるコンピュータグラフィクスの応用例と近年の研究例 について学ぶ • この資料の参考元 • この資料は東京大学松尾研究室松嶋達也さんが2022年「世界モデルと知能 第3回 シミュレーションとグラフィクス」で作成された資料をもとに作成しています
4 今回の講義の位置付け 今回 シミュレータの仕組みを知る シミュレータを使う シミュレータを学習する シミュレータを作成する シミュレータを学習する
5 今回の講義の目標 • 近年の人工知能研究におけるシミュレータの役割を理解する • 物理シミュレーションの仕組みを理解する • コンピュータグラフィクスの仕組みを理解する • 自身の解きたい問題に対してシミュレーション環境を構築する技術 を習得する • 近年のシミュレータの動向を把握する • 解きたい問題に合わせたシミュレータの選定方法を知る
6 目次 1. シミュレータの利用 2. 物理シミュレーションとコンピュータグラフィクスの背景知識 3. 物理シミュレーションの基礎 4. さまざまな物理シミュレーションと物理エンジン 5. 近年の物理シミュレーション 6. コンピュータグラフィクスの基礎 7. 近年のコンピュータグラフィクス 8. まとめ
7 1. シミュレータの利用
8 シミュレーションとは • 現実に実験を行うことが難しい物事について、想定する場面を再現したモデル を用いて分析すること(実用日本語表現辞典) • 対象とするシステムのモデルを構築し, モデルの操作によってシステムの挙動を 再現しようとすること(OR事典) • 何らかのシステムの挙動を、それとほぼ同じ法則に支配される他のシステムや 計算によって模擬すること。… 対象となるシステムで働いている法則を推定・抽出し、それを真似るようにし て組み込んだモデル、模型、コンピュータプログラムなどを用いて行われる (wikipedia) 現象のモデル化 (数理モデルなど) シミュレーション の構築 シミュレーション の実行
9 シミュレーションの応用 災害シミュレーション アニメーション 天気予報 ロボティクス ゲーム 設計
シミュレータの応用 ロボット制御におけるシミュレータの応用 メリット • 実機を使わずに制御器(方策)を学習可能 • オペレータ・周囲の環境の安全の確保できる • 実機より並列数を増やして早いサイクルでテスト可能 • 「現実世界の問題は実時間でしか世界が動かないこと」 • アルゴリズムの検証・ベンチマーク • 作ったシステムがうまく動くか検証するために利用できる • 再現可能な環境を作成することでアルゴリズム間の統一的な指標として 利用することができる 10
シミュレータの応用 11 ロボット制御におけるシミュレータの応用 難しい点 • そもそもシミュレータの構築が大変 • 「どうやって作ればいいの?」 • 「どのシミュレータを使えばいいの?」 • 実環境で発生する物理現象を完全に模擬するのは困難 • リアルタイムでシミュレーションを可能にするために あらゆる部分に近似計算が含まれる • シミュレータと実世界の差”sim2real gap”が存在する シミュレータで制御器が得られても同じ様に実機転用できるとは限らない 図出典:https://developer.nvidia.com/physx-sdk
12 Sim2Real Gapに対するアプローチ System Identification,Domain Adaptation,Domain Randomization の3種類の手法が存在する ① ③ ② 図出典:https://lilianweng.github.io/posts/2019-05-05-domain-randomization/
Sim2Realに対するアプローチ① 13 System Identification 実環境で収集したデータから物理モデルを同定 • 適当に設定された物理シミュレータ内の物理パラメータを推定 • 多項式フィッティングやニューラルネットワークなどが用いられる 図出典:https://hal.science/hal-03025616/document
ロボット制御におけるSim2Real 14 System Identificationの利用例 実ロボットと物体のインタラクションデータから物理パラメータ推定 • 物体を押してみることで物体の軌道を収集 • 得られたデータから物体の質量分布を推定 図出典:https://arxiv.org/pdf/2005.05456.pdf
Sim2Realに対するアプローチ② Domain Randomization シミュレーション環境のパラメータを乱択化 • 摩擦係数などの物理的なパラメータの乱択化 • 画像などの見た目の乱択化 図出典:https://browse.arxiv.org/pdf/1812.07252.pdf,https://browse.arxiv.org/pdf/1703.06907.pdf 15
ロボット制御におけるSim2Real 16 Domain Randomizationの利用例 ロボットハンドのマニピュレーション(OpenAI,2019) • Domain randomizationを行った強化学習により実環境においても ロバストな方策を獲得 • 乱択化するパラメータの自動選択(ADR)も利用 図出典:https://arxiv.org/abs/1910.07113 https://openai.com/blog/solving-rubiks-cube/
Sim2Realに対するアプローチ③ 17 Domain Adaptation 実環境とシミュレーションのGapを埋めるモデルの構築 • 実環境上で収集されるデータを用いてシミュレーション環境上のデータ分 布を適用させる分布を学習 • GANなどの敵対的学習を用いることでシミュレーション上で取得される データ分布を実環境上のデータ分布に一致させる 図出典:https://arxiv.org/pdf/2009.13303.pdf
ロボット制御におけるSim2Real 18 Domain Adaptationの利用例 Everyday RoboticsのRetinaGANを使用した大規模な強化学習 • Sim2Real,Real2Simを行った時の同一性を評価しGANを学習 • SayCanやDeep RL at Scaleなどの最新の手法にも使用 図出典:https://arxiv.org/pdf/2011.03148.pdf
19 シミュレーションを利用することで • 実際に繰り返し再現することが難しい状況を何度でも再現可能 • ロボット制御など繰り返しテストが必要な状況を再現することができる • 学習のための大量のデータを収集することができる • 予期せぬ状況を事前に検証可能 • 設計した物体の破断や災害時の被害想定を事前に検証することができる • 手間の削減 • アニメーションやゲームにおいてすべてを人手で作らずとも,シミュレータ によって物理的な挙動を再現し,制作の手間を削減することができる
20 2. 物理シミュレーションと コンピュータグラフィクスの背景知識
21 座標系と座標変換 • CG・シミュレーションでは複数の座標系を使い分ける • 相互に変換する操作が頻繁に行われる • 本講義では基本的に3次元の世界を扱う • 慣例的にx軸を赤(R)・y軸を緑(G)・z軸を青(B)で表記 𝑧 𝑦 𝑥 𝑧 ローカル座標 𝑦 𝑧 𝑥 グローバル座標 𝑦 𝑥 ローカル座標 𝑥
座標系と座標変換 22 同次変換 • 平行移動・拡大縮小・回転など変換・合成変換を単一の行列で表現 • 3次元の場合4x4行列で表現される(同次変換行列) 図出典:http://hideki-todo.com/cgu/lectures/cg2015/04̲basic1/04̲basic1.pdf
座標系と座標変換 23 同次変換 • 例) 平行移動 図出典:http://hideki-todo.com/cgu/lectures/cg2015/04̲basic1/04̲basic1.pdf
座標系と座標変換 24 同次変換 • 例) 拡大縮小 図出典:http://hideki-todo.com/cgu/lectures/cg2015/04̲basic1/04̲basic1.pdf
座標系と座標変換 25 同次変換 • 例) 回転 図出典:http://hideki-todo.com/cgu/lectures/cg2015/04̲basic1/04̲basic1.pdf
座標系と座標変換 26 同次変換 • 例) 鏡映とスキュー 図出典:http://hideki-todo.com/cgu/lectures/cg2015/04̲basic1/04̲basic1.pdf
座標系と座標変換 ツールによって座標系の取り方が異なるので注意 • ツールによって右手系・左手系違う • 例)OpenCV/GLやBulletは右手系,Unityは左手系 • 相互に変換が必要 • 大抵わけわからなくなる • ドキュメントを読もう 図出典:https://ai-workshops.github.io/building-and-working-in-environments-for-embodied-ai-cvpr-2022/Section-4-Debug.pdf 27
28 モデリング • 形状モデリングとは 「実体をコンピュータが処理可能なデータ形式に変換すること」 • 形状モデリングの分類と表現方法 • ワイヤーフレームモデル • サーフェスモデル • ポリゴンモデル,曲面パッチ,サブディビジョンサーフェス • ソリッドモデル • 境界表現,CSG表現,スイープ表現
モデリング 29 形状モデル • ワイヤフレームモデル:稜線のみ • 立体同士の干渉や隠線消去,隠面消去ができない • サーフェスモデル:面情報のみ • どこが立体の内部かを識別できないため,体積計算ができない • ソリッドモデル:立体の内部情報を含む • 体積計算や干渉計算などが可能 ワイヤフレームモデル サーフェスモデル ソリッドモデル 図出典:http://hideki-todo.com/cgu/lectures/cg2015/06̲modeling1/06̲modeling1.pdf
モデリング 30 そのほかの代表的な表現方法 • 基本的に何らかの離散表現を用いることが普通 • 明示的な離散表現を用いない場合は第8回で軽く触れます ボクセル (Voxel) 点群(Point cloud) ボリューム表現 作成のしやすさ メモリ効率 利用のしやすさ △ (解像度の3乗) メッシュ (Mesh) ポリゴン曲面表現 ◯ ◯ △ 図出典:https://blog.albert2005.co.jp/2020/07/22/nerural-3d-representation/ △ ◯
31 ロボットの座標系 ロボットの運動を記述する座標系 • Maximal Coordinate • • • • リンクの中心位置などに自由度を配置 ジョイントをリンク間の制約条件として記述 自由度が高い(変数が多い) ラグランジュ乗数法などで順動力学を計算 • Reduced Coordinate (Generalized) • ジョイントに自由度を配置 • 自由度が低い(変数が少ない) • RNEA,CRBA,ABAなどで順動力学を計算 図出典:http://hideki-todo.com/cgu/lectures/cg2015/06̲modeling1/06̲modeling1.pdf 参考:https://people.engr.tamu.edu/sueda/projects/redmax/WWBHKS2019-supplemental.pdf
32 運動学と動力学 • 運動学 (kinematics) • ロボットの姿勢の計算 • 幾何的な関係を扱う • 順運動学と逆運動学が存在 • 動力学 (dynamics) • ロボットの動きと関節に加える力の関係を計算 • 力学的な関係を扱う(運動方程式) • 順動力学と逆動力学が存在 • 静力学 (statics) • 座標系間の力・モーメントの関係を記述 • 仮想仕事の原理に基づく
ロボットの運動学 順運動学(Forward Kinematics, FK) 関節角度 𝒒 = 𝑞! , 𝑞" , … , 𝑞# から手先位置 𝒙 𝒒 = 𝑝$ , 𝑝% , 𝑝& , 𝑟$ , 𝑟% , 𝑟& , 𝑟' を計算 • 三角関数を用いることで計算が簡単 • 自由度数関係なく,容易に導出可能 • 例) 2Dの場合 𝑥 = 𝐿$ cos 𝑞$ + 𝐿% cos(𝑞$ + 𝑞%) 𝑦 = 𝐿$ sin 𝑞$ + 𝐿% sin(𝑞$ + 𝑞%) 手先位置𝑥& を実現する関節角度𝑞は? 33
ロボットの運動学 34 逆運動学(Inverse Kinematics, IK) 手先位置 𝒙 𝒒 = 𝑝$ , 𝑝% , 𝑝& , 𝑟$ , 𝑟% , 𝑟& , 𝑟' から関節角度 𝒒 = 𝑞! , 𝑞" , … , 𝑞# を計算 • 順運動学に比べて逆運動学の計算が難しい • 特に自由度が高くなると,逆運動学の計算が極端に難しくなる • 一般に,数値的に(繰り返しで)解く方法が利用される • 例) 2Dの場合 𝑞$ = ± cos % + 𝑦 % + 𝐿% − 𝐿% 𝑥 $ % '$ 2𝐿$ 𝑥 % + 𝑦 % + tan'$ % % % − 𝑦% 𝐿 + 𝐿 − 𝑥 $ % 𝑞% = ± (π − cos '$ ) 2𝐿$𝐿% 𝑦 𝑥
ロボットの動力学 35 順動力学(Forward Dynamics, FD) 関節にあるトルクを与えたときに,ボディがどのように動くかを加速 度の変化として計算 • ロボットなど物体がどのように動くのかシミュレーションに使用される • 計算に時間がかかる 開ループ型マニピュレーターの場合 関節駆動トルク 𝜏$ 𝜏 = 𝜏% ⋮ 𝑞̈ = 𝑀 𝑞 '$ (𝜏 − ℎ 𝑞, 𝑞̇ − 𝑔 𝑞) 順動力学 関節角加速度 𝑞̈ $ 𝑞̈ = 𝑞̈ % ⋮ 物理シミュレータでは物体に加わる力(トルク)から物体の 位置を更新する
ロボットの動力学 36 逆動力学(Inverse Dynamics, ID) ボディに望みの運動(加速度)をさせたいときに,関節のトルクをどう すればよいかを計算 • ロボットなどにどのような力を加えれば良いのか,制御に使用される • 比較的高速に計算できる 開ループ型マニピュレーターの場合 関節駆動トルク 𝜏$ 𝜏 = 𝜏% ⋮ 𝑀 𝑞 𝑞̈ + ℎ 𝑞, 𝑞̇ + 𝑔 𝑞 = 𝜏 逆動力学 関節角加速度 𝑞̈ $ 𝑞̈ = 𝑞̈ % ⋮ 制御では物体の加速度から加わる力(トルク)を計算し,解析する
37 物理シミュレーションとCGの背景知識まとめ • CGにおける物体の見え方や物理シミュレーションの位置・姿勢変換に 同次変換行列を用いた座標変換が重要 • 画面上に表示するモデルを作成するための形状モデリング方法は複数存在 し,ソリッドモデルが最も使用される • ロボットなど物体の運動を記述する座標系はMaximal Coordinateと Reduced Coordinateがある • 物理シミュレーションにおいて物理学に基づく運動学や動力学は運動を 記述するために重要
38 3. 物理シミュレーションの基礎
39 物理シミュレータ 古典力学的な法則をシミュレーションするソフトウェア • 質量・速度・摩擦・風などを物理法則に基づいてシミュレーションできる ゲームエンジンでの例 今回はこっちの話 図出典:https://developer.ibm.com/tutorials/wa-build2dphysicsengine/
40 シミュレータの流れ 物理シミュレーションは以下の流れに従う 1. 順動力学の計算 2. 衝突判定 3. 接触力計算 4. 位置更新 5. レンダリング 𝑣!" −𝑣#" 𝐹 𝑡 = 1.2∆𝑡 𝜇𝐹
41 シミュレータの流れ Bulletの場合 図出典:https://github.com/bulletphysics/bullet3/blob/master/docs/Bullet̲User̲Manual.pdf
42 シミュレータの流れ 物理シミュレーションの流れ(詳細) • 順動力学計算 • 接触拘束の設計 • 摩擦拘束の設計 • MLCPを解く • 位置更新 • 衝突判定・接触力計算 • 慣性テンソルの更新 • コリオリ力の更新 ※ Constraint-based Methodの場合 図出典:https://www.gdcvault.com/browse/gdc-14/play/1020604
シミュレーションの流れ① 運動方程式の記述 シミュレーション環境中の物体の運動方程式を構築 • 剛体,弾性体,塑性体,流体の運動方程式を記述 • 今回は特にロボットのような複数のリンクとジョイントからなるマルチボ ディシステムの動力学について (弾性体,流体については後ほど軽く) • 運動を記述する座標系によっても動力学の計算方法が変化 • マルチボディシステムに対してはOpenRaveやPinocchioなどの動力学計算 ライブラリも多数存在する ※ 多くのシミュレータではReduced Coordinatesを使用するが,行列分解などをうまく 利用し計算量を低減することで,拘束力などを陽に取り入れやすいMaximal Coordinate をあえて使うシミュレータも多数存在する 43
運動方程式の記述① ラグランジュ法による運動方程式の記述 エネルギーに基づいた運動方程式の記述 𝑑 𝜕𝐿 𝜕𝐿 ラグランジュ方程式: − = 𝜏2 𝑑𝑡 𝜕𝑞2̇ 𝜕𝑞2 𝐿 = 𝐾(運動エネルギー)−𝑈(位置エネルギー)で定義される 1. リンクの長さや質量,慣性モーメントから運動エネルギー を求める 2. リンクの重心位置や質量から位置エネルギーを求める 3. ラグランジュ方程式に代入し,運動方程式を求める ※ 2リンクマニピュレータでも手計算はかなり大変 44
運動方程式の記述② ニュートン・オイラー法による運動方程式の記述 並進運動,回転運動における力に基づいた運動方程式を構築 𝑑𝑝 ニュートン方程式: =𝐹 𝑑𝑡 𝑑𝑙 オイラー方程式 : = 𝐼 𝜔̇ + 𝜔× 𝐼𝜔 = 𝑁 𝑑𝑡 1. 手先リンクに向けて並進・回転速度,加速度を求める 2. 各リンク中心に働く並進力と回転モーメントを求める 3. 手先に加わる力とモーメントから各関節の力と モーメントを求める 4. 各関節のトルクを求める ※ 台座→手先,手先→台座と再帰的な計算 ※ 詳細はロボット制御基礎論参照 45
補足① 46 ニュートン・オイラー法 vs. ラグランジュ法 ニュートン・オイラー法とラグランジュ法によって導かれる運動 方程式の複雑度と動力学計算における計算量を比較 ニュートン・オイラー法 長所 短所 • シミュレーションに有効 • 関節の追加・削除が容易 • 計算量が少ない ラグランジュ法 • 簡潔な運動方程式が得られる • 一般化座標を使用出来る • 力学パラメータの安定性への影響 を解析的に調べられる • 運動方程式が複雑で再帰的な構造 • 関節の追加・削除が難しい を取る • 計算量が多い ※ 相互の変換もヤコビ行列を使用することで可能 参考:https://people.engr.tamu.edu/sueda/projects/redmax/WWBHKS2019-supplemental.pdf
補足② 47 マルチボディシステムの順動力学計算 Reduced Coordinateで記述された運動方程式には大きく2通り • Recursive Newton-Euler Algorithm(RNEA) + Composite-Rigid-Body Algorithm(CRBA) • Articulated Body Algorithm(ABA) ✓ ABAの場合,順動力学計算が𝑂(𝑛)で済む ✗ 閉ループ型のロボットに適用できない ※ 基本どの物理エンジンも両者実装しているがABAを使用していることが多いイメージ ※ 以上の3つのアルゴリズムの詳細は複雑なため省略 知りたい向け:https://users.dimi.uniud.it/~antonio.dangelo/Robotica/2019/helper/Handbook-dynamics.pdf
補足③ 48 Maximal Coordinate vs. Reduced Coordinate マルチボディシミュレーションにおける比較 Maximal Coodinate 長所 短所 Reduced Coordinate • 閉ループを作ることができる • 拘束力などを直感的に追加可能 • • • • • 自由度が大きい • 順動力学計算の計算量が多い • ジョイントがずれてしまう • 閉ループを扱うことが難しい 自由度が小さい 順動力学計算の計算量が少ない ジョイントがずれない (大きなタイムステップを取れる) (調査した限りだと) Maximal Coordinateは剛体のシミュレーションに,Reduced Coordinateはマルチボディのシミュレーションに使用されることが多い 参考:https://people.engr.tamu.edu/sueda/projects/redmax/WWBHKS2019-supplemental.pdf
補足④ 49 座標系による物理シミュレータの分類 1980〜2010前後の物理シミュレータの分類 出典:物理シミュレーションについての講演
シミュレーションの流れ② 50 衝突検出 2つのフェーズで衝突判定 • ブロードフェーズ:大雑把な衝突可能性を判定 • 特徴:高速,精度低 • アルゴリズム一覧:BVH, AABB, OBB,... • ナローフェーズ:詳細な接触の検出 • 特徴:低速,精度高 • アルゴリズム一覧:GJK, EPA,... ブロードフェーズ ナローフェーズ
代表的なブロードフェーズアルゴリズム Axis-Aligned Bounding Box (AABB) 境界ボリュームによる衝突判定の例:AABB • 各軸方向の最小値と最大値によるバウンディングボックス • 境界ボリュームの中で最も一般的 • バウンディングボックス同士の重なりを判定 図出典:https://fujis.github.io/iml̲physics/text/3̲collision/index.html, https://developer.mozilla.org/ja/docs/Games/Techniques/3D̲collision̲detection 51
代表的なナローフェーズアルゴリズム 52 Gilbert-Johnson-Keerthi (GJK) ミンコフスキー差 A⨁ −B 利用した詳細な接触の検出 • 接触している場合,ミンコフスキー差が原点を含む理論を利用 • ブロードフェーズで検出された物体同士に対して以下の衝突判定を実行 • 例) 形状Aと形状Bが衝突している場合 GJKアルゴリズム 1. 2. 3. 4. 形状Bを原点とした移動 形状Bを反転 形状Bを形状A周りにスイープ スイープした形状が原点を 含むか判定 図出典:https://pfxtech.hatenablog.com/entry/2021/12/30/090011
動物体の衝突検出 53 Continuous Collision Detection 速く動く物体のすり抜け対処 • ナローフェーズ/ブロードフェーズは各ステップΔ𝑡間で評価を行うため, 高速に動く物体は壁をすり抜ける • 移動中の物体の軌跡をスイープ形状として表現し,衝突検出を行う 壁のすり抜け スイープ形状の近似 図出典:https://fujis.github.io/iml̲physics/text/3̲collision/index.html
シミュレーションの流れ③ 衝突応答 衝突を検出後,衝突点における反力を求める • 3種類の衝突応答 (組み合わせもあり) • Impulse-based Method:衝突における撃力を計算 • Penalty-based Method:のめり込み量に応じて力を計算 • Constraint-based Method:接触点における拘束力を計算 図出典:http://graphics.cs.cmu.edu/nsp/course/15464-s20/www/lectures/lecture13Cloth/lecture13̲contacts.pdf 54
衝突応答① 55 Impulse-based Method 衝突時∆t 間に発生する撃力を計算 • 衝突時の撃力 𝑱 = 𝒇Δ𝑡 を計算 • 撃力は相対速度,それぞれの質量,反発係数から計算可能(質点の場合) • 回転を含めた場合にも拡張可能 • 衝突後の速度を計算 例) 2つの球の衝突 • 撃力の計算 (反発係数 𝑒) 𝑱 = 𝒇Δ𝑡 𝒗𝟏 𝒗𝟐 −𝑱 = −𝒇Δ𝑡 • 速度の更新
衝突応答② 56 Penalty-based Method 物体間ののめり込み量に応じて反力を計算 • フックの法則に従った仮想的なバネにより反力を計算 • のめり込みを許すことで接触を連続的な変化として捉えられる(微分可能) • バネ定数の設定がユーザー次第 𝑑 例) 多体間のペナルティ法 多体間の反力計算では振動 を発生してしまう恐れある が,ある程度ののめり込み を許すことで安定化 𝑓 = 𝑘𝑑 −𝑓 = −𝑘𝑑 図出典:https://www.cs.ucr.edu/~craigs/papers/2017-rigid-mpm/paper.pdf
衝突応答③ 57 Constraint-based Method のめり込みを修正するような拘束力を計算 • 接触距離𝜙と反力𝐽!" 𝜆$# の幾何的な関係から制約条件を構築 • 線形相補性問題(LCP)を解くソルバーを使用して,接触力𝜆$# を計算 線形相補性問題(LCP) 𝜙>0 𝜙=0 𝐽*' 𝜆)( 𝐽&' 𝜆)( ※ Projected Gauss Seidel法やLemkeʼs法, Staggered Projection法などさまざまな解法が存在
シミュレーションの流れ④ 位置更新 時間・空間差分を用いた位置更新 • 数値解析手法を用いて常微分方程式または偏微分方程式の数値解を計算 • 運動方程式を刻み幅ℎで離散化し,オイラー法やルンゲクッタ法を用いて 解を計算 並進運動: 𝑥 𝑡 + ℎ ≈ 𝑥 𝑡 + 𝑣 𝑡 ℎ 回転運動: 𝑞 𝑡 + ℎ ≈ 𝑞 𝑡 + 𝜔 𝑡 ℎ ここの展開をどのように行うかが重要 58
数値解法① 59 オイラー法 前進オイラー法と後進オイラー法 • 前進オイラー法: 𝑦!"# = 𝑦! + ℎ𝑓(𝑥! , 𝑦! ) • 陽解法で計算が非常に簡単 • 近似精度が低い • 数値的に不安定 • 後進オイラー法: 𝑦!"# = 𝑦! + ℎ𝑓(𝑥!"# , 𝑦!"# ) • 陰解法で計算が複雑 • 近似精度が高い • 数値的に安定 図出典:https://cattech-lab.com/science-tools/simulation-lecture-3-2/ 𝑦 = 𝑦(𝑥)
数値解法② 60 ルンゲクッタ法 • Euler法では曲線の傾きの変化が大きい場合や刻み幅ℎが大きい場合に予測 精度が落ちる • テイラー展開を利用し,精度を高めた数値解法 𝑦 /0 /+ = 𝑓(𝑡, 𝑦)の解 ここで, 𝑘. 𝑦 = 𝑦(𝑡) ℎ 𝑡+ 𝑡+,- 𝑡 4次のルンゲクッタ法
61 物理シミュレーションの基礎まとめ • 物理シミュレータでは1. 順動力学計算,2. 衝突判定,3. 接触力計算,4. 位置更新,5. レンダリングの順に処理される • 運動方程式の記述方法としてニュートン・オイラー法とラグランジュ法が 存在する • 衝突判定には精度の粗いブロードフェーズと細かいナローフェーズがある • 衝突応答にはImpulse-based Method,のめり込み処理などにPenaltybased Method,Constraint-based Methodがある • オイラー法やルンゲクッタ法などの数値解析法を用いて位置の更新が行わ れる
62 4. さまざまな物理シミュレーションと 物理エンジン
63 さまざまな物体のシミュレーション • 剛体 • 変形を伴わない理想的な条件 • 運動を並進と回転に限定 • 弾性体 • 変形後に元の形状に戻る • バネ・質点系,格子法,粒子法など • 流体 • 絶えず形が複雑に変化する • オイラー的手法,ラグランジュ的手法,ハイブリッド法など ※この他にも塑性体や弾塑性体,炎,爆発,雲などさまざまなシミュレーションが存在する
64 格子法の例:有限要素法(FEM) • 連続体を有限個の格子点で覆う • 周辺の格子を用いたローカルな更新で計算 • 離散化の粒度によって精度が異なる • 全体として物体の変形を扱える • NVIDIAのhttps://github.com/NVIDIA-Omniverse/PhysXに実装 された DiffPD(FEMベースの物理エンジン)のデモ 図出典:https://dl.acm.org/doi/full/10.1145/3490168
65 粒子法の例:Position-based Fluids(PBF) • 粒子を用いて物理法則を離散化 • 近隣の粒子との相互作用で更新 • どの粒子と相互作用するかは動的に変わる • 格子法と比較すると,格子で覆う必要がないので大きな変形を伴う問 題に適している(流体や布など) • これもNVIDIAのPhysX5に実装された • 元々はFlexという別の物理エンジンとして実装されていた 図出典:https://github.com/YunzhuLi/PyFleX https://gameworksdocs.nvidia.com/FleX/1.2/lib̲docs/manual.html
66 ロボット向け物理シミュレータ Bullet,MuJoCo,PhysX,Drake,RaiSimなど 図出典:
代表的な物理エンジン① Bullet 3.x • 2013年Erwin Coumansに開発され,アニメーション/ロボティクス向け • Reduced Coordinateを使用し,逆動力学計算はRNEA,順運動学計算 はCRBAとABAをサポート • 剛体の他に布などの柔軟物体のシミュレーションが可能 • ravensやDEDOといった学習用の充実したベンチマーク環境が開発 図出典:https://github.com/contactrika/dedo,https://github.com/google-research/ravens 67
代表的な物理エンジン② MuJoCo • ワシントン大学のEmanuel Todorovが開発し,ロボティクス向け(現在は Googleがメンテナンス) • Reduced Coordinateを使用し,逆動力学計算はRNEA,順運動学計算 はCRBAをサポート • 数値微分による微分値の提供し,MuJoCo MPCなど制御のための ライブラリを完備 図出典:https://github.com/google-deepmind/mujoco̲mpc,https://github.com/stepjam/RLBench 68
代表的な物理エンジン③ 69 PhysX • NVIDIAが開発し,アニメーション/ロボティクス向け • Flexを内包し,剛体のみならず弾性体,塑性体,流体などのシミュレー ションを実現 • Omniverse IsaacSimに搭載されGPU上で実行も可能 図出典:https://developer.nvidia.com/physx-sdk
代表的な物理エンジン④ Drake • MIT/TRIのRuss Tedrakeチームが開発し,ロボティクス向け • Reduced Coordinateを使用し,逆動力学計算はRNEA,順運動学計算 はCRBAとABAをサポート • 有限要素法のような多点接触モデルを提供 図出典:https://medium.com/toyotaresearch/rethinking-contact-simulation-for-robot-manipulation-434a56b5ec88 70
代表的な物理エンジン⑤ 71 Raisim • ETH Zurichが開発し,ロボティクス向け • Reduced Coordinateを使用し,順運動学計算にABAをサポート • ソルバーが高速で18DoFの歩行ロボットの接触を20μs内で計算が可能 • 内部の実装が公開されていない 図出典:https://leggedrobotics.github.io/SimBenchmark/
補足① 72 物理シミュレータが多くある理由 接触モデルと接触・拘束力計算のソルバーの違い • 接触モデルを物理的に正確にするほど計算コストの高いソルバーが必要に • ソルバーを高速にするためにもさまざまなテクニックが提案されている CCP NCP 𝜆∗ 𝜆∗ −𝑣 接触点 −𝑣 接触点 接触モデル LCP • • • 𝜆∗ • −𝑣 • 接触点 • Lemkeʼs Algorithm (Pivot Method) Dantzigʼs Algorithm (Pivot Method) Projected Gauss Seidel (Iterative Method) Alternative Direction Method of Multipliers (Iterative Method) Staggered Projection (Iterative Method) Bisection Method (Iterative Method) ソルバー ※ この他にもレンダリング部分の違いや環境アセットの違いもある ※ 微分値を取得可能にするためのソルバーが選ばれることもある
補足② 73 物理シミュレータの分類 物理シミュレータの分類 • アプリケーション,座標系,数値解析法,勾配導出方法,接触ソルバー, 微分可能性,柔軟物体・流体のサポートによる分類 ※この他にもChronoなど色々なシミュレータが存在する
74 物理シミュレータの性能比較① Bullet,MuJoCo,ODE,PhysXの性能を比較(2014) • ロボティクス向けのタスクにおいてはMuJoCoが最もSpeed-Accuracy 曲線において高い性能を発揮 図出典:https://homes.cs.washington.edu/~todorov/papers/ErezICRA15.pdf
75 物理シミュレータの性能比較② Bullet,Drake,MuJoCoを接触タスクにおいて比較(2022) • タスク1においてDrakeやBulletは接触モデルの近似誤差によって滑りが 発生し,MuJoCoは地面にのめり込みが発生 • タスク2においてMuJoCoはDrakeに比べて摩擦係数への敏感性が低い タスク1: 立方体の放り投げ タスク2: 脚ロボットの摩擦係数推定 図出典:https://browse.arxiv.org/pdf/2110.00541.pdf
76 物理シミュレータの用途まとめ • PyBulletはドキュメントも多く,簡単にシミュレーション環境を作成する ことができる • MuJoCoは軌道最適化などをC++で書きたい人むけで強化学習用途とい うよりはロボティクスの純粋なシミュレーションを行いたい人向け • PhysXは流体や変形体を使用したい場合や学習環境を並列化したい場合 • DrakeとRaiSimは他の3つのエンジンに比べるとサンプルコード数なども 少ない部分もあるが,歩行ロボットであったり,多接触モデルなどをサ ポートしているため,目的のタスクに合わせて選択肢として重要
77 5. 近年の物理シミュレーション
最近のトレンド 78 位置ベースシミュレータ • Position-based Dynamics • • • • 従来の物理シミュレータはForce-based dynamics PhysXなどの物理エンジンでは搭載 直接のめり込みがなくなるまで位置を更新 実装が単純だが,非物理的 図出典:https://www.youtube.com/watch?v=jrociOAYqxA
最近のトレンド 79 Embodied AIベンチマーク環境 iGibson[Xia+19](ICRA2020) AI2Thor[Kolve+17] Habitat[Savva+19](ICCV2019) ThreeDWorld[Gan+20]
最近のトレンド データドリブンシミュレータ シミュレーションの一部機能をデータから学習 • ダイナミクスの学習 • World Model (DriveGAN, GAIA-1など) • Rigid Body / Particle Simulator (ContactNetsなど) • センサーシミュレーションの学習 • SensorSim(LiDARSim, UniSimなど) 図出典:https://wayve.ai/thinking/introducing-gaia1/.https://nv-tlabs.github.io/DriveGAN/.https://waabi.ai/unisim/ 80
最近のトレンド 81 大規模並列化シミュレーション シミュレーションをGPU上で並列化することで学習の高速化 • 大規模な強化学習が可能になる • データを対象に必要とする強化学習を環境を並列化することで高速化できる • IsaacSimやBraxなどGPU上で動作するシミュレータがサポート 図出典:https://developer.nvidia.com/isaac-gym 81
最近のトレンド 82 柔軟物体シミュレーション リアルな柔軟物体の挙動をシミュレーション • のめり込みや不自然な振動など物理的に発生し得ない挙動を防ぐ新しい 接触モデル(Incremental Potential Contact, IPC) • 計算に時間がかかる(リアルタイムでの計算が難しい) ※ 現在では,剛体にも拡張されている 図出典:https://www.youtube.com/watch?v=jvBSDXxsgRA&t=7s&ab̲channel=MinchenLi
最近のトレンド 83 微分可能シミュレータ 数値微分や記号微分,自動微分を用いた状態や制御入力,その他パラ メータに関して微分値を取得可能なシミュレータ • 勾配を使用した軌道最適化や強化学習,システム同定などが高速に行える ※ 一般的に微分値を取得できるインターフェースが整えられているものを指す State Parameter 図出典:https://physicsbaseddeeplearning.org/diffphys.html
代表的な微分可能シミュレータ① Brax v1/v2 Maximal Coordinate(v1)使用 Reduced Coordinate(v2)使用 Jax(Python)で実装された微分可能シミュレータ • Googleが開発し,GPU/TPUを使用した並列化高速シミュレーションを 実現 • 接触モデルを複数提供し,用途に合わせて切り替え可能 図出典:https://blog.research.google/2021/07/speeding-up-reinforcement-learning-with.html?m=1 84
代表的な微分可能シミュレータ② Tiny Differentiable Simulator Reduced Coordinate使用 微分可能なニューラルネットワークを解析的に導出可能なダイナミク スに残差的に外挿する微分可能シミュレータ • 摩擦や接触などの複雑なダイナミクスを持つ現象をデータドリブンに近似 することを可能に 通常の物理シミュレータ データドリブン シミュレータ Tiny Differentiable Simulator 図出典:https://browse.arxiv.org/pdf/2011.04217.pdf 85
代表的な微分可能シミュレータ③ Maximal Coordinate使用 Dojo 物理学に基づいた正確な接触モデルを用いた微分可能シミュレータ • 通常,摩擦錐を近似した接触モデルを用いるが正確なモデルを使用 近似誤差による滑りが発生しない 摩擦錐 時間内に接触力を求める計算の収束性の証明がない 図出典:https://sites.google.com/view/dojo-sim/home 86
微分可能シミュレータの応用 87 微分可能シミュレータを用いた強化学習 微分可能シミュレータdflexを使用した強化学習 • 接触ダイナミクスなどの不連続性による局所的な勾配爆発や消失を平滑化 して学習する手法(SHAC)を提案 • 従来の強化学習手法(PPO, SAC)に比べて17倍高速な学習を実現 図出典:https://short-horizon-actor-critic.github.io/
微分可能シミュレータの応用 88 微分可能シミュレータをシステム同定 微分可能シミュレータを用いて動画から摩擦や質量などの物理パラ メータを推定 • 実際の動画とランダムに割り当てた物理パラメータを用いたシミュレー ション動画を比較 • 勾配を用いて物理パラメータの値を繰り返し最適化 図出典:https://arxiv.org/pdf/2104.02646.pdf
微分可能シミュレータの応用 89 微分可能シミュレータを用いた料理環境 • DiSECt:微分可能なFlexエンジン(dflex)を使用したFood Cuttingのため の物理シミュレーション • PlasticineLab:微分可能なTaichiを使用した塑性物体シミュレーション • FluidLab:微分可能なTaichiを使用したMPMベースの粒子ベースシミュ レーション DiSECt PlasticineLab FluidLab 図出典:https://blog.research.google/2021/07/speeding-up-reinforcement-learning-with.html?m=1
補足① 90 微分可能シミュレータの課題 不連続な物理現象による勾配の精度の低下 • 接触や摩擦などの不連続な状態変化を伴うシミュレーション時に勾配の 精度が低下する 𝜆 𝑣 0 𝑡 𝑥 𝐹 𝜆 接触モデルや微分値の取得の仕方によって さまざまな微分可能シミュレータが提案されている 𝑥̇
補足② 91 微分可能シミュレータの性能比較 4つの微分可能接触モデルを位置・速度・制御入力に対する勾配がどれ だけ正確かを比較 • Nimble(LCP), DiffCoSim(Convex Optimization),DiffTaichi(Direct Velocity Impulse),Warp/Brax(Compliant Model),Warp/Brax(PBD)を比較 図出典:https://github.com/DesmondZhong/diff̲sim̲grads/blob/main/poster.pdf
補足③ 92 物理シミュレータの今後 物理的現実性の向上と高速な物理シミュレータの開発 Accuracy Physics Realistic Speed-Accuracy Trade-Off Curve よりリアルに より高速に Parallel & Fast MuJoCo Bullet Drake RaiSim PhysX Rigid-IPC Brax Dojo … Simulation Speed 図出典:https://ipc-sim.github.io/C-IPC/
93 近年の物理シミュレーションのまとめ • 位置ベースシミュレータやEmbodied AIベンチマーク,データドリブン シミュレータなど幅広い物理シミュレータの研究がされている • 微分可能シミュレータによりパラメータに対する微分値が容易に取得でき るようになり,制御器を最適化やシステム同定などが可能になった • Speed-Accuracyトレードオフ曲線を右上に押しやるような研究が現在 も盛んに行われている
94 6. コンピュータグラフィクスの基礎
95 レンダリングとは • コンピュータ内部に数値データとして記述されたシーンから2次元の ディジタル画像を生成する処理 • 利用するレンダリング手法(の組み合わせ)により生成される画像 の品質や必要な時間が変わる • 例)Zバッファリング,レイトレーシング 図出典:http://hideki-todo.com/cgu/lectures/cg2015/08̲rendering1/08̲rendering1.pdf
96 レンダリングパイプライン レンダリングパイプラインとは頂点データから画像を作る流れ • 座標変換処理 • 頂点シェーダ 頂点データ • 視点から可視範囲を切り取る処理 • 頂点ポストプロセス • 陰影を付ける処理 • フラグメントシェーダ 全てのプリミティブ*に対して以上の処理 を行うことで画面上に描画する *プリミティブとはポリゴンや直線,点などの頂点の最小単位 頂点シェーダ ラスタライズ テッセレーション フラグメントシェーダ ジオメトリシェーダ サンプルごとの処理 頂点ポストプロセス 表示データ
レンダリングパイプライン① 97 頂点シェーダ ポリゴンデータの各頂点に対して座標変換や照明計算を行う処理 • ローカル座標系で表された頂点の座標値をグローバル座標系,カメラ座標 系,投影座標系へ • 照明条件と頂点の属性情報から輝度値を求める 𝑧 カメラ座標系 𝑦 𝑥 ローカル座標 𝑧 投影座標系 グローバル座標系 𝑦 𝑥 ローカル座標 𝑥
レンダリングパイプライン② 98 テッセレーション トライアングルなどのプリミティブを細かく分解し,多数のプリミ ティブを生成する処理 • ハルシェーダ:ポリゴンをどのくらい分割するか,分割レベルの決定と分 割手法の選定 • テッセレータ:ポリゴンの分割を行う • ドメインシェーダ:分割したポリゴンの局面成形などを行う ハルシェーダ テッセレータ テッセレーション ドメイン シェーダ 例) 折り紙 1. ハルシェーダ:折り方を計画する 2. テッセレータ:折り目の線を引く 3. ドメインシェーダ:実際に折る
レンダリングパイプライン③ 99 ジオメトリシェーダ プログラムに従って線分やポリゴンなどのプリミティブを増減させる 処理 (プリミティブ単位のエフェクト的用途) • アクセラレーション的活用:影生成の高速化,毛生成の高速化など • 新しい表現への活用:モーションブラーなど 図出典:https://news.mynavi.jp/article/graphics-30/
レンダリングパイプライン④ 頂点ポストプロセス 前方クリッピング面と後方クリッピング面に挟まれるビューボリュー ム内のプリミティブを抽出するクリッピング処理 図出典:http://hideki-todo.com/cgu/lectures/cg2015/05̲basic2/05̲basic2.pdf 100
レンダリングパイプライン⑤ 101 ラスタライズ プリミティブを画面に表示されるピクセルの集合のフラグメント*に変 換する処理 • 頂点1,2を結ぶ編の傾きからピクセルの位置 を決定 • エッジ付近でギザギザになることを避けるため, 近傍のピクセルの平均の明るさを使用 頂点1 (座標) 1つのピクセル (z座標) 三角形の面を ピクセルで埋める 頂点2 (座標) *フラグメントとは画面に表示されるピクセル 図出典:https://mtrebi.github.io/2017/02/01/rasterization-i.html 頂点3 (座標)
レンダリングパイプライン⑥ 102 フラグメントシェーダ フラグメントの色と奥行き方向の位置を決定する処理 • テクスチャマッピングによる各フラグメントの色の決定 • 光源の位置と方向を計算し,ライティングモデルを使用して,視線方向に 反射する光の異色と強さからフラグメントの色を決定 • Zバッファを使用して奥行き位置を決定 頂点1 (座標) 頂点1 (座標) 1つのピクセル (z座標) 頂点2 (座標) 頂点3 (座標) 1つのピクセル (z座標) 頂点2 (座標) *フラグメントとは画面に表示されるピクセル 図出典:https://mtrebi.github.io/2017/02/01/rasterization-i.html 頂点3 (座標)
フラグメントシェーダ① テクスチャマッピング • 複雑な面の模様を反映するために,テクスチャと呼ばれる壁紙を立体の表 面に貼り付ける • レンダリングされる画像での見え方は貼り付けた平面の距離や傾きによっ て変わる 図出典:http://hideki-todo.com/cgu/lectures/cg2015/09̲rendering2/09̲rendering2.pdf 103
フラグメントシェーダ② Zバッファリング • レンダリングする画像とは別にそれぞれのピクセルの奥行き情報をバッ ファ(Z-buffer)に保管しておく • Z-bufferを参照し既に書かれているピクセルのz座標と比較し手前に あるときだけピクセルの値を更新(描画) • アルゴリズムが簡単・高速化しやすい • OpenGLなどのレンダリングエンジン 標準的な実装 図出典:http://hideki-todo.com/cgu/lectures/cg2015/08̲rendering1/08̲rendering1.pdf https://www.cs.utexas.edu/~fussell/courses/cs384g-spring2017/lectures/Lecture9-Zbuffer̲pipeline.pdf 104
フラグメントシェーダ③ レイトレーシング • 画面上のピクセルから光線を放ち(レイキャスト),レイが3Dシーン上を 突き進むことで必要な情報を回収する • 反射・透過・屈折を扱える • レイと交差するポリゴンの色を反映して レンダリングする • 透過させないときは最初に交差したポリゴンの色 • 処理が重くなりがちだが近年はリアルタイムで レンダリングが可能になりつつある 図出典:http://hideki-todo.com/cgu/lectures/cg2015/08̲rendering1/08̲rendering1.pdf https://www.cs.utexas.edu/~fussell/courses/cs384g-spring2017/lectures/Lecture9-Zbuffer̲pipeline.pdf 105
補足 106 最近のリアルタイムレイトレーシングの例 図出典:https://www.youtube.com/watch?v=spq0jSWRCqI
107 コンピュータグラフィクスの基礎のまとめ • 画面上に描画するには,1. 頂点シェーダ,2. テッセレーション,3. ジオ メトリシェーダ,4. 頂点ポストプロセス,5. ラスタライズ,6. フラグメ ントシェーダの順に処理を行う • より詳細にリアルな画像を描画するためにレイトレーシングなどの計算コ ストの高い方法が採用されている
108 7. 近年のコンピュータグラフィクス
109 微分可能レンダリング • レンダラを自動微分を用いて実装 • レンダリングに関わる3Dシーンや パラメータの最適化が勾配法で可能 • サーベイ論文 • ツールが複数開発されている • 例)Kaolin, PyTorch3D, Mitsuba2 • (微分可能シミュレータの場合と同様に)広義にはニューラルネットワーク を用いてレンダリングを学習する手法を含める場合もある • ニューラルレンダリングと呼ばれる 図出典:https://speakerdeck.com/hkato/wei-fen-ke-neng-rendaringu-cvimyan-jiu-hui-tiyutoriaru?slide=14
110 微分可能レンダリング Differentiable Monte Carlo Ray Tracing through Edge Sampling (SIGRAPH Asia2018) • 目標の画像に近づくように物体(Stanford bunny)の姿勢を最適化する タスク 目標画像 初期画像 最適化過程 図出典:https://people.csail.mit.edu/tzumao/diffrt/ 最終的に得られた画像
111 微分可能レンダリングの例: Kaolin • NVIDIAが開発したPyTorchで実装された微分可能レンダラ • https://github.com/NVIDIAGameWorks/kaolin • 深層学習と組み合わせて研究しやすいようなツール群 • データセット,座標変換,レンダリングツール,代表的な研究の実装 図出典:https://kaolin.readthedocs.io/en/latest/
112 微分可能レンダリングの応用: RISP 微分可能シミュレータ・レンダラを組み合わせ,ダイナミクス・レン ダリングのパラメータを動画から推定 • ドメインランダム化によりアクションを入力した時の状態予測 • 微分可能シミュレータ・レンダリングによるランダムなパラメータを入力 した時の状態予測と最適化 図出典:https://sites.google.com/view/risp-iclr-2022/home
113 微分可能レンダリングの応用: Video2Sim 微分可能シミュレータ・レンダラを組み合わせ,関節を持つ剛体の物 理パラメータ推定 • 画像から物体検出,姿勢推定,関節推定を通して得られた情報からシステ ム同定を実施 • 微分可能シミュレータ・レンダラによって質量や慣性行列をベイズ推定 図出典:https://eric-heiden.github.io/video2sim/
114 キャラクターアニメーション データ駆動型モーション編集 • 多数のポーズやモーションをサンプルデータとし,機械学習や深層学習技 術を用いて新しいモーションを合成する 図出典:https://www.youtube.com/watch?v=OV9VoHMEeyI&ab̲channel=LiPeizhuo
深層学習を用いたキャラクターアニメーション 生成モデルを用いた動作合成 大規模なモーションデータを収集することは難しいため,生成モデル を用いて学習 • Transformer-VAEによって行動を条件付けた動作生成 • 行動を条件づけることで様々な動作を生成可能に 図出典:https://github.com/Mathux/ACTOR 115
116 近年のコンピュータグラフィクスのまとめ • 微分可能レンダリングによって動画から物理的なパラメータを推定するこ とや目標の画像と同じようになるように最適化する技術が研究されている • データドリブンな深層学習や機械学習手法を用いたキャラクターアニメー ションが盛んに研究され,実際にアニメーションやゲームの分野で応用さ れている
117 8. まとめ
118 まとめ • シミュレーションやCGの基礎 • シミュレーション,CGの背景知識から最先端の物理シミュレータ,応用例 について紹介 • シミュレーションの限界 • 接触における摩擦などの複雑な現象を現実的な時間内に解く難しさを紹介 • シミュレーションやCGの今後 • 自動微分を用いて記述する方向性と学習によりパイプライン全体を学習する 方向性がある • 微分可能になることにより制御モデルやシーンのパラメータを勾配を用いた 最適化が可能になる
119 参考資料(シミュレーション関連) • CGのための物理シミュレーションの基礎 • CGにおける物理シミュレーションの数理について幅広く解説 • 3DCGの数理と応用 • CGを支えるモデリング,レンダリング,キャラクタアニメーション, 物理シミュレーションを解説 • WebGLによる物理シミュレーション • JavaScriptを用いた物理シミュレーションを解説
120 参考資料(シミュレーション関連) • Ten Minute Physics • NVIDIAのPhysXの開発者が物理シミュレーションについて10分ごとの動画で解説 • Contact and Friction Simulation for Computer Graphics • SIGGRAPH2022で行われた接触・摩擦モデルについての講義 • An Introduction to Physics-based Animation • SIGGRAPH2019で行われた物理ベースアニメーションについての講義 • Interactive Simulation of Rigid Body Dynamics in Computer Graphics • Bulletの開発者であるErwin Coumansらが物理シミュレーションについて解説 • Game Physics Engine Development • 物理シミュレータの基礎をC++の実装付きで解説
121 参考資料(コンピュータグラフィクス関連) • コンピュータグラフィクス 改訂新版 • CGの基礎について解説 • GPUを支える技術 • GPUの歴史からゲーム分野におけるCGについて解説 • ゲーム制作者になるための3Dグラフィックス技術 改訂3版 • ゲーム分野におけるCGについて解説
122 参考資料(コンピュータグラフィクス関連) • 「グラフィクス・アプリ」制作のためのOpenGL入門 • OpenGLの実装つきでレンダリングパイプラインについて解説 • 初めてWebGL2 JavaScriptで開発するリアルタイム3Dアプリケー ション • WebGLの実装つきでレンダリングパイプラインについて解説