Reality Composerに任意の3Dオブジェクトをインポートする方法

[Reality Composer](https://developer.apple.com/jp/augmented-reality/tools/)に自分で作成した3Dモデルや、サイトからダウンロードした3Dモデルをインポートする作業が、結構大変だったので、やりかたを共有します。

なお、Reality Composerに3Dオブジェクトをインポートする一番簡単な方法は、Appleの[Reality Converter（β版）](https://developer.apple.com/download/)を使うか、[Apple DevelopperサイトのDownload](https://developer.apple.com/download/more/) から、USDPythonをダウンロードして、そこに含まれている`usdzconvert`を使うことです。

ですが、今回変換したかったモデルは、Reality Converterや`usdzconvert`で変換しても何も表示されなかったため、別の方法を使いました。

**環境**
Mac (Catalina 10.15.5)
Blender 2.83.3
Xcode 11.7
Reality Composer 1.4

※各ソフトウェアのインストール方法は割愛します

## TL:DR

結論から言うと、このやり方がうまくいきました。

任意の3Dオブジェクト => Blenderで加工をする & .daeに変換 => Xcodeで .usdzに変換 => Reality Composerにインポートする

## やりかた

### 1. 3Dオブジェクトを入手する or 作成する

例えば、[Unity Asset Store](https://assetstore.unity.com/)でなにか3Dオブジェクトを入手してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/2ce9ee13-4d2b-de22-b3ff-b401deabcc95.png)

今回入手した3Dモデルの形式は、[.FBX](https://ja.wikipedia.org/wiki/FBX)でした。

### 2. Blenderにインポートする

Blenderを起動して、xを押してデフォルトの立方体を削除しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/e7d46ae1-c56f-440d-b783-590034dbba91.png)

ファイル > インポート > インポートしたいモデルの形式（今回の例では.FBX）を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/24195084-de21-fbd1-8cc2-1c9367b0def6.png)

ファイルの選択ダイアログがでます。
ここで、不要な情報はインポートしないようにします。
今回はアニメーションの情報はインポートしないようにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/745028ae-894b-cf37-c81a-e0fadd37f6de.png)

モデルがインポートされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/8a136444-425a-1a5e-9256-1eae9036ad8e.png)

ここで、エクスポートといきたいところですが、今回のモデルはそのままエクスポートして、Xcodeで開いてもモデルが表示されませんでした。

これはアーマチュアを解除することで対処できました。
その方法を示します。

オブジェクトモードでモデルを選択し、Option+pでメニューを出して、トランスフォームを維持してクリアを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/62433ba3-a890-60c9-8e9c-47f2970f182c.png)


アウトライナーにあるArmatureからメニューを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/05da0fae-4efd-de13-d12c-8ecfebf815e9.png)


メニューからリンク切断を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/06780c88-4340-416b-3613-aba0ea22f418.png)

これでアーマチュアを解除することができました。

この時、オブジェクトのオフセット位置が原点からずれていたので、gボタンを押して原点（x,y,zがゼロの位置）に移動しておきました。

エクスポートします。
オブジェクトモードの状態でモデルを選択し、
ファイル　＞　エクスポート　＞　Collada（デフォルト）(.dae）を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/ea7b47fa-856d-e83b-4ab7-da2ad961c1fa.png)


ダイアログが出るので、オプションを選択します。
「選択物のみ」「子を含む」を選択しないとXcodeでうまく読み込めませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/276726f9-3a5a-b9be-0a30-f240637bf145.png)

これで、dae形式へのエクスポートができました。

### 3. Xcodeで.daeファイルを開く

Xcodeでエクスポートした.daeファイルを開きます。
うまく表示されていれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/537be236-f889-b66b-410c-1d49b3d6fcce.png)

usdz形式にエクスポートします。
File > Export
でエクスポートダイアログを出し、File FormatにUniversal Scene Description(Mobile)を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/f3e7106e-8fe9-925e-2181-1a5e561db1ed.png)

これで、usdz形式で出力されました。

### 4.Reality Composerで読み込む

Reality Composerを起動してシーンを作成したら、エクスポートした.usdzファイルをドラッグ & ドロップするだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116010/4b643794-090c-f38b-4faa-a8ccb2b98bbe.png)

任意の3Dモデルを読み込めるようになるば、ARKitで実現できることの幅が広がりそうですね。