リジッドボディ基礎3 Physicalタブ


こんにちは篠島です。今回はRBD Object等に含まれるPhysicalタブについて説明したいと思います。

 

今回のサンプルファイルです。
physical.zip

 

さて、RBD Object等のPhysicalタブは以下のようになっていて、ジオメトリの中心、質量、摩擦やらバウンス係数などいろいろ設定できるようになっています。

1

 

Center of Mass

Center of Massは自分で好きな位置に変えることが出来ますが、基本的にはCompute Center of MassがONになっていれば自動的に計算してくれるので変更する必要はありません。TorusオブジェクトのCenter of Massを端っこに無理やりずらすと、下のような動きになりました。端っこに重りが付いていると考えると分かりやすいかと思います。

b

 

Compute Mass もデフォルトでONになっているので自動的にオブジェクトのMassを計算してくれるので何も変更する必要はありません。ちなみにオブジェクトのMass は Density × オブジェクトのボリューム というふうに計算されます。

Rotational Stiffness

Rotational Stiffnessはスピンのしにくさを表したもので、値が大きいほどスピンがかかりにくくなります。下のアニメーションではTorusオブジェクトのRotational Stiffness 1 と 10 の違いを表したものです。ボールが衝突したときのスピンのかかり具合が違うのがわかると思います。

c

 

Bounce

Bounceはそのまんま、どのくらいバウンスするかです。さて、これらのBounce や Friction などの値ですが、これは他のオブジェクトのBounce や Friction の値によって最終的な値がきまります。例えば下のようにボールと地面がある時、2つのBounceの値をかけ合わせた結果が最終的なBounceの値となります。下の例だと 0.5 x 1 = 0.5 と 0.25 x 2 = 0.5 と、両方ともBounceが0.5になっているので、シミュレーション結果も同じになります。なのでBounceやFrinction系のパラメーターを調整する時は地面等の値を1にしてしまうと、ボール等のオブジェクトのパラメーターの値がそのまま最終的な値になるので楽だったりします。

a

 

Friction

摩擦は Friction と Dynamic Friction Scale の2つのパラメーターがあります。自転車をこぎはじめる時、静止している所からペダルを踏むのが一番重いですね。同様にHoudiniにも静止している時の摩擦と、動いているオブジェクトの摩擦が別になっています。
Friction は静止しているオブジェクトに対する摩擦であり、いったんオブジェクトが動き始めると Friction と Dynamic Friction Scale をかけ合わせた値が最終的な摩擦係数となります。Dynamic Friction Scale が0だと、動いているオブジェクトに対する摩擦は0になり、どこまでも滑っていきます。下のGIFアニメではBoxに対してDynamic Friction Scale を 0 ~ 0.9 まで変えてシミュレーションしたものです。
サンプルファイルを作っている時に気がついたのですが、BulletソルバーやODEソルバーでは動きませんでした。Dynamic Friction Scale を有効活用する時はRBDソルバーを使うと覚えておきましょう。
追記:昔の自分が血迷った事を言っていますが、RBD Packed Object使えばBulletでもFriction は問題なく動きます。Dynamic Friction Scale はパラメーターすら存在していません。

d

 

Temperature

Temperature はその名の通り、オブジェクトに熱を持たせます。温度はリジッドボディのシミュレーションには全く関係なく、Pyro系のシミュレーションをする時に使うことが出来ます。例えば Fuel を用意しておいて、熱いオブジェクトが通った場所を着火させる事ができます。下の紫で表示されている場所はFuelです。

e