SDF 関数の操作
バージョン16.0.0で、Substance 3D DesignerはSDF 関数を作成するための強力なノードのセットを導入しました。このノードを使用して、プロシージャルした3Dシェイプを作成および操作できます。
SDF 関数は、ツールセットで使用可能なSDFノードを組み合わせたSubstance関数グラフで、SDF 関数をサポートするノードの専用パラメータに適用されます。
作業を開始する前に、基本的なワークフローを以下に示します。
- 3Dビューアノードで、結果を視覚化するSDF 関数を作成します。
- 最終的な関数グラフをコピー(またはインスタンス化)して、Shape splatter v2などのSDF 関数をサポートするノードのSDF 関数パラメーターにコピーします。
SDF 関数とは
これらの機能は、画面の描画、影のキャスト、コンターマスク、衝突検出など、コンピューターグラフィックスで多くの用途に使用されています。
Substance 3D Designerでは、SDF 関数を使用してプロシージャルした方法で3Dシェイプを作成および操作します。
SDF 関数の出力と意図された使用
SDF 関数ノードは、1つの浮動小数値、つまり最も近いサーフェスへの符号付き距離を出力します。
しかし、それらにはさらに多くのことがあります。ホストノードが定義する必要がある変数の値を内部的に取得および設定したり、結果のシェイプを操作および描画するために知っておく必要があります。
つまり、これらのノードは、変数をサポートするノードのコンテキストで使用する必要があります。これらのSDF 関数を認識し、ネイティブに統合するためです。
ノードには、シェイプスプラッタv2と3Dビューアが含まれます。
Substance関数グラフ
SDF 関数ノードは専用のSubstance関数グラフで使用されるため、そのグラフの種類でのみ使用できます。
関数として表現するノードパラメーターでは、「関数の編集」ボタンを使用します。
Substance関数グラフについて知っておくべきこと:
- グラフと同様に、nodes コネクターは specialized です。つまり、型🔗を表す一致する色 の他のコネクターにのみ接続できます。
- ノードにはパラメータはなく、入力のみを持つことができます。 (ただし、いくつかの例外があります)。
- グラフには出力ノードが1つあります。 ノードを右クリックし、
Set as outputを選択して出力ノードとして指定します。 - グラフと同様に、基本ビルディングブロックである atomic ノードと、他のSubstance関数グラフを表す instance ノードがあります。
- グラフ内の値に対して演算を実行できる個別の演算子(代数演算子、論理演算子、比較演算子)がありますが、SDFノードには独自の演算子があります
はじめに
SDF 関数を作成するには、まずノードを視覚化して、調整するノードとパラメーターの効果を理解する必要があります。
3Dビューアノードには、ノードを使用して作成された図形を視覚化するための専用モードがあります。SDF 関数の シーンの種類 パラメーターをSDF functionに設定し、関数の編集ボタンをクリックして、SDF 関数自体をホストする関数グラフを開きます。
このノードは、バウンディングフレームやアイソラインなど、より直感的かつ効率的にSDF 関数の側面を視覚化するための専用機能を提供します。
物理的な太陽/空ノードを使用すると、3Dビューアーで環境照明をすばやく設定できます。
| table 0-row-2 0-border-none 1-border-none 2-border-none html-authored no-header | |
|---|---|
|
すべてのSDF 関数ノードとその入力コネクターには、その目的と使用方法に関する詳細を知らせるツールチップがあります。 ぜひチェックしてみてください。 |
|
ノード値の設定
Substance関数グラフのすべてのノードと同様に、SDF 関数ノードにはパラメータがなく、パラメータとして使用される入力コネクターのみが含まれます。
これらの入力の値を設定するには、定数ノードを使用します(浮動小数、浮動小数3、整数3など)。
ノードメニューを使用して通常の方法で作成するか、またはノードから新しいコネクションをドラッグして、一致するタイプのコネクターのフィルタリングされたリストからメリットを得ることができます。
SDF 関数ノードのほとんどの入力コネクターにはデフォルト値があります。この値はツールチップに表示されます。
| table 0-row-2 0-border-none 1-border-none 2-border-none html-authored no-header | |
|---|---|
|
一部の値を常に表示しておく必要がない場合は、 また、コメントを使用して値を追跡することもできます。 |
|
境界フレーム
等値線
SDF 関数ノードカテゴリ
SDF 関数ノードは、その機能と目的に基づいてライブラリ内で分類されます。
必要な数のライブラリビューを作成して、作業スペースを整理できます。これにより、すべての作業を管理しながら、SDF 関数ツールセットをカテゴリ別に整理できます。 ウィンドウ/新規ライブラリの表示に移動して、ライブラリの独立したビューを個別に追加します。
プリミティブ
SDF 関数の基本ビルディングブロック。球体、ボックス、シリンダなどの基本的なシェイプを作成できます。
演算子
これらのノードを使用すると、プリミティブで作成されたシェイプを結合および修正できます。 次のようなものがあります。
変形
図形は、翻訳、回転、拡大/縮小、ねじれなど、さまざまな方法で変形できます。
これらのノードを使用すると、サーフェスが定義されている空間そのものを 変換 することで、これらの変換を実行できます。
このスペースはPと呼ばれます。次のセクションに進むと、このスペースの意味とスペース変換の仕組みについて詳しく理解できます。
マテリアル
SDF 関数を使用して作成されたシェイプに対して、基本的なマテリアルマネジメントが利用できます。
基本的なマテリアルアトリビュート(カラー、粗さ、メタネス)を定義できます。このアトリビュートは、3Dビューアノードでの直接表示に使用したり、シェイプスプラッタv2ノードでのマテリアル作業のベースとして使用できます。
また、マテリアルIDをシェイプの異なる部分に割り当てて、それらを分離することもできます。
これらのノードのアプリケーションの詳細については、以下を参照してください。
'P’入力
オフセットや回転などのトランスフォームをシェイプに適用すると、シェイプが定義されている空間が実際にトランスフォームされます。
トランスフォームを他のシェイプに適用する場合(例えば、複数のシェイプを同じように回転させる場合)、トランスフォームされた同じ領域を使用している必要があります。
変換されたスペースは、専用のP入力を使用してノード間で共有されます。この入力は、ほとんどのSDFノードで見つけることができます。
'P’はワールド空間を表しますP osition:ワールド空間の点の座標を表す3Dベクトルです。
オフセットPおよび回転Pノードは、空間を変換し、その変換を継承するすべてのノードに伝達します。
たとえば、複数のシェイプのP入力を同じ回転Pノードに接続することで、複数のシェイプを一緒に回転できます。
これは単に便宜上の問題ではなく、SDFノードが空間内の同じ位置で動作することを確認するためです。
次に例を示します。
球が繰り返され、空間が3Dグリッドとして表示されます。 スペースを繰り返すことで繰り返されます。
共有Pがない場合、曲がった円柱は球で使用される繰り返しスペースを使用します。
共有Pを使用すると、共有の回転されたスペースで図形を正しく定義できます。
「シェイプスプラッタv2」ノードのSDF 関数の使用
3DビューアノードのコンテキストでSDF 関数を完了したら、関数全体をコピーしてShape splatter v2ノードに貼り付け、そのノードのシェイプジェネレータとして使用できます。
図形の種類パラメーターをSDF functionに設定し、パターンSDF 関数パラメーターに移動して、関数の編集ボタンをクリックして、パラメーターの関数グラフを開きます。
その後、3Dビューアノードからコピーした関数をグラフに貼り付けることができます。 (関数グラフの出力ノードをもう一度設定することを忘れないでください。)
SDF境界フレームサイズパラメータを調整して、3Dビューアーノードで使用していた境界フレームと一致させ、シェイプが正しく描画されていることを確認してください。
図形の種類がSDF functionに設定された図形スプラッタv2。SDF境界フレームサイズがシェイプに合わせて調整されています。
- 関数に対して行った更新は、両方のノードに反映されます。コピー&ペーストの必要はありません。 これは、複雑なシェイプのQOLを大幅に改善したものです。
- グラフには、インスタンスノードに表示される説明的な名前を付けることができます。これにより、独自のSDFシェイプのライブラリを使用する方がはるかに管理しやすく、グラフを読みやすくすることができます。
- Getノードで使用できる関数グラフの入力を作成できます。 これらの入力は、インスタンスノードで入力コネクタとして公開され、シェイプのバリエーションを簡単に作成できます。
マテリアル ID
SDF図形にはマテリアルIDを割り当てることができます。マテリアルIDは整数値で、図形の一部を区別したり、3Dビューアおよびシェイプスプラッタv2のノードでSDF図形に異なるマテリアルを割り当てたりするのに使用できます。
以下の例に示すように、異なるマテリアルIDを持つサーフェスは、ブレンドされたシェイプを横切るようにハードエッジで分割されます。
特定のマテリアルIDを使用してタグ付けする図形の部分の後にマテリアルIDの設定ノードを使用し、Integer定数ノードを使用して、必要なマテリアルID値を設定します。
3Dビューアーノードで、OutputパラメーターをMaterial IDに設定して、図形のマテリアルIDを表示します。
右側では、2つの3Dビューアーノードの出力が合成され、シェイプ(左)とそのマテリアルID (右)が表示されます。これにより、ブレンドしたシェイプで、マテリアルIDを分割している間にマテリアルがどのように補間されるかが示されます。
マテリアルIDは、Shape splatter v2コンパニオンノードで活用できます。
- シェイプスプラッタv2マッパーノードは、これらのマテリアルIDを使用して異なるパターンを割り当てることができます。
- シェイプスプラッタv2をマスクするは、マテリアルIDに従ってシェイプの一部をマスクできます。
カラー、ラフネス、メタネス
色の設定、ラフネスの設定、およびメタネスの設定ノードを使用すると、SDF 関数内の図形に対してこれらのマテリアル属性を定義できます。
その後、そのSDF 関数をShape splatter v2ノードでシェイプの種類として使用する場合、これらのマテリアル属性は、ノードのSDFカラー、SDF ラフネスおよび SDFメタネス 出力でマップとして使用できます。 これらのマップは、他のノードを使用する、より複雑なマテリアル作業のベースとして使用できます。
以下の例に示すように、マテリアル IDとは異なり、値はブレンドされたシェイプ間でグラデーションとして 補間 されます。