始めまして、いつも覗かしてもらっています。
プログラミングを始めてまだまだ日が浅いのですが、物理エンジンというものに興味が出てきて、勉強のために簡単ものを自分で作ってみたいと思いました。
しかし色々しらべてみてもどこから始めれば良いのかイマイチ分かりませんでした・・・・・・(2chのスレッドで"剛体の本を買って来て理解する。あとはhttp://www.pixar.com/companyinfo/research/pbm2 ... が難しくて分からない・・・)
今まで作ったことのあるプログラムで一番複雑な物といえば、連立方程式を掃きだし法で計算するプログラムくらいで、端末からの入出力しかできません。(おまけに学校の課題です・・・)
作った物理エンジンを使って実際に物をぶつけたりしてみたいのですが、どうやるか検討も付きません。
自作するのに、どのような段階を踏んでいけばいいか、教えて下さい。実際の書籍やサイト等も紹介してもらえると助かります。
よろしくお願いします。
物理エンジンの作り方
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 物理エンジンの作り方
物理エンジンを作るためには、ある程度は物理法則を理解している必要があります。
細かく考えだすとすごく複雑なので、簡単なものに割り切った方がよいでしょう。
最低どういった物理法則を実装した物理エンジンをお望みですか?
そこも分からないとなると高校物理あたりのサイトからご紹介することになると思います。
なぁなお、グラフィックの表示はDXライブラリを利用されてはどうでしょうか?
【補足】
物理シミュレーションは、現実と違い飛び飛びの時間であるデジタルな時間軸を扱います。
現実は連続したアナログな時間軸です。この違いを理解できないとシミュレーションは困難です。
【補足の補足】
最初は回転やら難しい当たり判定を考えなくて良いので、2Dの円の衝突だけを扱うと良いと思います。
細かく考えだすとすごく複雑なので、簡単なものに割り切った方がよいでしょう。
最低どういった物理法則を実装した物理エンジンをお望みですか?
そこも分からないとなると高校物理あたりのサイトからご紹介することになると思います。
なぁなお、グラフィックの表示はDXライブラリを利用されてはどうでしょうか?
【補足】
物理シミュレーションは、現実と違い飛び飛びの時間であるデジタルな時間軸を扱います。
現実は連続したアナログな時間軸です。この違いを理解できないとシミュレーションは困難です。
【補足の補足】
最初は回転やら難しい当たり判定を考えなくて良いので、2Dの円の衝突だけを扱うと良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 物理エンジンの作り方
物理は大学受験レベルまでのものなら問題ありません。数学の知識としては、線形台数、ベクトル解析、微積分は知ったかできる程度です。
等速、等加速、重力、等の物理法則は実装しみたいです。とりあえず一つ完成させてみてから、流体とかもやってみたいと思っています。
等速、等加速、重力、等の物理法則は実装しみたいです。とりあえず一つ完成させてみてから、流体とかもやってみたいと思っています。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 物理エンジンの作り方
> 等速、等加速、重力、等の物理法則は実装しみたいです。とりあえず一つ完成させてみてから、流体とかもやってみたいと思っています。
逆にそれ以外の物理法則を忘れていないでしょうか?と心配になりました。
慣性・摩擦・反発係数・回転モーメント・振り子の法則などなど剛体でも適用すべき法則は沢山あります(他にも沢山あります)。
それらを最初から全部取り込んだら、間違いなく作れないと思います。
なので極限まで捨ててください。
ちなみに等加速と重力って殆ど同じ意味だと思いますが。
【補足】
と言うことで提案です。
最初は壁で反射するボールのプログラムを作ってみてください。
ようは基礎のブロック崩しの練習版程度の内容です。
出来ればボールは円形が望ましいです。四角形の方が簡単ですけど。
逆にそれ以外の物理法則を忘れていないでしょうか?と心配になりました。
慣性・摩擦・反発係数・回転モーメント・振り子の法則などなど剛体でも適用すべき法則は沢山あります(他にも沢山あります)。
それらを最初から全部取り込んだら、間違いなく作れないと思います。
なので極限まで捨ててください。
ちなみに等加速と重力って殆ど同じ意味だと思いますが。
【補足】
と言うことで提案です。
最初は壁で反射するボールのプログラムを作ってみてください。
ようは基礎のブロック崩しの練習版程度の内容です。
出来ればボールは円形が望ましいです。四角形の方が簡単ですけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 物理エンジンの作り方
分かりました。
具体的にはどういう作業になるのでしょうか?
プログラムを書けと言われても、そこが一番分かっていません
具体的にはどういう作業になるのでしょうか?
プログラムを書けと言われても、そこが一番分かっていません
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 物理エンジンの作り方
物理計算と画面をリアルタイムに表示するならゲームとやることは基本的には同じなので、下記のゲームの基本が参考になります。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
ただ、画像は使わずにDrawLineやDrawCircleなどで代用すれば十分です。
「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... .html#R2N3
グラフ用紙に図形を手で書いていたのをプログラムで自動化すると考えてもらば良いかと。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
ただ、画像は使わずにDrawLineやDrawCircleなどで代用すれば十分です。
「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... .html#R2N3
グラフ用紙に図形を手で書いていたのをプログラムで自動化すると考えてもらば良いかと。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 物理エンジンの作り方
ありがとうございます。リンク先をよく読んで勉強させてもらいます。
多分わからないことがたくさん出てくるので、またよろしくお願いします。
多分わからないことがたくさん出てくるので、またよろしくお願いします。
Re: 物理エンジンの作り方
どこまで物理法則に則れば(?) 「物理エンジン」って呼べるのかわかりませんが,
いろんなことを誤魔化していいなら,とりあえずこのくらいのもの↓は割と簡単ですよ.
http://dixq.net/forum/viewtopic.php?f=78&t=14198
いろんなことを誤魔化していいなら,とりあえずこのくらいのもの↓は割と簡単ですよ.
http://dixq.net/forum/viewtopic.php?f=78&t=14198