トップページgamedev
981コメント311KB

ゲームのための物理(力学)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。02/04/08 17:38ID:dlksSYkA
ゲームに必要な物理(力学)を語るスレッド。

例えば、坂道を転がる球の加速度だったら。

その球の密度が一様ならば、慣性モーメントは(2/5)MR^2なので

dV/dt = 5*g*sinθ/7;

と表せるよとか。

他にも剛体運動、力積とか語ってください。
0764名前は開発中のものです。04/12/04 09:54:58ID:fZQouo3W
>>761
PxPが埋まっているわけだから当たり判定には何の問題もないだろ。
0765名前は開発中のものです。04/12/04 12:35:22ID:be3XXiei
PXPってなに?
0766名前は開発中のものです。04/12/05 15:57:46ID:W3qStFtF
>761
あたり判定と一言でいっても色々あるんだが?
0767名前は開発中のものです。04/12/05 19:11:53ID:JV/Jpb+H
全部撃力検出すると重たいよな〜。
0768名前は開発中のものです。04/12/20 21:11:32ID:wFt1s5s/
今月のCマガジンの特集は「物理運動をシミュレーションしよう」だったよage
0769名前は開発中のものです。04/12/29 23:37:07ID:nk/+7ZZX
例によって基本的な話だけだったよsage
0770名前は開発中のものです。05/01/09 21:02:46ID:xBiPAO5G
>>768
題名見て期待したが、中身が無かった。
0771名前は開発中のものです。05/01/10 01:55:22ID:EVrnpuO8
昔のエロスみたいだなw
0772名前は開発中のものです。05/01/10 03:51:06ID:S3FWAeCZ
「はじめてのC」とか書かれた本でドキドキしたりすんのか?
0773名前は開発中のものです。05/01/10 12:37:20ID:GxLJDP2Q
シミュレータ作るためには重要だがゲームでまで現実を再現する必要はないと思った中学生最後の冬
0774名前は開発中のものです。05/01/10 12:51:53ID:csVaX7fm
技術力の弱肉強食
ライオン=3Dゲーム > ガゼル=2Dゲーム
なんでも3Dにしようとする風潮がよくわかるでやんす。

でもワシは個人的に2Dのゲームのほうが好き。
だってディスプレイが平面なんだもん。
0775名前は開発中のものです。05/01/10 14:48:41ID:7bbytFZX
http://superjockey.co.jp/
ここってもうでたっけ。
0776名前は開発中のものです。05/01/11 15:30:16ID:Yfuk15Ok
力学はみんなできんだろ。
波やろうぜ波。
0777名前は開発中のものです。05/01/11 19:52:15ID:m+yetMlH
>>763
サンクス
用途がわかって勉強する気でた
0778名前は開発中のものです。05/01/11 20:10:00ID:0gcMffxM
1.31キタ━━━━━━(゚∀゚)━━━━━━ !!
Newton Game Dynamics
http://www.physicsengine.com/index.html

>>776
Gems1みたいな奴?
0779名前は開発中のものです。05/01/31 02:10:47ID:ywW+fA0q
age
0780名前は開発中のものです。05/01/31 10:53:02ID:VclLi61I
>>776
フライトものの様なカメラの位置取りがあって、かつ低空撮影もありで海面を綺麗に
表示する軽くて綺麗なアルゴリズムキボンヌ

まじめにやると重たいし、ケチると繰り返しが見えるし。
wangマッピングを広い場所でやると死ねるし。
0781名前は開発中のものです。05/02/03 19:06:40ID:cE0xVVd4
A = (c*dt/h)*(c*dt/h)
B = 2 - 4/A

*z = *z + *(z1-1) + *(z1+1) + *(z1-w) + *(z1+w) + B * *z1

みたいな

ΣΣ

みたいな
0782名前は開発中のものです。05/02/03 20:12:24ID:pQfgH6zD
ΣΣ (゚Д゚ )
0783名前は開発中のものです。05/02/11 13:43:57ID:N5YoYx84
Cellの記事読むとPCで物理演算やってるのが虚しくなるな・・・。
SPE×8+PPEはいじってみたいような、デバッグで苦しみたくないような(ーー;)
0784名前は開発中のものです。05/02/12 11:17:03ID:P+o5q8Rr
>>783
例によって高級言語サポート無しなんだろうか?
ついでにパイプラインステージ管理も手か?

