Unreal Engine入門(2) 基礎知識

UnrealEngine

概要

今回はチュートリアルを進めていく中で必要な基礎知識を紹介します。レベルやアクタ、ブループリントクラスといった言葉がどんな概念を示しているかを理解しておくと、今後のチュートリアルをスムーズに進められるのではないかと思います。また配布しているサンプルファイルの仕組みも解説しています。

とりあえずどんどん動かしてみたいという方は、このチュートリアルを飛ばして次に進んでも良いかと思います。

1.コンテンツ制作のポイント
2.レベルとはシーン全体の総称
3.アクタはレベルに配置されるもの
4.ブループリントクラスがもたらすインタラクティブ性
5.プレイ時の視界について
6.視界を指定する(Pawnクラスを所有する)
7.座標系に注意。横方向がY。
8.背景色という考え方はない?
9.サンプルファイル解説

コンテンツ制作のポイント

Unreal Engineでは「レベル」と呼ばれる空間に「アクタ」を配置することで情景を構築していきます。アクタの中にはブループリントを保持してインタラクティブに振る舞うものがいます。これを「ブループリントクラス」と呼びます。これら「レベル」「アクタ」「クラス」3つの関係性をいかに作り出していくかが、コンテンツ制作のポイントになるでしょう。

レベルとはシーン全体の総称

レベルはシーン全体のことを指します。レベル内にはメッシュやライト、カメラなど様々なオブジェクトを配置できます。3DCGツールではファイルそのもの、AfterEffectではコンポジションのようなもの考えて良いかもしれません。

なおレベルは複数作成することができます。基本は異なるシーンごとに別のレベルを作成していくことになると思いますが、大きな一つのレベルの中に複数のサブレベルを設定し、データを読み込むタイミングを調整することも可能です。

またレベルには「レベルブループリント」と呼ばれるブルーブリントが追加でき、レベル内の様々な要素をプログラミングで制御することが可能です。

レベルについて(公式ドキュメント)

ちなみにこのレベルは慣習的にマップと呼ばれることがあるようですが、3DCGのマッピングと混同してしまいそうなので、筆者は「レベル」で統一して呼んでいます。

アクタはレベルに配置されるもの

レベルに配置できる全てのオブジェクトを総称してアクタと言います。アクタにはメッシュやライト、カメラ、サウンドなど様々なタイプがありますが、それらも全てアクタです。どんなアクタも位置・回転・スケールという配置パラメータ「トランスフォーム」を持っています。

後述するブループリントクラスをアクタとしてレベルに配置すると、アクタをインタラクティブに制御できるようになります。

アクタは手動でユーザーがレベルに追加することもできますし、ブループリントを使用して動的にレベルに追加、削除することが可能です。

アクタについて(公式ドキュメント)

ブループリントクラスがもたらすインタラクティブ性

アクタにブループリントを追加してインタラクティブな機能を持たせるためには、ブループリントクラスを作成します。ブループリントクラスによって、キーボード操作でアクタが移動したり、音楽に反応して大きさが変化したりできるようになります。UnityでいうところのPrefabがこのブループリントクラスです。

さらにブループリントクラスには「コンポーネント」と呼ばれる様々なオブジェクトを子要素として加えたり、変数や関数、イベントなども含めることができます。

このブルーブリントクラスの考え方を把握できると、Unreal Engineの可能性を大きく引き出せるとともに、とても効率的にアルゴリズムを実装できるようになります。プログラミングの経験がないと理解が若干難しいかもしれませんが、公式ドキュメントを参照したり、作業をしながら感覚をつかんでいきましょう。

ブループリントクラスについて(公式ドキュメント)

ブループリントクラスを編集中の画面。3Dメッシュデータに加えて、ブループリントや変数など様々なデータを含めることができる。

プレイ時の視界について

Unreal Engineを使ってみて最初に混乱したのが、作業中とプレイ中で視界が変わってしまうということでした。カメラを作成してビューポートで指定していたとしても、プレイボタンを押すと別の視界に変わってしまいます。

これは、Unreal Engineがプレイ開始時にいわば「主人公キャラクター」を生成するという仕様があるためです。実際、プレイ開始直後にアウトライナを観察していると12個のアクタが自動的に追加されていました。その中の「Default Pawn」こそが主人公キャラクターというわけです。この「主人公キャラクター」に関連づけられているカメラがプレイ時の視界となります。(もしカメラがなければ主人公キャラクターの位置と向きが視界となります)

またUnreal Engineは「主人公キャラクター(Pawnクラス)」と「プレイしているユーザー」を結びつけ、キーボード等で操作ができるようにしてくれます。この一連の関連付けを、Unreal Engineでは「所有」という言葉で表現しています。プレイヤーが所有するキャラクターという概念。まさにゲーム機能に特化しているから故の仕様ですね。

このような仕様となっていますので、希望の視界でプレイするためには、適切な視界を関連づけられた主人公キャラクター(Pawnクラス)を指定し、私たちプレイヤーが「所有」する必要があるということです。

