100MB超えTiltBrush製glbファイルをSTYLYへアップロードする裏技

TiltBrush で作成した作品は STYLY へ公開できます！

具体的な手順は STYLY のサイトに記載がありますのでご覧ください！

https://styly.cc/ja/tips/tiltbrush-3d-upload/

しかし、こちらの方法だと、容量が 100MB を超えるファイルはアップロードできません。

そこでちょっとハック気味ですが、100MB を超えるファイルを STYLY へアップロードする手順をご紹介します！

STYLY や TiltBrush の仕様が変わったら、本記事の方法は使用できなくなる可能性がありますので、なにとぞご了承ください。

**本記事の内容はあくまで技術者向けです。実践は自己責任でお願いします。**

# Unity プロジェクトを作成する

まず、Unity プロジェクトを新規作成してください！
（2022/06/12 現在だと Unity 2019.4.29f1 で作成するのが安全です。）

# STYLY Plugin をインポートする

以下から最新版を入手して、Unity プロジェクトにインポートします。

https://styly.cc/ja/download/

# tilt-brush-toolkit をインポートする

https://github.com/googlevr/tilt-brush-toolkit/releases/tag/v23.0.1

にある `tilt-brush-toolkit-UnitySDK-v23.0.1.unitypackage` をダウンロードして、Unity プロジェクトにインポートします。

# tilt-brush-toolkit のコードを一部削除する

`Assets/TiltBrush/Scripts/Gltf/GlbParser.cs` をテキストエディターで開き、126 行目にある以下の行を削除してください。

```c#
if ((binLength % 4) != 0) { Err("bin length%4"); }
```

# tilt-brush-toolkit のファイルを一部削除する

以下の 2 つのファイルを削除します。

- `Assets/ThirdParty/Reaktion/Editor/Utility/GenericAudioInputEditor.cs`
- `Assets/ThirdParty/Reaktion/Utility/GenericAudioInput.cs`

![GenericAudioInput](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/a93ea079-d05c-e9a1-7b5e-d22ceb9081fe.png)

# JSON .NET For Unity を更新する

まず、以下のフォルダーを削除します。

- `Assets/ThirdParty/Json-NET-for-Unity`

![Json-NET-for-Unity](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/674aa011-b079-aeb0-a935-14c6612d6f8f.png)

次に、以下のサイトから最新版の JSON .NET For Unity を入手して、Unity プロジェクトにインポートします。

https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347#description

以上で環境構築は完了です！

# TiltBrush 製 glb ファイルをインポートする

TiltBrush から出力した glb ファイルをご用意ください。
`Assets/Scenes` フォルダーにその glb ファイルをドラッグ＆ドロップします。

### GlbError が出る場合

もし、以下のようなエラーが出た場合、 `tilt-brush-toolkit のコードを一部削除する` の対応をしていない可能性があります。手順をご確認ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/08343412-2a98-51bd-3331-974d1f1910bf.png)

# シーン内に GameObject を作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/5bba6a7a-032b-a478-8a0d-8407284798fb.png)

`Assets/Scenes/SampleScene` ファイルを開き、空の GameObject `AssetTiltBrushGlb` を作成してください。
そしてその直下に、さきほどの glb ファイルをドラッグ＆ドロップで配置してください。

# Prefab ファイルを作成する

GameObject `AssetTiltBrushGlb` を `Assets/Scenes` フォルダーにドラッグ＆ドロップして Prefab 化してください。

# Prefab ファイルを STYLY へアップロードする

Prefab ファイルを右クリックし、 `STYLY > Upload prefab or scene to STYLY` を選択してください。

ビルドが開始され、数分間 Unity が操作できなくなります。
（ファイル容量や PC 性能によっては 30 分近くかかることもあります。）

ビルドが終了すると、STYLY サーバーへアップロードされます。

以上で、アップロード完了です！おつかれさまでした！

### CS0103 のエラーが出る場合

もし、以下のようなエラーが出た場合、 `tilt-brush-toolkit のファイルを一部削除する` の対応が漏れている可能性があります。改めて手順をご確認ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/36012f4e-e6f0-29a2-08e5-648a308bfdec.png)

### CS0246 のエラーが出る場合

もし、以下のようなエラーが出た場合、 `JSON .NET For Unity を更新する` の対応ができていない可能性があります。改めて手順をご確認ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/7c3819a3-3a3d-6e5c-a861-8506617ab3c5.png)

# さいごに

本記事作成にあたり以下を参考にさせていただきました。ありがとうございました！

- https://styly.cc/ja/tips/tiltbrush-3d-upload/
- https://github.com/googlevr/tilt-brush-toolkit/releases/tag/v23.0.1

また、エラー対策に関して @afjk さんにノウハウを教えていただきました。この場を借りてお礼申し上げます。ありがとうございました！