0785名前は開発中のものです。05/02/12 21:21:25ID:Zv8BdTLs
>>784
一応あるらしいよ。
ただ手でやった方が速くなるだろうな。
コンパイラが最適化と称して、わざわざ手で最適化した部分を壊しそうだな・・・鬱
0786名前は開発中のものです。05/02/20 16:11:36ID:qqYo8yq9
G5の部分が弱くなっているから、既存のコードは全部パフォーマンス落ちるんでない?
0787学生05/02/27 00:42:14ID:U3WAi3tC
パネキットもどき作ってみました。
http://www.iamas.ac.jp/~takeya04/software.html
の剛体シミュレータです。
0788名前は開発中のものです。05/02/27 02:11:25ID:Mjf2CKiU
ΣΣ (゚Д゚ )
0789名前は開発中のものです。05/02/27 02:24:30ID:6hCJ7N4T
すごい!! よくできてますね。
自分はタイヤの摩擦で頓挫してますorz
0に収束しないで振動しまくりんぐorz
0790名前は開発中のものです。05/02/27 02:32:03ID:pQTNxUtS
バイク無謀だ(゚Д゚ )
0791名前は開発中のものです。05/02/27 03:29:22ID:oownZLCf
ゼロから作ったのかな?
優秀な学生さんだ
ぜひゲーム業界へw
0792名前は開発中のものです。05/02/27 12:40:00ID:igN7+wCs
あげ
0793学生05/02/27 12:53:56ID:U3WAi3tC
ありがとうございます。
バイクはbike.txtをみてわかるように簡単なスクリプトが組んであり、
倒れるよう方向にハンドルを微妙に切るようにしてあります。
うまく最初に速度が乗ればちゃんと走れます。
「R」キーが姿勢リセットになりますので、上矢印を押しながらリセットを
10回ぐらいすると1回ぐらい成功すると思います。
あと「U」が位置・姿勢リセット、「Y」が強制上方向加速、「I」「O」が
ズームイン/ズームアウトになります。
0794名前は開発中のものです。05/02/27 13:46:46ID:lBlFHD6M
790じゃないがバイク走ったw
ツーリングしてるだけでも楽しい。(*´д`*)
0795名前は開発中のものです。05/02/27 14:16:51ID:/Im8QZ87
日付が2002年なのが気になるのだが。
0796学生05/02/27 15:00:39ID:U3WAi3tC
795さんするどい。「パネキットもどき作ってみました」って今つくったぞ!みたいだね。
作ったのは昔、一年がかりでした。BaraffとかODEとかこってり屋さんとか参考にさせて
もらいましたが、一からつくりました。
実はもうかなり年寄りですが、一念奮起して大学院で勉強しています。
このプログラムは、けっこう気にいってますが、まだスクリプト機能とか、摩擦処理とか
未完のままほってありました。みなさんの知識とやる気をみて、参考になればと出させて
いただきました。今みるともったいぶっていやな書き方です。

794さん、そうなんです。シミュレータて見てて飽きないんです。そういっていただけると
うれしいです。
0797名前は開発中のものです。05/02/27 22:11:45ID:SXwV4RIT
暇つぶしに遊べそうだよ。>学生
一年がかりとは正直恐れ入った。

結構リアルですね、、これ。
ひっくり返ったときとか横倒しになったとき、どう脱出するかちと悩むが。ww
0798名前は開発中のものです。05/02/28 11:27:41ID:w3Z4yZcb
次はAI操作の車などに挑戦してみては?
0799名前は開発中のものです。05/02/28 19:42:44ID:OqBsjIb3
>>787
すごい面白いです。
沢山のパーツが結合してても、妙な振動でてなくてすばらしい〜!
0800名前は開発中のものです。05/02/28 20:59:11ID:gQvbeX+X
やっべ、超たのしー。
0801名前は開発中のものです。05/02/28 23:53:41ID:tqBgaDuO
すげぇ! 感動した!!! おもしれぇー
0802名前は開発中のものです。05/03/01 00:51:24ID:3SSPjxVs
削除されちった。まだ見てないのに。
0803学生05/03/01 08:41:53ID:c6U4gPKm
うあ!うれしいです。

>802 ちょっとHTML編集したので、トラぶったかもしれません。
削除はしてませんので、もう一度お試しください。
HTMLに書いたように是非、RegulationのUnbreakbleをオフにしてお試しください。
後、データは単なるテキストなので、パラメータをいじって、
自分のお好きなものを作成してみてください。
自分もPSUS3.txtを追加しておきました。
地形データは、Xファイルです。1の長さが1mとして、メタセコイアなどで作成できると思います。
ちなみにRigidChipの一辺は0.6mです。比重は水より少し軽いぐらいです。
船とか飛行機を作るために軽くなっています。
0804名前は開発中のものです。05/03/01 09:34:10ID:8dR22NPv
ヘ・・ヘリが…。
でもこれ面白いですねー。小一時間夢中になってしまいました。
0805名前は開発中のものです。05/03/01 10:48:06ID:cUK8e1ii
>>787
パネキットスレの住人だけど。「ついに待ってた物が来た!」って感じだね。
良かったらモデルのスクリプトの細かいマニュアルとか公開してくれないかな?
0806名前は開発中のものです。05/03/01 15:38:15ID:dzcZdCSm
Basicでキレイにドリフトが決まると(・∀・)イイ!!
0807名前は開発中のものです。05/03/01 16:32:26ID:dbiakOAs
>>787
パネキットスレから来ました。
PC版パネキットスゲー!!
壊れるのがたまんないす。
モデルエディットがGUIで出来たら売れるんじゃないかマジで。
でもまぁ、S○Eともめるかな、やっぱ。
0808名前は開発中のものです。05/03/01 17:54:49ID:lSTgC9J9
>>787
俺もパネキスレから来ました
GJ!です
これでジェットヘリ作ろうと思います
0809名前は開発中のものです。05/03/01 18:55:23ID:gffuOo92
なぜかエラーが出て起動できない
自分のPCがぼろいからかな?
0810名前は開発中のものです。05/03/01 19:03:00ID:h6SBJ4dg
オリジナルのパネキットでも、こんな広場が欲しかったなー。
学生さん、GJです!
0811名前は開発中のものです。05/03/01 19:31:40ID:c8GhJz2d
>>787
私もパネキットスレから参りました。
いやはやすごいですね。>>807さんの言うとおりモデル作成をGUIでできれば
本当にヤバイことになりますね。
それはそうと、全体的な動きの遅さはどうにかなりませんかね?
なんだか空気の密度が濃い感じになってますよね。自分としてはもう少しストーンと落ちてくれれば面白いのですが。。。
081281105/03/01 20:10:51ID:c8GhJz2d
あ、すみません、limit 30FPSのチェックをはずせばいいだけなんですね・・・。
お騒がせしました。
0813名前は開発中のものです。05/03/01 20:55:52ID:YBlNFw5O
リミッターはずしても早送りになるだけ
しかしすげー、すげーとしかいいようねぇ
0814名前は開発中のものです。05/03/01 21:40:09ID:XdDQ7qPW
>>809はダウンロード時が原因のエラーでした。解決しました
0815名前は開発中のものです。05/03/01 21:50:34ID:XdDQ7qPW
これを強化するためにプログラミング学習開始
それくらいにすばらしい。でもひどく時間がかかりそうw
0816名前は開発中のものです。05/03/02 03:08:37ID:k+U3mRnB
Basic例にしたヘルプファイルなら作れそう
作ってみる
0817名前は開発中のものです。05/03/02 03:38:20ID:k+U3mRnB
http://49uper.com:8080/html/img-s/43453.zip
作った、適当だからそんなに参考にならないかも
0818名前は開発中のものです。05/03/02 03:53:16ID:k+U3mRnB
うわ直リンしてるし間違いあるしもうだめぽ
とりあえず間違い訂正
誤:4〜8はASDZXC
正:4〜8はCXZDSA
ttp://49uper.com:8080/html/img-s/43453.zip
0819名前は開発中のものです。05/03/02 04:02:19ID:rmRZCKuM
作者じゃないけどつっこみ

>>818
Valのstepは、ボタン離したときの変化量
ボタンの並びはZXCASD
Trim(){}が入ってない。Trim(){}はパネキットでいうところのZジョイント。
RLW(){}が入ってない。RLW(){}は無慣性モーター。タケコプター専用。
0820名前は開発中のものです。05/03/02 04:03:48ID:rmRZCKuM
セルフつっこみ

>>819
×無慣性 ○無反動

SFあんまり読まないんだけどナ・・・
0821名前は開発中のものです。05/03/02 04:06:05ID:k+U3mRnB
あっれ何か勘違いしてる
キー設定については嘘書いてあるかもなので信用しないでorz
0822名前は開発中のものです。05/03/02 04:08:02ID:k+U3mRnB
リロードするの忘れてるしもうね
勘違いも多いし申し訳ない適当で
0823名前は開発中のものです。05/03/02 23:19:29ID:ta5B7AHT
ちょっとスレ違いだけどみんなどんなソフト使ってる?
0824名前は開発中のものです。05/03/03 00:50:20ID:sak9kLAy
スクリーンショット取るならWinShotっていうソフトが便利ですよ。
0825名前は開発中のものです。05/03/03 01:28:24ID:KstdLpKK
>>796 :学生さん紹介させて
頂きました
素晴らしいですよ。

http://cgp.zive.net/modules/news/article.php?storyid=719

個人的には、これもお勧めなんで是非触ってみて下さい。
http://www.natew.com/juice/
0826学生05/03/03 01:55:11ID:G0Ypp0Um
紹介していただいてありがとうございました。
juiceはODEからのリンクで勉強させていただきました。面白いですよね。
ODEはほんとの円柱が使えないので、自作するはめになりました。(最近は三角メッシュがつかえるようですが)

僕は数学が強くないので、ここのスレをもっと早く知っていれば、心強かったなと思います。
あのソフトはヒンジ拘束を2点拘束でしていますが、暴れがひどいので、
10回も、収束ループをかましてます。チップにしたことで質量がほぼ同じ同士なので
何とか収束してくれています。
後、摩擦に関しては、いんちき係数と名付けた係数が内包されてますww。

なんだか、ここのスレの方にはパーティー開いて散らかしただけのような気がして申し訳なく思っています。
でも、こういうものをつくりたいという気持ちは大勢の人が持っていると思うと
ホントにうれしかったです。
0827名前は開発中のものです。05/03/04 00:14:43ID:5W2O8fmb
こってり屋みたいに技術系webページを開いて欲しいなぁ。
質点同士の演算や高速化の話や形状の拘束とかいろいろ興味あるし。
または気が向いたら書く技術系Blogとか。
0828名前は開発中のものです。05/03/04 00:55:40ID:PPC/3nEQ
言いだしっぺの法則というものが存在する。
082982705/03/04 07:10:37ID:88b1Vr1F
分かりました、というわけで作ってみました

http://homepage1.nifty.com/kaneko/index.htm
0830名前は開発中のものです。05/03/04 11:47:35ID:3lBLs5xU
('A`)
0831名前は開発中のものです。05/03/04 13:29:36ID:U3cQRnWC
>>829

