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

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

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

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

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

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

と表せるよとか。

他にも剛体運動、力積とか語ってください。
0072名前は開発中のものです。02/04/10 00:43ID:???
もう9.8系の煽りは止めろ。正直、分からない、しかも気づかない奴は放置。

加速とかさせたい時とか、数学チックな処理をしたいときは大体○○の何乗とかだけ合わせて、定数は適当に調整するようにしてる。
それっぽく動いて、ゲームとして良い感じなら別に何でもいいかな、と。
シミュレーションしてるわけじゃあるまいし。

手から波動を出す事が許されて、重力が半分の大きさになるのが許容されないなんて言わないよな?
00731102/04/10 00:43ID:???
11は自分だけど、いいたかったのは

・9.8という数字はあくまでSI単位系での数値9.8m/s^2のことである
・さらにいえば地球の地上付近での値なので、例えば月面での値は9.8m/s^2ではない
・そもそもゲームではちゃんと現実をシミュレートする必要がない場合が多い。というかほとんど。

ってことを言いたいだけなんだけど。
>>11は違うこといってるじゃんっていうのだったらそれは表現がまずかったと謝る。

こんなこと正直どうでもいいと自分でも思うけど、まぁ一応。
0074名前は開発中のものです。02/04/10 00:54ID:???
厨房と言われたことは?>>73
0075名前は開発中のものです。02/04/10 01:06ID:???
>>72-73はいつまでズレた話を続けるんだろうか…。
00761302/04/10 01:31ID:???
速いマシン持ってる人に試してもらいたい
http://www.geocities.co.jp/SiliconValley-Oakland/3068/
動かなかったらゴメソ

"宣伝ウザ"とか"荒らし依頼?"とかレスつきそうで、ちょっとドキドキ
0077名前は開発中のものです。02/04/10 01:39ID:???
>76
何を試すんだ?
うごきゃオッケってこと?
00787702/04/10 01:48ID:???
動かし方サパーリ理解できんかったが動くには動いたよ。
AthlonXP1800+,GeForce3Ti500,Win2K,DirectX8.1で動作。
00791302/04/10 01:54ID:???
>>77
ありがと
自分が、AthlonXP1700,GeForce3Ti200なんで 完全上位互換な環境ですね
できたら、GF2とかATIとかの人にも…

