Daz StudioからPlayCanvasにリアルなキャラを入れてみる


# Daz Studio とは
[Daz Studio](https://www.daz3d.com/)は、無料の３Dモデリングソフトです。
特に、リアル系の3D人物モデルの簡単生成が最大の売りで身体、髪、服などパーツを選んでいくだけで作れます。
また、ストアにも高品質のモデルが大量にあります。リアルなキャラクターを自作するには、長い制作時間＆高い技術力が必要となりますが、Daz Studioを使用すれば、それらの問題のかなりの部分解決できるかもしれません。

# PlayCanvas とは

[PlayCanvas](https://playcanvas.jp)は、JavaScriptsで作られたHTML5/WebGLで動作するゲームエンジンです。
インストールの必要もなく、開発から公開までWebブラウザ一つで動くクラウドにホストされるため、URLにWebブラウザからアクセスすることで複数人で開発、公開したコンテンツを一緒に遊ぶことも可能です。

かなりのハイポリゴン＆テクスチャサイズと量を持っているキャラクターでも、問題無くweb上で動かすことができるのがPlayCanvasの特徴です。
ノーマルマップやスペキュラマップ等を追加してリアルな質感を出すことも可能です。

# 本題

今回は **Daz Studio** でカスタマイズしたキャラクターを、WebGL/HTML5ゲームエンジン **PlayCanvas** にインポートした際にどのようになるのかを検証し、実際に使用できる状態にまでもっていってみたいと思います。

記事の内容は以下になります。

- **Daz StudioからFBXへエクスポート**
  - **PlayCanvasへインポート後の状態**
- **Daz StudioからCOLLADA(.dae)へエクスポート**
- **Blenderで調整**
- **Mixamoでオートリギング＆アニメーションをゲット**
- **PlayCanvasへインポート**
  - **テクスチャの調整**
  - **「Anim State Graph」でアニメーションを設定**
- **パブリッシュ**


# Daz StudioからFBXへエクスポート
こちらからアカウントを作成し、**Daz Studio** をインストールしてください。

https://www.daz3d.com/get_studio/

Daz Studioにデフォルトで入っている **Genesis 8 Starter Essentials** でキャラクターの設定をおこなっていきます。チュートリアルに沿って作業すると5分程度で完了します。

アイテム(服やヘアー)配布サイトも結構あります。編集に慣れてきたら色々インポートしてカスタマイズしてみましょう。

https://www.renderosity.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/0a416e5f-4f3a-db40-cbe1-65a71b832b15.png)
基本的な設定(キャラクターカスタマイズ)でボディと髪、服を着せたらFBｘへエクスポートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/695dc61d-7025-2764-47f4-5ea60da5c9f2.png)
**File** → **Export** と進み

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/73eed3b0-8d6d-808a-a6c2-b8f317211a03.png)
**FBX** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/359863d6-5565-77d5-dcb4-a6f2d2763482.png)
出力設定の画面が出ますので、 **Output Options** を画像の様に全選択して **Accept** ボタンをクリック。


## PlayCanvasへインポート後の状態

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/b3d82af2-ea1d-644a-f9c9-0a58fdb6a875.png)
PlayCanvasで新規シーンを作成し、アップロードすると、特に問題無く読み込めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/c6a75f09-849f-84cd-fc5e-bf28cb56bc89.png)
ただし、マテリアルとテクスチャの数、サイズがめちゃくちゃ多くてデカいです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/5946e6a8-562f-6e06-40de-098bc0fdc583.png)
残念なことにハードサーフェイス。。。PlayCanvas上からポリゴンのハードエッジ、ソフトエッジは切り替えることができません。また、ボーンの位置もずれていたり、そもそもウェイトが外れています。

ちょっとそのままでは使えないので、Blenderでモデルを調整し、リグとアニメーションをMixamoから持ってくる、というフローで進めていきます。


# Daz StudioからCOLLADA(.dae)へエクスポート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/be034ccd-18af-ed4c-7464-3893e8405ea7.png)
Daz StudioからエクスポートしたFBXは、Blenderへインポートすると形状が破綻してしまうので、**.dae** でエクスポートしてみます。