金子さんは、ny作ったよりもそこら辺尊敬するよな。
ソース分かりやすいし勉強になる。
0832名前は開発中のものです。05/03/04 13:35:21ID:P9dvm4bm
誰かパネル表作ってくれ。
パネル…CHIP
フレーム…FRAME
Yジョイント…RUDDER
Xジョイント…?
Zジョイント…TRIM
ジェット・・・JET
モーター…?
無感性モーター…RLW
0833名前は開発中のものです。05/03/04 13:55:04ID:yOk++UkD
パネル     chip(angle,color)
フレーム    frame(angle,color)
Yジョイント   rudder(angle,color)
Xジョイント   ない
Zジョイント   trim(angle,color)
ジェット     jet(angle,power,color)
モーター・タイヤ  Wheel(angle,power,color)
無反動モーター RLW(angle,power,color)

chipやframeやjetやwheelやrlwのangle(取り付け角)を変化させればXジョイント相当
ただしtrimやrudderのangleはそれぞれの角度制御に使われている

あとパネキと違う所としては
同じ個所にいくつでもチップを取り付ける事ができる
↓こんな感じ
core(){
 N:chip(){}
 N:frame(angle=90){}
 N:chip(angle=180){
  S:wheel(){}
 }
}
0834名前は開発中のものです。05/03/04 14:17:17ID:P9dvm4bm
そうか、ただのチップもアングルに入力すりゃ動くのか。
0835名前は開発中のものです。05/03/04 16:53:52ID:Lyk3Bqv8
パネキスレのあれはここで受け入れるの?
0836名前は開発中のものです。05/03/04 17:13:12ID:inVfA3QB
パネキスレもここも微妙にスレ違いになりつつあるから
新しく専用スレ立てようって流れになってるような気がするかもしれない
0837名前は開発中のものです。05/03/05 02:57:45ID:qyrEGY9z
ゲサロに専用スレ立ったようだな。
0838名前は開発中のものです。05/03/05 08:13:43ID:1ur9lyi2
んじゃそっちで。
0839名前は開発中のものです。05/03/05 08:29:42ID:bUCQNkmC
ここだね
http://game10.2ch.net/test/read.cgi/gsaloon/1109958786/l50
0840名前は開発中のものです。05/03/08 13:59:39ID:gIyGr2FA
AC(アーマードコア)みたいな
跳躍時のブースト部分作ってるのですが
とりあえず動きはしたのだけども
これでいいもんじゃろか

