コンテンツブラウザとアセット管理

UE4のアセットが実のファイルとして存在しているとはいえ、一つ守らなければならないルールがあります。それは、アセットの移動、コピー、複製、名前変更、削除といった操作はエクスプローラ上で行ってはいけないという鉄の錠です。必ず、コンテンツブラウザ上で操作するようにしましょう

アセットの移動とコピー

アセットを移動もしくはコピーする場合は、コンテンツブラウザ上で対象のアセットを移動先のフォルダにドラッグ&ドロップすることで行います。ドロップを終えるとサブメニューが開き移動か、コピーかのどちらを実行するかを尋ねてくるんで、選択して、移動やコピーを実行する。

アセットの名前の変更

アセットを右クリックし、コンテキストメニューから「名前変更」を選択

名前の変更も自動的に参照元に連絡がいき、新しい名前への参照に変更してくれます。それ以外のケースでも、リダイレクタが適切に吸収してくれる。

アセットの削除

使わなくなったアセットを削除するには、コンテンツブラウザ上でアセットのサムネイルを右クリックし、コンテキストメニューから「削除」を選択するか、アセットを選択した状態で「Delete」キーを押します。

地道でいいから勉強しよう pt4

こんにちは、
前回の続きから書いていきたいと思います。

<制作するマップを計画する>
1.移動ツールを使って設置したスタートを
  「X=-400,Y=400,Z=102」に設定します。

2.「モード」から「BSP」>「ボックス」をドラック&ドロップします。
   ボックスには分かりやすい名前を付けましょう。

3.名前を付けたボックスのサイズを「X=800,Y=200,Z=200」に設定し、
  「X=-100,Y=200,Z=110」の位置へ配置する。

4.ボックスを複製移動(Altキーを押しながら移動する)するか、
  もしくは新しい「ボックス」ブラシを「モード」パネルからビューポートに
  追加し、名前を付けましょう。

5.追加したボックスのサイズを「X=600,Y=400,Z=200」に追加し、
  「X=0,Y=-100,Z=110」の位置へ配置します。

6.3つ目の「ボックス」ブラシを追加して、名前を「SlopeBrush」に
  変更します。サイズはX,Y,Zすべて「200」とし、
  「X=200,Y=-400,Z=110」の位置に設定します。

<空洞を作る>
ドラック&ドロップするブラシの中には、形状を空間に追加する
「加算ブラシ」や形状を任意の形状に削り取る「減算ブラシ」があります。

1.「モード」パネルより、「BSP」>「ボックス」をビューポートに
   ドラッグ&ドロップし、分かるように名前を付けましょう。

2.「詳細」から「BrushSetting」>「BrushType」を「Subtractive」に
   変更します。これで、ブラシは加算から減算に変更できます。

とりあえず今回はここまで。

【輪講】ブループリントクラスと変数/関数について

今回は輪講について私が研究した事を書いていきます。

C++を理解していてもこれがブループリントになるとわけわからん!って人多くないですか?
私もそうでした。

しかし理解してからはなるほど!って思う事が多いです。

UnrealEngine4でブループリントを使うにはどれがクラスでどれが関数なのか、
まず把握した方がいいと思います。

今回はみんなが使い慣れているcocos2d-xのプログラムと見比べながら解説していきます!

まずはブループリントクラスの作成!

Content内で右クリック→Blueprint Class→親クラスを選択

無題1無題2

ここで選択したクラスによって使用出来る関数(以下ノード)が変わります。
いわゆる継承です。

作成したブループリントを見てみましょう。
右上にParent Class 〇〇とあるはずです!

無題3

これをcocos2d-xで見ると、大体みんながよく使うのは『Layer』『Node』辺りでしょうか。

class ThirdPersonCharacter : public Character
{
  ~略~
}

こんな感じになります。

ある程度はUnrealEngine側で用意しているものを使っていけば出来ますが、
例えばデザインパターンを取り入れたい時には、ブループリントクラス作成時に自分の作成したクラスを選択するなどしましょう。

次に関数の作成です。

その前にまずは変数の説明をします。

無題4

Variablesの『+』マークをクリックして変数を作成します。

無題5

・Variable Name→変数名
・Variable Type→変数の型(左側のドロップダウンで型指定、右側にある9個に区切られた四角マークをクリックすると配列になる)
・Editable→インスタンス上で変数がパブリックで編集可能かどうか
・Tooltip→コメントみたいなもの
・Expose on Spawn→SpawnActorノードにピンが追加される
・Private→プライベートにする
・Expose to Matinee→マチネに公開する
・Category→ラベル毎に変数を設定する事が出来る
・Replication→ネットワーク上で複製するか否かを指定する

