USDZファイルの作り方

iOS12からWebARが対応しました。
Webにusdzファイルを埋めておく事でiPhoneやiPadから画像をタップするのみでARが起動します。

この記事はそのUSDZファイルの作り方メモです。

色々追記してますが2022/7月現時点ではやはりApple純正なRealityConveterかmacのコマンドラインによる変換が安定しているようです。
(各ソフトUSDZファイルの書き出しに対応し始めていますがまだ変換結果に一癖あったりして)

追記 2023/9/5

BlenderでもUSDZ作れるようになっていた。
リリースノートはこちら
OttoBikkuriさんの記事も参考になります。Blender 3.5からはusd書き出し時に拡張子をusdzにすれば良い。

追記 2021/12/19

HoudiniでUSDZに書き出すことも可能です。
大量にUSDZファイルを生成する必要が場合はプロシージャルなHoudiniを用いるのが便利です。
堀川さんがこちらで詳しく手順を解説されています。

追記 2021/5/14

3dsMax公式のUSD対応プラグインが発表されたようです。

追記 2020/9/10

Cinem4DがR23でUSDZ書き出しに対応しました。
DCCツールで編集したモデルがそのままUSDZで書き出せるのはスムーズ。
※R23ではマテリアルの書き出しに対応してませんでしたがS24でマテリアルにも対応しました

追記 2020/3/26

SketchfabUSDZに対応しました。
SketchfabへアップロードしたモデルはUSDZ形式でダウンロード出来るようになっています。

追記 2020/1/13

AppleよりGUIでusdz変換が可能な「Reality Converter」がベータリリースされました。
当記事で解説する手順はコマンドによる変換のため少々手間がかかるものですが、この「Reality Converter」を用いる事でGUIによる直感的な変換が可能です。

追記 2018/9/21

オンラインでUSDZファイルを作れるサイトがありました。
https://www.vectary.com
※ただしテクスチャ付きのモデルをアップする為にはファイルをGLBにしておく必要がありそうです

追記ここまで

以下、本題のmacのコマンドラインを利用した変換方法です。
(2018年の発表当時にまとめた内容なので古い部分もあるかと思います)


 必要な環境

  • macOS High Sierra以降
    Windowsでは下記手順では変換出来ないのでご注意ください
  • Xcode10 Command line tools の usdz_converter を使う為
  • iOS12搭載のARKit対応端末 Safari 変換の為には必要ないが確認の為

※windowsで変換したい場合はUnityを用いる方法もあります
こちらのフォーラムが参考になります

※Xcode11以降は usdz_converter が Command line tools から外れたようなので注意

Xcode 11 から usdz_converter が Command line tools から外れた。
Apple の Augmented Reality ページからダウンロードする必要がある。
(Terminal からダウンロードしたファイル等の PATH を設定する必要あり)
※引用元記事:http://appleengine.hatenablog.com/entry/2018/06/18/160521

USDZファイルの制約

  • 10万ポリゴンまで
  • アニメーションは10秒まで
  • テクスチャーは2048×2048まで

※USDZ発表時はこの制約があったようだが今は緩和されている?


手順

1.DCCツールで3Dモデル作成

3Dモデルをお好みのDCCツールで作ります。

その際以下の点に注意しましょう。
エラーとなりコンバートできませんでした。

・オブジェクト名(ファイル名ではない)に含めてはいけない文字
ドット
スラッシュ
ハイフン

・非表示オブジェクトは含めない
不要なものは削除しておきましょう。

※Cinema4D環境で起きた現象です(他環境は未確認)

2.obj/Alembic形式で書き出し

USDZファイルを作るにはXcode10のCommand line toolsを利用します。
このツールはobjまたはAlembicをUSDZに変換するもののため、DCCツールからはどちらかの形式でエクスポートしておきます。
※Alembicのアニメーションは現在対応してないようです

3.ターミナルから変換コマンド実行

ターミナルを起動しOBJが保存してあるディレクトリに移動します。

cd {ディレクトリのパス}

そこで以下のコマンドを実行。

xcrun usdz_converter {変換前ファイル名}.obj {変換後ファイル名}.usdz

これでOBJがある同じフォルダにUSDZが生成されます。

PBRテクスチャを含める場合は以下のようなコマンドになります。

xcrun usdz_converter {変換したいモデル}.obj {変換後の名前}.usdz
-g {マテリアル名}
-color_map {カラーテクスチャ}.jpg
-metallic_map {メタリックテクスチャ}.jpg
-roughness_map {ラフネステクスチャ}.jpg
-normal_map {法線テクスチャ}.jpg
-ao_map {陰影テクスチャ}.jpg
-emissive_map {発光テスクチャ}.jpg

JPGで書いてますがPNGも対応してます。

4.サイトにUSDZを埋め込む

作成されたUSDZファイルとテクスチャー一式をサイトにアップします。
サイトに表示させるリンク用の画像も必要になります。
画像からのリンク先にUSDZファイルを指定しましょう。

これによってiOS端末でこの画像を閲覧した際、自動的に画像の右上にWebARである事を示すusdz_iconアイコンが付きます。

対応端末でない場合はアイコンは何も表示されず画像のみ表示されます。

5.ARKit対応iOS12端末から確認

最後に動作確認です。
対応端末のSafariでUSDZを埋め込んだサイトへアクセスしてみましょう。
Safari以外のブラウザは未対応です。
参考に、こちらにUSDZを埋め込んだWebARサンプルがあります。


USDZはZipファイル ※2019/8/16追記

実はUSDZはUSDCとテクスチャをパッケージ化したzipファイルです。
普通に解凍出来ます。

usdz_unzip
※USDZファイルを解凍したところ

ナンバーが振られたフォルダの中にテクスチャが入っています。
ですのでテクスチャは配布出来ない事情がある場合は注意しましょう。


USDZ単体でもARが起動する ※2019/8/16追記

USDZはiOS用「ARファイル」と考えて良さそうです。
WebARとして使うのはあくまで一例で、USDZをiOS端末の[ファイル]アプリに入れておくと、このファイルをタップする事でARが起動します。

また[メッセージ]アプリや[AirDrop]から人に渡すことも出来ます。
ARをシェアするのにも適したファイルフォーマットになっています。


動作の様子

参考サイト