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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。02/04/08 17:38ID:dlksSYkA
ゲームに必要な物理(力学)を語るスレッド。

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

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

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

と表せるよとか。

他にも剛体運動、力積とか語ってください。
09179152005/09/06(火) 12:22:00ID:kXw3I5Fi
移動を考慮しない衝突判定のソースは色々あるんだけれども、
静止状態での判定だと、高速なオブジェクトは
衝突処理の間に飛び越えて、
判定できなかったりするんじゃないだろうか。
0918名前は開発中のものです。2005/09/06(火) 14:55:54ID:e4EPwdWQ
>>916 ペナルティ法って正しい結果が求まるのか?
912のような状況で次の1フレーム後の速度と位置を正確に求めるには>>897の言うように
衝突の起こった時間を調べてその時点から計算をしなおす方がいいと思うが。。。
0919名前は開発中のものです。2005/09/06(火) 23:29:56ID:0KGPXMG4
>>918
ペナルティ法だと、めり込んだあとしばらくはめり込んだ状態を保つよ。
で、やがてめり込みが解消されて離れていく。
物体同士が絶対に食い込みあってはいけないという過程自体を覆す考え方。

0920名前は開発中のものです。2005/09/07(水) 02:56:10ID:VYcQafqJ
フックの法則を使うのでダンパーを使わなければ衝突応答前後での運動量は
保たれる(=完全弾性衝突)
つっても、>>912のいう「めりこみを考慮した」という発言は
ペナルティ法を指しているとは思えないけど

しかし回答する側の勉強不足が目立つなぁ、まぁ無料相談所なんてそんなもんか
0921名前は開発中のものです。2005/09/07(水) 03:44:10ID:fxVxjrGQ
>めり込みうんぬん
物体がある時間(1フレームとか)で移動する間に跳ね返りがおきた場合、その衝突時点まで戻して
そこから速度や位置の計算をするのが良いと思われるが、「それをせずに」サクッと解く方法はないものか?
・・・って事がそもそもの912の疑問なんじゃないかと。

これって、多数の物体同士の当たり判定をやりだすと、ごく短い時間の間に衝突が発生してめり込んだり突き抜けたりしてしまうわけで、
そもそもそういう複雑な状況を簡単に求める手法は無いよね。(たぶん)

で、こういう場合にペナルティ法でもってめり込みをゆるしつつ処理するのが最近の流れで、
これなら計算も楽だし勝手に跳ね返って収束するのでゲームにはこれで十分だよと。

とまぁ、こんな感じの理解でOK?>物理に詳しい人
0922名前は開発中のものです。2005/09/21(水) 02:45:36ID:CdHDIkST
あの、ごくごく基本的な質問ですみません。

角速度ベクトルって、どのくらいの長さで1回転とされているんでしょうか?
姿勢をあらわすクォータニオンに対して、角速度ベクトルの半分を掛け足すことで、回転を確認したんですが、
1回転の基準となる長さがわからないため、たとえば、摩擦抵抗を計算するときに、どれだけ角速度の長さを設定していいかさっぱり。
壁にぶつかるたびに回転が加速したりします。

クォータニオンに対する計算がおかしいのかなあ。誰かよろしくお願いします。

0923名前は開発中のものです。2005/11/04(金) 21:08:53ID:5tTLDfvO
age
0924名前は開発中のものです。2005/11/21(月) 22:07:49ID:C/7NqGLR
ふ〜やっと斜め読み終わった。
読んでみたところで専門学校出には99%理解できないんだが。。
>>561
ポリゴンAを形成する三角形と
ポリゴンBを形成する線分(辺)の交点を求めれば良いと思う。
その交点が線分に乗ってれば当たっている。

ただしAが完全にBに入り込んでいる場合、あるいは逆だと、
交点は生じないので注意が必要。
ポリゴンA上から(例えば適当に選んだ頂点)
適当な半直線(例えばZ軸に平行な線)を設定して、
ポリゴンBの三角形との交点が奇数なら、
AがBに入り込んでいると判断していいんじゃないかな。