Default Valueでデフォルト値を設定出来ます。

例えばPrivateにチェックを入れてint型のScoreという変数を作成するとします。

cocos2d-xというかC++ではこうなります。

~略~
private:
    int Score;
~略~

次に関数の使い方を説明します。

無題6

Functionsの『+』マークをクリックします。

無題7

Description→関数の説明
Category→カテゴリ
Keywords→キーワード
Compact Node Title→演算子のオーバーロードのような使い方が出来る例『+=』といれる
Access Specifier→Public、Protected、Privateを設定する
Pure→チェックを付けると純粋関数になる
Const→チェックを付けるとconst関数になる

Inputsで引数、Outputsで戻り値の設定が出来ます。
Pass-by-Referenceにチェックを入れると参照渡しになります。

例としてスコアのGet関数を作ってみましょう!

無題8

cocos2d-xで書くと、

int GetScore2() const { return Score };

となります。

基本的な説明となりますが以上となります。

各親クラスを継承したクラスで何のノードが使えるかの説明は、
ノードの量が膨大すぎて説明出来ませんので各自で調べながらゲームを作ってみましょう!

UE4でのAIの活用について

UE4ではブループリントのほかにBehaviorTree(ビヘイビアツリー)というものがあります。
このビヘイビアーツリーはAIの開発に特化していて、プレイヤーを追う追跡のAIやプレイヤーを見つけるまではステージを回る巡回のAIなどがあります。
今回は単純にプレイヤーを追う追跡のAIの作りかたおよび解説をしていきたいと思います。

まずはUE4でThirdPersonで新規プロジェクトの作成を行います。

追跡のAIで作るもの
・AI_Character ・・・ AIを実装するキャラクター
・AI_BehaviorTree ・・・ AIを実装するビヘイビアツリー
・AI_Track・・・追跡を実装するタスク
・AI_Controller・・・AI用のコントローラー

1.ブループリントクラスからAI用のキャラクターを作成する
キャラクターのMesh、Animationを自分好みに設定する。

2.ビヘイビアツリーを作成する
素材03
コンテンツブラウザー上で右クリック、「Artificial Intelligence」から「Behavior Tree」を選択する。
わかりやすいように「AI_BehaviorTree」などに変更しておくとよい。

3.Taskを作成する
素材04
先ほど作った「AI_BehaviorTree」を開き、ウィンドウの左上の「New Task」を選択する。
Taskを「AI_Track」という名前に変更しておく。

4.追跡するTaskを作成する
素材05
画像のようにノード同士をつなげる。
ここではAIのコントローラーを取得し、「Get PlayerPawn」で取得したPlayerPawnの位置まで移動させるということをしています。

5.ビヘイビアツリーを編集する
素材06
「Selecter」と先ほど作った「AI_Track」を作り画像のようにつなぐ。

6.AIControllerを作成する
素材07
コンテンツブラウザー上で右クリック、「Blueprint Class」を選択する。
ウィンドウ上の検索バーで「AIController」で検索し作成する。
「AI_Controller」という名前に変更しておく。
素材11
キャラクターのMesh、Animationを設定した後、画像のPawn部分のAI Controller Classを先ほど作った「AI_Controller」に設定します。

7.AIControllerの編集
素材08
画像のように「Event Tick」と「Run Behavior Tree」を作成しつなげます。
「Run Behavior Tree」の「BTAsset」で作成した「AI_Behaviortree」を選択します。

8.フィールド上の編集
素材09
画像の左側のクラスの検索バーで「Nav Mesh Bounds Volume」を検索しフィールドに出す。
画面左上にある「Show」をクリックし、「Navigation」のチェックに入れると、先ほど作ったMeshに入っているボックスの上に緑のエリアが表示されます。
これはAIが歩くことのできる範囲で、この中に追跡対象のキャラクターがいれば常についていくことができる。

素材10
このようにフィールド全体を囲う。

実行すると操作キャラクターについていくようになる。

独自のアセットをインポートする part3

コリジョンをつける

スタティックメッシュにコリジョンをつけるには、mayaなど3Dツールでつけるコリジョン形状を一緒にインポートする方法と、アンリアルで自動生成を使って設定する方法があります。

