今回は初心者向けチュートリアルとして、1つのTexture Setしか持たない単一オブジェクトの異なる部分に、2種類のマテリアルを割り当てる方法を見ていきます。つまり、1つのMaterialだけを持つ単一ジオメトリとして提供されたオブジェクトに対して、異なるSubstance Materialを割り当てる方法です。そのために、今回はマスクを使用します。
動画の書き起こし
みなさんこんにちは。今回は初心者向けチュートリアルとして、1つのTexture Setしか持たない単一オブジェクトの異なる部分に、2種類のマテリアルを割り当てる方法を見ていきます。つまり、1つのMaterialだけを持つ単一ジオメトリとして提供されたオブジェクトに対して、異なるSubstance Materialを割り当てる方法です。そのために、今回はマスクを使用します。
それではまず、「PBR Metallic Roughness」テンプレートを使用して新しいSubstanceプロジェクトを作成し、もちろん使用したいモデルをインポートしましょう。

このチュートリアルで使用するモデルを見てみましょう。まず注目してほしいのは、Texture Set Listに「can_opener_2」という1つのエントリしか存在しない点です。つまり、この3Dモデルは1つのMaterialを持つ単一オブジェクトとして提供されています。そのため、このオブジェクトの各部分に異なるSubstanceマテリアルを割り当てるのが今回の目的になります。

3Dビュー右上にあるビューポートモードセレクターから「2D Only」を選択してください。ショートカットはF3です。そしてFキーを押してUVレイアウトを画面中央に収めます。Fは「frame」の意味です。

UVレイアウトが非常によく作成されていることが分かります。重なっている部分がなく、つまり「non-overlapping」になっていて、さらに下部のハンドル部分が金属パーツから分離されていることも確認できます。そして重要なのは、サーフェスの向きが正しく揃っている点です。特に横方向がきちんと整っています。これは後ほど確認するように、一部のSubstanceマテリアルが縦方向または横方向の木目パターンを持っているため、とても重要です。

UVレイアウトのサーフェスがまっすぐ整っているため、オブジェクト上でマテリアルの木目方向を簡単に調整できます。
それでは3Dビューに戻り、Layersパネルの「Layer 1」を選択して削除します。パネル内のゴミ箱アイコンをクリックしてください。このレイヤーは自由にペイントするためのものですが、今回はネイティブのSubstanceマテリアルを使用したいので必要ありません。

次にShelfパネルで「Materials」を選択し、検索フィールドに「wood」と入力します。Substanceが結果をフィルタリングし、その中に「Wood American Cherry」が表示されるはずです。

このハンドルに最適なマテリアルではないかもしれませんが、少なくとも2019年版のSubstanceにはデフォルトで含まれているため、みなさんの環境にも存在するはずです。別のチュートリアルでは、Substance Sourceからダウンロードしたマテリアルの追加方法や、自作のSmart Materialsを作成する方法も見ていきます。今回は、最初から付属しているマテリアルをそのまま使用します。
マテリアルをクリックして選択し、「Layers」にドラッグしてください。これでマテリアルがオブジェクト全体に適用されます。

木目パターンが確認できますが、先ほど確認したUVレイアウトの向きのおかげで、木目方向が正しく配置されていることが分かります。
Layers内でマテリアルを選択した状態で、「Properties - Fill」パネルを見てみましょう。表示されていない場合は、「Windows」-「Views」から有効化できます。
このパネルは、現在選択されているマテリアルの情報カードのようなものです。今後のチュートリアルでは、フィルターやマスクなどについても見ていきます。基本的には、選択中オブジェクトのプロパティを表示するパネルです。

マテリアルの場合、このパネルには少なくとも「Fill」と「Material」の2つのセクションがあります。
Fillセクションには、すべてのマテリアルに共通する設定があります。これはオブジェクトへのマッピングや投影方法に関するパラメータです。一方、Materialセクションには、Color、Height、Roughnessなど、どの情報チャンネルに影響するかを指定する共通設定と、現在選択中マテリアル固有の設定が含まれています。例えば「Wood American Cherry」には、木材の色、粗さ、木目などを調整するコントロールがあります。
Fill - Projectionセクションを見ると、デフォルトではモデルに含まれているUVマッピングを使用してマテリアルが投影されていることが分かります。そのため、先ほど2Dビューで確認したUVシームの向きが重要になるわけです。
UVマッピング上でマテリアルの向きを変更したい場合は、「UV Projection」を維持したまま、その下にあるRotationパラメータを調整します。

木目パターンの密度を増減したい場合は、Scale値を変更します。これはUVマップ上でのマテリアルのスケール倍率です。この値を下げるとマテリアルは大きく表示され、上げると小さく表示されるため、SubstanceはUVマップ全体を覆うためにマテリアルを繰り返して配置します。これはUV Wrapオプションが「Repeat」になっているためで、タイル状の見た目になる場合があります。

例えばScaleを3に設定してみましょう。これにより、タイル感を強く出さずに、より細かい木目パターンになります。
オブジェクトをさまざまな角度から見ると、マテリアルが溝部分にライティング効果を追加し、実際には滑らかなジオメトリであるにもかかわらず、凹凸があるように見せていることが分かります。Layersで「Wood American Cherry」の横にある目のアイコンをクリックして、一時的に無効化すると確認できます。

Substanceでは、表面の凹凸は主にNormalチャンネルとHeightチャンネルによって表現されます。Properties - Fill - Materialの「Nrm」チェックボックスが無効になっているため、この効果はHeightによるものだと分かります。チェックボックスをオン・オフして3Dビューを確認すると検証できます。

