Houdini 19.5 Finite Elements(有限要素)

セットアップ Finite Elements(有限要素)

On this page

シェルフツール

Solid Objectのセットアップには、 Solid シェルフタブのツールを使用します。

Note

FEM Solid Object, Hybrid Object, Organic Mass, Organic Tissueのツールは、選択したオブジェクトをシミュレーションに使用されるSolid ObjectまたはHybrid Objectに変換します。 選択したジオメトリがまだ四面体で構成されていなければ、これらのツールは、そのジオメトリを四面体に変換してからそれらの四面体を取り込むためのSOPをそのソースジオメトリのネットワークに挿入します。

FEM Solid Object

選択したジオメトリから柔らかいSolid Objectを作成します。Solid Objectノードのパラメータを使用することで、そのオブジェクトの物理特性を変更することができます。

FEM Hybrid Object

選択したジオメトリからHybrid Objectを作成します。このオブジェクトは、ポリゴンスキン内に含まれている内部の固体の塊をシミュレーションします。

Organic Mass

選択したジオメトリからSolid Objectを作成します。このオブジェクトは、筋肉と脂肪のように、しなやかで弾力があります。

Organic Tissue

選択したジオメトリからHybrid Objectを作成します。このオブジェクトは、スキンに皺や弛みを生成します。

Surface collider

アニメーション/変形するジオメトリからStatic Objectを作成します。このオブジェクトは、Finite Elementオブジェクト(布やソリッド)と衝突するように適切に設定されます。

詳細は、コリジョンを参照してください。

Volume collider

変形しないジオメトリからStatic Objectを作成します。このオブジェクトは、Finite Elementオブジェクト(布やソリッド)と衝突するように適切に設定されます。

詳細は、コリジョンを参照してください。

Constrain Points to Target

このツールは、ポイントをオブジェクトのターゲットアニメーションに拘束します。また、このツールを使用することで既存の拘束を再取り付けすることもできます。 最初の手順で既存の拘束を選択しておくことで、このツールは再取り付けツールとなります。

Embed Highres Object

低解像度のSolid Objectと高解像度ジオメトリが含まれたオブジェクトを選択することができます。 これによって、低解像度のオブジェクトをシミュレーションして、その結果を高解像度ジオメトリに適用することができます(以下のEmbeddingを参照)。 このツールは、ジオメトリネットワークを修正して、Solid ObjectGeometry タブの設定を変更することで動作します。

役立つパラメータ

これらのシェルフツールは、シミュレーションネットワークにSolid ObjectまたはHybrid ObjectFEM Solverノードを作成します。 これらのノードのパラメータを使用することで、シミュレーションオブジェクトの挙動を制御することができます。

ソルバ

  • Finite Element Solverで最も重要なパラメータが Substeps です。シミュレーションのフレーム間の移動量が四面体のサイズより大きいときは、シミュレーションの結果をより正確でより安定させるために、 Substeps の値を上げる必要があります。

  • Integrator Type を変更することで、ソルバに接続されたSolid Objectをまったく異なった物理的挙動をさせることができます:

    • デフォルトのFirst Orderインテグレータは、もっと人工的な減衰をします。これは非常に速く収束します。

    • Second Orderインテグレータは、もっと精度が良いです。これは、よりエネルギーをより活動的に維持し、動きをより長く維持します。 必要に応じてDamping Ratioを上げることで、もっと速く収束させることができます。

    この2つインテグレータタイプの見た目は、サブステップを上げると収束していくので、どちらもリアルに近づいていきます。

