3dsMaxの破壊シミュレーションプラグインRayFire Toolに関して勉強したことを書き連ねていきます。


【Simulation】

Impact Objects:シミュレート・亀裂・爆発・破壊を適用させるモデル。

アニメーションはシミュレーション開始フレームまで適用され、シミュレーション開始時のスピードとベクトルがエネルギーとなる。

アニメーションが付けられたモデルは、シミュレーション開始フレーム以降シミュレート結果の動きに上書きされる。

自発的にシミュレーションされるため、空中にあるものは落下を始め、亀裂が入ったものは崩れ落ちる。

Simulation Geometry:シミュレーション時、相互作用を計算するためオブジェクトをどのように扱うかを選択する。convexは凸面、concaveは凹面。PhysXエンジンではすべてのシミュレーションが凸面で計算されるため、グレーアウトされる。

※重要事項:PhysXエンジンはシミュレーション時、オブジェクトを凸面オブジェクトとして単純化します。現時点では凹面オブジェクトとして計算することは一切できません。これによってオブジェクトが相互貫通していないにも関わらず、シミュレート開始直後に吹き飛んでしまいます。凸面オブジェクトは、お互いのローカルスペースを離し合おうとしているのです。
これを回避するにはフラグメントタイプをBoronoiにしてください。これはフラグメントをきれいな凸面オブジェクトとして生成します。もしくは、 Noise Strengthを0にしてください。凹面としてシミュレートする唯一の方法は、標準のグループ機能を使っていくつかのオブジェクトをコンバインすることです。この場合は1つのソリッドオブジェクトとして扱われます。

Material:素材のプリセットを選択する。次の2つのスピナー(摩擦と弾性)がセットされる。

※注意:素材は、破砕シミュレーション時のオブジェクトの固さも決定する。例えばコンクリートを破壊するためにはガラスを破壊するよりも大きな力が必要になる。金属性の素材をアサインすると、どのようにしても破壊されなくなることに注意してほしい。また、ガラスと氷には特別なルールがある。透明なマテリアルを割り当てるときは、ガラスか氷を選ぶようにする。この素材を選択すると、自動的に衝突前と後でビジブルにキーが打たれ、衝突前はオリジナルオブジェクト、衝突後は破片オブジェクトが表示される。

Mass By:質量を決める方法を選択する。

Random: range:それぞれのフラグメント(破片・断片)の質量はランダムに決められる。

By volume: range : 各フラグメントの質量は破片の大きさによって決められる。一番小さな破片はMass rangeの左のスピナー値になり、一番大きな破片は右のスピナー値になる。

By material density : 各フラグメントの質量はその大きさと選択した素材密度によって決められる。

Mass range : 左は最小値、右は最大値。

Friction:摩擦

Elasticity:弾性

Unyielding Objects:シミュレーションされないモデル。ディフレクターモデル。

コリジョンオブジェクトとなる。Unyielding Objectsに付けられたアニメーションは、シミュレーションの影響を受けない。

つまりアニメーションが付けられたモデルははそのままの動きをする。

スキニングされたキャラクターが壁を破壊するようなシーンにも使うことができる。その場合はアニメ―トされたキャラクターモデルのポイントキャッシュを取ってやること。また、そのようなモデルを扱う場合にはCustom Preperties rolloutでDeformable Unyeildingにチェックを入れてやる。

Impact Objects同様、PhysXエンジンを使う場合、凹面では計算されない。どうしても凹面で計算したい場合は、Deformableオブジェクトとして扱うこと。しかしその場合は時間がかかる。

Affect on Inactive:本来、現状のPhysXエンジンではUnyielding ObjectsがInactive Objectsに影響を与えることはできない。しかし、試験的な機能を使うことによって可能となる。これにチェックを入れるとInactive Objectsに影響を与えることができる。Max Scriptエラーが表示されるかもしれないが、シミュレーションには影響しない。

Inactive Objects:Impact Objectsと衝突してからシミュレーションを開始するモデル。

Inpact Objectsと衝突するまで何も起こらない。アニメーションもされない。シミュレーション開始後の扱いはImpact Objectsと同じ。

 

【Physics】

Physical Option:ここでシミュレーションを開始・停止・ベイクする。

Physical engine:シミュレーションエンジンをPhysXかReactorから選択できる。

Start frame:シミュレーション開始フレーム。

Time range:シミュレーション適用時間。

Collision tolerance:衝突許容範囲。

Substeps:1フレーム内のシミュレーション回数。速度が速いときはこの数値を高くする。

Gravity:重力量。

Time Scale:シミュレーション時間を擬似的にスケール出来る。

PhysX simulation Properties:Physicsによるシミュレーションのプロパティ。爆発・風・重力・ジオメトリによる影響を設定できる。

Strength Multiplier:シーン内のフォースの影響力をグローバルに設定する。

Strength by Mass:フォースの影響力をシミュレーションされるオブジェトの質量によって左右させる。

Affect on Inactive objects:フォースやジオメトリをInactive objectsに影響させる。