空っぽのレベルをプレイしてみると..

自動的に12個のアクタが追加される

視界を指定する(Pawnクラスを所有する)

視界を指定する具体的な方法を紹介します。どのPawnクラスを所有するか?Pawnクラスはどんな視界と関連づけられているのか?ということがポイントなります。

  1. カメラを追加してPawnクラスに関連づける
  2. Pawnクラスを作成して、手動で所有設定
  3. Game ModeでDefault Pawn Classを指定
(1)カメラを追加してPawnクラスに関連づける

最も簡単に指定する方法です。カメラアクタをレベルに配置して、パラメータ「Auto Active for Player」を「Player 0」に設定するだけです。これで所有しているPawnクラスにカメラを関連づけられます。

この関連付はブループリントでも行うことができるので、複数のカメラを任意のタイミングで自由に切り替えることが可能です。

複数の固定カメラ間で切り替える(公式ドキュメント)

(2)Pawnクラスを作成して、手動で所有設定

主人公キャラクターのクラス(PawnかCharcter)を自作して、手動でレベル内に配置します。配置したアクタのパラメータ「Auto Posses Player」を「Player 0」に設定することで所有することになります。映像的に考えるとカメラマンのキャラクターを配置するような感覚に近いかもしれません。サンプルファイルではこの手法を採用しています。

(3)Game ModeでDefault Pawn Classを指定

(2)と同様に主人公キャラクターのクラス(PawnかCharcter)を自作してレベルに配置します。(2)との違いとしては自動的に生成・配置されるということです。そのために「Game Mode Class」という設定用のクラスを作成してDefault Pawn Classに主人公キャラクターを選択。Project SettingかWorld Settingにて作成したGame Mode Classを有効にします。

なお、この際主人公キャラクターが生成される場所は「Player Start」という特殊なアクターの位置となります。今回はこの方法は採用しませんので詳しい解説は後日に回したいと思いますが、とても汎用的な手法ですので、ゲームを作成する場合はこの手法が望ましいでしょう。

ブループリントでゲームモードをセットアップする操作手順

座標系に注意。横方向がY。

Unreal Engineの座標系は、一般的な映像系ツールと大きく異なるので注意が必要です。Unreal Engineではデフォルトビューに対して座標が奥行X、高さY、左右Zとなっています。映像系ツールでは横方向はほとんどX軸だと思いますので、もしかするとこの違いが最も混乱するかもしれません。高さ方向がZなのはCAD系ソフトと同じなのでなんとかなるのですが、横方向がXという感覚に慣れるのは大変かもしれません。

もちろんカメラ位置を調整すれば、横方向をXとするセットアップを作れると思います。しかし、物理エンジンなどもこの座標系に準じて作動していると思いますし、郷に入れば郷に従え、ということでUnreal Engnieの座標系を受け入れることにしました。

背景色という考え方はない?

Unreal Engineには背景色という概念がありません(ないと思います)。筆者は使い始めてすぐにレベルの背景色を変えようとしました。しかしどこにもパラメータがないのです。おそらく仮想現実空間を構築していくUnreal Engineにはそうした非現実なパラメータは存在しにくいのかなと想像しています。

背景の色を変更するには、空かフォグを追加して、その色を変更します。サンプルファイルでは「指数関数的ハイトフォグ(Exponential Height Fog)」を使用しています。単色ベタ塗りの背景が簡単に作れるからです。Fog Inscattering Colorで全体の色、Fog Height Falloffで水平線のグラデーション(高さ方向のフォグの密度の変更)ができます。

背景に画像を用いたりする場合は、平面にマテリアルを貼り付けるなど、様々な工夫が必要になるでしょう。

指数関数的ハイトフォグについて(公式ドキュメント)

サンプルファイル解説

サンプルファイルではDefault_Settingというクラスに、カメラとフォグ、ライトをコンポーネントとして追加しています。モーショングラフィックスを作成するのに最低限必要なオブジェクトをまとめてあるので、Default_Settingをレベルに一つ追加し、Auto Active for PlayerをPlayer 0に設定するだけでセットアップ完了となります。

下記のムービーをご覧いただけるとそのシンプルさが分かるはずです。もちろん、これは筆者がたまたま今使っている手法にすぎませんので、皆さんはそれぞれの用途に合わせて独自のセットアップを見つけられるのが良いかと思います。

Default_Settingをブループリントクラスエディターで開くと構成を確認できる

まとめ

今回のチュートリアルは体験がなく、抽象的な概念を紹介するだけでしたので、ちょっと分かりにくい点があったかもしれません。Unreal Engineにはこのような考え方がある。ということを頭の片隅に置いておき、次回からの体験型チュートリアルに進んでいきましょう。また改めて気になったらこの回を復習してみてください。新たな発見があるはずです。

また私自身もUnreal Engineを学び始めて時間が経っていないので、もし誤った情報や、より効果的な方法などがありましたら、Twitter(@zuga)などでお知らせいただけると助かります。

Related Posts

No results found

メニュー