ICEフォース
 
 
 

フォースは物を動かします。

ICEツリーでは、自然を模倣するさまざまなタイプのフォースに応じて、パーティクルやシミュレートされたデフォームオブジェクトが動きます。パーティクルクラウドやシミュレーションオブジェクトには、それぞれ複数のフォースを適用できます。

ICEツリーの物理学

3Dの世界ではあらゆることが可能ですが、Softimageでは、フォースを適切に計算するために、実世界に基づいた物理学を使用する必要があります。結論を言えば、ICEツリーで使用されるフォースは、ニュートン物理学に基づいたものになっています。

もちろん、物理学の法則を曲げて必要なアニメーションを作成することもできます。必要となるアニメーションは、実世界に限定されたものとは限りません。アニメーション映画では、従来の物理学を無視して効果を作り上げるということがよくあります。ICEのノードを使用すると、独自のフォースやシミュレーションコンパウンドを作成することができます。

ICEツリーのフォースで使用されている主な概念は次のとおりです。

  • [速度](Velocity): オブジェクトの速さと進行方向、または位置の変化率。これはベクトルです。

  • [スピード](Speed): 速度の振幅(速度ベクトルの長さ)。ただし、速度が持つ方向は、スピードにはありません。これは、オブジェクトの移動距離と移動にかかった時間の比率です。

  • [加速度](Acceleration): 速度の変化率。

    速度、スピード、加速度の詳細については、ICE パーティクル速度[ICEパーティクルシミュレーション]を参照してください。

  • [フォース](Force): オブジェクトに対するプッシュ。速度の変化を暗示します。また、プッシュの方向を示すベクトルでもあります。この長さによって、プッシュの強さが決まります。

    フォースとは、オブジェクトに適用され、その速度を変化させるベクトルであり、オブジェクトの質量が考慮されます(フォース = 質量 * 加速度)。フォースは、速度の変化に質量を乗算して算出されます。

    [Simulate Particles]ノードでパーティクルの位置にフォースを適用すると、パーティクルの質量が考慮されます。

  • [質量](Mass): オブジェクトの絶対量。質量は、オブジェクトが適用されているフォースにどの程度すばやく反応するか、また障害物との衝突でどのように反応するかを決定します。質量の多いオブジェクトほど、フォースの影響を受けているときに速度を維持する傾向があります。そのため、オブジェクトの動きを変化させるには、オブジェクトが軽い場合より重い場合のほうがより強いフォースを適用する必要があります。

    詳細については、「ICE パーティクルの質量」(「ICEパーティクルシミュレーション」)を参照してください。

  • [重力](Gravity): 質量を持つすべてのオブジェクト間で働く引力。地球の重力は、オブジェクトに影響を及ぼす下向きの加速度です。

    詳細については、「Gravity Force(重力フォース)」を参照してください。

  • [ドラッグ](Drag): ソリッドオブジェクト上で流体によって適用されたフォースで、速度と反対の方向に働きます。このフォースは、オブジェクトの速度とサイズ、そして流体の密度に応じて決まります。

    詳細については、「Drag Force(ドラッグフォース)」を参照してください。

ICEツリーでのフォースの使用

ICEツリーでフォースを使用する場合、ICEツリー内またはSoftimageの任意のツールバーからフォースにアクセスできます。それぞれ異なるフォースのセットが用意されていますが、ICEツリーではどちらのセットも使用できます。

  • ICEフォース:[ICE]ツールバーの[パーティクル](Particles) [フォース](Forces)メニューから、任意のコマンドを選択します。「ICE フォースの作成と ICE シミュレーションへの適用」を参照してください。これらのコマンドで使用されている各フォースコンパウンドは、ICEツリービューのPreset Managerで[タスク]>[Particles]タブを選択すると表示される[Forces]グループにあります。

    または

  • ICE 以外のフォース:[シミュレート]ツールバーの[取得](Get) [フォース](Forces)メニューから選択するか、その他のツールバーの[取得]>[プリミティブ]>[コントロールオブジェクト]から選択します。「ICE 以外のフォースの作成と ICE シミュレーションへの適用」を参照してください。

フォースの属性

フォースを定義する属性は複数用意されており、シミュレーションで使用されます。これらの属性は、このセクションで説明するいくつかのコンパウンドで使用されますが、ICEツリーで単独に使用することもできます。

ICE パーティクル属性を使用する[ICEパーティクルシミュレーション]に説明されているように、[Get Data]および[Set Data]ノードで指定することで、任意の属性を使用できます。

属性全般の詳細については、ICE 属性[ICE リファレンス]を参照してください。

[Add Forces]コンパウンドについて

ICEツリー内でフォースコンパウンドを使用するには、まず[Simulation Root]コンパウンドの[Forces]ポート、または[ICETree]ノードのポートに接続された[Add Forces]コンパウンドを用意する必要があります。

