物理シュミレーション 衝突後の速度

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2015/11/30 14:42
masuzume  新米   投稿数: 3
Windows7、Blender2.76、BlenderGameEngineを使って物理シュミレーションを行っているものです。
弾性係数1.0の壁に向かって弾性係数0.5の立方体を衝突させてその後の速度を見ています。
進行方向(X方向)以外の移動、回転を拘束して初速度1、5、10、20、50、100をX方向に与えて衝突後の速度を見てみると、うまく0.5倍になっている場合と、0.5倍に元の速度の20%ほど上乗せした速度で反発してしまう場合があるのですが何が原因でしょうか?

心当たりのある方がいたらよろしくお願いします。

?
投票数:4 平均点:2.50
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015/12/1 8:00
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4405
まず考えられるのは精度の問題です。Blender のデフォルト設定の多くは精度より軽めに動作することを優先しているため、そのままでは精度が足りていないと思われます。

シーンプロパティ→▼剛体ワールド→ソルバー反復数を上げてみてはいかがでしょうか。
また、ステップ/秒を上げても精度を改善できますが、同時にソルバー反復数も一緒に上げないと余計な誤差が生じてしまうこともあるようです。
投票数:28 平均点:6.43
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015/12/1 13:38
masuzume  新米   投稿数: 3
yamyamさんありがとうございます。

BlenderRenderではできるようですが、BlenderGameのほうですとソルバー反復数は設定できないようです。

先のシュミレーションではWorldプロパティ→▼物理演算 のところの物理演算ステップ、ロジックステップ、サブステップは最大値で行っており、FPS(ステップ/秒に相当)は1000まで上げてやりました。

他にBlenderGameのほうで精度を上げるのに必要な設定箇所があればよろしくお願いします。
投票数:12 平均点:6.67
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015/12/3 0:47 | 最終変更
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4405
BGEですか…基本的にBGEでは精度より速度を優先していると思われるので、精度を上げる設定は他にはないように思います。

PythonAPI も探してみたのですが、BGE用の物はコンストレイント用にはbge.constraints.setNumIterations があるものの、移動・回転の拘束は恐らく▼物理演算→移動/回転をロックで行われていると思いますので効力はないと思います。

あとは衝突判定の方法を変えるか、初速を与える開始時間を一定に保つ、位置や速度のパラメータをスクリプトで定値を設定してから初速を与えるなどが考えられますが、いずれも実際には試していません。

個人的には精度の必要な場合にはBGEを使用すべきではないと思います。
投票数:5 平均点:6.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015/12/8 13:36
masuzume  新米   投稿数: 3
返事が遅くなりました。

最終的にpythonで床を振動させて地震のシュミレーションをするのでBGEでいろいろテストしていた次第です。

とりあえずは少し弾性係数を低めにしてやっていこうと思います。
ありがとうございました。
?
投票数:5 平均点:4.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki