Apple Engine

Apple, iPhone, iOS, その周辺のことについて

Blender から USDZ をつくる

Blender から USDZ をつくみようと思う。
USD のプラグイン的なものがないので、OBJ に吐き出し、Xcode 10 の Command line tools から USDZ に変換する。

 

Xcode 10 の Command line tools については前回の記事を参照。
(現状、Xcode 10 が Beta のため、今回の方法で USDZ に変換する場合は Apple Developer Program 加入が必要)
appleengine.hatenablog.com

Xcode 11 から usdz_converter が Command line tools から外れた。
Apple の Augmented Reality ページからダウンロードする必要がある。
(Terminal からダウンロードしたファイル等の PATH を設定する必要あり)
 

内容的には Blender で OBJ ファイルを書き出し、ターミナルでコマンドを打つだけ。
Blender に関してはどのバージョンでもよいのだが、今回は 2.79 を使用した。

 

Blender でジオメトリを作成する

おさるさんの SUZANNE にテクスチャを設定した OBJ ファイルを作成する。

 

Blender を起動して、立方体を削除する

起動するとスプラッシュが出るのでクリック。
選択された立方体が表示されるので、X キーを押おす。
選択したものを消すか聞かれるので delete を押して消す。

f:id:x67x6fx74x6f:20180619194639p:plain

 

そして Shift + A を押すとメニューが出るので、Mesh > Monky を選ぶ。

f:id:x67x6fx74x6f:20180619195031p:plain

そうするとおさるの顔が表示される。

 

マテリアルを設定する

テクスチャを設定する際にジオメトリの質感であるマテリアルが必要なので、 右側に球体のタブがあるのでクリックして、下の「New」を押す。

f:id:x67x6fx74x6f:20180619195101p:plain

 

おさるさんに質感であるマテリアルが設定される。

f:id:x67x6fx74x6f:20180619195119p:plain

 

テクスチャを設定する

マテリアルのタブの横にチェック模様のタブがあるのでそちらをクリック。
マテリアル同様に下の「New」を押し、
下の「open」ボタンから適当な画像を選択する。

f:id:x67x6fx74x6f:20180619195146p:plain

 

現在のおさるさんにテクスチャを表示したい場合は、画像のピンクの枠をクリックして Material に変更すると表示される。

f:id:x67x6fx74x6f:20180619195201p:plain

f:id:x67x6fx74x6f:20180619195234p:plain

 

変更するのが面倒であれば Shift + Z キーでレンダリング画像になり、戻す場合はもう一度 Shift + Z キーを押す。

 

位置を調整する

N キーを押して Transform の Position の Z 軸を 1 にすると上に上がる。
(Bender は Z 軸が上方向になっている)

f:id:x67x6fx74x6f:20180619195246p:plain

 

必要であれば UV を変更する

おさるが選択された状態で TAB キーを押すと頂点編集のモードになる。
初期状態では全選択になっているので、以下のボタンで球体でマッピングする。

Mesh > UV Unwrap > Sphere Projection

f:id:x67x6fx74x6f:20180619195306p:plain

f:id:x67x6fx74x6f:20180619195330p:plain

 

OBJ に書き出す

File > Export > Wavefront (.obj) を選択して保存。

f:id:x67x6fx74x6f:20180619195339p:plain

デフォルトで obj とテクスチャが設定された mtl ファイルが書き出される。

 

USDZ に変換する

以下の文字をターミナルで入力してコンバート USDZ が作成される。
テクスチャ画像のファイルは obj や mtl と同じ階層に必要なので注意。

xcrun usdz_converter ファイル名.obj ファイル名.usdz

 

本来は以下のように画像とともに設定して変換するが、今回は mtl で参照設定されるため必要がない。

xcrun usdz_converter RetroTV.obj RetroTV.usdz
-g RetroTVMesh
-color_map RetroTV_Albedo.png
-metallic_map RetroTV_Metallic.png
-roughness_map RetroTV_Roughness.png
-normal_map RetroTV_Normal.png
-ao_map RetroTV_AmbientOcclusion.png
-emissive_map RetroTV_Emissive.png