閉じてない形状だったり、自己干渉していたりしている場合はワカンネ。
0925名前は開発中のものです。2005/11/21(月) 23:22:26ID:C/7NqGLR
自分で言うのもなんだけど、物理じゃねぇな_no
0926名前は開発中のものです。2005/11/22(火) 23:59:19ID:pgRAeUPk
2年前にレス乙
0927名前は開発中のものです。2005/11/23(水) 00:25:09ID:Rb/ScnRc
おじいさんになって、50年前の書き込みにレスをするのが僕の夢です。
0928名前は開発中のものです。2005/12/04(日) 20:10:46ID:vq2dcsz6
>>922
角速度ベクトルに時間をかけないと回転量にならないんじゃ?

>>924
一般的に、当たってない判定を2ポリゴンを分離する軸を見つけることでおこなう。
この軸がなければあたり。
簡単には説明できないのでSeparation axisでぐぐる。
0929名前は開発中のものです。2005/12/16(金) 08:26:00ID:DTxix2tD
数年前にペナルティ法に取り組もうとして挫折した者なのですが、
よく使われていると思われるペナルティ法では、めり込んだ頂点と面との距離に線形のフックの法則を適応すればいいのでしょうか?
ペナルティー法のとっかかり自体が分かりません。。。
0930名前は開発中のものです。2005/12/16(金) 23:53:14ID:sTAl/nFE
とっかかり?
めり込んだから押し出しちまえ。それだけ。
 
Springheadのソース見ればいいんじゃねーの。
あるいはNeko氏のサイトに似たような解説アリ。
AB法とか読んでた希ガスる。
0931名前は開発中のものです。2006/02/03(金) 11:17:41ID:S1xjNIBu
さらしあげ
0932名前は開発中のものです。2006/03/25(土) 17:12:41ID:YjP5dkK2
物理エンジンを組み込んだ動画を見たがやばいな!!すごすぎる!!早くあんなゲームが俺の手元にこないかなぁ。
0933名前は開発中のものです。2006/04/04(火) 15:53:40ID:YuM8+uhP
ペナルティ法についての質問なのですが、剛体リンクをある点で拘束したい場合
重心に力がかかると考えてよろしいのでしょうか?
F=-kx-cvで拘束すれば剛体同士の位置は拘束されますが、トルクが考慮されてないので
姿勢がそのままになってしまいます。
それで、重心に拘束点からの距離rをかけてトルク(r x F)を与えると回転が発散してしまいます。私のコードが間違っている可能性も否めませんがだれかご教授よろしくお願いします。
0934名前は開発中のものです。2006/04/04(火) 19:12:23ID:l3ZeOJHQ
君の説明はすごく下手で曖昧で不足だ。
だからエスパー回答する。
 
>ペナルティ法についての質問なのですが
 
ペナルティ法以前の問題だ。
 
>剛体リンクをある点で拘束したい場合
>重心に力がかかると考えてよろしいのでしょうか?
 
つまり拘束条件とか外力の作用点をシカトし、必要な分解もせず
丸ごと全部が重心に作用したと考えていいかということか。ダメ。ゼッタイ。
 
>F=-kx-cvで拘束すれば剛体同士の位置は拘束されますが
 
バネとダンパの係数を滅茶苦茶大きくして拘束したのか。
イジメ、カッコワルイ。
0935続き2006/04/04(火) 19:13:29ID:l3ZeOJHQ
>トルクが考慮されてないので姿勢がそのままになってしまいます。
 
作用点をシカトして重心間で引っ張り合いしてるからだ。自業自得。
 
>それで、重心に拘束点からの距離rをかけてトルク(r x F)を与えると
 
外力全部を並進運動に使っておいて、更にトルクとして与えるなんて
ドーピング、ダメ。ゼッタイ。
 
>回転が発散してしまいます。
 
使ってる数値積分のアルゴリズムは何か。
数値解の安定性について考慮しているか。
 
>私のコードが間違っている可能性も否めませんが
 