この違いをより分かりやすくするために、3Dビュー右上から表示モードを「Normal + Height + Mesh」に変更し、その後Properties - Fill - MaterialでHeightチャンネルを再度オン・オフしてみましょう。

はい、間違いなくHeightチャンネルです。「Wood American Cherry」Substanceマテリアルにはこのチャンネル用の情報が含まれていて、さらにその強度も調整できます。Properties - Fill - MaterialでParametersセクションを開き、「Height Range」パラメータを変更しながら、3Dビューの変化を確認してください。Material表示モードと横方向からのライティングを使うと分かりやすいです。

このチュートリアルでは、すべてのパラメータを1つずつ説明することはしません。それをやると、かなり退屈で実用性の低い一覧になってしまうからです。その代わり、今後のチュートリアルでは、実際の使用例を通してさまざまな設定や組み合わせを見ていきます。そのほうがずっと面白いですし、もちろん、自分でパラメータを触って効果を試してみるのも自由です。
さて、これで最初のSubstance MaterialをTexture Setに追加し、その一部パラメータも確認しました。しかし、このマテリアルはオブジェクト全体に適用されています。私たちが適用したいのはハンドル部分だけです。では、どうすればよいでしょうか。
最も簡単な方法は、マテリアルにマスクを追加することです。
マスクとは、オブジェクトのUVレイアウト上にマッピングされたグレースケール画像です。白い部分にはマテリアルを適用し、黒い部分には適用せず、グレー部分にはその濃度に応じて適用します。
マスクはSubstance Painterにおいて非常に重要です。今回のようなシンプルな用途だけでなく、フィルターや他のオペレーターと組み合わせた複雑なエフェクトにも使用されます。例えば、エッジの摩耗や、特定部分だけに発生するサビなどを表現できます。
マスクは外部画像から作成することも可能ですが、今回はブラックマスクから始めて、ハンドル部分だけを白くすれば十分です。
「Wood American Cherry」マテリアルにブラックマスクを作成するには、Layers内でマテリアルを右クリックし、「Add Black Mask」を選択してください。

マテリアルプレビューの横に黒い四角が表示されます。これが新しいマスクです。現在マスクが選択されているため、黒い四角の周囲に選択枠が表示されています。また、「Properties - Fill」パネルには、マテリアルとは異なる設定が表示されています。なお、Layersでマテリアルのプレビューを左クリックすれば、再度マテリアル自体を選択できます。3Dビューでは、マテリアルがサーフェス全体から除外されているため、オブジェクトがグレー表示になっています。

マスクの一部を白くする方法はいくつかあり、手動方式と、アルゴリズムによるプロシージャル方式があります。今回は手動方式を使用し、白くしたいUV islandを選択します。

ブラックマスクを選択した状態で、「Polygon Fill」アイコンをクリックしてください。これでToolsパネルに表示されるはずです。必要であれば、「Window」-「Toolbar」-「Tools」から有効化してください。

「Properties - Polygon Fill」パネルで、「UV chunk fill」と呼ばれるチェッカーボードアイコンを選択します。このモードでは、UV island上の任意のポイントをクリックするだけで、その島全体を変更できます。

「Color」が白になっていることを確認し、ハンドル部分をクリックしてください。対応するUV islandが白になります。これは「3D | 2D」表示モードを「Mask」モードに切り替えることで確認できます。また、Materialモードではマテリアルが表示されるため、結果も分かりやすいです。

注意点として、2Dビュー内のUVレイアウトを直接クリックすることも可能です。これを示すために、CTRL Zショートカット、またはEditメニューの「Undo」で先ほどの操作を取り消します。その後、マスクを選択し、UV Chunk Fillモードを白に設定した状態で、2DウィンドウのUVレイアウトを直接クリックします。

ここで別のマテリアルをMaterialsから選択し、「Wood American Cherry」の下にドラッグすれば、残りの部分に適用できますよね。
はい、それ自体は正しいのですが、小さな問題があります。特に「Iron Brushed」のように、別のNormalやHeight効果を含むマテリアルで顕著になります。これはブラシ仕上げの金属で、筋状の表現が含まれています。画面上で確認できる通り、このマテリアルはオブジェクト全体に適用されるため、ハンドル部分にもNormalやHeight効果が追加されてしまいます。

今回の例ではそれほど深刻ではありませんが、別のマテリアルではもっと目立つ問題になることがあります。画面では、Substance Sourceからダウンロードした「Diamond Bicolor Tiles」を使用した例を表示しています。

では、この問題をどう解決すればよいでしょうか。
答えは簡単です。マスクを使ってマテリアルの影響範囲を制限します。
今回は逆の手順で進めます。ハンドル以外のオブジェクト全体を金属にしたいので、Layers内の「Iron Brushed」を右クリックし、「Add White Mask」を選択します。これでオブジェクト全体を覆う白いマスクが作成されます。その後、Polygon Fillを選択し、UV Chunk FillモードでColorを黒、値を0に設定して、ハンドル部分をクリックします。これにより、ハンドルに対応するUV islandだけが黒になり、「Iron Brushed」の効果から除外されます。

まとめると、今回はマスクを使用して各マテリアルの影響範囲を定義し、1つのTexture Set内の異なる部分に複数のSubstanceマテリアルを適用する方法を見てきました。また、2つのマテリアルについてProperties - Fillパネルのいくつかの項目も確認し、基本的なパラメータや設定に慣れていきました。
今回のチュートリアルは以上です。いつものように、疑問点や質問、補足説明のリクエストがあれば、Youtube動画のコメント欄にぜひ書き込んでください。それではまた次回お会いしましょう。