Vg = g * Tg     (自由落下)
Vb = v0 + a * Tb (等加速度直線)

Vy = Vb - Vg

g、v0、aは適当な数値

Tgは地上から離れたらカウント開始
接地するまで。

Tbはブースト使用する度にカウントアップ
接地すると0へ。

ってな具合にやってるんですが
何ぞいい参考資料やら、アドバイスの程ありませんでしょうか
ロケット 推進力でググッたけど、なかなかないス
0841名前は開発中のものです。05/03/10 11:55:58ID:s8xy7z0m
>>841
動いてるとこでも見ないとなんとも・・・
自分で気に入ったならそれでいいんでは?
0842名前は開発中のものです。05/03/10 16:38:35ID:ljlPKXys
うほ 人がいた

一応こんなんです↓
ttp://gamdev.org/up/img/2409.zip
Fキーで飛びます飛びます。
ちなみに壁との判定無し、なんかの拍子で落下しますので。

で、仮に100s間滞空してたとしたら
9.8 * 100 = 980[m/s^2]とかすんごい事になってそうなんで
なんかないものかと
0843名前は開発中のものです。05/03/10 17:06:26ID:ljlPKXys
とりあえず タイムTに
捕らわれない式にしてみたりする。
ただ加算してるだけだがw

上のはTg Tb使ったままだが
0844名前は開発中のものです。05/03/10 23:50:31ID:s8xy7z0m
>>843
その方向で行ってみよう。
プログラムは実行できる環境にないんで何とも言えない。
0845名前は開発中のものです。05/03/12 08:49:32ID:4zYurhOf
>>842
空気抵抗でも入れてみたら?
具体的な式が出てこなくて申し訳ないが、たしか速度の2乗に比例するはず。
0846名前は開発中のものです。05/03/12 19:18:32ID:nlDiwADw
いきなり
Vy = v0 + (a * boost - g) * Tb
boost : ブースト時1
     (0〜1のアナログ値にするとスロットル調整出来る)