Deactivate static Impact objects:フォースやジオメトリの影響を受けるまで、アニメートされていないImpact objectsをシミュレーションさせない。

Deactivate animated Impact objects:フォースやジオメトリの影響を受けるまで、アニメートされているImpact objectsをシミュレーションさせない。

Active by Force:フォースの影響を受けさせる。

Active by Geometry:ジオメトリの影響を受けさせる。

PhysX Demolition Properties:Impact Objectsがシミュレーションによって破壊される設定をできる。

Interactive Demolition options:破砕シミュレーションはベイクアニメーションモードでのみ適用される。

破砕は素材と組み合わせて働くようになっている。つまり、破砕されるかどうかが決定する前にその密度と固さが考慮される。例えば、コンクリートとグラスをぶつけるとガラスは割れるがコンクリートは割れない。同様に金属質の素材は壊れない。

Demolish geometry:オブジェクトに破砕シミュレーションを適用する。

Demolish groups: グループに破砕シミュレーションを適用する。

Depth level:それぞれのオブジェクトに対して何回破砕シミュレーションが行われるかを決める。

Depth ration:破壊シミュレーションによって砕けた破片がさらに何個に砕かれるかを決める。たとえば、Fragmentation iterationが100で、Depth rationが0.4の場合、破片は100×0.4=40に砕かれる。

Material solidity:素材の固さをグローバルに上下させる。

Minimum size limit:オブジェクトのバウンティングボックスの一番遠い角同士がこの距離より短ければ、破砕は起こらない。

Demolish by bomb:RF_BombかPbombを使用してオブジェクトを破砕・爆発させることができる。その際、亀裂も爆弾の強さを考慮して作成される。もしすでにオブジェクトを破砕するのに十分な強さの爆弾がセットアップされている場合は、この数値を0にする。

Glue options

Glue Demolished objects:破砕されたばかりの破片同士をくっつける。

Glue Objects in groups:グループ内のオブジェクト同士をくっつける。

Glue Linked objects:リンクされているオブジェクト同士をくっつける。

Glue breaking options

Breakable:オブジェクトのGlueコネクションをシミュレーション間にブレークさせる。

Strength:Glueオブジェクトが引き離されるために最低限必要な衝突力。

Strength by mass:オブジェクトの大きさによってブレークさせるための力が変わる。小さなオブジェクトは弱い力、大きなオブジェクトは強い力が必要になる。

Strength variation:Strengthで設定した値の誤差。高い値の方が自然なシミュレーションになる。

 

【Fragmentation】

Fragmentation Options:Impact Objectsに亀裂を入れる設定をできる。

Fragmentation Type:亀裂の入れ方を設定する。

Uniform:ほとんど同じ大きさに亀裂を入れる。

Irregular:亀裂の大きさがまちまちになる。

Relative to Bomb/Impact:リアクタータブでBombとして設定されたオブジェクトの位置から計算して亀裂を入れる。

Relative to Mouse:マウスカーソルの位置から計算して亀裂を入れる。

Relative to Pivot:Impact Objectsのピボット位置から計算して亀裂を入れる。

Continuous:パスラインと交差したような感じで亀裂が入る。

Iterations:オブジェクトを何回カットするか設定する。右のスピナーはその誤差。

Chaos:オブジェクトにカットを入れる角度のランダム値。0だと上下左右ほぼ90度にカットされる。

Detalization:オブジェクトの切り口のディテール。数値が高いほど、切り口の分割数が高くなる。

Noise strength:オブジェクトの切り口のガタつき具合を設定する。

 

【Option:Advanced fragmentation options】

Fragmentation method:亀裂を入れる方法をProBooleanかProCutterから選択できる。

ProCutterの方が安定しているが、精度が低い。

何らかの理由でProBooleanで割ることができなければ、ProCutterを使うと良い。

Fragmentation seed:シェーダの位相のようなもの。複数のオブジェクトが一緒にImpact Objectsに入れられてカットされる場合、

同じパターンの亀裂が入る。シード値が0の場合、毎回違うパターンでカットされる。

Face threshold:1つの破片の面の数がFace thresholdで設定した値を下回る場合、その破片は消去される。

Size threshold:1つの破片の大きさがSize thresholdで設定した値を下回る場合、その破片は消去される。

Jitter amount:破片の最大移動値を指定する。

Material Id:断面のマテリアルIDを指定する。数値が0の時は自動的に決められる。

Rift width:破片同士の距離。Jitter amount とは違い破片が移動距するのではなく、カットされたあと指定の距離を虫食う感じ。

つまりJitter amountはオブジェクトの体積は変わらないが、Rift widthは変わる。

Fill rifts:Rift widthによってなくなった空間を補間するように新しい破片が埋められる。

Bake animation:Impact Objectがキーフレームやシミュレーションなどでアニメートされている場合、カットされた破片もそのアニメーションを受け継ぐ。

Quadrangle faces:破片の面を4頂点ポリゴンにする。

Create selection sets:破片に対してカットされる前のオブジェクト単位で選択セットをつくる。

Animate Impact and Fragment objects Visibility:長いので訳すのがめんどくさいw