UE4 案内板から考察する結合度の弱い再利用可能なアセット制作

生徒の制作物を見ていて驚くのは、プロジェクトの中に入れておけば渡したレベルには入っていないにもかかわらずどんどん他のアセットと組み合わせてきます

アセット制作というのもなかなか数が増えません

生徒の作品を見ていて、ステージのどこに行ったらいいかといったことがよくわかりませんでした
せっかく丁寧に作られているのに勿体ないです

ゲームをやっているとアナウンスとしてガイドが書かれたアセットが配置されています
案内板を作成して生徒に渡しました
いろんな活用法を見出し始めました

渡した案内板についての記事を書こうと思っていました

ふと、考えてみると

結合度が高い

結合度を弱めることによって、1つの案内板から数種類のアセットがつくれるのではないか?

プログラムを行う上で考えるモジュール分割をモデリングの方にも持ち込めるのではないか

プログラマだからこそ考え付く結合度を弱める再利用可能なアセット制作についてまとめました
image

【目次】



スポンサードリンク







## ガイドが変更可能な案内板の作成

### 作成した理由

理由はUE4 授業2回目 先生タイムとレベルデザインベースのメリット・デメリットでも書きました
http://denshikousakubu.com/2017/05/20/20170520_TeacherTime/

先週の授業を見ていて惜しいなぁと思うのが、ガイドが無くて、何処に行ったらいいか分からないことでした
本人的にはそれが意図したことなのかもしれませんが、この手の手法をやるとプレイヤーが離れて行ってしまいます

上側を少ない時間で作りこんでいました
image

実はゴールが下にありました
image

先週、生徒の作品を見ていて今回は案内板を用意しました



授業前に手順を書いてから授業をしようと思っていたのですが、順番が逆になってしまいました
授業が終わってから作った案内板に気になっていることがあったので、せっかくなので設計をし直しました
プログラマだからこそ気付くアセット制作のコツみたいなものが少し開けた気がします

### MaterialのMaterialInstance化
モデリングとテクスチャを作成してUE4にインポートします
image

マテリアルのBaseColorにつなげているテクスチャを変更可能にします
1. テクスチャーを右クリック
2. Convert to Parameterを選択する
3. 名前をBaseTextureに設定します
4. Applyボタンをクリック
5. Saveボタンをクリック

image

マテリアルを右クリックし、Create Material Instanceを選択します
image

作成したMaterialInstanceのテクスチャーを変更します
1. 作成したMaterialInscaneをダブルクリック
2. Convert to Parameterで名前を設定した、BaseTextureのチェックボックスにチェックを付けるとテクスチャーを選択できるようになります
3. 変更したいテクスチャーを設定します
image

SignBoardのMaterialを作成したMaterialInstanceに変更することで案内板の案内を変更することが出来ます

image

### BaseTextureを画像編集ソフトで書き換える

テクスチャがもらえない時は、BaseTextureとしているテクスチャをエクスポートすることでテクスチャを得ることが出来ます
テクスチャをもらえるのであれば、もらってください
image

エクスポートしたテクスチャーを画像編集ソフトで編集します
Windowsの標準でインストールされているペイントを使用することにします

1. エクスポートしたテクスチャーを右クリック
2. [プログラムから開く] > ペイントを選択する

image

紙の部分に割り振られている領域に案内になる箇所をペイントします
別名にして保存します
image

UE4に編集したテクスチャをインポートします
image

MaterialInstanceを再び作成するか、
MaterialInstanceのテクスチャをインポートした画像に変更することで画像編集ソフトで書いた絵をUE4の案内板に反映することが出来ます

image

## 結合度を下げたアセット制作

ここまででも十分なのですが、もう少し掘り下げて同じ手順でアセットを増やす方法を考えてみましょう

### 結合度の弱いアセットとの比較
【参考にしたアセット】
Platformer Starter Pack
https://www.unrealengine.com/marketplace/platformer-starter-pack




案内板が二つ入っています
 
image

共通部分があることが見受けられます
左のPl_Sign_01に棒を追加することで、右のPl_Signpost_01が出来ています
image

作成した案内板を見てみます
1つのテクスチャで3つの要素を持っています
- 棒
- パネル
- 紙

参考にしているアセットと比較すると結合度が高いと言えます
image

結合度を弱くするとどうなるでしょうか

- 紙
- 紙 + パネル
- 紙 + パネル + 棒

同じ作業で3つのアセットを作成することが出来ます

他にも組み合わせがあります
- パネルのみ
- 棒のみ
- パネル + 棒
- 紙 + 棒

同じ作業量で結合度を弱めることによって、アセット数が何倍にもなります
image

### TextureをSubstance Painter2で作成する

棒部分
image

パネル部分
image

紙部分
image

### FBXに書き出す
image

### UE4にインポート

ほぼ同じ工数で3種類の案内出来るアセットが出来る 
image

### 紙のマテリアルのBaseColorに使っているテクスチャをパラメータ化

紙のマテリアルのBaseColorに使っているテクスチャをパラメータ化します

1. BaseTextureにつなげているテクスチャを右クリック
2. Convert to Parameter

image

NameをBaseTextureに変更します 
image

BaseTextureとして使用しているテクスチャを別名でコピーしてからペインターなどの画像編集ソフトで編集します

image

画像編集ソフトで編集したテクスチャをUE4にインポートします
image

紙のマテリアルのMateril Instanceを作成します
1. 紙のマテリアルを右クリック
2. Create Material Instanceを選択する

image

インポートしたテクスチャをBaseTextureに設定します
1. BaseTextureのチェックボックスにチェックを入れる
2. インポートしたテクスチャを設定する

image

配置している案内板の紙に使用しているマテリアルを作成したMaterial Instanceに設定します
image

他に配置したアセットも紙部分のマテリアルを変更することで、様々な案内板を作成することが出来ます
image

### アセット間の結合度を弱めることのメリット・デメリット

#### メリット

結合度が弱めることで得られるメリットは以下のことがあげられます
1. アセット単体の編集することが出来るので、他の部位に影響を与える心配がない
2. アセット毎の質感に専念することが出来る
3. 再利用可能なアセットが増えて、組み合わせを増やすことでアセットの数が増える

image

#### デメリット

デメリットもあります
1. アセットの数が多くなり管理が大変になる
2. テクスチャ・マテリアルが増えるのでプロジェクトの容量が重くなる
3. 設計が難しいので、設計の工数を考えると結合度が高いアセットを作った方が速い

image





SM Sign Board 16 9
by gansaibow
on Sketchfab


4.16でレベルに配置したモデルのテクスチャーをペイントできるようになった"#"

4.16でImproved Mesh Paint Tool が追加されました
レベルに配置したアセットのテクスチャをペイントのように塗ることができます
だんだんとUE4内で完結していく未来が待っていそうです

Saveをすると、ベースのテクスチャが更新されてしまうので、複製してバックアップを取ってからペイントしたほうがよさそうです
image

総括"#"

プログラムのモジュール分割やオブジェクト指向に慣れている人であれば、結合度の弱いアセット設計が出来ると思います
「どれとどれが共通で」といったことは結合度の高いアセットを作り切った時に初めて分かりました
最初から結合度を弱めて作ろうとすると設計に時間がかかり過ぎるので、直近でほしいアセットについては結合度の高いアセットを作り切ってしまった方が効率がいいです
アセットを作成した後に振り返りを行い、結合度について弱めることが出来ないか考えることで結合度を下げて再利用可能なアセットに変化するのかと思います

まずは簡単なモデルから結合度を下げる練習をすることで、だんだんと結合度の下げ方が分かってくるのではないでしょうか


スポンサードリンク