スタティックメッシュエディタ

初めに、コリジョンを確認する方法を解説します。すでに何度も使用しましたが、コンテンツブラザ上でスタティックメッシュアセットをダブルクリックすると、スタティックメッシュエディタが開き、一つのアセットを詳細に閲覧編集することができます。

メニューバー:一般的なウィンドウアプリケーションのメニューバーです、コリジョンを設定したり、削除しする機能はここからアクセスすることができます。

ツールバー:ここは、ビューオプションの切り替えボタンがあります。有効になったボタンはオレンジ色、クリックすると有効/無効の切り替えができます。

ビューポート:プレビューのためのビューポートです、レベルエディタの3Dビューと同じ操作で使います。

詳細パネル:レベルエディタの「詳細」パネルと同く、スタティックメッシュの詳細設定をここで設定できる。

シンプルなコリジョンを追加

まずスタティックメッシュエディタを開き、ツールバーで「コリジョン」ボタンをクリックし、コリジョンの表示をまずオンにする。

次はメニューバーで「コリジョン」ー>「ボックス単純化コリジョンを追加」を選んで。

ビューポートのメッシュのまわりはワイヤーフレームが追加されるはずです。このワイヤーフレームがコリジョンの形状を表しています。

独自のアセットをインポートする part2

テクスチャからマテリアルを作成する

テクスチャは一部の例外を除き、そのままではゲームに使うことはできません。メッシュに貼り付けられるのは、材質を意味するアセットのマテリアルであり、テクスチャはマテリアルから使用される模様のデータのような位置づけになっています。

マテリアルの詳しい制作方法は今後やってきますので、今回は単純にインポートしたテクスチャからマテリアルを作成して、メッシュに貼りつける操作を紹介します。まずはインポートしたテクスチャを右クリックし、サブメニューから「マテリアルの作成」を選択します。

名前を付けます、作成されたアセットをとりあえず保存しましょう、右クリックし。サブメニューから「保存」を選択します。

スタティックメッシュにマテリアルを割り当てる

仕上げとして、ここまで作成したマテリアルをスタティックメッシュに割り当てていきます。まずはそのメッシュをダブルクリックし、スタティックメッシュエディタを開きます。

そこで、LOD0のどころで、さっき作ったマテリアルを選択します。これでメッシュにマテリアルの模様がつくはずです。

初めてのインポートはこれで完了です。ここまでの手順は画像ファイルからテクスチャをインポートし、次にFBXファイルをスタティックメッシュにインポートし、そして、テクスチャからマテリアルを作成、メッシュに適用する。

スタート地点を設置する

ゲームが始まるとき、プレイヤーキャラが出発する地点を設定できなければ、マップのデザインを始めることはできません。
UE4では「プレイヤースタート」と呼ばれる、特殊なアクタをマップ上に配置して、スタート地点を設定します。

1.先ほど「ボックス」ブラシを置いた時と同じ要領で、「モード」パネルの「基本」>「プレイヤースタート」をビューポートにドラッグ&ドロップします。
2.さらに、移動ツールを使い、このアクタを土台の真ん中あたりまで移動させます。
3.ゲームをテストプレイしてみましょう。「プレイ」ボタンの右脇にある「▼」ボタンをクリックし、サブメニューから「新規エディタウィンドウ」を選択します。
4.床の真ん中からゲームが始まっていれば配置は成功です。「ESC」キーを押して、ゲームのテストプレイを終了してください。

制作するマップを計画する

ここまでの作業で、足場を作り、視界を確保し、ゲームのスタート地点を追加することができました。ここからは、どういうマップを作っていくかを考え、短い期間でそれを組み立てて、ゲームを動かして試行錯誤する、苦しいながらも楽しい時間が始まります。

プレイヤーはスタート地点にいて、ゴールは目につくところにありますが、実際には一段うえにあるため、すぐにたどり着くことはできません。
壁を潜れるトンネルがあることに気づけば、上の段に上るためのスロープを上ってゴールにたどりつけるという、「ステージ1らしい簡単なマップです」

とてもシンプルなマップですが、短い期間で完成させることができ、BSPブラシの基本的な使い方を理解することもできます。
3つのブラシを使い、壁を床の上に配置しましょう。