# Blenderで調整

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/55270cc6-b298-6bf2-3596-7d36d6246a22.png)
問題無く読み込めました。モデルのモディファイアーリストにある **Armature** を適応してモディファイアーを空にします。そして、Armature自体を削除して一旦リグとウェイトを無しにします。
また、オブジェクトを全選択し、スムーズシェードへ変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/141c2079-a5cc-7660-4b5f-56ce0230a377.png)
モデル要素のみ選択し、FBXへエクスポートします。


# Mixamoでオートリギング＆アニメーションをゲット

MixamoへFBXをアップロードします。

https://www.mixamo.com/#/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/cfa8a36a-9a77-daad-a428-5d40ab6f155a.png)
アップロードが完了するとリグを設定する画面へ移行するので、位置ポイントを合わせてオートリグ設定を完了させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/8b007475-4402-5fbb-5bd8-3b5e9f6f8611.png)
オートリグの設定が正しく行えていれば画像のようにAuto-Riggingが開始されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/922085b8-689d-b4a1-f649-31c788ac9e07.png)
正しく適用できたら、画像のようにアイドルアニメーションになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/2ae5b391-c5d7-e069-fda7-a9b4758ff257.png)
任意のアニメーションを選択し、右上の**DOWNLOAD**をクリックしてください。

*※アニメーションのダウンロードに関しまして、ベースになっているモデルのリグ情報を持ったオリジナルモデルも一緒にDLしたい場合は **locomotion** で検索した一連のアニメーションパックをDLすると、オリジナルモデルも同封されています。単位のアニメーションをダウンロードするとボーンとアニメーションの情報のみとなります。*


# PlayCanvasへインポート
オリジナルモデルのFBXをインポートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/500c7bb3-48fc-6e36-115c-face70cf5602.png)
Blenderでスムーズシェードに変更したので、PlayCanvas上でもポリゴンの形状がスムーズになっています。オリジナルが正常に表示されているのが確認できたら、アニメーションデータも入れてみます。

## テクスチャの調整

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/0e43801d-0912-5938-99dc-9c0abb778c2d.png)
まつ毛と目のハイライトのテクスチャの透過処理が不完全なので、調整します。
**EyeMoisture** の **OPACITY** の Blende Type を **Multiply** に変更し、Color Channel を **A** にします。


続いて、まつげ **Eyelashes** の **OPACITY** の Blende Type を **Alpha** に変更します。

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/f9a587b8-559a-ff19-b051-93099c0d64c8.png)
これで一応見た目は完成。

続いて、アニメーションを簡単に付けてみます。

## 「Anim State Graph」でアニメーションを設定

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/a7d2f412-18f0-ea3c-bb31-42dff7f6b608.png)
ASSETS欄で右クリック、**New Asset** から **Anim State Graph** を選択します。


![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/412921a0-3a12-890a-e53b-3d1bd5b002ba.png)
左側のHIERARCHYから **任意のモデルのトップ階層** を選択し、右側インスペクターの**ADD COMPONENT** から **Anim** を選択、空きスロットルに先程作成した **New Anim State Graph** と **任意のアニメーション**を入れます。

右上の **Launch** ボタンをクリックして確認します。
問題無ければ、パブリッシュしましょう。


# パブリッシュ
PlayCanvasで公開用のURLを生成します。とてもシンプルな手順でURLを生成することが可能です。

![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/d62a51e8-7371-a0ff-b51d-1a617541ca8c.png)
シーンビュー上部のハンバーガーメニューのようなボタンをクリックするとManageScenesの画面が開きます。
右側の **PUBLISH** ボタンをクリックし、**PUBLISH TO PLAYCANVAS** をクリック。

![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/09e7fc56-4cc4-be5f-6573-bf76d405f441.png)
**PUBLISH NEW BUILD** 画面に移動しますので、一番下部にある **PUBLISH NOW** をクリック。


![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/b3678673-aebc-8c4c-37ac-2b3280d5d183.png)
公開用のURLが生成されます。