オブジェクト

  • Initialize behavior ポップアップには、いくつかの材質の物理的にリアルなプリセットがあります。

  • Shape Stiffness は、Solid Objectがその元の形状を局所的に維持する強度を制御します。この値が高いほど、オブジェクトが変形に抵抗する内部フォースが強くなり、オブジェクトがより硬くなります。

  • Volume Stiffness は、Solid Objectが体積を局所的に維持する量を制御します。

  • マテリアルモデルが等方性( Enable Anisotropy が無効)の場合、 Volume StiffnessShape Stiffness はLaméパラメータに関係します。モデル化したいマテリアルのLaméの1番目と2番目のパラメータを知っている場合、 Volume Stiffness にLaméの1番目のパラメータを、 Shape Stiffness にLaméの2番目のパラメータの2倍を設定することができます。

  • オブジェクトは押し込むと横に広がる性質を持ちます。この挙動をポアソン効果と呼びます。Volume Stiffnessを上げると、この効果が強くなります。コルクなどのいくつかのマテリアルでは、この効果がまったくありません。

  • 形状維持と体積維持の概念は、よく混同しがちです。Volume Stiffnessは、それ自体だけで使用することはなく、 Shape Stiffness とバランスを取るのに常に必要です。

  • Solid ObjectまたはHybrid Objectの Enable Anisotropy トグルを有効にすることで、異なる方向に異なる材質強度を適用することができます。それらのパラメータは Anisotropy U, Anisotropy V, Anisotropy W です。これは、木材などの特定の異方性マテリアルの生成に役立ちます。 Anisotropy の機能を無効にすると、その挙動は等方性になります。つまり、材質がすべての方向で同じ様に反応して変形します。

Solid Objectの Deformation タブにある Embedded Geometry パラメータを使用することで、そこに埋め込むジオメトリを手動で設定することができます。

個々のポイントの拘束

Solid Object上の特定のポイントを拘束することで、それらの位置を維持したり(ハード拘束)、それらの位置に 戻そうと する(ソフト拘束)ことができます。

  1. Solid Objectを選択します。

  2. Solid シェルフで、 Constrain Points to Targetツールをクリックします。

  3. 拘束したいポイントを選択して、Enterを押します。

    このツールは、選択したポイントに対して拘束を作成するTarget Constraintノードを追加します。

  4. パラメータエディタでは、そのTarget Constraintノードの拘束の Type を設定します。

    • このタイプを Hard に設定すると、それらのポイントがターゲットのアニメーションに正確に追従するようになります。

    • このタイプを Soft に設定すると、 Soft Controls タブのパラメータを使用することで、ソルバがそれらのポイントをその位置に戻すためのフォースと減衰を設定することができます。

  5. Import Target Geometry を有効にした後は、これらの拘束のターゲットとして使用する Target Deformation ジオメトリオペレータを指定することができます。

ジオメトリのアニメーション

シミュレーションしたジオメトリをいくつかの方法でアニメーションさせることができます。

  • 位置や向き以外のRest Geometry(静止ジオメトリ)のアトリビュートをアニメーションさせることができます。Solid Objectノードの Deformation タブにある Rest Shape を有効にします。

    さらに“Target Deformation”を指定することができます。これは、Finite Element Solverがシミュレーションオブジェクトとブレンドを試みるアニメーション/変形するモデルジオメトリのことです。 Solid Objectノードの Deformation タブにある Target Deformation を有効にします。

    デフォルトでは、どちらのオプションもソースジオメトリを使用するようにセットアップされます。SOPネットワーク内のノードを参照するようにパスを変更することができます。

    Finite Element Solverは、シミュレーションオブジェクトのポイントをTarget Geometry上のそれに該当するポイントポジションまで動かすためのフォースをそのオブジェクトに適用します。 これらのフォースは、そのオブジェクトに作用している他のフォース(例えば、重力)すべてと“競合”していることを知っておくことが重要です。

    Target Stiffness パラメータには、Finite Element SolverがそのTargetの“方へ向かう”フォースを適用する強さを指定します。 オブジェクトの質量とそのオブジェクトに作用している他のフォースによっては、この効果が現れるのに大きな値を入力する必要がある場合があります。

    ソルバによって追加されたこの“Target”フォースは、そのTaget Geometryを 通り過ぎて シミュレーションオブジェクトを押してしまうことがあります。 そして、ソルバは、そのTaget Geometryに戻そうと反対方向にターゲットを押し戻そうとして、ヨーヨーのような効果になります。 Target Damping 値を上げることで、この効果を弱めることができます。

    このTaget GeometryのポイントにはVelocity(v)アトリビュートを付けてください。アニメーションジオメトリにVelocityアトリビュートを付けるには、Trail SOPを使用します。

    上級ユーザなら、pintoanimation, targetstiffness, targetdamping, targetP, targetVの頂点アトリビュートを使って、ターゲットを頂点レベルで制御してもよいでしょう。

  • SOP Solverを使用することで、オブジェクトのGeometryデータのアトリビュートを変更でき、さらにトポロジーを変更(四面体の追加と削除)することもできます。Finite Element Solverは、ステップ間で変化するシミュレーションジオメトリをうまく処理することができます。

    上級ユーザでは、SOP Solver内に独自の粉砕テクニックを実装して、Multisolverをセットアップすることで、そのSOP SolverをこのFinite Element Solverと組み合わせるといったことをしています。

    SOP Solver内にTetrahedralize SOPを使用すれば、シミュレーション中に四面体メッシュを洗練化することもできるはずです。

  • ハードとソフトのCloth拘束を使用することで、四面体メッシュの個々のポイントを動かすことができます。