コードが間違ってる可能性100パーセント。
09369332006/04/04(火) 23:06:57ID:7TU7iQ7/
>>935
>使ってる数値積分のアルゴリズムは何か。
>数値解の安定性について考慮しているか。

お。狙い通り詳しそうな人が釣れたので本性を現してみるか。

ゲームで使う程度の単純な剛体物理で、1次シンプレクティック法以上の選択肢ってあるか?
発散の要因の殆どは微分方程式が極端に非連続であることに起因すると思うのだがなぁ。
ルンゲクッタとか使ってる奴は、式の評価の度に剛体の衝突検出から始めてるのか?
固定された式だとしたら、そもそも何も考えずにデザイナにモーション作ってもらえって話だし

式に速度が入っていて1次シンプレクティックとして成立しねぇんだよ、という突っ込みはまぁ無視だ無視
0937名前は開発中のものです。2006/04/05(水) 00:09:55ID:j+LCS1M2
釣り宣言はまぁいいとして
で、角速度が爆発する件はもう解決してるんか。
まぁそれならそれでいいんだけどさ。
0938名前は開発中のものです。2006/04/05(水) 01:42:27ID:38f56APA
>>936
態度の急変はみっともない
0939名前は開発中のものです。2006/04/05(水) 01:47:18ID:j+LCS1M2
>>938
んなこたどうでもいいよ
09409332006/04/05(水) 07:18:10ID:E+b2CdTD
なんだよ。相手の方が知識持ってることが分かったらすぐに遁走か
こんな奴ばかりだ
0941名前は開発中のものです。2006/04/05(水) 11:19:37ID:SgDD+rlz
まぁ、実際困ってる人はいなかったのなら、それが何よりじゃないか。
0942名前は開発中のものです。2006/04/05(水) 11:48:32ID:Q23jU2JZ
>>941
「よかった、病気の子供はいないんだ」?
0943名前は開発中のものです。2006/04/05(水) 13:18:14ID:2qo3YP45
この戦争が終わったら俺、結婚するんだ。見ろよこのフローチャート。あと三ヶ月なんだぜ。
0944934=937 (PDA)2006/04/05(水) 16:52:36ID:KopuYa5g
>>940
君 : 質問。状況説明不足。(解読には要エスパー能力)
  ↓
俺 : もっとkwsk。一先ず脳内補間&解読&回答
  ↓
君 : 釣り宣言。チラ裏日記(話題が発散)
  ↓
俺 : で、最初の質問の件はどうなったの?
  ↓
君 : 勝利宣言。
  ↓
俺 : ( ゚д゚)???  ※※ ←今ここ! ※※
0945名前は開発中のものです。2006/04/05(水) 17:51:38ID:6wC0DHtu
私が933です。他の人勝手に名乗らないでください。
934さん回答ありがとうございました。

とりあえず剛体同士の衝突は上の方法でうまくいったのでそのまま関節にも適用
できないかなと考えていたのでそのような質問しました。わかりづらくてすいません。

それで拘束のほうですが、やはり拘束条件の式を適用しなくてはいけないのですね。
正直面倒くさいのでなんとか横着できないかなと考えていました。
とりあえずこれからちゃんと方程式たててやってみます。

0946名前は開発中のものです。2006/04/05(水) 23:46:25ID:iORbldnk
いえ、私が本物の933です。
0947934=9372006/04/06(木) 00:37:32ID:I3U88jqx
「剛体リンクをある点で拘束したい」という話だから
例えばあるリンクAが点Oに固定され(自由度3:並進不可&3軸回転可)
それに接続されたリンクから加わる外力Fと作用点Pがペナルティ法で
求められた状況下で、このリンクAの刄ニを求めたい。でも何故か値が
爆発しちゃうよということだよね。
 
これって外力FをAOに垂直・水平な成分に分解。拘束条件によりAOに
平行な成分は打ち消され、AOに垂直な成分のみリンクAに作用。
ということ以外、何も特別なことはないと思うけど。
0948続き2006/04/06(木) 01:28:24ID:I3U88jqx
で、計算結果が吹っ飛んじゃうのはコードの単純ミスだろう。
 
