前回の続きで、コインをShade3DからSubstance Painterに持って行って3Dペイントします。
その後、Shade3Dでusd形式(拡張子usdz)でファイル出力し、iPhone/iPadOSに持って行ってARします。
Shade3Dからfbx形式でエクスポート
Shade3DからSubstance Painterに渡すために、fbx形式でエクスポートすることにしました。
コインは、マスターサーフェス(マスターマテリアル)を与えておきます。
UVも割り当て済みです。
FBXエクスポート時は「ジオメトリ」タブで「面の頂点の法線を出力」チェックボックスをOnにして出力します。
Substance Painterで3Dペイント
※ コイン自身は単純な汚れになるため、Substance Painterを経由せずに直接ペイントツールで描いたテクスチャをShade3Dに渡しても問題ないかと思います。
Substance Painter 2018を使用しました。
メインメニューの「File」-「New」でfbxファイルをインポート。
「TEXTURE SET SETTINGS」ウィンドウで「Bake Mesh Maps」ボタンを押して、Occlusionなどのベイク計算を行います。
バンプマップを読み込み
いったんプロジェクトを保存します。
SHELFウィンドウで「Project」を選択し、前回Affinity Designerで作成したバンプ用のテクスチャをドラッグ&ドロップします。
Import resourcesダイアログボックスが表示されるので、イメージの種類を「texture」に、ダイアログボックス右下の「Import your resource to」で「project ‘xxxx’」とプロジェクト名のを指定します。
以下のようにバンプのイメージが読み込まれました。
バンプマップをFill Layerで追加
LAYERSウィンドウでFill Layerを追加。
PROPERTIESウィンドウで「Height」以外を無効にし、SHELFのProjectより、バンプマップのイメージをHeightにドラッグします。
以下のようになりました。
ペイントしていく
Goldなマテリアルになるようにレイヤを重ねて調整しました。
ペイント作業自身は省略します。
glTFでエクスポート
Shade3Dにテクスチャを渡すため、Substance PainterからはglTF形式でエクスポートします。
メインメニューの「File」-「Export textures」を選択し、Export documentダイアログボックスで
エクスポート先のフォルダを指定、Configで「glTF PBR Meal Roughness」を選択してExportボタンを押します。
エクスポートされたファイルのうち、3つのpngファイルをテクスチャとして使用します。
Shade3Dでマテリアルを調整
Shade3Dに戻ります。
Substance Painterで作成したglTF向けに出力した3つのテクスチャを読み込みました。
これからの手順は、DOKI for Shade3D( http://www.ft-lab.ne.jp/shade3d/DOKI/ )や、
glTF Converter ( https://github.com/ft-lab/Shade3D_GLTFConverter )
USD Exporter ( https://github.com/ft-lab/Shade3D_USDExporter )
でのPBRマテリアルとしての指定になります。
Shade3Dの標準レンダリングとは結果が異なります。
なお、USD形式のエクスポートを行うため、USD Exporter for Shade3D ( https://github.com/ft-lab/Shade3D_USDExporter ) はあらかじめプラグインとして設定しておくようにします。
マスターサーフェスを選択し、表面材質ウィンドウで以下の指定を行います。
パラメータ | 値 | 説明 |
---|---|---|
拡散反射 | 1.0/白 | PBRマテリアルのベースカラー |
反射 | 1.0/白 | PBRマテリアルのメタリック |
透明 | 0.0 | PBRマテリアルの透明度(使用しないため0.0) |
屈折 | 1.5 | PBRマテリアルの屈折。メタリックでも使用されるため1.5を指定のこと。 |
荒さ | 1.0 | PBRマテリアルのラフネス |
「拡散反射」「反射」「荒さ」については、テクスチャマッピングを乗算で与えるため最大値にしています。
マッピングは以下を指定しました。
マッピング | 合成 | チャンネル合成 | 説明 |
---|---|---|---|
イメージ/拡散反射 | 乗算 | アルファ乗算済み (デフォルト) |
BaseColorのマッピングを指定 |
イメージ/法線 | 通常 | アルファ乗算済み (デフォルト) |
Normalのマッピングを指定 |
イメージ/荒さ | 乗算 | グレイスケール(G) | Roughnessのマッピングを指定 |
イメージ/反射 | 乗算 | グレイスケール(B) | Metallicのマッピングを指定 |
Occlusion(glTF/USD)/拡散反射 | 乗算 | — | Occlusionのマッピングを指定 |
glTFとして出力されたテクスチャを使用する場合、
Occlusion(R)/Roughness(G)/Metallic(B)にパックされて割り当てられているため、チャンネル合成で分けて与えるようにします。
「Occlusion(glTF/USD)」レイヤは、glTF ConverterまたはUSD Exporterプラグインで割り当てることができるレイヤです。
これがOcclusionとして出力されます。
これでマテリアルの指定は完了です。
エクスポートするのが目的のため、レンダリングは不要です。
参考までにDOKI for Shade3Dで「PBRマテリアル」として割り当ててレンダリングすると以下のようになります。
「DOKI for Shade3D」「glTF Converter for Shade3D」「USD Exporter for Shade3D」は、
マテリアルについては表面材質ウィンドウで「PBRマテリアル」と仮定して指定することで、
設定を共有できます(パラメータを変えることなく同じPBRマテリアルで再現される)。
USDファイルとしてエクスポート
Shade3Dでの作業になります。
USD Exporter for Shade3D ver.0.1.0.2を使用しています。
メインメニューの「ファイル」-「エクスポート」-「USD」を選択します。
エクスポートダイアログボックスでチェックする点は2点です。
「Appleのusdz互換」チェックボックスをOnにします。
これにより、iPhone/iPadOSのARで見たときに極力破綻しないように出力します。
具体的にはusdzファイル内に格納するファイルはバイナリ形式のusdcと画像ファイル、メッシュの面はすべて三角形分割して出力します。
「テクスチャを加工せずにベイク」チェックボックスをOnにします。
これにより、表面材質のパラメータをPBRマテリアル用に指定したとしてUSDに出力します。
これらのエクスポート作業により、拡張子「usdz」のファイルが出力されます。
usdviewでusdファイルを見る (参考)
Pixar社が提供しているUSDライブラリに付属のusdviewで出力したコインを見ると、以下のようになりました。
このビュワーを使うためには、USDをビルドする必要があります。
NVIDIA社がUSDをビルドしたファイル一式を公開されていますので、これを使うとusdを見ることができます。
https://developer.nvidia.com/usd
iPhoneのAR Quick LookでARで見る
iCloud経由で出力したusdzファイルをiPhoneに送ります。
「ファイル」アプリでiCloud Drive内のアップロードしたusdzファイルを選択します。
カメラを通してARとしての位置合わせが行われ、ARとして以下のように配置されました。
ただし接地感に欠けます。
現状は、影については別途追加したほうがリアルになると思います。
次回、ニセ影を追加していきます。