動的なストロークのパフォーマンス

動的ストロークにとってSubstanceグラフの性能は非常に重要である。なぜならSubstanceは非常に短時間で何度も再生できるからである。 計算が重すぎると遅延が発生し、ペイント時に動きが止まってフリーズすることがあります。 そのすべてが、悪いペイント体験を作成することになります。 このページでは、ダイナミックストローク機能の使用に関する情報と推奨事項をまとめています。

計算が重くなる場合がある

計算が様々なコンテキストに影響を与える可能性があることを知っておくことも重要です。

  • ペイント時 :ペイント中にダイナミックストロークが(設定に応じて)生成されます。 設定を間違えると、ペイントが遅くなり、遅くなる可能性があります。
  • プロジェクトを再度開く場合 :ペイントのプロセスが正常に完了した場合でも、プロジェクトを開くと計算が停止する可能性があり、プロジェクトを通常より開く時間が大幅に長くなります。 これは、計算が時間の経過とともに広がったため、最初のペイントプロセスは問題なく行われたためです。ただし、プロジェクトを開くときにはほぼ同時に行われます。 つまり、ダイナミックストロークが適切に設定されていない場合、プロジェクトによって大量の一意のSubstanceが要求される可能性があります。
  • メモリ使用量 :グラフに対してバリエーションを大量に生成すると、大量のメモリを消費することになります(これらの生成は稼働中に生成されるため、揮発性です)。

ジッターと間隔設定の使用

Substance自体の中に印象的な効果や高度な効果を簡単に組み込むことができますが、Substance 3D Painterのツールパラメーターを元の設定に戻して使用し、シンプルにした方が便利な場合があります。 これらの設定を使用すると、エンジンの計算が大幅に高速化されます。

  • ジッター :これらのパラメーターを使用すると、Substance(角度、位置、不透明度など)を再計算せずに一部の属性を変更することで、ランダム度を非常に低コストで設定できます。
  • 間隔 :間隔が小さいほど、ストロークをペイントする際に作成されるスタンプ数が多くなります。 ブラシストロークを何度も使い続ける必要がない場合や、間隔を大きくしてアルファ/マテリアルの効果を確認する必要がある場合があります。

ランダムに使用するタイミングと種類

ランダムシードは、ユニークさを生み出す優れた方法です。 問題は、生成にコストがかかることと、ダイナミックストローク機能の場合、適切に微調整しないと非常に頻繁に発生する可能性があることです。 ランダムシードを使用する場合と使用しない場合を理解し、代わりの方法を使用してビジュアルとパフォーマンスのバランスを最適化することは重要です。

  • スタンプあたりのランダムシード :この場合、スタンプごとに新しい一意のSubstanceが作成されます。 これは、木板に独特の爪を作成する場合などに適していますが、インクやペイントの軌跡を作成する場合には適していません。
  • ストロークあたりのランダムシード :現在のブラシストロークに対して一意のランダムシードが作成されます。 これは、スタンプがほとんどない場合に、ストロークごとに新しいバリエーションを使用する必要がある場合(スプレーエフェクトなど)に便利です。
  • 静的ランダムシード :Substanceは1回生成され、変更されません。 パフォーマンスには最適ですが、ニーズによっては制限が厳しすぎる可能性があります。

時間 ($time)はどうですか?
時間は、非常に特殊な外観を作成する場合に便利ですが、実際には、Substanceグラフで使用する最も高価な変数の1つです。 これは、ブラシストローク間で同じような値を取得するのが非常に難しいため、ブラシエンジンは常に新しいバリエーションを生成する可能性があるためです。 可能であれば、間隔と印鑑インデックスを使用することは避けてください。これらを組み合わせると、同様の結果が得られます。

StampIndexおよびStampCycleCountの使用

StampIndex​は、ブラシストローク内の個々のスタンプのIDです。 デフォルトでは、0から始まり、新しいスタンプごとに1ずつ増えます。 StampCycleCount​は、一意のインデックスの量を制限し、Substance 3D Painterに対して、既に生成されたSubstanceグラフをリサイクルまたは再使用するように指示する手段です。 現在のIDが上限に達すると、Substance 3D Painterが0から再開し、ループが発生します。

したがって、良好なパフォーマンスを維持しながらランダム度を維持する最適なソリューションは、サイクル数を次のように利用することです。

  • StampIndex as RandomSeed :Substanceグラフを作成するときに、ランダムシードを絶対として設定できます。 これにより、スタンプインデックスとして使用できるカスタム値を指定できます。 これにより、ストローク内のスタンプごとに一意のグラフバージョンが作成されます。
  • StampCycleCount​と組み合わせる:新しいバリエーションの限定セットを実際に作成し、再利用できます。
  • ランダム開始 :循環回数が0ではなくランダム値から開始するように設定されている場合、既に生成されたグラフのプール内のストロークごとに、開始時に異なるSubstanceバージョンを使用することになります。

パラメーター値に基づいて計算を無効にする

Substance 3D Painterでは、Substanceグラフー内に計算が隠されているだけで、同じ出力が得られるパラメーターを微調整するタイミングを判断できません。 これは基本的に黒いボックスです。

パラメータを微調整したり動的ストロークを使用してペイントするときのパフォーマンスを向上させるために、Substanceグラフのuserdataフィールドに条件付き値を使用して新しいグラフインスタンスを生成するタイミングを指定することができます。

指定可能な値は次のとおりです。

変数
使用方法
IsStampIndexActive
ペイント中にスタンプインデックスを変更するかどうかを決定するために使用します。
IsRandomSeedActive
ペイント中にランダムシードを変更するかどうかを決定するために使用します。
IsTimeActive
ペイント中に時間($time)をインクリメントするかどうかを決定するために使用します。

以下に例を示します。

IsRandomSeedActive=input.roundness_jitter>0 || input.flip_x_jitter || input.flip_y_jitter

この場合、グラフパラメーター(識別子) 丸み_ジッター​が0より大きい場合、またはブール値​ flip_x_ジッター ​または​ flip_y_ジッター ​が有効になっている場合にのみ、ランダムシードが変更されます。 条件を満たさない場合、グラフは再生成されません。 グラフパラメーターのプレフィックスには「input.」を指定する必要があります。 」と書かれていた。

recommendation-more-help
substance-3d-painter-help-guide