例えば>>936がチラシの裏で書いてるようなシンプレクティックな
数値積分を使ってるなら、試しにリンクひとつにして高初速でぶん回せ。
それで回転速度がどんどん大きくなるならコードがおかしい。
 
リンク数を増やしてぶん回して吹っ飛んじゃうなら、それは普通。
2次精度でやるか、時間ステップを小さくするか、泥縄式に
変数に上限値を設けるか、強ダンパ使って無理やり押さえ込む
しかないでしょ。
0949訂正2006/04/06(木) 01:30:37ID:I3U88jqx
2次精度にしたり、時間ステップを小さくしたり、泥縄式に
変数に上限値を設けたり強ダンパ使って無理やり押さえ込む
しかないでしょ。
0950更に947の訂正2006/04/06(木) 02:03:06ID:I3U88jqx
s/AO/PO/g
0951名前は開発中のものです。2006/04/08(土) 17:21:28ID:4IRAVLv5
ものすごい久々に見てみたら、>>787すげー。びびったよ。
0952名前は開発中のものです。2006/04/08(土) 18:48:17ID:HUVux5eK
パネキットは専用スレがあるくらいだからな。
09539332006/04/10(月) 00:26:58ID:SRry4c2l
>934さんへ
おかげさまでパネ・ダンパのみで拘束が表現できました。
結局問題は数値積分による累積誤差でした。拘束式解かないですんでよかった....
どうも3次元になるとどこが問題になっているのかわかりづらいですね。。

なにはともあれ丁寧に回答してくださってありがとうございました。
0954名前は開発中のものです。2006/04/13(木) 00:51:55ID:lyVT4kTe
>>787
これは凄いな
0955名前は開発中のものです。2006/04/24(月) 00:57:54ID:xYh6jQOI
すげえ…俺もこんなの作れるようになりたいッす
0956名前は開発中のものです。2006/07/17(月) 02:14:05ID:BW0QsVu3
ひまだったので、
物理の習作してみた。

さて、こっからどうしようか・・

ttp://yu-net.info/swfup/viewswf.php/4483.swf
0957名前は開発中のものです。2006/07/18(火) 08:44:44ID:KhGt1eA5
それなんて催眠術?
0958名前は開発中のものです。2006/07/19(水) 11:59:01ID:MNfc0WD1
次は斥力も入れて
0959名前は開発中のものです。2006/07/19(水) 21:04:22ID:84E29+uo
おーかんがえておくよ

いま時計になってる

ttp://litz.sakura.ne.jp/upload/file/1153124662.zip
0960名前は開発中のものです。2006/08/22(火) 14:08:33ID:Hg2GrP2l
保守
0961名前は開発中のものです。2006/09/24(日) 15:02:43ID:3Pb274kP
age
0962名前は開発中のものです。2006/10/18(水) 19:02:14ID:0LdvZitM
今更だが>>894はこれでいいんじゃないの?

// 座標
if(y>=200) {
y += (vy-(y-200));
vy=-vy;
}
else
{
y += vy;
}

// 速度
vy+=ay;
0963名前は開発中のものです。2006/10/18(水) 19:24:47ID:0LdvZitM
y+=-(vy-(y-200));だった
0964名前は開発中のものです。2006/10/30(月) 01:38:14ID:aO7aWa+m
【ネット】XBOX360開発キット無償公開2【やろうぜ】
http://game10.2ch.net/test/read.cgi/ghard/1162063002/
0965名前は開発中のものです。2006/11/03(金) 17:44:54ID:faJ2E67k
ここにはbaraffのIntroduction読んでる人が多いので
質問させてください。
appendixD.2のcompute_ndot(Contact *c)って変ですよね。
0966名前は開発中のものです。2006/11/03(金) 18:36:40ID:faJ2E67k
>>965です。
内積と外積がごっちゃになってたり、
変数名間違えてたりするけど、
確かに計算したら最後の式が出てきました。すいません。
0967名前は開発中のものです。2007/02/13(火) 01:19:22ID:7k9IjZ5F
スマブラなどのアクションゲームのキャラの移動、落下、吹っ飛びにはどのような計算が行われているでしょうか。必要な数学物理分野や参考になるサイト、ヒントなどの情報を教えていただきたいです
よろしくお願いします
0968名前は開発中のものです。2007/02/13(火) 04:26:35ID:pgxaBRYd
微積代数幾何が人並みに分かっていればOK

