コインをモデリングしてiPhoneのAR Quick LookでARする その2

  • by

前回の続きで、コインを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として以下のように配置されました。

ただし接地感に欠けます。
現状は、影については別途追加したほうがリアルになると思います。
次回、ニセ影を追加していきます。