1.移動ツールを使って、「プレイヤースタート」を移動させます。
2.「モード」パネルから、「BSP」>「ボックス」をドラッグ&ドロップし、このボックスに名前を付けます。
3.作成したボックスをのサイズ変更し位置にあった大きさに変えます。
4.配置したボックスを複製移動させるなどをして床に壁を配置して、位置にあった大きさに変えます。
5.3つ目のボックスを追加してスロープを追加していきます。

BSPでレベルをデザインする

ここからは「ペーパーニンジャ」プロジェクトでプレイヤーが最初に遊ぶことになるマップ「ステージ1」のレベルデザインを開始します。

ブラックボックスブラシで床を配置する

「空のレベル」で制作をはじめたこのマップは、文字通りの空っぽで、本当に何もありません。まずは、この世界に床を作りましょう。

1.パースペクティブビューの視界をはっきり確保するために、ライティングモデルを変更しましょう。ビューポートの左上にある表示モードの変更ボタンを押して、「非ライティング(Unlit)」を選択します。
2.「モード」パネルの「BSP」カテゴリをクリックし、「ボックス」をビューポートへドラッグ&ドロップします。
3.配置した「ボックス」ブラシには、デフォルトで「Boxブラシ」という名前がついています。「詳細」パネルで、このブラシの名前を「PlatformBrash」に変更します。
4.「詳細」パネルで、配置したボックスの大きさを変更し、10メートル四方で厚み20センチ(1000100020)の形に変更します。「Brash Settings」カテゴリの「X」、「Y」、「Z」に値を入力してください。
移動ツールを使用して、「X=0,Y=0,Z=0」の位置へ移動させます。

ライトを配置して視界を確保する

空っぽの空間に床を敷くことができました。次に最低限の視界を確保するためにライトを一つ設置します。ライトがなければ、ゲームを始めたときに画面が真っ暗になりますので、特殊な場合を除いて、レベルデザインに取り掛かるときはまず一つ以上の光源を置く必要があります。

1.「モード」パネルの「ライト」>「平行光源」をマップ上にドラッグ&ドロップします。
2.平行光源は、どこに置いても機能しますが、向きを調整しやすいように、編集している床の近場に置くようにしましょう。
移動ツールを使うか、「詳細」パネルの「トランスフォーム(変換)」>「位置」プロパティに直接値を入力する方法で、「X=0,Y=0,Z=500」あたりの位置へ移動させます。
ライトを置いたので、これ以降は表示モードを「非ライティング」から「ライティング」に切り替えても構いません。

独自のアセットをインポートする part1

UE4のコンテンツパイプライン

外部のDCCツールで作成された本作の床材です。ツール上でテクスチャを使ってマテリアルを作り、貼り付けであります。UE4上でこのアセットを使うためには、UE4のデータ形式に変換しなければいけません。この工程を、UE4を初めとする多くのゲームエンジンは、インポートを呼んでいます。

インポートする

まず、メッシュに貼り付けるテクスチャを先にインポートしていきます。コンテンツブラウザのアセットツリーで、「インポート」ボタンをクリックします。インポートするファイルを選択するダイアログが開きますので、そこでテクスチャを選択し、「開く」ボタンをクリックします。

新しいテクスチャアセットが作成され、コンテンツブラウザ上に表示されれば、インポート成功です。

インポートされたアセットを保存しましょう。テクスチャの上で右クリックし、サブメニューから「保存」を選択します。

FBXファイルからスタティックメッシュインポートする

コンテンツブラウザのアセットツリーで「インポート」ボタンをクリックします。それでまたダイアログが開きますのでFBXを選択し、「開く」をクリックします。

テクスチャと異なり、FBXの場合は、指定したFBXファイルを、どのような設定でインポートするかを指定するダイアログ「FBXインポートオプション」が開きますので、「import skeletal」と「auto generate collision」のチャックを外してください。

続いて「import materials」と「import textures」のチェックを外して、「インポート」ボタンをクリックし、インポートを実行します。

コンテンツブラウザに新しいアセットが追加されていれば、インポート成功です。

最後、アセットの上で右クリックし、サブメニューから「保存」を選択します。

虎参備忘録~UE4編‐007~

英語版を基準に書いています

箇条書き注意

UE4@5/27-ペーパーニンジャを作る(12章)

 


入力マッピングの追加はProject Settings > inputのBindingsで行う。

入力マッピングには

デジタル入力を扱うActionMappings(押した時や放した時にイベントが呼ばれる)

マウスの移動量やアナログスティックなどの入力を使うAxisMappings(Tick並みに呼ばれている)

の2種類がある。


続きを読む