チュートリアル - PlayCanvasで作った3Dブラウザゲームにリッチな演出を追加する -1

#初めに

PlayCanvasはWEB上に簡単に3Dモデルを表示することができます。マテリアル、シェーダーも、IBR(イメージベースドレンダリング)でかなりリアルな質感を設定でき、且つグリグリ操作することが可能です。

ここで紹介するのは、PlayCanvasの３Dハンズオン用のチュートリアル資料です。
playcanvas.jpから<font color="DeepPink">"**新規アカウントを作成**"</font>し、マイページの<font color="DeepPink">"**FORUM**"</font>→<font color="DeepPink">"**チュートリアル**"</font>の中の[**"チュートリアル - PlayCanvasで作った3Dブラウザゲームにリッチな演出を追加する"**](https://support.playcanvas.jp/hc/ja/sections/360006055613-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB-PlayCanvas%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%9F3D%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%AB%E3%83%AA%E3%83%83%E3%83%81%E3%81%AA%E6%BC%94%E5%87%BA%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B)からアクセスできます。

#リッチな演出を追加していこう！

このチュートリアルでは、”チュートリアル - PlayCanvasの基本操作”で作成した[**タンクゲーム**](https://playcanv.as/p/ONIG8RhE/?overlay=false)をベースとし、アニメーション、エフェクト、マテリアル設定にフォーカスして、よりリッチな演出を追加していく、という内容となっています。

今回のチュートリアルでは、タンクゲームの基本的な操作部分が既に出来上がっているProjectを"Fork"(複製)して行いますので、スクリプトに抵抗のある方でも、問題なくチュートリアルを進めることが出来ます。

フリーの3D作成ソフト"Blender"をベースに3Dモデルの作成手順、PlayCanvasへインポートする為のエクスポート設定、PlayCanvasビジュアルエディター上での"Pysical Shaderマテリアル"の各スロットルの説明やテクスチャの設定や"Particle System"を使用したエフェクトの作成/制御を通してコンテンツのクオリティを"デザイナー目線"から上げるためのワークフローを学んでいきましょう。

以下のリンクが完成プロジェクトになります。
**https://playcanv.as/p/mIPkWbEQ/**

[移動 : shift+アローキー↑↓→← / A W S D]   [砲撃 : spaceキー] 
左クリック＆ドラッグでカメラ自由回転/shift＆マウスホイールでカメラ自由移動
shift＆マウスホイールでカメラ前後距離移動

4回に分けて記事化していきます。

●**3Dモデルの構成と.fbxへのExport**
●**PlayCanvasでのテクスチャとマテリアル設定**
●**3つの特徴的なエフェクト作成(Particl System)**
●**ムービーテクスチャ.h2mdの作り方と適用方法**

#3Dモデルの構成と.fbxへのExport

PlayCanvasのビジュアルエディターを開く前に、まずはBlender上で、3Dモデルがどのように構成されているかを見てみます。
**Blender2.8 viewport**
![mceclip0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/fc6ad630-7389-a336-bbde-7b49029e8817.png)キャラクター[sandyちゃん]が戦車[tank]に乗っている状態です。構成内容は以下の通りです。

##オブジェクトの構成
![tank1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/ff39ffbc-bea6-e3a0-b743-5eb466e7fe11.png)
スタティックな状態のキャラクターです。キャラクター自体にはボーンやアニメーションは設定されていません。

---
![tank1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/6837863d-c184-32bd-437e-3d485b14e1f5.png)
戦車の操縦桿。戦車本体の窓ガラスをアルファで透過する際に、同じオブジェクトだと一緒に透過されてしまうので別オブジェクトにしてあります。

---
![tank1_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/3caba7a6-eb2e-b0e7-d8e6-c6cf68f6ea83.png)
戦車本体。窓ガラス部分に透過(アルファ)を含むテクスチャが適用されている。

---
![tank1_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/3c721a53-339b-addb-df49-d4b1c435c938.png)
排気管。本体部分とは別にアニメーションを持たせるので、別オブジェクトとしています。

---
![tank1_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/a79fac04-b782-456e-3dd3-626e8ffa749c.png)
戦車キャタピラのベース部分、戦車本体、キャタピラの親になります。

---
![tank1_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/83f74cd2-7010-327d-bb8c-88a3b1823698.png)
キャタピラの軸部分。この部分も回転のアニメーションを持たせるので、別オブジェクト。

---
![tank1_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/0c58da67-6855-3114-92e3-42d6e189652d.png)
キャタピラ。キャタピラ軸の子になります。キャタピラ1枚をBlender上で配列で円筒上に並べ、パスアニメーションでキャタピラの回転アニメを作っています。

<font color="DeepPink">Blender上でのモデル作成の注意点はモディファイヤを使用している場合、適用(Aplly All)しておかないとPlayCanvas上にインポートした際にエラーが発生する恐れがあります。</font>

##ボーンとウェイトの設定
今回のタンクゲームでは、キャタピラの回転、砲撃時の反動っぽい動きを作成しています。これらのアニメーションを作成するために、戦車とキャラクターにシンプルなボーンとウェイト設定を行っています。

![weight.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/c6af6a97-1d6f-7ffc-ef1c-59dbb685fb78.png)

##アニメーションの作成
キャタピラの回転と戦車の上下の揺れは、タンクの移動時用、砲撃の反動は攻撃時のみ発生させたいので、ボーンウェイト設定がされたtank.blenderをコピーして、移動用(tank_mov.blender)と(tank_shot.blender)攻撃用に分けて作成しました。また、アニメーションキーフレームに関して、アニメーションキーが打たれている最終フレームでキーフレームが終わる状態にしてください。PlayCanvasへインポートした際に最終キーより後にもキーフレームがあるとそのフレームも読み込んでしまいます。

![shot.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/29e72f24-df9c-3809-3f3b-a75796426d5a.gif)
砲撃のアニメーション
---

![run.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/f680b46c-0ae6-ec6b-b862-3d31f950ed2a.gif)
移動時のキャタピラアニメーション

##Blender上でのテクスチャとマテリアル設定
Blender2.8の標準マテリアルは"プリンシプルBFDS"です。PlayCanvasに正確にインポートできるのは基本的に各3Dソフトウェアのデフォルトのマテリアルになります。ここではタンクとUFOに使用している各テクスチャとマテリアルへの適用を見てみましょう。
![UVmap1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/5cf6599a-7642-23c7-a9c9-ee99019ed657.png)

![UVmap2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/c5539876-8807-947a-e8e7-dfdee4cb2ba9.png)

![blender_material_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/f233b16d-6c8a-57a3-78a5-8c40bddef5d1.png)

これで、blender上での３Dモデルの作成は完了です。次に.fbxへの保存とPlayCanvasへのインポート方法を見ていきます。

##FBXのExport設定
デフォルトの設定ではマテリアルの情報が無視されてしまうので、下記の画像の様に設定を変更します。
![fbx_export1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/41f80195-f32b-e782-e2ac-28d2604255a3.jpeg)

メイン、ジオメトリ、アーマチェア、アニメーションの項目の中で"メイン"の設定
選択したオブジェクトに☑
パスモードを<font color="DeepPink">**"自動2"**</font>から<font color="DeepPink">**"コピー"**</font>にし、右端の箱マークをクリック。
これで、マテリアルがオブジェクトとリンクした状態になります。

アニメーションも同様にデフォルト設定だとPlayCanvas上で正しく再生されませんので、下記の画像の様に設定を変更します。
![fbx_export2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341892/e1ab54c3-b810-cff5-b20f-ec8dcea01bc0.jpeg)
全てのボックスの☑が入っていますが、このままだとPlayCanvasにインポートした際に、アニメーションが1フレーム目でリピートしてしまいます。
<font color="DeepPink">**"NLAストリップ"**</font>と<font color="DeepPink">**"全アクション"**</font>の☑を外します。

これで、Export設定は完了です。PlauCanvasのビジュアルエディターのAssets欄にドラッグ＆ドロップするか、<font color="DeepPink">**"＋"**</font>ボタンをしてUploadするかで.fbxから自動的に.jsonが書き出されます。

次は、PlayCanvas上でのマテリアル設定の説明をします。