Add Forces(フォースの追加)コンパウンドは、ICEツリーでのフォースの拠点となり、接続されたすべてのフォースのエフェクトをまとめてブレンドし、シミュレーションオブジェクトに適用します。

[Add Forces]コンパウンドに他のフォースが接続されていなくても、プロパティエディタを開いて、任意のグローバル方向(XYZ)に単純な速度フォースを作成することができます。

ICE フォースの作成と ICE シミュレーションへの適用

ポイントクラウドやデフォームオブジェクトには、それぞれ複数のフォースを適用できます。さらに、同一シーン内にある複数のポイントクラウドやオブジェクトに同じフォースを適用することもできます。

  1. ICEデフォーメーションまたはパーティクルシミュレーションを作成します。「基本的なパーティクル放出の作成」を参照してください。

  2. [ICE]ツールバーの[パーティクル](Particles) [フォース](Forces)から、任意のコマンド([重力](Gravity)[ドラッグ](Drag)[風](Wind)[ポイント](Point)[凝固](Coagulate)[隣接](Neighboring)[ヌル コントローラ](Null Controller))を選択します。各エディタの詳細については、「ICEフォースコンパウンドのタイプ」を参照してください。

    これらの各コマンドは、次の2つの処理を行います。

    • [Simulation Root]コンパウンドの[Forces]ポートに接続することで、ICEツリーに[Add Forces(フォースの追加)]コンパウンドを追加します(存在しない場合)。このコンパウンドは、ICEツリーでのフォースの拠点となり、接続されたすべてのフォースのエフェクトをまとめてブレンドし、シミュレーションオブジェクトに適用します。

    • [Add Forces]コンパウンドの[Force]ポートに接続することで、そのコマンドに対応するフォースコンパウンドをICEツリーに追加します。各コンパウンドの詳細については、「ICEフォースコンパウンドのタイプ」を参照してください。

  3. [パーティクル](Particles) [フォース](Forces) [ヌル コントローラ](Null Controller)コマンドを選択した場合は、パーティクルのコントロールに使用するヌル オブジェクトを選択する必要があります。このオブジェクトの[Get Data]ノードを[Null Controller Force]コンパウンドの[Null Name]ポートに接続します。

  4. フォースコンパウンドのプロパティエディタで、目的に応じてパラメータを設定します。

  5. この方法で、さらにフォースを追加することができます。追加のフォースは、単純に既存の[Add Forces]コンパウンドに接続します。

    [Add Forces]コンパウンドにフォースを接続する順序は重要ではありません。フォースは単純に追加されていくだけです。

ICEフォースコンパウンドのタイプ

ICEフォースコンパウンドは、ICEツリーのPreset Managerで[タスク]>[Particles]タブの[Forces]グループにあります。

ICEツリーでは、これらすべてのフォースの使用について、標準的な手順が用意されています。「ICE フォースの作成と ICE シミュレーションへの適用」を参照してください。

A

Gravity Force(重力フォース)コンパウンドは、実際には時間経過に伴って加速度を定義するフォースを適用します。重力は、質量にかかわらずすべてのオブジェクトで同じになります。ただし、空気抵抗や摩擦が発生した場合や、オブジェクト同士が衝突した場合には重力は一定でなくなります。このときに大きな影響を与えるのが、オブジェクトの質量、エネルギー、および運動量です。

B

Surface Force(サーフェイス フォース)は、まるで磁石が鉄くずを引き付けたり跳ね返したりするように、オブジェクトのサーフェイスにパーティクルやオブジェクトを引き付けたり、サーフェイスから跳ね返したりします。このフォースを使用すると、磁石、ブラックホール、重力などによって作成されるエフェクトを簡単に作ることができます。

C

Wind Force(風のフォース)コンパウンドは、ターゲットの速度までパーティクルまたはシミュレーションオブジェクトを加速するフォースを生成します。これは、速度と強さを持った方向性のフォースです。

D

Null Controller Force(ヌル コントローラ フォース)コンパウンドは、ヌルの位置とシェイプを使用して、フォースの中心、方向、サイズを制御します。ポイントは、ゴールオブジェクトに対してパーティクルが近づいたり遠ざかったりするのと同様の方法で、このヌルに引き付けられたりヌルから跳ね返ったりします。

E

Neighboring Particles Force(隣接するパーティクル フォース)コンパウンドは、凝固フォースと同様の方法で、パーティクル同士がある一定の範囲内におさまると、パーティクル同士を引き付け合わせます。ただし、パーティクル間に摩擦がないため、凝固フォースのように互いにクランプし続けることはありません。

F

