ゲームのための物理(力学)
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。
02/04/08 17:38ID:dlksSYkA例えば、坂道を転がる球の加速度だったら。
その球の密度が一様ならば、慣性モーメントは(2/5)MR^2なので
dV/dt = 5*g*sinθ/7;
と表せるよとか。
他にも剛体運動、力積とか語ってください。
0808名前は開発中のものです。
05/03/01 17:54:49ID:lSTgC9J9俺もパネキスレから来ました
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私もパネキットスレから参りました。
いやはやすごいですね。>>807さんの言うとおりモデル作成をGUIでできれば
本当にヤバイことになりますね。
それはそうと、全体的な動きの遅さはどうにかなりませんかね?
なんだか空気の密度が濃い感じになってますよね。自分としてはもう少しストーンと落ちてくれれば面白いのですが。。。
0812811
05/03/01 20:10:51ID:c8GhJz2dお騒がせしました。
0813名前は開発中のものです。
05/03/01 20:55:52ID:YBlNFw5Oしかしすげー、すげーとしかいいようねぇ
0814名前は開発中のものです。
05/03/01 21:40:09ID:XdDQ7qPW0815名前は開発中のものです。
05/03/01 21:50:34ID:XdDQ7qPWそれくらいにすばらしい。でもひどく時間がかかりそうw
0816名前は開発中のものです。
05/03/02 03:08:37ID:k+U3mRnB作ってみる
0817名前は開発中のものです。
05/03/02 03:38:20ID:k+U3mRnB作った、適当だからそんなに参考にならないかも
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:ta5B7AHT0824名前は開発中のものです。
05/03/03 00:50:20ID:sak9kLAy0825名前は開発中のものです。
05/03/03 01:28:24ID:KstdLpKK頂きました
素晴らしいですよ。
http://cgp.zive.net/modules/news/article.php?storyid=719
個人的には、これもお勧めなんで是非触ってみて下さい。
http://www.natew.com/juice/
0826学生
05/03/03 01:55:11ID:G0Ypp0UmjuiceはODEからのリンクで勉強させていただきました。面白いですよね。
ODEはほんとの円柱が使えないので、自作するはめになりました。(最近は三角メッシュがつかえるようですが)
僕は数学が強くないので、ここのスレをもっと早く知っていれば、心強かったなと思います。
あのソフトはヒンジ拘束を2点拘束でしていますが、暴れがひどいので、
10回も、収束ループをかましてます。チップにしたことで質量がほぼ同じ同士なので
何とか収束してくれています。
後、摩擦に関しては、いんちき係数と名付けた係数が内包されてますww。
なんだか、ここのスレの方にはパーティー開いて散らかしただけのような気がして申し訳なく思っています。
でも、こういうものをつくりたいという気持ちは大勢の人が持っていると思うと
ホントにうれしかったです。
0827名前は開発中のものです。
05/03/04 00:14:43ID:5W2O8fmb質点同士の演算や高速化の話や形状の拘束とかいろいろ興味あるし。
または気が向いたら書く技術系Blogとか。
0828名前は開発中のものです。
05/03/04 00:55:40ID:PPC/3nEQ0829827
05/03/04 07:10:37ID:88b1Vr1Fhttp://homepage1.nifty.com/kaneko/index.htm
0830名前は開発中のものです。
05/03/04 11:47:35ID:3lBLs5xU0831名前は開発中のものです。
05/03/04 13:29:36ID:U3cQRnWC金子さんは、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フレーム 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:P9dvm4bm0835名前は開発中のものです。
05/03/04 16:53:52ID:Lyk3Bqv80836名前は開発中のものです。
05/03/04 17:13:12ID:inVfA3QB新しく専用スレ立てようって流れになってるような気がするかもしれない
0837名前は開発中のものです。
05/03/05 02:57:45ID:qyrEGY9z0838名前は開発中のものです。
05/03/05 08:13:43ID:1ur9lyi20839名前は開発中のものです。
05/03/05 08:29:42ID:bUCQNkmChttp://game10.2ch.net/test/read.cgi/gsaloon/1109958786/l50
0840名前は開発中のものです。
05/03/08 13:59:39ID:gIyGr2FA跳躍時のブースト部分作ってるのですが
とりあえず動きはしたのだけども
これでいいもんじゃろか
Vg = g * Tg (自由落下)
Vb = v0 + a * Tb (等加速度直線)
Vy = Vb - Vg
g、v0、aは適当な数値
Tgは地上から離れたらカウント開始
接地するまで。
Tbはブースト使用する度にカウントアップ
接地すると0へ。
ってな具合にやってるんですが
何ぞいい参考資料やら、アドバイスの程ありませんでしょうか
ロケット 推進力でググッたけど、なかなかないス
0841名前は開発中のものです。
05/03/10 11:55:58ID:s8xy7z0m動いてるとこでも見ないとなんとも・・・
自分で気に入ったならそれでいいんでは?
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捕らわれない式にしてみたりする。
ただ加算してるだけだがw
上のはTg Tb使ったままだが
0844名前は開発中のものです。
05/03/10 23:50:31ID:s8xy7z0mその方向で行ってみよう。
プログラムは実行できる環境にないんで何とも言えない。
0845名前は開発中のものです。
05/03/12 08:49:32ID:4zYurhOf空気抵抗でも入れてみたら?
具体的な式が出てこなくて申し訳ないが、たしか速度の2乗に比例するはず。
0846名前は開発中のものです。
05/03/12 19:18:32ID:nlDiwADwVy = v0 + (a * boost - g) * Tb
boost : ブースト時1
(0〜1のアナログ値にするとスロットル調整出来る)
にすればVgとかVbの値が大きくなるとか気にしなくてもいいんじゃない?
0847名前は開発中のものです。
05/03/12 20:34:15ID:6IdZPHV9これすね
ma = mg - kv
途中からワケワカラン状態で
v = C1 e^なんてらかんてら + mg / k
もう微分とか忘れてもた。
>>846
なるほど、こちらも試してみまっす
弾道等、タイムTとか理解できるけど
速度や方向が常に変化する場合とか、ややこしいのう
0848名前は開発中のものです。
05/03/12 23:12:16ID:m2lL06bo0849名前は開発中のものです。
05/03/12 23:12:45ID:m2lL06bo0850847
05/03/13 20:24:21ID:ddVGYjw0ちょち説明しがたいですが
時間経過に伴って
Boostをオン・オフ(0か1か)した場合
Vyの振幅が大きくなっていく
なんのこっちゃ。
しかしながら、( a * Analog - b )は参考になりますです。
有り難く頂戴致します。
0851名前は開発中のものです。
05/03/13 21:04:49ID:vyXJQRhgΔTbのつもりだったんで毎スキャン計算するならTbは定数でいいね。
V0も初期速度じゃなく前回値だし。
0852名前は開発中のものです。
05/03/13 21:09:12ID:ddVGYjw0くそ〜 俺もまだまだ愚か者であった
簡単に考えてしもた
なるほど、もっかいやってみます
0853名前は開発中のものです。
05/03/16 14:26:34ID:4ckbHCDUdt+=(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:DIRppWgt0855名前は開発中のものです。
05/03/17 02:05:10ID:Jm4RD0Ulwinmm.libをリンクしてtimeGetTime使え
timeGetTimeはアプリケーションが起動してからの時間がmsで取れる
てWin32APIの勉強もしろよ
ただし49日以上連続で動作させるときは注意しろ
あと今回はhDCと書いてあるからWinだと判断できたが、質問するときはOSや
開発環境(コンパイラなど)も書くべし
Windowsとは限らないからな
0856853
05/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ちょっとまて。
>描画処理後時間(もしくはSwapBuffers()後かな・・・?)−描画処理前時間から
得られるのはdtではないのか?
dt = 今回の描画時刻 - 前回の描画時刻
0858857
05/03/17 23:51:40ID:L1vhHo+FDrawGLScene_01()の前でtimeGetTimeするようにして、
前回との差分を求めればそれがdtになるんじゃないかなって言いたかったのです。
描画処理前後の時刻から実際に描画した時間を求めたいんだと思うけど、
描画後から次の描画処理までの間って一定であることは保障されないから
動きがぎこちなくなるんじゃないかねぇ。
0859名前は開発中のものです。
2005/03/25(金) 01:59:37ID:DW5G1xUc廃人仕様のネトゲを作る時は数ヶ月電源切らないバカのためにも
注意しないとダメなのね。
0860名前は開発中のものです。
2005/03/25(金) 13:01:51ID:++QPHiMu0861名前は開発中のものです。
2005/03/25(金) 16:06:37ID:B4snpaS4せいぜい数秒だろ?
timeGetTimeの時間が前に保存した時間より前になってたら
一周したんだと判断して上手く処理すればいい。
まあ、処理する箇所全てでそんなことやってたら面倒で死にたくなると思うが、
比較用関数でも作ればいいわな。
0862名前は開発中のものです。
2005/03/27(日) 01:30:31ID:tFPQmcVA分岐せずに普通に減算するだけだろ
0863名前は開発中のものです。
2005/03/27(日) 05:25:09ID:pwcxO8c1分岐せずに普通に減算するだけだろ
?
0864名前は開発中のものです。
2005/03/27(日) 13:25:27ID:aXG9FYyP2進数表現と2の補数をちゃんと理解して
0865名前は開発中のものです。
2005/03/27(日) 13:41:00ID:JccKNaog0866名前は開発中のものです。
2005/05/24(火) 14:58:58ID:XukDS2te0867名前は開発中のものです。
2005/06/04(土) 09:20:36ID:/L/porwE0868名前は開発中のものです。
2005/06/04(土) 12:33:02ID:BqIdhHBYダー!!
0869名前は開発中のものです。
2005/06/07(火) 13:01:59ID:5/JzUkzN元気デスカァー!!
0870名前は開発中のものです。
2005/06/08(水) 07:25:38ID:e7NClaDx0871名前は開発中のものです。
2005/06/08(水) 12:51:30ID:75j9s0uM0872名前は開発中のものです。
2005/06/09(木) 20:29:21ID:qFoUOEo70873名前は開発中のものです。
2005/06/12(日) 02:11:20ID:f04CSUqUweb archive でも見ることができなくて残念。
あちらこちらで良い評価をもらっているサイトなので、
一度見てみたいと思っているのですが、何とかなりませんでしょうか?
0874名前は開発中のものです。
2005/06/18(土) 10:17:11ID:ZwUh+IhB0875名前は開発中のものです。
2005/06/18(土) 11:17:56ID:6iUM9GbJ0876名前は開発中のものです。
2005/07/22(金) 01:19:28ID:7UstcS2v違い過ぎて逆にわらた
漏れも、ア、アーカイブきぼん。
0877名前は開発中のものです。
2005/08/02(火) 21:53:30ID:MSQy7a7Z>Modulobeは,モジュールと呼ばれる部品を組み合わせて,
>仮想生物を簡単に作れる物理シミュレーション・システムです.
いろいろうねうねしてておもしろげ
0878名前は開発中のものです。
2005/08/04(木) 21:01:39ID:17+tQ14iこの方向性でいろいろなものが生まれてきそうな気はするね。
0879名前は開発中のものです。
2005/08/28(日) 09:48:10ID:WgK8kcnt(ヌンチャクを沢山連結させたみたいな)、
調べるにあたってそういう物理モデルとか計算手法なんかに名前はついてたりしますでしょうか。
キーワードがあれば教えてください。
0880名前は開発中のものです。
2005/08/28(日) 10:26:55ID:WgK8kcnt両端を連結させたただの「線分」というか。
0881名前は開発中のものです。
2005/08/28(日) 12:54:50ID:d9tDZPpsttp://homepage1.nifty.com/kaneko/indexp2.htm
47氏のページだけど、ここにあるロープってのがまんまそれ、ただしPseud Physicsだけどね。
0882名前は開発中のものです。
2005/08/28(日) 14:42:59ID:nSL9Zc+Uhttp://www.sodaplay.com/
既出だったらスマンコ
0883名前は開発中のものです。
2005/08/28(日) 15:19:07ID:HXePbcnvアレ関係以外で47氏って呼ぶのやめようよ……。
0884名前は開発中のものです。
2005/08/28(日) 15:39:58ID:4q3gD77Vhttp://www.google.com/search?num=50&hl=ja&c2coff=1&q=%22Pseud+Physics%22&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
で、何をもってインチキと呼んでいるの?
究極的には古典力学な時点でインチキ手法とすら言えるわけだが
よく分かりませんな、頭の良い人の考えることは
0885名前は開発中のものです。
2005/08/28(日) 16:24:50ID:d9tDZPps物理モデルの持ち方が力学的じゃない方法をつかってるからそう書いただけ。
文字通り擬似の意味で。
>>883
金子氏って書いたら別板でぶつくさ言われたからそう書いたんだ。
セミナーも行った位あの人の講義好きだったのにorz
0886名前は開発中のものです。
2005/08/28(日) 16:26:17ID:gLu/Yjfx君は pseudo random number を「インチキ乱数」と訳して
「何をもってインチキと〜」などと喚きたてるのかね?
よく分かりませんな、頭の
0887名前は開発中のものです。
2005/08/28(日) 18:00:21ID:4q3gD77Vだからその
>物理モデルの持ち方が力学的じゃない
ってのが具体的にどこを指しているのか知りたいんだけど。
周知とは思うけど、Verlet法は分子動力学の世界じゃ古くから使われてる手法だよね?
ロープのデモって数年前に一度見ただけだけど、他に特殊なことやってたっけ?
>>886
何その頭の弱そうな突っ込み
0888名前は開発中のものです。
2005/08/28(日) 22:42:42ID:d9tDZPps通常の物理演算モデルだと慣性モーメント使うけど、金子さんのABメソッド(銘々が違ったらごめん)の場合それとは全く異なる方式だよね?
そういう場合、元のリクエストのように通常の物理演算を期待している人に提示すると混乱の元になるのは明らかじゃないですか。
だから元リクエストに対しては擬似物理演算だよと言うべきと判断したわけなんだけど、そこら辺を考慮した上で擬似と言う単語にくってかかるのなら
なぜくってかかるのか提示してもらいたいものですが、いかがですか?
0889名前は開発中のものです。
2005/08/29(月) 02:55:45ID:YVlU/3kN慣性モーメントは、質点系の質量中心を基準点としたときの
角運動量の総和を角速度を用いて表した式に出てくる係数ってだけで、
ニュートンの法則を一定の制限を設けて弄くり回しただけのものに過ぎない。
何ら新しい、使わなければ擬似であるようなパラメータではないんだよ。
これは古典力学の本読めば第一章辺りに必ず書いてあること。
(ニュートンの法則自体が厳密に成立するのが古典力学までの世界なので
>>884を書いたわけだが、そんな意図は全く通じなかったようだ)
大体、君の言う"通常の物理演算"ってなんだ?
>>879-880の彼は別に剛体の物理そのものを求めているようには見えないが。
大量の拘束を連ねた剛体を想定しているなら、
Featherstone's Articulated Body Methodぐらい実装してからクチを開けよと言いたい。
知識が圧倒的に足りてないのに適当に語るから、こんな風にボロが出るんだよ。
Pseud Physicsなんて不思議な単語使ってくるくらいだから十二分に予想は出来ていたけどね
0890名前は開発中のものです。
2005/08/29(月) 08:56:46ID:LBu1Umy90891名前は開発中のものです。
2005/08/29(月) 22:05:21ID:I7B8lPT8>>881は親切心で書いてるんだし。
0892879-880
2005/08/30(火) 02:30:10ID:YeacyYvE金子さんのはやや独自らしいのでできれば教科書的な方法をまずやってみたいと考えてます。
想定しているモデルを物理用語っぽくいうと何ていうのでしょう。
0893名前は開発中のものです。
2005/08/31(水) 00:33:59ID:yzelCzYWAB法 (Anime-Body method)
Advanced character physics
0894名前は開発中のものです。
2005/09/02(金) 21:09:30ID:pblmt9Sp初期位置:y=150
加速度: acc = 10
初速度: spd = 50
速度: spd = spd + acc
床の位置:y=200に水平
上記の条件で画面下に向かって落下する物体があるとして、
更新後の座標はy = 150+50+10 = 210です。
当然めり込みが発生するんですけど、座標と速度の補正はどうすればいいんでしょうか?
床と物体との衝突は完全弾性衝突だとすると、単純に速度を反転させるだけでよいのでしょうか。
レベルの低い質問ですが、めりこみの補正がうまくいかず悩んでいます。
宜しくお願いします。
0895名前は開発中のものです。
2005/09/02(金) 21:38:06ID:rHzP24T5速度がめちゃめちゃ速い場合、床にぶつかってないように見えて、みっともないかも知れないけど。
この例だと、210で床にめり込んでしまうから、座標は更新せず、150のまま速度だけ-60にする。
0896894
2005/09/02(金) 22:15:30ID:pblmt9Spしたの図のような状況になってしまうので、できれば正しい位置に補正したいのですが、
その場合に速度を−60にしてしまうと跳ね返り後に不自然に加速してしまいます。
何か良い方法は無いのでしょうか?
○ ←本来はこっち
\ /
● \ / ←座標補正しないと軌道がずれる
__\_\/___
\/
0897名前は開発中のものです。
2005/09/02(金) 22:28:59ID:rHzP24T5それだと、挟み撃ち法かなんかで、正確な衝突位置と時刻を計算して、
その時刻での速度を計算して、床の面で反転させて移動先を求めるしかない気がする。
そんなメンドウなことやったことないから、上手くいくかわからないけど。
0898名前は開発中のものです。
2005/09/02(金) 22:29:12ID:KJAkIwh5http://jun.artcompsci.org/~makino/papers/ode/node6.html
0899名前は開発中のものです。
2005/09/02(金) 22:34:23ID:qpN8vavmY速度が50なんだから、バウンドした量も含めて縦に50移動してればOK
一度方眼紙に書いてみれば感覚がつかめると思う。
この場合、めり込んだ10だけ跳ね返ったy=190が正解だと思うよ。
速度は-50+(40-10)*10/50を減衰させればいいかな?(自信ない)
0900名前は開発中のものです。
2005/09/02(金) 22:44:25ID:rHzP24T50901名前は開発中のものです。
2005/09/03(土) 09:32:02ID:FfR/KiiS移動速度を10分の1にして、毎回10回計算する。
0902894
2005/09/03(土) 12:03:33ID:zLnViSEh>速度は-50+(40-10)*10/50を減衰させればいいかな?(自信ない)
これの(40-10)というのはどういう意味の計算なのでしょうか?
質問ばかりですみません
0903名前は開発中のものです。
2005/09/03(土) 15:03:50ID:UNtMk5CE(壁に衝突するまでの距離−そこからの余剰分のベクトル)じゃ無いの?
いや、詳しくはわからんけど。
0904名前は開発中のものです。
2005/09/04(日) 03:37:01ID:SDZeDuL1こんな、ごく単純にボールが自然落下して床に当たって跳ね返るだけの処理で悩んでいるようでは
ゲームプログラマとしては才能がないのでしょうか・・・(´;ω;`)
0905名前は開発中のものです。
2005/09/04(日) 04:14:12ID:x5Na2HfTっていうかやけに単位が大雑把な気がするけど何のゲーム作ってるんだろ?
厳密な計算はいくらやってもキリが無いからある程度の妥協は必要だぞ。
0906名前は開発中のものです。
2005/09/04(日) 04:24:58ID:F6+rTEV1> こんな、ごく単純にボールが自然落下して床に当たって跳ね返るだけの処理で悩んでいるようでは
>ゲームプログラマとしては才能がないのでしょうか・・・(´;ω;`)
ここはマジレスしてあげよう。
こういう問題で精度と計算結果が重要視されるのはシミュレーションや大学の論文。
で、ゲームプログラマーというかアミューズメント系はこういう場合ゲームシステムやプレイ感覚に与える心理的影響や
ゲームシステム上の不具合が発生しない方向を最初に検討してから対処する事になる。
つまり考え方とか方法論がはじめから違うのだ。
だから君が悩むべきは自分の作っているゲーム世界での影響を排除(あるいは許容する範囲の決定)であって
必ずしも数式的、物理的に現実に添うことではないのだよ。
#いまだプロでなくアマチュアであってなおかつ学生であるのなら悩んで当たり前だから、悩む事自体を楽しめるようになりたまえ。
0907名前は開発中のものです。
2005/09/04(日) 06:22:05ID:GAjPy7wj言ってることは至極真っ当だが言い方がエラいムカつく
レス数が900を超えています。1000を超えると表示できなくなるよ。