操作のしやすさまで、気がまわりませんでした(汗
00807702/04/10 02:13ID:???
>79
ココラヘンの方がいいんじゃ無い?
>ttp://game.2ch.net/test/read.cgi/gamedev/1005143186/

あと,終了がESCだと思ったら違ったのでナエたのと,Windowモードなのに
マウス占有はヤメレ(;´Д`)
00811302/04/10 02:21ID:???
>>77
そこは、完成度何%って書くのが義務みたいなので躊躇してたり…
ESCで終了が一般的ですね、立ち上げてすぐ終了ってケースが多く
遠いキー使うのが嫌いなのでENTERにしてました

ESCでも終わるようにしとこ(w
00827702/04/10 02:25ID:???
>81
>ESCでも終わるようにしとこ(w
是非w
0083名前は開発中のものです。02/04/10 07:14ID:???
ゲームのための物理・・・かぁ。
でも、人間が心地よいと思う動きは神様が創ったルールに即したものでは
ないと思うのだ

RigidBodyを見てなお心が揺れない想像力貧弱な自分は、転職でも考えようかな。

地球とは違う秩序ある法則に基づいた仮想ブツリ空間を作ったとして、
一体、そこで何をしよっかな。

こんな箱があったらいいなぁ、ではなく、これを入れたいからこんな箱を
作りたいなーくらいの気持ちがないと駄目かなぁ

次世代ハードとおんなじだね

実際、手にしても持て余しそう。
ま、持て余すおいらみたいな人間は、3Dオヤジで終わるか。

50歩100歩。2D爺3D爺。

負け組みは終了と
0084名前は開発中のものです。02/04/10 09:18ID:lDfZ/TIk
>>83
2行目以降読んでいないので何が言いたいのかわかりません。
1行で書いてください。
0085名前は開発中のものです。02/04/10 10:29ID:???
>>84
要するに何を見てももう何も感動しなくなってしまった。
もうゲーム作るのはやめるか。ってことじゃない?
0086名無しさん02/04/10 13:10ID:???
オヤジの愚痴でしょう。とりあえず放っておくと。
0087名前は開発中のものです。02/04/10 13:10ID:???
個人的意見として、重力加速度は9.8じゃなくてGという変数でいいと思う。
そして「格ゲーとか重力加速度を調整する」という意見も正しい。
しかし、ここは物理スレであって、そういう意見は意味がない。

どうでもいいけど、慣性モーメントは高校物理じゃなくて大学でやるものだよ。
0088ななし02/04/10 16:45ID:FEP6Ot26
立方体(さいころ)を斜面に置くと、3つの状態がありますよね。
1.摩擦により動かない。
2.斜面を転がらずにすべる。
3.斜面を転がりおちる。
この3つの境界線ってどうやって求めますか?
また、加速度はどうやってもとめますか?
0089名前は開発中のものです。 02/04/10 17:16ID:???
まず摩擦係数と垂直抗力から最大摩擦力をだす。
サイコロの重さから斜面に水平な力をだして最大摩擦力と比べる。
角度が45゚以下の時は最大摩擦力の方が小さければすべる。
そうでなければ動かない。
角度が45゚以上の時は最大摩擦力の方が小さければ転がる。
そうでなければすべる。
こんなところかな。あまり自信ないけど。
でもスゴロクのサイコロなら適当なサイコロの転がる
アニメーションを作って最後にどれだすか乱数で決めれば良いと思われ。
0090名前は開発中のものです。02/04/10 17:17ID:???
間違えた。
角度が45゚以上の時は最大摩擦力の方が小さければすべる。
そうでなければ転がる。
に訂正。
0091名前は開発中のものです。02/04/10 17:59ID:???
>>89
でも、加速度と摩擦の関係で速度が速ければサイコロは45度以下でも
転がるような・・・
0092名前は開発中のものです。02/04/10 19:51ID:???
-273.15度
0093名前は開発中のものです。02/04/10 22:44ID:???
>>91
同感だが速度は関係ないナリ
0094名前は開発中のものです。02/04/11 00:50ID:???
Gは9.5m/s^2では大きすぎます
G=9.5m/s^2を使う人はまったくわかっていない厨房、死んだほうがましです。
0095名前は開発中のものです。02/04/11 01:16ID:???
9.78…
0096名前は開発中のものです。02/04/11 01:43ID:???
やや、こんなとこにもゆとり教育の影響が!!
0097名前は開発中のものです。02/04/11 02:10ID:???
重力加速度は10です。
0098名前は開発中のものです。02/04/11 05:48ID:???
Gは9.2m/s^2では大きすぎます
G=9.2m/s^2を使う人はまったくわかっていない厨房、死んだほうがましです。
0099名前は開発中のものです。02/04/11 06:13ID:???
あのさー、簡単な物体だったら慣性モーメントが一意に求まるのは
分かるんだけどさ、そうでない物体はどうやって求めるのさ?
例えばさ、車だとか。

全て質点が一様に詰まっていて、しかもプリミティブな形状だけが
慣性モーメントの式が与えらてるだけじゃさ、なにかと不自由だと
思うわけね。だってそんな物体、日常生活じゃ稀じゃん?
車にしてもね、中、スカスカだしーぜんぜん質点が詰まってないから
重心がどうとかって次元が別の話なのか?ってね

思うんだけどさ、良くHPや教科書なんかで紹介されている剛体力学じゃ
車を転がすことはできねーんじゃねーの?と邪推してみたけど、どうよ?
0100名前は開発中のものです。02/04/11 06:48ID:???
>>99
ネタですか?
0101名前は開発中のものです。02/04/11 07:56ID:???
>>99
その教科書は小学生用なのでちゃんとしたものを手に入れたほうが良いですよ。
0102名前は開発中のものです。02/04/11 12:54ID:???
>>99
点を詰める?んじゃなくて物体を点に置き換えるのでは?
現在ゲームで超リアル!といわれているものが納得いかないなら
有限要素法を使うことをお勧めします。ゲームになりませんが。
0103名前は開発中のものです。02/04/11 13:01ID:???
I= I_0 + m * d^2
0104名前は開発中のものです。02/04/11 14:42ID:???
>>99
慣性モーメントの合成(ボソッ
0105名前は開発中のものです。02/04/11 14:54ID:Ao5ZUcTM
慣性モーメントはI=Σmrだよ。
だから、どんな形のものも慣性モーメントを求めることは可能。
010610302/04/11 15:13ID:???
>>105
いや、実は104が正しいっす。つか上のはその式です。
0107名前は開発中のものです。02/04/11 19:04ID:???
平行軸の定理だな
0108名前は開発中のものです。02/04/11 19:30ID:???
>>99
あのさー、慣性モーメントうんぬんは大した問題でもないし
リアルに再現することは比較的簡単だ

1dもある車体に数〜数十`程度の足回りを剛性が馬鹿でかいバネで繋いだり
タイヤと路面の複雑な摩擦状態をシミュレートしたり・・・

思うんだけどさ、良くこのスレや物凄い勢いスレなんかで罵倒されている厨房じゃ
車を転がすことはできねーんじゃねーの?と邪推してみたけど、どうよ?
0109名前は開発中のものです。02/04/11 22:34ID:FH0jENaI
誰かこいつをバ韓国で養ってやってくれよ(藁

http://yasai.2ch.net/test/read.cgi/doujin/1016348976/187
おまえら、昨日はおおもり先生の絵に血文字書き込んでうれしそーにいろんな伝言板に晒したりしてたな。
うれしそーに。
しかも、1日たっても「そのくらいなんてこたねーよ」というような雰囲気。
非難する奴も誰ひとりとしていないとはな。
おい、こんな事が許されることだと思うなよ。
その後のおおもり先生の鬱はいった発言をコピペしてまた叩いてたが
おまえらな、自分が苦心してやっと描き上げた絵をアップした直後にあんなことされたらどう思うよ?
相当ショックだぞ?
ショックこらえて書き込んだ発言も、散々揚げ足取ってコピペして晒しまくりかよ。
しかもお前等ほとんどなにがしかの物創る仕事してるらしいな…。

テメェらの血の色は何色だ!?ふざけるな!いい加減にしろ!!
いますぐNHKみれ!
少なくともおおもり先生を語る資格はない。
…とんでもない。最低の奴らだ。
同人板、コミケ、オタク業界…いやもう日本から出て行け!
お前等みたいなクズ共と同じ世界にいると思うだけで反吐が出る。
韓国でもコミケのような大規模な即売会やってるらしいからそっちいけ。

おおもり先生もこんなクズ共に延々と張り付かれて…かわいそすぎ。
これで気が狂わない方がおかしい。
0110名前は開発中のものです。02/04/12 00:59ID:???
重力加速度って9.8だと速すぎるよね?
0111名前は開発中のものです。02/04/12 01:28ID:???
>>110
速すぎます。
9.7999999にしないとダメです。
0112名前は開発中のものです。02/04/12 02:16ID:arFX6iCs
>>110
空気抵抗を完全にシミュレートしてないからだよ、チミ。
0113名前は開発中のものです。02/04/12 04:46ID:gIjeslsM
>>6

>vec += G*dt;
>y += (int)vec;

重力加速度は加速度であって、1秒間に9.8m落ちるんじゃない。
落下位置はy = G * t * t /2で求めるんだよ。
0114名前は開発中のものです。02/04/12 05:00ID:???
(´-`).。oO(なんでこのスレはリアル厨房が多いんだろう?)
0115名前は開発中のものです。02/04/12 06:02ID:???
>>114
オマエ3D系のスレにいつもいるな。
0116名前は開発中のものです。02/04/12 06:55ID:???
このスレは3D系なのか?
0117名前は開発中のものです。02/04/12 10:12ID:???
>>110
単位も含めて考えないと間違いますよ
日本語で言えば9.8メートル毎秒毎秒です
0118名前は開発中のものです。02/04/12 11:34ID:???
>>110
1フレームは16msという罠
0119ラジャ・ライオン02/04/12 14:27ID:???
>>113
>落下位置はy = G * t * t /2で求めるんだよ。

それじゃ、その公式でGを9.8として1秒単位で0〜5秒までの落下位置を求めてください。

0, 4.9, 19.6, 44.1, 78.4, 122.5

となります、この数列を移動ベクトルとして考えます(v = t - (t-1))

4.9 14.7 24.5 34.3 44.1

これで初項4.9、公差9.8の等差数列になりました。
0120名前は開発中のものです。02/04/12 18:16ID:???
不毛なスレだ。
0121名前は開発中のものです。02/04/12 18:55ID:???
>>120
不毛なのは、お前だという罠
0122名前は開発中のものです。02/04/12 20:59ID:???
重力加速度でいつもフィーバーになるのはなぜ?
0123名前は開発中のものです。 野望02/04/12 21:16ID:???
終端速度をいれずに9.8が速いと言う罠
0124名前は開発中のものです。02/04/12 22:30ID:???
ビルから飛び降りるとかじゃない限り、
空気抵抗による終端速度はほとんど関係ないだろ。
0125名前は開発中のものです。 02/04/12 22:45ID:???
アクションゲーム程度だったら結構影響するんじゃない?
ビルくらいの高さから落ちるだろう。
落ちる距離がなければその分軽いものが多いだろうし。
何落としてるかは知らないけど。
0126名前は開発中のものです。02/04/14 05:42ID:???
>慣性モーメントはI=Σmrだよ。
>だから、どんな形のものも慣性モーメントを求めることは可能。
んなことは、分かーてるよ。
けど、それをどうやってスキャンすんの?って話でわ?
0127名前は開発中のものです。02/04/14 15:29ID:???
直接に力学の問題でなくて申し訳ないんですが、例えば三角形と球の接触判定を
行うときに、交点が三角形の中にあるかどうかだけ判断したのではエッジ近辺で
めり込みが起こってしまう。

めり込みを防ぐために球とエッジ+頂点の当たりを取ると、今度は三角形を
二つ合わせた平面の継ぎ目近辺でエッジに変な判定が発生してしまう。
大した問題ではなかったので今までは無視していたのですが、なにか良い
解決方法はないでしょうか?

そもそもゲーム向け力学計算といっても、面倒なのは力学そのものよりも
むしろ接触判定にあるような気が。
0128名前は開発中のものです。02/04/14 15:40ID:J0CwLCts
>>126
あげ。
慣性モーメントは質力×半径(質点)だから、物体を細かく分けて考えればよい。
中心点から質点の距離(半径)は三平方の定理で求められるよね。
0129名前は開発中のものです。02/04/14 15:52ID:J0CwLCts
>>127
3角形と円の当たり判定は、3角形の3頂点と円の当たり判定(3平方の定理)
を判定して、当たってなかったら線分と円の当たり判定をすればよいと思う。

ちなみに線分と円の当たり判定は、円の中点Pにもっとも近い直線上の点H
を求めて、その2点を3平方の定理にぶち込めばOK。

もっと簡単な方法があるかもしれないから幾何に詳しい人補足プリーズ。
013012902/04/14 15:58ID:J0CwLCts
あ、ごめん。よく読んだらその方法でダメなのか・・・

じゃあ、法線ベクトルを求めて、3角形と点の内外判定をすれば?
もちろん、3角形は円の半径分大きくしてね。
0131名前は開発中のものです。02/04/14 16:59ID:???
全部四角形で当たり判定するとか・・・
0132名前は開発中のものです。02/04/14 17:51ID:YJV4FsYY
>>127
禿同あげ
0133名前は開発中のものです。02/04/14 18:54ID:???
一流のゲーム会社での新卒に必要な技能とは、1に数学、2に物理、3に英語だそうです。
一流企業の就職筆記試験にでるのは、この3つだからね。
0134名前は開発中のものです。02/04/14 19:15ID:???
>>127
線と点の距離、面と点の距離で判定をするんじゃだめなの?
高校二年の教科書に載ってるよ。
0135名前は開発中のものです。02/04/14 19:37ID:???
>>127
if(面と球の中心の距離<=球の半径){
if(垂線の足が三角形に含まれる) return true;
}
for(i=0;i<3;i++){
if(辺と球の中心の距離<=球の半径){
if(垂線の足が線分に含まれる) return true;
}
}
for(i=0;i<3;i++){
if(頂点と球の中心の距離<=球の半径) return true;
}
return false;

その条件で、接触判定する(真偽を得る)だけならこれで良さげ
"変な判定"が何なのか謎
0136名前は開発中のものです。02/04/14 19:40ID:???
うへ、インデント消えてる
2ch初心者なの丸出しじゃん!
013712702/04/14 20:05ID:???
>>135
ソースまで出してもらって感謝です。
こちらの実装も、処理の流れは>>135とほぼ同じです。
接触判定の真偽値自体には問題はないです。

問題なのは、その後の計算のために法線を取り出すのですが、辺と頂点に
当たったときには接触点から球の中心に向かうベクトルを法線としています。

三角形1枚ならそれで問題ないのですが、2枚以上並べたときの継ぎ目で
球がわずかでも面にめり込んでいるときには、もう1枚の三角形の辺に
斜めから当たったとみなされる場合があります。

三角形の継ぎ目を低速で転がって通過しようとしたときに稀に発生します。
計算の都合で面へのめり込みを許容しているので、このような場合の良い
回避方法が思いつかないです。

言葉足らずで失礼しました。
0138名前は開発中のものです。02/04/14 20:24ID:???
>>137
角と円と法線のことをもう一度よく考えてから発言してみてください。
つーかアホか?
013913502/04/14 21:06ID:???
面へのめり込みを許容してどうする?って気もしますが

135のやり方は、球・三角形ともに停止していて、
その後の補正を考えない場合にしか使えません
球が移動しているなら、移動前の球→移動後の球をカバーするような
カプセルで考えないと破綻するはず
0140名前は開発中のものです。02/04/14 21:16ID:???
>>137

とりあえずなんでもいいから適当な図でも描いてくれれば
コメントしやすいと思うが。AAでもいいし、画像なら
その辺のあぷろだに うpしてリンク貼るとかさ。
0141名前は開発中のものです。02/04/14 21:37ID:???
補正しないのもドキュソだが法線を取れないのもドキュソだな。
線分と円の中心の距離が円の半径よりも小さくなったらそれは接触しているということだろ?
その法線は線分に直角な円の中心点を通る線だろ?
これ二次元ならば中学生の数学。
014212702/04/14 21:57ID:???
アホな質問ですみません。

>>139
単純に、めり込んだ量に比例して押しかえすやり方で跳ねかえりを計算してるので
そのような処理になっています。

>>138から判断すると、
球が辺に接触していると判断されたときにどの方向に跳ね返せば良いのか、
を間違っているか、そもそもめり込みを許容していること自体が問題である、
という事でしょうか?

複数のポリゴンに同時に当たった時に、逐次、見つかった順に計算しているのも
問題かもしれないですが。
剛体の計算自体は本を見ればいくらでも資料がありますが、接触判定のアルゴリズムに
なるといい資料が少なく、試行錯誤中です。
014312702/04/14 22:09ID:???
>>141
>線分と円の中心の距離が円の半径よりも小さくなったらそれは接触しているということだろ?
>その法線は線分に直角な円の中心点を通る線だろ?

137の「接触点」という言い方がまずかったのかもしれませんが、
「接触点から球の中心に向かうベクトル」が線分と直行しているので
その点については間違っていないかと。

とりあえず、三角形1枚との当たりに関しては、問題なく動いています。
2枚が隣接していても、実用上問題ないレベルで、大抵の場合は上手く動いています。

ただ、もっと良いやり方があるなら知りたい、と。
0144名前は開発中のものです。02/04/14 22:12ID:???
>めり込んだ量に比例して押しかえすやり方で跳ねかえりを計算してる
物理の授業で一番最初にやるはねかえり使ってやった方が簡単だし確実。
0145名前は開発中のものです。02/04/14 22:15ID:???
>>143
もっと良いやり方→補正
0146名前は開発中のものです。02/04/14 23:11ID:???
>>143
どんな処理するために3角形使ってるかわからないんだけどさ。
3角形を隣接させるってどういうこと?
本当に3角形でいいの?本当は凸角形の当たり判定でいいんでなくて?
014713502/04/14 23:31ID:???
私も数年前、かなり悩みました
平行移動・回転する任意形状の剛体が多数ぶつかり合うケースまで考えると、
すごく重いので、いまだに試行錯誤中って事になります(w

辺との判定をoffにしたら、その坂のポリゴンの継ぎ目で、
・すり抜けることがある→「交点が三角形に含まれるか否か」で判定ミス
・問題無い→誤差のせい
と予想
014813502/04/14 23:42ID:???
移動後の状態だけで考えるなら、交点じゃなくて最短(近?)点ですね
0149名前は開発中のものです。02/04/14 23:47ID:???
補正してから面を優先にして判定してやるだけじゃん。
なんでそれを思いつかないんだろうか?
0150名前は開発中のものです。02/04/14 23:56ID:YJV4FsYY
>物理の授業で一番最初にやるはねかえり使ってやった方が簡単だし確実。
127は剛体とか言ってるので跳ね返りでやるといろいろ問題多いよ
単純にペナルティ法使ったほうが楽なこともある
015115002/04/15 00:06ID:???
>>137
あと根本的な解決じゃないかもしれませんが,
面ごとに辺との当たりをとらずに,
当たり判定用に辺データを持っていれば済むような・・・
0152名前は開発中のものです。 02/04/15 00:08ID:???
>>151
サイコロを転がすならいいが
棒とか面につきさすような感じでぶつかって来たらどうする?
015312702/04/15 00:09ID:???
当たり前といえば当たり前のことなんですが、論文などを参考にして
厳密にやろうとすればするほど重くなって実用的でなくなるので、
どこでバランスを取るかを考慮中です。

とりあえずめり込みを前提にするのが間違っている、というのと
凸多角形で判定すればいい、とのアドバイス感謝です。

>>めり込んだ量に比例して押しかえすやり方で跳ねかえりを計算してる
>物理の授業で一番最初にやるはねかえり使ってやった方が簡単だし確実。

最初は物理の本に載っているような跳ねかえりの式を使っていたんですが、
重力などで物体がじわじわめり込んでしまうのを補正するのと、多数の
移動する剛体同士の当たりをとる過程でペナルティ法の方が簡潔に処理
できるようだったので、今はそちらを使っています。

めり込みの大きさと方向だけわかれば後はそれぞれの物体に力を加えるだけで
計算できるので、あまり厳密でなくとも良いゲーム向けには便利ではないかと
判断しました。
跳ねかえり定数を自由に決め難いのが難点ですが。
0154名前は開発中のものです。02/04/15 00:11ID:???
>>152
「辺だけ」ではなくて,「辺の当たり判定用にデータを」という意味です

「同じ辺で2度当たってどうのこうの」って問題に見えましたので・・・
015515002/04/15 00:15ID:???
>>153
ペナルティ法って実際どのように実装してますか?
単純に
 F = 深さ * k - 相対速度 * e
こうするとバネと同じで発散しやすくないですか?
ちょっと教えて下され
015615302/04/15 21:53ID:???
>>155
素直にその式で実装しています。発散しやすいです。
とりあえずはeを大きめの値にして誤魔化しています。

現実でも跳ね返り係数が大きいものはあまりないので
まぁいいか、と。
そのへんはかなり適当です。ダメだなぁ・・・

こういうのを簡単に上手く処理する方法ってないものですかね?
物体数が多いといろいろ面倒。
015715002/04/16 01:19ID:???
>>156
レスどうもです
最低数回は埋まり状態にないと保存しませんから
ルンゲクッタで精度あげたり・・・(やったことありませんが)

基本は跳ね返りで,埋まりにだけペナルティ法とか
だんだん重くなって行く〜
0158名前は開発中のものです。02/04/18 06:18ID:???
えっと、埋まった分を戻す時、他の物体も戻してる?
ほら、現実世界では埋まらないでしょ?
だから、埋まる前の衝突瞬間を求めて、世界時間をそこまで
逆戻ししなければならないんじゃないかなぁーなんて思うわけ。
015915002/04/18 17:56ID:???
>>158
私はそこまでしてません
接触状態では時間が進まないですね
となると場合分け(接触状態かどうか)が必要になるかな?
016015302/04/18 20:06ID:???
こちらでもゲーム向けなのでそこまでの厳密さはいらないと判断してます。

必要以上にめり込まない、壁を突き抜けない、運動が発散しない、の3つが
成り立ってそれっぽく動けば、後はどれだけ処理を軽くできるかが勝負かと。

ところでペナルティ法ではない跳ねかえりの式で、多物体の積み重ねってどの
ような処理で行っていますか?
めり込んだ距離や移動量、質量などに応じて押し返したり速度を減衰したりなど試しては
みたのですが、じわじわとめり込んでいくのを上手く回避できませんでした。

なにか良い方法はないものでしょうか?
0161名前は開発中のものです。02/04/22 15:32ID:qrK3TQcc
>30

>ところで連立方程式の解法には何を使いますか?
>消去法,ヤコビ,SOR,ADI,CGなどなど

それぞれの手法について説明お願いできます?
0162名前は開発中のものです。02/04/22 22:18ID:???
>>153さんのやり方は埋まったら埋まった量に応じて反発させるってことですか?
もしそうなら、高速で移動しすぎて突き抜けちゃうこともある?
016313502/04/22 23:43ID:???
ペナルティ法の定義は良く知らないけど、自分がそれっぽい方法使ってた時は
めり込みの深さは速度に影響を与えず、フレーム内で100%押し戻してました

前のフレームで衝突寸前な場合に激しく跳ね返るっていう、見た目の不自然さを
解消できそうになかったし、めり込みを後のフレームに持ち越してると
最終的に埋まっちゃったり、すり抜けたりする危険があるので
0164名前は開発中のものです。02/04/23 00:35ID:???
>>163
たぶん、127がやってる方法でその問題は発生していないんじゃないかな。
速すぎるとツキぬけるかもしれないけど。


ちなみに、自分は衝突判定ベースの当たり判定を試みたことがあったんだけど、
floatだと精度的にキツいものがあった。原点付近と原点と離れたところでは
有効桁の違いで計算結果に影響が出て、完璧に保証するのは難しいと
感じた。ちなみに、前提条件として、衝突する物体は判定を行う対象と
重なっていないこと、というのがあったからなんだけどね。
(固定小数点で判定するばイケそうな気もした)

ラインなんかに対して限りなく平行に近い状態で衝突しようとした時は、
かなり悲惨だったような。

安定した動作を期待するなら、127が良いと思うよ。
もしくは状況によって使い分けることが必要だろうね。

オマエのコーディングがへぼいんじゃ?という人が居たらご教授ください。
0165名前は開発中のものです。02/04/23 04:15ID:3ABxQxw2
>>30

連立方程式ならガウス法で充分でしょ。
32が言うように行列にしてLU分解してピボット処理すればいいし。
0166名前は開発中のものです。02/04/23 08:44ID:???
>165
LU分解とガウス法は全く違う手法ですが。
0167名前は開発中のものです。02/04/23 09:32ID:???
ヤコビ,SOR
http://dpos1.ice.eng.hokudai.ac.jp/~yasui/JAVA/SOR_APPLET-1.00/Doc.jp/sor_applet/node6.html

ガウス,LU分解
http://goro.denshi.numazu-ct.ac.jp/~ushimaru/pdf/simulation.pdf

CG
http://www.etl.go.jp/~tatebe/research/la/present/cg/sld001.htm
ワケワカラン
016816702/04/23 09:43ID:???
ちなみにCGは対称行列のみ
有限回数の反復で厳密解に達するらしいです
0169名前は開発中のものです。02/04/23 14:37ID:3ABxQxw2
>>166
名著「C言語による最新アルゴリズム事典」奥村晴彦著を読みましょう。
係数が0に近づくと、ガウス法では解けないので、LU分解してピボット処理を
行うのです。
0170名前は開発中のものです。02/04/23 15:07ID:???
>169
それが何か?
0171名前は開発中のものです。02/04/23 15:48ID:???
>>170
それが何か?
■ このスレッドは過去ログ倉庫に格納されています