Drag Force(ドラッグフォース)コンパウンドは、流体でのように、速度と反対の方向に向けてオブジェクトの動きに流れの抵抗を追加します。このフォースにより、シミュレーション オブジェクトの動きの速度を下げたい場合に、そのレベルを直接コントロールできます。たとえば、ドラッグ フォースを使用してパーティクルが水の中で動くエフェクトを作成したり、放出されるパーティクルの動きをスローモーションで作成できます。

G

Coagulate Force(凝固フォース)コンパウンドは、ポイントをその隣接ポイントに引き付け、クランプを形成します。ポイント同士がある一定の範囲内におさまると、摩擦(ドラッグ)によってポイントの速度が遅くなります。

このフォースは、飛び散る血、水銀または液体金属の形成、水滴などに便利です。このフォースをブロブとして設定されたパーティクル シェイプで使用して、これらのタイプのエフェクトを作成してみることができます。

H

Point Force(ポイント フォース)コンパウンドは、ユーザが定義した空間内の位置にパーティクルやオブジェクトを引き付けたり、この位置から跳ね返したりします。

ICE 以外のフォースの作成と ICE シミュレーションへの適用

ICE のフォースコンパウンドに加え、ICE 以外のフォースを ICE シミュレーションツリーで使用することができます。これらは、以前のバージョンのSoftimageで使用していたシミュレーションフォースです。フォースのタイプ[ シミュレーション]を参照してください。

各フォースはシーン内ではそれぞれのコントロールオブジェクトで表されるため、フォースの使用に慣れている場合は、これらのフォースを使って作業すると便利なことがあります。コントロールオブジェクトでは、フォースの選択、変換、回転、スケールが可能です。

  1. ICEパーティクルまたはデフォーメーションシミュレーションを作成します。

  2. [シミュレート]ツールバーの[取得](Get) [フォース](Force) [フォース名](force name) を選択するか、その他のツールバーから[取得](Get) [プリミティブ](Primitive) [コントロール オブジェクト](Control Object) [フォース名](force name) を選択して、ビューポートにフォース オブジェクトを作成します。

  3. Explorerから、フォースの名前をICE Treeにドラッグし、その[Get Data]ノードを作成します。

  4. ICE Treeで、[Forces]グループの[Add Forces]コンパウンドをICE Treeビューにドラッグします。

  5. [Add Forces]コンパウンドの[Execute]出力を、[Simulate Particles](または[Simulate Rigid Bodies])ノードより上流で、[ICETree]ノードのいずれかのポートにドラッグします。

    状態システムを使用している場合は、[State]コンパウンドの[Execute]ポートに接続することもできます。

  6. 各フォースノードの[Force]出力を[Add Forces]コンパウンドの[Force]ポートに接続します。フォースの出力はフォースを表す3Dベクトルであり、エレメントの[PoPosition]属性に基づいています。

    [Add Forces]コンパウンドにフォースを接続する順序は重要ではありません。フォースは単純に追加されていくだけです。

    このようにして、引き続きフォースの作成とシミュレーションへの適用を行います。

ICE 以外のフォースのグループ適用

複数の ICE 以外のフォースを含むグループを作成し、そのノードを ICE ツリーに取り込んで、[Add Forces]コンパウンドに接続することができます。このようにして、ICEツリー内での接続を変更せずに、グループにフォースを追加したりグループからフォースを削除したりできます。グループノードは接続されたままで、[Add Forces]コンパウンドによって更新されます。

  1. [シミュレート]ツールバーの[取得](Get) [フォース](Force)メニュー(または任意のツールバーの[取得]>[プリミティブ]>[コントロールオブジェクト])を使用して複数のフォースを作成し、選択します。

  2. ICE ツリーで使用するフォースを含むグループを作成します([Ctrl]+[G]キーを押すと作成できます)。

    デフォルトでは、現在のシミュレーション環境で作成される[Forces]グループがあります。標準的なフォースが作成されると、自動的にここに追加されます。Explorer で、[環境](Environments)スコープまたは[現在の 環境] ]スコープを選択し、シミュレーション環境を表示します。詳細については、「ICE シミュレーション環境」を参照してください。

       
  3. [Forces]グループの名前をExplorerからICE Treeにドラッグし、その[Get Data]ノードを作成します。

  4. ICE Treeで[ツール]タブをクリックし、[Array]グループの[Get Array Sum]ノードをICE Treeビューにドラッグします。

    [Forces Group]ノードの[Value]出力からの出力は複数のオブジェクトを考慮するので配列ですが、[Add Forces]コンパウンドでは入力として3Dベクトルしか受け付けないため、このノードを追加します。このノードは、配列の値を受け取って単一の値(3Dベクトルも可)を出力するという点で、コンバータのように機能します。

  5. [Forces Group]ノードの[Value]出力を[Get Array Sum]の[Array]ポートに接続します。

  6. [Get Array Sum]の[Result]出力を[Add Forces]コンパウンドの[Force]ポートに接続します。