何それ?ってたぶん答えるだろうから、その場合は
素直に学業に専念しなさい。絶対に無駄にはならないから。以上。
0969名前は開発中のものです。2007/02/13(火) 22:59:01ID:7k9IjZ5F
ありがとうございます。
早速勉強してみます。
0970名前は開発中のものです。2007/03/07(水) 22:53:01ID:hRCFzq0X
微積分っていうけどさ、微分と積分って天と地ほどに違うと思うのは俺だけか?
0971名前は開発中のものです。2007/03/07(水) 23:50:57ID:MiuxcXII
>970
どのレベルで言ってるのかわからないが、
ゲームの物理なら補完方法(外挿/内挿)の違いでしかないと思う。
0972名前は開発中のものです。2007/03/08(木) 00:19:20ID:CXdk4uA/
>970
「まるっきり別物に見える二つが実は繋がっていた」という偉大な発見が数学に与えたインパクトは絶大。
実はもの凄くいい点ついてるよ。
0973名前は開発中のものです。2007/03/11(日) 17:11:42ID:JBiyLwiL
>>18
新しいバージョンが3/3付けで出てる
0974名前は開発中のものです。2007/03/17(土) 17:43:39ID:HgUYLq+d
>>966

>>967 スマブラは知らんが、移動、落下、吹っ飛びは加減乗除ができれば大丈夫だろう。

>>968 微積代数幾何が人並みに分かっていれば微積代数幾何の単位が取れるな。
スマスマとはあまり関係ない。

>>969 ぜってーだな!?

>>970 うむ。天と地ほどに違うね。天は上方向、地は下方向だからな。

>>971 ゲームの物理とは関係ないと思うぞ。彼はむしろ、ニュートンの生き様を聞きたい
のだ。

>>972 そう!俺と河中麻系、俺と熊田曜子みたいなもんだ。二人とも普段はヒキなんだって。

>>973 >>18は2年前に亡くなってる。残念だ。最後の言葉は「モーション生成の・・・バー
ジョンアップを・・・」だったらしい。
0975名前は開発中のものです。2007/03/24(土) 00:08:33ID:jE9mmGMT
宇宙での宇宙船の動きをシミュレートできるやつとかないすか?
フライングバイとか
0976名前は開発中のものです。2007/03/24(土) 00:26:22ID:jXCTrDG3
スイングバイじゃなくて?
0977名前は開発中のものです。2007/03/24(土) 02:09:27ID:f1oB1xfV
フライングバイセクシャル
0978名前は開発中のものです。2007/04/03(火) 14:21:48ID:qom87o6H
>>975
いちばん簡単な部類じゃないか。文系高卒の俺でもできるくらいの。
ファインマン物理学Iでも読みながら考えなさい。
0979名前は開発中のものです。2007/04/19(木) 13:31:53ID:3iCitK9v
宣伝乙

14歳からはじめる
リアルに動く!ゲーム物理プログラミング教室 C言語編(\2,500)
ttp://www.rutles.net/books/180.html

こんなのが出てた
序盤がCのお勉強なんで無駄があるけど「14際から」ってことで
わかりやすさなら絶対のはず!
0980名前は開発中のものです。2007/04/19(木) 14:50:08ID:3u635fYU
ゲームに使う物理学なんて義務教育の範囲内だって事だろ。
表紙に出てるのが放物線って時点で、内容はお察しじゃね?
でも、この板で出てくる物理学的疑問の90%には答えてくれそうだwww
0981名前は開発中のものです。2007/04/19(木) 18:15:28ID:WksY0tBK
 
レス数が950を超えています。1000を超えると書き込みができなくなります。