お知らせ
- 初回(4/24(水)3,4限)集合場所 : 7C202
テーマ概要
- テーマ名:物理エンジンを使ったアプリケーション開発
- 科目番号:GC41103 情報メディア実験A
- 開講時限:春学期ABC 水曜日3,4時限, 金曜日5,6時限 (詳細な日程はmanabaの情報メディア実験を参照)
- 教室:7C202
- 概要:
最近のゲームやアプリケーションでは剛体同士の衝突などを物理法則に従って計算する物理シミュレーションがよく使われています. 本実験テーマではオープンソースの物理シミュレーションエンジンを利用したアプリケーションを作成することで, 物理シミュレーションの基礎と物理エンジンを使ったプログラミングを学びます.
実験では最初に物理シミュレーションおよび物理エンジンの基礎について練習問題を解くことで学び, その後物理エンジンを使った簡単なシステム/アプリケーションの開発を行ってもらいます.
担当教員
- 氏名: 藤澤 誠 (ふじさわ まこと)
- 所属: 図書館情報メディア系(情報メディア創成学類,情報学学位プログラム担当)
- 電子メール: fujis[at]slis.tsukuba.ac.jp
- ホームページ: https://pbcglab.jp/fujis/
- オフィスアワー : 随時(メールでアポを取って下さい)
説明ページ
本Webページを含めた配付資料,サンプルプログラムなどはすべてgithubのiml_physicsに置いてある.
C++の教材
本実験で用いるBullet PhysicsライブラリはC++で書かれたオープンソースライブラリである. 実験で用いるサンプルプログラムではC++のクラスなどは使わないようにしているので, C言語(とOpenGL)が分かっていれば理解できるでしょう. しかし,Bulletを深く理解するためにはC++(特にクラスについて)が分かっている必要がある. C++の参考資料(PDF)を以下に置くので,必要に応じて参照すること.
また,Visual Studioなどほとんどの開発環境で標準的に使えるSTLという便利なライブラリがある. これを使うと便利なので,簡単な解説資料を以下においたので,是非使ってみてほしい
なお,これらの資料は私が学生の時に研究室の輪講用に作成したものを少しだけ修正したものである (なので日本語がおかしかったり,間違っていたらごめんなさい).
ガイダンス資料
物理エンジンについて
内容 | 資料 | |
---|---|---|
1.物理シミュレーションとは? | 物理シミュレーションの基礎的な理論(物理エンジンを使うために必要となる理論的な基礎)について学ぶ. |
説明スライド(PDF) 説明ページ サンプルプログラム (MD5:f8959e90d8cc0043167395a5dbca63a8) |
2.物理エンジンとは? | オープンソースの物理エンジン"Bullet Physics Library"(以下Bullet)について学び, Bulletライブラリのビルド,Bulletを使った単純な剛体シミュレーションプログラムを作成する. |
説明スライド(PDF) 説明ページ |
3.多数の剛体間の衝突判定,衝突応答 | 物理エンジンの重要な機能である衝突判定,衝突応答について, 多数の剛体が存在する場合でも高速に処理するための方法を学ぶ. |
説明スライド(PDF) 説明ページ1(衝突検出) 説明ページ2(衝突応答) サンプルプログラム2 (MD5:b424344bcf5c0004c823dda8c0b82b55) |
4.剛体間リンク | 剛体同士の位置,姿勢関係に拘束条件を加えることでジョイント構造を持たせることができる. この剛体間リンクの理論とBulletで設定できるジョイントの種類について学ぶ. |
説明スライド(PDF) 説明ページ 補足:視点の追従 |
5.3Dモデル読み込みと弾性体 | Bulletでは剛体だけでなく,ゴムや布ような変形する物体(弾性体)も扱うことができる. そのためのバックグラウンドになっている技術を学ぶとともに, 三角形メッシュによる形状の読み込みについても学び, 弾性体を使ったプログラムを作成する. |
説明スライド(PDF) 説明ページ1(3Dモデル読み込み) 説明ページ2(弾性体) 補足:Blenderによるポリゴン数削減 |
補足など | - |
補足:複合形状 補足:文字列描画 |
ソースコードに関する注意事項
ファイルのMD5によるチェック
実習室のPCではダウンロードしたファイルが不完全であることがある (この場合,解凍時にエラーが出るか,ビルドしようとするとファイルが足りないといわれる). サンプルファイルの下にMD5チェックサムを載せておいた. WindowsだとNirSoftのHashMyFilesというフリーソフトで ファイルのMD5を確認できるので不安な人はこれでダウンロードしたファイルのMD5を調べ,上記の値と一致するかをチェックすること.
dllファイルが見つかりません
Visual Studioでビルドしたプログラムを実行しようとすると「*.dllファイルが見つかりません」といわれ実行できない場合, プロジェクトファイル(*.vcxproj)があるフォルダにDebugもしくはReleaseという名前のフォルダがあるので, その中に,bin/*.dllファイルをコピーする.
参考書,参考Webページ
- 藤澤誠著 : CGにおける物理シミュレーションの基礎,マイナビ
- 原田隆宏,松生裕史著,西川善司監修 : ゲーム制作者のための物理シミュレーション 剛体編, インプレスジャパン
- Christer Ericson著,中村達也訳 : ゲームプログラミングのためのリアルタイム衝突判定(Real-Time Collision Detection),ボーンデジタル
- 金谷一朗著 : 3D-CGプログラマーのためのクォータニオン入門,工学社
- Bullet Physics Library : http://bulletphysics.org/wordpress/