にすればVgとかVbの値が大きくなるとか気にしなくてもいいんじゃない?
0847名前は開発中のものです。05/03/12 20:34:15ID:6IdZPHV9
>>845
これすね
ma = mg - kv
途中からワケワカラン状態で
v = C1 e^なんてらかんてら + mg / k

もう微分とか忘れてもた。

>>846
なるほど、こちらも試してみまっす

弾道等、タイムTとか理解できるけど
速度や方向が常に変化する場合とか、ややこしいのう
0848名前は開発中のものです。05/03/12 23:12:16ID:m2lL06bo
ソニーは間違いですよ(´・ω・`)
0849名前は開発中のものです。05/03/12 23:12:45ID:m2lL06bo
おもいっきり誤爆orz
085084705/03/13 20:24:21ID:ddVGYjw0
>>846式をやっちみました。
ちょち説明しがたいですが

時間経過に伴って
Boostをオン・オフ(0か1か)した場合
Vyの振幅が大きくなっていく

なんのこっちゃ。
しかしながら、( a * Analog - b )は参考になりますです。
有り難く頂戴致します。
0851名前は開発中のものです。05/03/13 21:04:49ID:vyXJQRhg
それはTbのせいかな?
ΔTbのつもりだったんで毎スキャン計算するならTbは定数でいいね。
V0も初期速度じゃなく前回値だし。
0852名前は開発中のものです。05/03/13 21:09:12ID:ddVGYjw0
ぐはっ

くそ〜 俺もまだまだ愚か者であった
簡単に考えてしもた

なるほど、もっかいやってみます
0853名前は開発中のものです。05/03/16 14:26:34ID:4ckbHCDU
OpenGLで物理シミュレーションしようとしてるんですが、
dt+=(float)30/1000;
dy-=0.5*G*dt*dt;
てな具合にするとおもうんですが、

この場合の、dtはフレームレート33.3fpsを想定してるんですが、
SwapBuffers()で描画処理するとfpsはどうなってるのかわからないんですが、、
fps設定したり知る方法ってないですかね?
glutは使っていません。

メインループ内では、
if ((!DrawGLScene_01()))
{
done=TRUE;
}
else
{
SwapBuffers(hDC);
}
となっています。
0854名前は開発中のものです。05/03/17 00:23:11ID:DIRppWgt
fps決め打ち(・A・)イクナイ
0855名前は開発中のものです。05/03/17 02:05:10ID:Jm4RD0Ul
>853
winmm.libをリンクしてtimeGetTime使え
timeGetTimeはアプリケーションが起動してからの時間がmsで取れる
てWin32APIの勉強もしろよ
ただし49日以上連続で動作させるときは注意しろ

あと今回はhDCと書いてあるからWinだと判断できたが、質問するときはOSや
開発環境(コンパイラなど)も書くべし
Windowsとは限らないからな
085685305/03/17 19:36:38ID:dnS2TOWr
ありがとうございます。
> fps決め打ち(・A・)イクナイ
ということはtimeGetTime()使って、
描画処理後時間(もしくはSwapBuffers()後かな・・・?)−描画処理前時間から
fpsが得られそれをもとにdtを算出したほうがいいのかな?
となると、前フレームでのfpsが次フレームのΔtになるってことかね・・

>855
もう遅いですが、WINDOWSXP+VISUAL C++です。
0857名前は開発中のものです。05/03/17 23:44:14ID:L1vhHo+F
>>856
ちょっとまて。
>描画処理後時間(もしくはSwapBuffers()後かな・・・?)−描画処理前時間から
得られるのはdtではないのか?

dt = 今回の描画時刻 - 前回の描画時刻
085885705/03/17 23:51:40ID:L1vhHo+F
ごめんちょっと読み違えた。

DrawGLScene_01()の前でtimeGetTimeするようにして、
前回との差分を求めればそれがdtになるんじゃないかなって言いたかったのです。

描画処理前後の時刻から実際に描画した時間を求めたいんだと思うけど、
描画後から次の描画処理までの間って一定であることは保障されないから
動きがぎこちなくなるんじゃないかねぇ。
0859名前は開発中のものです。2005/03/25(金) 01:59:37ID:DW5G1xUc
>ただし49日以上連続で動作させるときは注意しろ

廃人仕様のネトゲを作る時は数ヶ月電源切らないバカのためにも
注意しないとダメなのね。
0860名前は開発中のものです。2005/03/25(金) 13:01:51ID:++QPHiMu
いっそフリーズさせてやったほうが親切な気もするけどな……。
0861名前は開発中のものです。2005/03/25(金) 16:06:37ID:B4snpaS4
49日以上も間を置いて処理が前後するはずがない。
せいぜい数秒だろ?
timeGetTimeの時間が前に保存した時間より前になってたら
一周したんだと判断して上手く処理すればいい。

まあ、処理する箇所全てでそんなことやってたら面倒で死にたくなると思うが、
比較用関数でも作ればいいわな。
0862名前は開発中のものです。2005/03/27(日) 01:30:31ID:tFPQmcVA
おいおい、マジで言ってるのか。
分岐せずに普通に減算するだけだろ
0863名前は開発中のものです。2005/03/27(日) 05:25:09ID:pwcxO8c1
>おいおい、マジで言ってるのか。
分岐せずに普通に減算するだけだろ

■ このスレッドは過去ログ倉庫に格納されています