ヒントとメモ

  • Finite Element Visualizationノードを使用することで、メッシュ品質、反転、エネルギー密度、ノードフォース、衝突検出/解像度といったシミュレーションの色々な局面を可視化することができます。それらのほとんどは、Solid ObjectやHybrid ObjectのAttributeタブのそれに該当する項目を有効にすることで表示させることができます。

  • forcefexternalのアトリビュートを使用しないでください。これらのアトリビュートでは、Finite Element Solverを正しく動作させるのに十分な情報が備わっていません。代わりに、 Target StrengthTarget Damping のパラメータで制御するソフト拘束、ターゲット拘束、領域拘束を使用します。これらの拘束によって安定で高品質な結果が得られます。風の効果に対しては、 Drag (抵抗)設定を使用してください。

  • Clipノードを使用することで、Solid Objectの片側を削除して、その中の四面体レイアウトを確認することができます。

  • 木材のシミュレーションに関するTips:

    • 高解像度オブジェクトをEmbedded(埋め込み)にして使用してください。粉砕させるジオメトリを高解像度ジオメトリに使用し、正四面体メッシュを低解像度ジオメトリに使用してください。

    • その高解像度ジオメトリ内に長い破片の四面体を作成するには、まず短いモデルを作成し、それを四面体化してから、Transformで、その結果のメッシュをそのモデルと同じ長さにスケールします。

トラブルシューティング

  • 品質を上げるには、Finite Element Solverの Substeps を上げます。通常では、これによってほとんどの問題が解決します。

  • オブジェクトが衝突ではなく貫通している場合は、Finite Element Solverの Collision Passes を上げます。

  • フレーム間で大きく 回転の 変化がある場合、サブステップを上げても解決しないので、シーンのFPSを(フィルムがスローモーションになるように)上げる必要があります。

  • 粉砕のシミュレーションをした時に、一度に 非常に多くの 粉砕が起こらないようにするには、以下の事を試してください:

    • 四面体をまとめてグループ化します。Solid Fracture SOPを使ってfracturepartアトリビュートを作成します。同じfracturepart値の四面体が一緒にまとまります。

    • Solid ObjectFracture Threshold を上げます。これは、破片を分離させるのに必要なフォースの大きさを上げます。

    • (DOPネットワークではなく)Finite Element Solverのサブステップ数を上げます。

  • Encountered badly shaped tetrahedrons when calculating forces: これは、Solid Objectのどれかに不良の四面体があることを意味します。以下に、四面体メッシュを作成するガイドラインを載せています。

  • Exceeded the maximum linear solve iterations: 一般的に線形計算は、サブステップを多く使用するほど反復が少なく済みます。問題が解消されるまで Substep を上げてシミュレーションの再実行を試してください。

  • Found nodes with near-zero masses: オブジェクトの一部にゼロまたは非常にゼロに近い質量が含まれていると、このソルバは安定して動作させることができません。ジオメトリに体積のない四面体があるかどうか、または、面積がゼロのポリゴンがあるかどうかを確認してください。それがあるのが原因で動作しない場合は、 Solid Objectの Mass Density パラメータとそのジオメトリ上のそれに該当する乗数アトリビュートをすべてゼロ以上にしてください。

Finite Elements(有限要素)

はじめよう

次のステップ

ソルバテクノロジー