はじめに
今回はこちらを見ていきます
What is Blueprint? BPとはなにか?
- BP は視覚的スクリプティング
- プログラミングする事と同等
- 🤔このあたりはノードベースとテキストベースの違いなので軽く飛ばしてみていくことに
- BPはコンテンツのコンテナと考えられる
– 図はイメージです
ここからはエディタの内部を見ていくとのこと。教材?が配布されているのでダウンロードして開いた図。
最初はドア。
- プレイモードにして近づくと開くアニメーションがされる
- そのようにスクリプトがくんであるとのこと
ブループリントを開く。
- スクリプト(イベントグラフ)は大きく分けて上下に配置されている
- 上が開くアクション、下が閉じるアクション
- コンポーネントはドアのフレーム、ドア、近接を検出するTrigger(Box Collision)がある
- 2番目のドアはスクリプトなし
- ドアを構成するに必要なコンポーネントのみがあるとの事
- エディターを開いたがグラフエディタには何も配置されていなかった
- 機能のないこのようなドアの用途はドアフレームとドアのセットが大量にあるようなマンションなどでコピーして配置できる事の模様
次はライトで、最初のドアに似ているが近づくとライトが付く
- ドアとの違いとしては、光の色はBPを開かなくても変更可能というところ
次もライト
- データオンリーでイベントグラフを持たない
- しかしちゃんと近づくとライトが点灯する。不思議
- BPはコンパイルされたオブジェクト指向視覚的スクリプティング言語
- BPは完全にUEに埋め込まれている
- アニメーションからUI、マテリアル、サウンド編集全てにBPが埋め込まれていて全てノードベースであることがこの講義を通してわかるでしょう。との事
- BPは特定の機能を持つノードを接続し作業しすぐに結果が確認可能
BPの階層の紹介
BPを新規作成しようとすると親クラスをどれにするか選ぶようダイアログが表示される。その中のすべてのクラスをクリックすると階層が確認可能とのこと
- すべてのクラスはオブジェクトクラスを継承する
- Actor はトランスフォーム(位置、スケール、回転)を持つなにか
- Pawn はキャラクターやAIが所有可能なすべてのアクタに対する基本クラス
- Character は骨を持つもの。ゲームプレイヤーも通常はこれを操作している
- WheeledVehicle はホイール付き乗り物
Blueprintの種類
- Level Blueprint – 1レベルに1つ
- Class Blueprint – 複数(モジュラー)
C++はBlueprintであり、BlueprintはC++である
– BPはC++コードで構築されている
– C++でBlueprintを開けるし編集可能
– BlueprintとC++はうまく連動する
ブループリントの作成とエディタのUI
BPの作成方法の紹介
- 作成方法はいくつかある。とのこと
方法1. コンテンツブラウザの新規作成から作成
- ここでは実際に Actor を親として作成
- 名前を
BP_Test
とする - 作成後開く
レベルへの配置
- コンテンツブラウザの BP_Test を3つ配置している
- インスタンス化したあとに上図から色を変更してもそれは独立していて個別に色が変わるだけという解説がある
方法2. コンテンツブラウザ 右クリックから作成
方法3. コンポーネントを選択して作成
- 上記の図では全てModeパネルから別々に配置されたコンポーネント
- メッシュ、ランプ、Box Collision
- 3つを配置後、Ctrlを押しながら複数選択する
- 選択後にツールバーのブループリントから選択をブループリントクラスに変換をクリック
- 作成するBlueprintの保存場所とBlueprint名が聞かれるので選択・設定して作成
エディタUI
- コンポーネント
- オーディオ、パーティクル、スケルタルメッシュ、メッシュ、カメラなど追加可能
- 各コンポーネントにはなんかしらの機能がビルトインされていて活用できる
- メインツールバー
- コンパイル
- 保存、検索できる
- Find ボタンを押すとこのBPを参照し使用しているものがわかる
- クラスセッティングではクラス特有の設定ができる
- クラスデフォルトはクラスのデフォルト値を設定
- シュミレーションまたはプレイすることでBPが実際プレイされたときの挙動が確認可能
- 詳細パネル
- 定義及び調整が可能な全てのプロパティが表示される
- 表示されている内容はコンポーネントパネルで選択しているもの
- ビューポート
- 追加した全てのコンポーネントが表示される
- Construction Script (ビューポートの別タブ)
- カスタマイズ可能なプロパティやプレハブが設定可能
- レベルアーティストにスクリプトの変更は許可せず、プロパティのみの変更などをここで行ってもらうなどすると有効
- BP読み込み時に一度だけ実行される部分
- EventGraph(ビューポートの別タブ)
- ランタイム時にBPスクリプトのアップデートに使用される
- MyBlueprint
- ここにあるグラフは全てビューポートのエリアに表示される
- マクロを作成することも可能
- 変数の作成も可能
- Event Dispatchersは異なるBP間の通信に使用できる
ブループリントコンポーネント
- コンポーネントはBPを構成する要素
- アクセス可能な機能やプロパティをアタッチする
- ここでは追加方法とアクセス方法とコンポーネントのタイプを見ていく
- 動画ではBPを作成している。先程作ったものがあるのでそれを流用する
コンポーネント追加 Static Mesh
- 色々なタイプのコンポーネントがある(サラッと説明があったのでサラッと書いていく)
- Audio 音
- Particle System エフェクト効果など
- ライト関係
- Skeltal Mesh ボーンありメッシュ
- Static Mesh ボーンなしメッシュ
- AI に振る舞いをもたせる関連のコンポーネント
- Camera
- Cine Camera シネマティック用カメラ
- 衝突関連を扱う Collision
- 追加したいコンポーネントの場所がわからなかったりしたら検索も使えるとのこと
ここでは例として StaticMeshを追加。追加後直ちに名前を変更するように求められるがその理由はBPが複数のStaticMeshを持つことができ、2つ目追加すると StaticMesh1 という名前になる。非常にわかりづらくなるためとのこと。
- StaticMeshに何を割り当てるかは詳細パネルから設定
- 物理としての特性をもたせたり詳細パネルからはStaticMeshにまつわるプロパティの設定を行う
- Static Mesh は BookLP (本)を選択
- ここではStaticMeshの名前を SM_Book とした
DefaultSceneRoot について
- コンポーネントの一種
- BPを生成すると付属する
- これの解説のため、レベルに戻りこのBPを配置する
コンポーネント追加 Skeltal Mesh
- BP_SkeltalMesh BPを作成 (親 = Actor)
- SkeltamMeshを追加名前を Character とする
- Character を SceneRoot とするため Character を DefaultSceneRoot にドラッグ
- 結果
- 中央の球もなくなっていることが確認できる
- SkeltalMeshを割り当てる。StaticMeshの選択同様詳細パネルから行えるが、異なった方法の紹介のため別の方法で行う
- コンテンツブラウザからスケルタルメッシュを選択し、BPエディタで➡ボタンを押す
- コンテンツブラウザで選択している物がある場合は便利な方法とのこと
- またはコンテンツブラウザからBPエディタのコンポーネントパネルへドラッグする事でも追加可能1
- スケルタルメッシュのいくつかのプロパティを変更する
- アニメーションアセットを設定可能にするためにAnimatin Mode を Use Animation Assetに変更
- Anim to play は Idle を設定
- 設定したらすぐに Skeltalmesh はidle状態のアニメーションになった
- コンパイル → 保存する
- レベルには配置しプレイするとIdle状態になる
コンポーネント確認 Skeltal Mesh
- 3.3のところに配置されているSkeltalMeshはプレイ中に近づくとランプが付き、回転し始める
- 内容確認のためエディターに移行する。選択してブループリントを編集ボタンを押すか、右クリックから編集で移行
- トリガーを確認すると、イベントが2つ有効になっている
- スクリプトを確認するには EventGraph タブへ行くか、ビューボタンを押す
- EventGraph画面ではスクリプトがあり、右側のコンポーネントにはこのBPのコンポーネントがある。各コンポーネントをクリックし詳細からイベントを追加したり設定する事が可能
ブループリントグラフ
- 異なるブループリントグラフとその用途について説明をする
- エディター内で快適に操作できるようグラフの基本的なナビゲーション操作についても解説
1つ目のスポットランプ
- 詳細パネルにはこのスポットライトを構成する異なるタイプのコンポーネントが全て表示されている
- その下にはYaw、Pitchなどランプの状態を変える色々なプロパティがあり変更可能
- どのようにして設定されているか確認するためエディタへ移行する
- イベントグラフは空のまま。
- ここで基本的なマウス操作についての解説がある
- ノードの実行ピンの解説
- 接続の解除は Alt を押してクリック
- コンストラクションスクリプトの解説
2つ目のランプ
- 近づくとランプはプレイヤーの方を向いて追随してくる
- イベントグラフでこのようなことが可能とのこと
- 🤔イベントグラフはTickなどで動作できるから動的に追随できるのか
- イベントグラフではプレイヤーを追跡するロジックが入っていて先程よりも複雑
- 複数ノードを選択し、折りたたむ事が可能
- 折りたたむと左側に表示される。名前をつけてわかりやすく管理できる
- 関数に折りたたむと別のところからも呼び出すために配置したりできる
- マクロは必ずしも入力値を必要としないため、入力のない処理のまとまりなどでまとめると良さそう
最後に
一回で終わらせたかった。しかしすごく良い内容ですね。
良い復習にもなりましたし、知らないことも当然いっぱいあったので星4つで少し不安でしたがすごくいい動画です。
メモ
- コンテンツブラウザから行う新規作成はアセットの作成が可能
- Blueprint一覧にあるものについて
- Blueprint Function Library は他のBPからアクセス可能な関数のコレクション
- Blueprint Interface は異なるBP間の効果的なコミュニケーションツール
- Blueprint Macro Library はBPからアクセス可能なマクロライブラリ
- Enumeration (列挙型) は名前付きリストでBP内のフロー制御に使用可能
- Structureは様々な変数タイプを集めたコレクション
- Blueprint作成後の画面について
- コメントはノードを選択してCキー
pumlメモ
BluePrint : Components BluePrint : Script BluePrint : Data
Object <|-- Actor Actor <|-- Pawn Pawn <|-- Character Pawn <|-- WheeledVehicle
Asset <|-- Particle Asset <|-- Blueprint Asset <|-- Material Asset <|-- Level Asset <|-- Substance