ue4のallegorithmic Substance プラグインを使用したプロジェクトをパッケージ化する

#【前提】
__・Unreal Engineのバージョンは4.6.1として説明します。__
__・Windows版のパッケージ化を主として説明しています。__
__・エラーの回避__
通常の製品版のUE4のエディタから、Substanceのマテリアルを含んだプロジェクトをパッケージ化すると
以下のエラーが出力されSubstanceのマテリアルは無効になります。
![err.png](https://qiita-image-store.s3.amazonaws.com/0/59114/6294709c-a340-79b3-215f-c57a12e6a67a.png)
これを回避する方法を記述するのがこのブログの趣旨です。

※著者の経験からの手順ですので正解かどうかはわかりません。

#【準備】
１）UE4のエンジンビルド環境を構築する
２）Substance プラグインを入手する
* * *
１）UE4のエンジンビルド環境を構築する
エンジンのビルド環境構築に関しては、幸いにして、詳しい解説が
ヒストリアさんのブログにありますので、こちらをご参照してください。

http://historia.co.jp/archives/1327

ヒストリアさんのブログを参考に
「７． Setup.batを実行」までを実行してください。
***
２）Substance プラグインを入手する

こちらで入手可能です。
http://www.allegorithmic.com/substance-ue4

http://www.allegorithmic.com/substance-ue4#plugins

Substanceのプラグインの入手にはallegorithmicさんのアカウントが必要です。
このプラグインを使用するということはallegorithmicさんにアカウントをお持ちかとは思いますが。

Steamなどで製品を購入している場合は、アカウントがない場合がありますので、ここで作成してください。
アカウントの作成にはメールアドレスが必要です。
※余談ですが。
__Steamで購入してもallegorithmicさんでアカウントを作成すると、allegorithmicの製品の正式なライセンスコードがallegorithmicさんから提供されます。（私はこの方法です）__

* * *
#【ビルド準備】

プラグインをダウンロードしたら
エンジンをビルドする以下のフォルダに、プラグインをすべて放り込みます。
ダウンロードして解凍後のこれを。
![substance.png](https://qiita-image-store.s3.amazonaws.com/0/59114/5f18cffd-f3ca-718d-be24-bbee8025a402.png)
↓ここにすべて放り込みます
![engine.png](https://qiita-image-store.s3.amazonaws.com/0/59114/7c1286f9-f91c-da35-7e30-cc4a6aa1965b.png)
****
![pr.png](https://qiita-image-store.s3.amazonaws.com/0/59114/0efb4f52-2bbc-c793-2e1b-b658203242ab.png)

Engine\Plugins配下にSubstanceのフォルダがコピーされます。

***
すべてを放り込んでコピーしたら。

ビルド用のソリューションファイル等を作成します。
作成は、「GenerateProjectFiles.bat」を実行することで可能です。
![project.png](https://qiita-image-store.s3.amazonaws.com/0/59114/dfd17f4e-7586-5a71-f33b-883b9ed14d68.png)
__ヒストリアさんのサイトの、ブログにも注意点がありますが。ここや、エンジンビルド中に何らかの失敗が発生する場合、ビルドするファイルの格納フォルダが深すぎたり、フォルダ名に日本語が含まれていたりする場合があります。その場合は、フォルダを浅い位置、たとえばd:\ue4.6等にすると成功するかもしれません。__
***
また、過去にエンジンをビルドしたことのある環境で再ビルドする場合は
__UE4.v12__ 
__UE4.sdf__
__UE4.sln__ 
などのファイルは 必ず削除してから「GenerateProjectFiles.bat」を実行してください。

![buil.png](https://qiita-image-store.s3.amazonaws.com/0/59114/2e83fbd2-ec80-afce-267c-ac95ef62fe40.png)
↑この様な感じになれば、Substanceのプラグイン込みのビルド用のプロジェクトファイル、ソリューションファイルが作成されます。
***
#【ビルド】

![build2.png](https://qiita-image-store.s3.amazonaws.com/0/59114/6fe6d339-ddae-40a5-af05-aaf998c8ab68.png)
↑ソリューションファイルを開きます。

ソリューションの以下の場所に__Substance__があればプロジェクトの作成は成功です。
![sub.png](https://qiita-image-store.s3.amazonaws.com/0/59114/76d946fa-dc1c-128d-1590-f307fed9cc88.png)
***
ビルドは２回行います。
***
１回目は、ヒストリアさんのブログの「９．ビルド」を実行しエディタを生成します。
http://historia.co.jp/archives/1327
***
２回目はパッケージ化用の実行ファイルを作成します。
パッケージ化用のビルドを行うためソリューションの構成をshippingにします。
![shipping.png](https://qiita-image-store.s3.amazonaws.com/0/59114/b47b0ab1-5c9f-df4e-bef5-80e211205f14.png)
***
ビルドを開始します。
![comp.png](https://qiita-image-store.s3.amazonaws.com/0/59114/2aec71fb-162f-5d22-c31c-e118ac126941.png)


***
#【ビルド完了】
![end.png](https://qiita-image-store.s3.amazonaws.com/0/59114/d84325c4-198e-52a7-e424-4f14a60f6f18.png)
この様になれば完了です。
#【パッケージ化開始】
Engine\Binaries\Win64の配下に以下の実行ファイル（UE4Game-Win64-Shipping.exe)が作成されているはずです。
![ship.png](https://qiita-image-store.s3.amazonaws.com/0/59114/6901b995-1a98-c51c-c1cd-edf135c51563.png)
***
![exec.png](https://qiita-image-store.s3.amazonaws.com/0/59114/39fb1869-6cc1-6b1f-a3d0-df990b7cce2a.png)
__UE4Editor-Cmd.exe__を実行します

__最初の起動時、シェーダのコンパイルが大量に入るので起動に時間がかかります__
***
Substanceのマテリアルを含むプロジェクトを開きます。

![open.png](https://qiita-image-store.s3.amazonaws.com/0/59114/03c9a2f1-cdfd-ed45-9119-9a8253cb1195.png)
***
パケージ化を行います。
![pack.png](https://qiita-image-store.s3.amazonaws.com/0/59114/8b4a090f-563e-fb8f-9094-88cb10fe239d.png)
***
実行すると、エラーが出力されなくなります。
![end_2.png](https://qiita-image-store.s3.amazonaws.com/0/59114/bb994117-e8c8-1e53-37f8-cfa7ee0a8a7c.png)

手順は以上になります。

##【余談】
実は、SubstanceプラグインのUE4エディタでの有効化の手順もご存じない方のために、以下に簡単に手順を説明します。

上記のSubstanceプラグインの入手
及び
【ビルド準備】で説明しているプラグインのコピーを__製品版__のUE4のエンジンフォルダに放り込んだら

![hon.png](https://qiita-image-store.s3.amazonaws.com/0/59114/305836ec-dacb-1de2-9590-94cea7af7da9.png)
***
エディタを起動し。
下記のプラグインを有効にします。

![use.png](https://qiita-image-store.s3.amazonaws.com/0/59114/1659ce15-32ae-a712-2ff6-35f1d6be48d5.png)

あとは__sbsar__ファイルをドラッグ＆ドロップすれば、インポーターが起動します。
![hon2.png](https://qiita-image-store.s3.amazonaws.com/0/59114/0eed70b1-6c6d-446d-1875-8fa90f30ec21.png)

![hon3.png](https://qiita-image-store.s3.amazonaws.com/0/59114/94575cfd-2fc9-2922-4680-8715d6342d74.png)

これで、UE4のエディタ上でSubstanceのマテリアルが使用できるようになりました。