AR Quick View対応のusdzのアレコレ

イマイです
前回の記事で簡単なARQuickViewの表示をする記事を書きましたが
あの後調べたら色々問題点があったのでその辺を今回はもう少し詳しく書いてみます。
まだ私の調査不足で間違っているところなどあるかもしれません…!
もし間違っているところなど有ればご指摘ください!

VECTARYの欠点

前回はusdzを書き出す際にVECTORYのサイトで書き出すという方法を採用しましたが、これには以下のような問題点があったようです。
・テクスチャを設定できない
・アニメーションを設定できない
色々調べたのですがこの二つはVECTORYは現時点では設定出来ないようです。
(私の調査不足かもしれませんが…)

この二つを解決するためには今の所公式のXcode10のCommandLineToolsを使うしかなさそうです。
今回はこちらのやり方を書いてみます。

必要なもの

以下が今回の作業で必要なものになります。
・macOS High Sierra以上のMacOS(私はMojaveでやりました。)
・Command Line Tools
・モデル
・テクスチャ

※現段階ではXcode10は正式にリリースされていないのでAppleのデベロッパ登録が必要になります。

インストール

まず環境を整えます。
Command Line Toolsをインストールします
基本的にはXcode10(β)をインストールすれば良いです。

CommandLine Toolsのみを使用したいという方はこちらのサイトからデベロッパのアカウントでログインしてください。
左の検索窓からCommand Line Tools for Xcode10を選択してインストールします。
この時OSのバージョン不足だったりするとインストールを完了できません。
(Xcode全体をインストールすることをお勧めします。Command Line Toolsのみでは正しく動作しない可能性があります。)

インストールしたらXcodeを起動して
上のメニューからXcode>Preference>LocationsのCommand Line ToolsにXcode10が設定されていることを確認します。

ここでもし選択項目にXcode10が表示されない場合はCommandLineToolsのみインストールし直してみてください。
ここが確認できたら後はターミナルでコマンドを使ってusdzを作ります。

コマンドでusdzを作成

変換できるのは.objまたは.abcです
また、.abcはアニメーションを含むことができないようです。(要検証)

usdzへ変換するコマンドは以下のようになります。

xcrun usdz_converter

実際に使うときは
※変換されるファイルがあるディレクトリまで移動してから

xcrun usdz_converter ホゲ.obj ピヨ.usdz

ホゲ.objが変換されるファイルで、ピヨ.usdzが変換後のファイルとなります。

変換されるファイルがデスクトップにある場合は

/Users/ユーザ名/Desktop/hoge.obj /Users/ユーザ名/Desktop/piyo.usdz

でも可能です。
第二引数の値で階層を指定して書き出すことができます。

ここまで実際にやってみて以下のようなコマンドが表示されると成功です!

usdzファイルが出力されていると思います

テクスチャを設定する

ここで出力されたオブジェクトをみてみると
真っ白になってしまっているのがわかるかと思います。

ここからはテクスチャの設定の仕方を書いていきます。
まず、usdzはテクスチャ情報を持っているので全て変換時に指定してあげる必要があります。

試しにこんな感じのテクスチャを作りました。


これを書き出します。
テクスチャ名はCube_textureです。
※作業するファイルは同一階層にある必要があります。

コマンドを使うところは先ほどまでと同じなのですが、-color_mapオプションをつけます。
以下のように全て同じものが同じ階層にある状態でコマンドを打ちます。

xcrun usdz_converter test.obj hoge.usdz -color_map Cube_texture.png

すると今度はきちんとテクスチャが反映されています!

このように変換時に設定してあげることできちんと反映されます。
ここまで作業したusdzファイルをARで見れるようにしてみました。
(iOS12以上のsafariのみ正しく表示されます)
  
  

こんな感じでusdzにテクスチャを反映させることができましたね!
この他にも
以下のようなオプションがあります!

-color_map //カラーマップ
-metallic_map //メタリックマップ
-roughness_map //ラフネス
-normal_map //ノーマルマップ
-ao_map //AO(AmbientOcculution)マップ
-emissive_map //放射(光)マップ

自分の必要に応じて色々試してみましょう!!

例のごとく今回使ったファイルをこちらにあげておきましたので
作るのめんどくさいんじゃーって人は使ってください。

usdzファイルは現在はデベロッパー登録が必要だったりと敷居が高いですが今後
もっと楽に作れるようになるといいですね!

それではこの辺で!良いハッキングライフを〜