Unity を検索

Unity の確率論的プロシージャル・テクスチャー生成

2019年2月14日 カテゴリ: テクノロジー | 3 分 で読めます
取り上げているトピック
シェア

大きなサーフェスを覆ったり、細かなディテールをメッシュに追加する際に、タイル化されたテクスチャーを使ってみたことはあるでしょうか?使ったことがある方なら、タイリングの値を高くした途端に反復パターンが目立ってしまう現象をご存知でしょう。Unity Labs では、この問題を回避する新しいテクスチャリング技術「確率論的プロシージャル・テクスチャー生成」を開発しました。

タイル化されたテクスチャーは、3D シーンにディテールを追加するのに便利なツールです。しかし、これと詳細マップを併用して大きな領域のテクスチャリングを行ったり、非常に詳細なサーフェスを作ろうとすると、タイリングの反復パターンがはっきり見えるようになってしまいます(下の左側の画像をご覧ください)。一般的には、こういった反復パターンを分かりにくくするには、より大きなテクスチャーを使用するか、追加的なオブジェクトでパターンを隠す必要があります。本記事では、錆、苔、樹皮などのランダムな(確率論的な)見た目を持つテクスチャ―用に、この問題を解決するプラグインを提供します。このプラグインを使用すると下の右側の画像のような結果を得られます。

【錆ついた金属マテリアルの例】左側は通常のテクスチャリング、右側は上述の技術を使用

プラグインのダウンロードはこちらで行えます。

本プラグインは、特定の入力に対して、その入力の見た目に合う無限テクスチャーをプロシージャル生成します。これは、最先端のテクスチャーブレンディング機能(入力テクスチャーに修正を加えたバージョンを扱い、フラグメント毎にテクスチャ―サンプルを 3 つだけ必要とする)を使用して、小さなルックアップテーブルをフェッチすることで行われます。本プラグインはタイリングの必要性を回避するので、反復のパターンを目立たせることなく、小さなテクスチャーを使って高い詳細度で大きなサーフェスを覆うことが可能となります。

StandardStochastic シェーダーを使用する

本プラグインは、Unity パッケージに含まれる Standard シェーダーのバリアントを提供します。パッケージをインポートした後で、マテリアルに StandardStochastic シェーダーを選択してください。インターフェースは基本的に Standard シェーダーと同じですが、上に制御できる項目が 2 つ追加されています。これらは 2 つの必要設定手順に対応するものです。

  1. Stochastic Inputs メニューでは、どの入力テクスチャーに対してこの新しいテクスチャリング技術を有効にするかを指定できます。すべてのテクスチャー(「Everything」)、あるいは特定のテクスチャー([例]アルベド、法線マップなど)に設定可能です。
  2. Apply ボタンを押すと、Stochastic Inputs で選択した入力テクスチャ―に対してデータの事前計算が行われ、マテリアルが更新されて処理が完了します。このステップによって、入力テクスチャー毎に 2 つの中間テクスチャ―が同じフォルダー内に生成されます。

追記事項

  • 生成時間を省略するために、既存の中間テクスチャーが検知されるとそれらが読み込まれます。したがって、元々のテクスチャーに何らかの変更を加えた場は、Apply ボタンを押す前に、中間テクスチャーを(強制的に再生成するために)両方とも削除する必要があります 。
  • Standard シェーダーと StandardStochastic シェーダーとの間で切り替えを行う場合、パラメーターは相互に伝達されます。
  • Specular ワークフローを使用したマテリアル用に StandardStochastic(Specular setup)シェーダーも提供されています。

以下の画像は、本プラグイン(プロトタイプ版)で、小さな(256²)入力テクスチャーを使用して各種マテリアルの処理を行った例です。

アルベド・法線・オクルージョンテクスチャーを使用した木材の詳細マップ
アルベド・法線・オクルージョン・ハイトテクスチャーを使用した石材のマテリアル
アルベド・法線・Metallic/Smoothness テクスチャーを使用した鉄のマテリアル

制限事項

この技術の使用が適しているのは、タイル化可能な、確率論的テクスチャーまたは「ほぼ」確率論的なテクスチャーのみです。つまり、遠くから見たランダムなノイズのようなテクスチャーや、自然界に典型的に見られるような、厳密な形状のないマテリアルに適しています。

フィードバック

本プラグインは研究用のプロトタイプであり、正式に本格的な開発が進められているものではありません。したがって継続的な運営やサポートは保証されていませんが、ご質問やフィードバックはUnity フォーラムのこちらのスレッドへお気軽にご投稿ください。Unity では現在、シェーダーグラフのカスタムシェーダー用の実装および新しいレンダーパイプラインとの互換性の構築に取り組んでいます。最新の情報は、フォーラムのスレッドをぜひチェックしてください!

参考資料

本プラグインの仕組みを詳しくお知りになりたい方は、Unity から最近公開された 2 つの研究論文をお読みください。本プラグインの基盤となる技術についてご紹介しています。

本プラグインに含まれるコードには、上記の「技術記事」の特定の箇所を参照したコメントが記載されています。

2019年2月14日 カテゴリ: テクノロジー | 3 分 で読めます
取り上げているトピック