電通総研 テックブログ

電通総研が運営する技術ブログ

Unreal Engine 5 を使ってワールドの地形を作成してみました

はじめに

こんにちは、ISID 金融ソリューション事業部の岡崎です。 今回はEpicGames社が提供するゲームエンジン、Unreal Engine5 を利用して VRメタバースのベースとなる、ワールドの地形を作成する手順を紹介します。

手順

今回は下記手順でUnrealEngine上にワールドを作成しました。

  1. ランドスケープモードを使用して地形作成
  2. 地形のマテリアル作成
  3. マテリアルを使用してペイント
  4. 3Dアセットの追加
  5. 海を追加

ランドスケープモードを使用して地形作成

ワールドの地形を生成するためにはまず、ワールドを生成するためのファイルを作成する必要があります。 Epic Games LauncherからUnreal Editorを起動し、左側の「ゲーム」のパネルから「Blank」を選びプロジェクトを始めます。

生成されたプロジェクトから地形を生成するためにはまず、ランドスケープツールを使用します。 ランドスケープモードには ・管理 ・スカルプト ・ペイント という3つのモードがあります。

まずは、フィールドの基盤になるメッシュを作成するために、管理モードからコンポーネント数を指定し、メッシュを作成します。今回はコンポーネント数を8x8で行いました。

メッシュの作成が終わると、コンポーネントで選択した領域にメッシュが作成され、選択されていた管理モードから、自動的にスカルプトモードに変更されます。

今回はスカルプトモードと侵食モードを利用して、島や山を表現しています。 基本的にはスカルプトモードで山や、島の突起を作成し、侵食モードで山肌や谷を作成していく流れで作業を行いました。

(山の輪郭を作成します)

(侵食モードで山肌を作成します)

次に作成した山や谷のワールドに海を追加します。本格的な海は後続の処理で作成するので、今回は仮の状態として海を追加しました。 海の追加方法は、上記タブのコンテンツ作成ボタンから「形状」→「Plane」を選択します。次に右側のトランスフォームの位置と大きさの数値を任意のものに変更します。

今回は海面の高さを陸地より少し上にしたかったので、位置のZ数値を150と設定しました。 作成が完了すると、海ができるはずの箇所に薄いグレーの「Plane」コンテンツが見えます。次にこの薄いグレーのコンテンツに海のマテリアルを追加します。 右側の詳細タブから「マテリアル」を選択し、検索欄に「water」と入力し、「M_Water_Ocean」というマテリアルを選択します。

以上の工程で、海の追加が完了しました。

地形のマテリアル作成

スカルプトモードで作成した地形にマテリアルを使って岩肌や草、海岸などを作成していきます。 まず、マテリアルを使うためには、プロジェクト内にマテリアルの追加を行わないといけません。 マテリアルの追加方法は画面上部のコンテンツ作成ボタンから「Quixel Bridge」を開きます。

「Quixel Bridge」内で任意のマテリアルを選択し、プロジェクト内で使用します。今回は草のマテリアルである「Grass」を追加しました。

画面下のコンテンツドロワーから追加したマテリアルを確認することができます。

追加したマテリアルをそのままプロジェクトでは使うことができないので、 岩肌や草、海岸など、使用するマテリアルを全て一つのプロジェクト用のマテリアルに集約をしました。 コンテンツ配下に「M_landscape」という本プロジェクト用のマテリアルを作成します。

次にマテリアル作成画面に移動し、エディタ上で右クリックを押し「Layer Blend」を作成します。 ここでプロジェクトで使用するひとつひとつのマテリアル(岩肌や草など)に対して、影の強さや発色の強さ、2つのマテリアルのブレンドなどを行います。 本作業はプロジェクト独自の絵の具パレットを作成するようなイメージです。 独自のマテリアル作成が完了すると、いよいよマテリアルを使用したペイント作業になります。  

マテリアルを使用してペイント

マテリアルを使用したペイントを行うためには、ランドスケープモードに変更して、ペイントタブを選択することでマテリアルのレイヤー(色のついた筆のイメージ)を選択できます。 レイヤーの中には先ほどマテリアル作成で行った「Layer Blend」を選ぶことができます。 ここで任意のレイヤーを選択し、作成した地形にペイントを行っていきます。 また、スカルプトモードと同様で、ツールの強度やブラシサイズなどもここで変更できます。ツールの強度を弱くすることで、複数のレイヤーのマテリアルを重ね塗りすることができます。 ここでは、浜辺を作成するために、「sand1」レイヤーを使い砂のマテリアルを塗った上から、「Glass1」の芝生を薄く重ね塗りを行いました。

山肌も同様にペイントをしていき、岩のレイヤーや草野レイヤー、砂浜のレイヤーを重ねて塗っていきワールド地形を仕上げていきます。

3Dアセットの追加

地形のスカルプト、ペイントが完了し完成に近づいたので、次は作成した地形に3Dアセットを設置します。

もちろん別の3Dオブジェクト作成ツールなどを使って作成したアセットを設置しても良いですが、今回はUnreal Engineでデフォルトで用意されている3Dアセットを追加し設置します。 マテリアルの作成でも使用した「Quixel Bridge」を開き、「3D Assets」を選択することで、作成した地形にあったアセットを探すことができます。 今回は「Nature」の中から「ROCK」を選択し、任意の岩のアセットを探し追加します。

追加したアセットは「コンテンツドロワー」内の「Megascans」→「3D_Assets」内に保存されているのでドラッグして任意の場所に配置します。

海を追加

最後に海の追加を行います。 前の手順で追加した「M_Water_Ocean」でも良いのですが、Unreal Engine には別の海の機能も搭載されているので、そちらを利用します。 上部の編集タブからプラグインを選択し、検索欄に「water」と入力し、「Water」のプラグインを有効にします。現段階ではまだ実験段階と表示がありますが、問題なく使用できるので、今回は使用します。

次にコンテンツ作成ボタンから「アクタ配置パネル」を選択し、「Water Body Custom」を選択することで、新しい海をワールドに追加することができます。 以上で、ワールド上に地形を作成するための工程が完了しました。

おわりに

今回は、Unreal Engine5 を使用して、ゼロからワールドに地形を生成する方法を紹介しました。 初めて使用してみましたが、初心者でも簡単にハイクオリティな地形を作ることができました。 私は macOS 12.6 Monterey のPCで地形制作を行いました。

ランドスケープモードのスカルプトを行う際にカーソルの操作が早すぎて上手くいかない点がありましたが、ペンタブなどで対応することで特に不自由なく作業を行うことができました。

今回の実践では、まだまだ Unreal Engine5 の一部の機能しか触れていないので、他の機能のキャッチアップも行っていき、ゲーム以外の領域でも効率的な使用方法を探っていきたいとおもいます。 最後までお読みいただき、ありがとうございました。

現在ISIDはweb3領域のグループ横断組織を立ち上げ、Web3およびメタバース領域のR&Dを行っております(カテゴリー「3DCG」の記事はこちら)。 もし本領域にご興味のある方や、一緒にチャレンジしていきたい方は、ぜひお気軽にご連絡ください!
私たちと同じチームで働いてくれる仲間を、是非お待ちしております!
ISID採用ページ(Web3/メタバース/AI)

参考

ランドスケープの作成 | Unreal Engine ドキュメント【はじめて学ぶ人のための】Unreal Engine 5 風景制作 基礎講座

執筆:@okazaki.wataru、レビュー:@okazaki.wataruShodoで執筆されました