1. Unreal Engine 5の概要とプロジェクトの準備 [0]

Unreal Engine 5(UE5)は、初心者でも美しい3D世界を構築できる強力なゲームエンジンであり、本チュートリアルではその基本的な使い方から応用までを学ぶ。

1.1. UE5のインストールとプロジェクト作成 [25]

  1. Epic Games LauncherのダウンロードとUE5のインストール [25]
    1. UE5を使用するには、まずEpic Games Launcherを公式サイトからダウンロードする必要がある [26]。
    2. Launcherをインストール後、「Unreal Engine」タブからUE5を選択し、「ダウンロード」をクリックしてインストールする [28]。
    3. Epic GamesのMegascansライブラリから提供されているサンプルプロジェクト「Showcase」もダウンロード可能だが、サイズが100GBと大きいため、本チュートリアルでは使用しない [32]。
    4. ダウンロード完了後、LauncherからUE5を起動するか、デスクトップに作成されたショートカットから直接起動できる [37]。
  2. 新規プロジェクトの作成 [41]
    1. UE5起動後、左側の「新規プロジェクト」セクションで、様々なプロジェクトテンプレートから選択できる [41]。
    2. 本チュートリアルでは、学習目的のため「ゲーム」カテゴリから「空のプロジェクト」を選択する [49]。
    3. プロジェクトの保存場所は、ファイルアイコンをクリックして任意のフォルダ(例: デスクトップ)を選択する [55]。
    4. プロジェクト設定では、「ブループリント」を選択し、「スターターコンテンツ」を有効にする(チェックを入れる)ことで、後で使えるアセットが追加される [60]。
    5. 「レイトレーシング」は本チュートリアルでは扱わないため、チェックを外したままにする [66]。
    6. プロジェクト名を入力し、「プロジェクトを作成」をクリックすると、プロジェクトフォルダが作成される [68]。
  3. プロジェクトの起動方法 [70]
    1. 作成したプロジェクトは、UE5のプロジェクトブラウザから選択して起動できる [73]。
    2. または、プロジェクトフォルダ内の実行ファイル(.uprojectファイル)をダブルクリックして直接起動することも可能である [76]。

1.2. UE5のユーザーインターフェースの基本 [80]

  1. ビューポート [80]
    1. 画面中央の大きな領域は「ビューポート」と呼ばれ、3D世界を構築・探索・操作するための窓である [83]。
  2. ツールバー [88]
    1. ビューポートの上には「ツールバー」があり、便利なツールやオプションが集まっている [88]。
    2. 例えば、様々なモード(選択モード、ランドスケープモードなど)を切り替えたり、作成オプションから3Dオブジェクト(アクター)をシーンにドラッグ&ドロップしたりできる [90]。
  3. ワールドアウトライナー [106]
    1. ツールバーの右隣には「ワールドアウトライナー」があり、シーン内のすべてのオブジェクト(アクター)がリスト表示される [106]。
    2. オブジェクトをフォルダに整理したり、表示/非表示を切り替えたり、特定のオブジェクトを選択してビューポート内でフォーカスしたりできる [111]。
  4. 詳細パネル [129]
    1. ワールドアウトライナーの下には「詳細パネル」があり、選択したオブジェクトのすべてのプロパティ(位置、回転、スケールなど)を編集できる [129]。
    2. 例えば、椅子のZ軸スケールを2倍にすることで、椅子の高さを変更できる [132]。
  5. コンテンツドロワー(コンテンツブラウザ) [141]
    1. UE5のすべてのアセット(オブジェクト、マテリアル、レベルなど)は「コンテンツドロワー」に保存される [141]。
    2. コンテンツドロワーは、画面左下のボタンをクリックするか、「Ctrl + Space」キーで開閉できる [143]。
    3. コンテンツドロワー内では、フォルダ構造でアセットが整理されており、アセットをビューポートにドラッグ&ドロップして配置できる [148]。
    4. 「スターターコンテンツ」をプロジェクト作成時に追加し忘れた場合でも、コンテンツドロワーから「機能またはコンテンツパックを追加」を選択して後から追加できる [175]。
  6. UIのカスタマイズ [182]
    1. コンテンツドロワーは、タブを右クリックして「ドック」オプションを選択することで、ビューポートに固定表示できる [182]。
    2. 各パネルのタブを右クリックして「タブを折りたたむ」を選択すると、パネルを非表示にできる [188]。
    3. パネルをサイドバーに移動させることも可能で、UIをよりすっきりと整理できる [193]。
    4. UIのレイアウトが乱れた場合でも、「ウィンドウ」メニューから「レイアウトをロード」→「エディタのデフォルト」を選択することで、いつでも初期状態に戻せる [207]。
  7. UI設定と新規ウィンドウの追加 [216]
    1. コンテンツドロワーの「設定」からサムネイルサイズを変更できる [216]。
    2. 各パネルはドラッグ&ドロップで自由に配置を変更できる [226]。
    3. 「ウィンドウ」メニューから「プレースアクター」タブなど、新しいウィンドウを追加できる [229]。
    4. 「プレースアクター」ウィンドウは、以前のバージョンでは「作成」オプションの一部だったが、UE5では独立したタブとして利用できる [240]。
    5. タブを中クリックすると、そのウィンドウを閉じることができる [248]。
    6. チュートリアルでは、コンテンツドロワーをドックしたり、非表示にしたりと、状況に応じてUIレイアウトを切り替えて使用する [250]。

2. 3Dシーンの操作とオブジェクトの配置 [253]

UE5の3Dシーン内でカメラを移動させ、オブジェクトを効率的に配置・操作する方法を学ぶ。

2.1. カメラ操作とビューポートコントロール [253]

  1. カメラの移動 [253]
    1. 3Dビューポート内で右クリックを押し続けると、カメラを回転できる [255]。
    2. 右クリックを押したままW、A、S、Dキーで前後左右に移動し、Eキーで上昇、Qキーで下降できる [257]。
  2. カメラ速度の調整 [265]
    1. ビューポート上部のカメラ速度設定(デフォルトは4)を変更することで、カメラの移動速度を調整できる [266]。
    2. 右クリックを押したままマウスホイールを上下にスクロールすることで、一時的にカメラ速度を増減できる [274]。
  3. オブジェクトへのフォーカス [278]
    1. シーン内でオブジェクトを見失った場合、ワールドアウトライナーで任意のオブジェクトをクリックし、「F」キーを押すと、そのオブジェクトにカメラがフォーカスされる [278]。
  4. オブジェクトを中心とした回転 [286]
    1. 特定のオブジェクトを中心にカメラを回転させたい場合、そのオブジェクトを選択し「F」キーでフォーカスする [288]。
    2. 「Alt」キーを押しながら左クリックでオブジェクトを中心にカメラを回転させ、右クリックでズームイン/アウトできる [291]。
  5. ビューモードの切り替え [304]
    1. ビューポート上部の「パースペクティブ」ボタンをクリックすると、トップダウン、レフト、フロントなどの視点に切り替えられる [304]。
    2. 「Alt + G」キーでパースペクティブビューに戻れる [318]。
  6. シェーディングモードの変更 [320]
    1. 「リテ」モード(Lit Mode)は、シーンにライトが当たった状態を表示する [320]。
    2. 「アンリテ」モード(Unlit Mode)は、ライトの影響を受けない状態を表示する [321]。
    3. 「ワイヤーフレーム」モードは、オブジェクトのメッシュ構造を表示する [323]。
    4. デバッグ目的で「リテ」モードを頻繁に使用する [325]。
  7. ゲームビューとエディタウィジェットの表示/非表示 [327]
    1. 「G」キーを押すと「ゲームビュー」に切り替わり、エディタのウィジェット(アイコンやガイドライン)が非表示になり、プレイヤーがゲーム内で見る視点を確認できる [327]。
  8. 表示フラグのカスタマイズ [339]
    1. 「表示フラグ」メニューでは、グリッドやその他のエディタ要素の表示/非表示を切り替えられる [339]。
    2. 設定をデフォルトに戻すことも可能である [346]。

2.2. オブジェクトの移動、回転、スケール [349]

  1. オブジェクトの移動 [349]
    1. オブジェクトを選択すると、3つの矢印(ギズモ)が表示され、各軸に沿って移動できる [355]。
    2. デフォルトでは「グリッドスナップ」が有効になっており、オブジェクトが一定の間隔で移動する [359]。
    3. グリッドスナップをオフにすると、スムーズに移動できる [362]。
    4. スナップサイズは、例えば100cm(1メートル)ごとにスナップするように変更できる [364]。
    5. 移動ツールは「W」キーで選択できる [389]。
  2. オブジェクトの回転 [370]
    1. ツールバーの回転アイコンをクリックすると、オブジェクトを回転できるギズモが表示される [370]。
    2. 回転スナップ(デフォルト10度)をオフにすると、スムーズに回転できる [373]。
    3. 回転ツールは「E」キーで選択できる [390]。
  3. オブジェクトのスケール [381]
    1. ツールバーのスケールアイコンをクリックすると、オブジェクトを拡大縮小できるギズモが表示される [381]。
    2. ギズモの中央にある白いボックスをドラッグすると、すべての軸で均一にスケールできる [384]。
    3. スケールスナップをオフにすると、スムーズにスケールできる [386]。
    4. スケールツールは「R」キーで選択できる [391]。
  4. ローカル空間とワールド空間 [395]
    1. デフォルトでは「ワールド空間」でオブジェクトを操作するが、ツールバーの地球儀アイコンをクリックすると「ローカル空間」に切り替わる [396]。
    2. ローカル空間では、オブジェクト自身の軸に沿って移動、回転、スケールできる [398]。
  5. 軸のロック [402]
    1. 移動ギズモの特定の軸をロックすることで、その軸に沿った移動を制限できる [402]。

2.3. オブジェクトの複製と配置の効率化 [408]

  1. オブジェクトの複製 [408]
    1. オブジェクトを選択し、「Ctrl + W」キーを押すと、その場にオブジェクトが複製される [408]。
    2. または、「Alt」キーを押しながら移動ギズモをドラッグすると、オブジェクトを複製しながら移動できる [418]。
  2. カメラロックによる移動 [422]
    1. オブジェクトを長距離移動させる際、移動中に「Shift」キーを押し続けると、カメラがオブジェクトの移動に追従し、効率的に移動できる [425]。
  3. オブジェクトの生成 [430]
    1. 「作成」ドロップダウンメニューから、ライトや形状などのオブジェクトを直接シーンにドラッグ&ドロップして生成できる [430]。
    2. または、メニューからオブジェクトを選択するだけで、ビューポートの中央に生成される [434]。
    3. 「Ctrl」キーを押しながら複数のオブジェクトを選択すると、一度に複数のオブジェクトを生成できる [438]。
  4. 複数オブジェクトの選択 [442]
    1. 複数のオブジェクトを選択するには、「Ctrl」キーを押しながら個々のオブジェクトをクリックする [442]。
    2. 連続したオブジェクトを選択するには、最初のオブジェクトをクリックし、「Shift」キーを押しながら最後のオブジェクトをクリックする [449]。
  5. オブジェクトを地面にスナップ [494]
    1. オブジェクトを選択し、「End」キーを押すと、そのオブジェクトが地面にスナップされる [497]。これは、オブジェクトを正確に地面に配置する際に非常に便利である。
  6. 最初のレベルの作成 [506]
    1. これらの基本的な操作を組み合わせて、テーブルと椅子、ランプなどを配置し、最初の簡単なレベルを作成する [506]。

3. ポストプロセスボリュームとマテリアルの基礎 [516]

シーンの見た目を調整するポストプロセスボリュームと、オブジェクトの質感を定義するマテリアルの基本的な使い方を学ぶ。

3.1. ポストプロセスボリュームによる露出と視覚効果の調整 [516]

  1. 自動露出の理解と制御 [516]
    1. UE5では、人間の目の働きをシミュレートする「自動露出」がデフォルトで有効になっている [516]。
    2. これにより、暗い場所にズームインすると画面が明るくなり、明るい場所にズームアウトすると画面が暗くなる [517]。
  2. レベルの保存と複製 [527]
    1. 作業中のレベルを保存するには、「Ctrl + S」キーを押す [527]。
    2. レベルはコンテンツドロワー内の「Maps」フォルダに保存される [529]。
    3. レベルを複製するには、コンテンツドロワーでレベルを選択し、「Ctrl + W」キーを押す [534]。
  3. テストシーンの準備 [541]
    1. 新しいレベルで、既存のオブジェクトを削除し、簡単な箱型の家を作成する [541]。これは、自動露出やその他の視覚効果をテストするための環境となる。
  4. ビューポートでの自動露出のロック [579]
    1. ビューポート上部の「ライト」メニューから「ゲーム設定のチェックを外す」を選択すると、ビューポート内での自動露出をロックできる [586]。
    2. これにより、カメラが暗い場所に入っても画面の明るさが一定に保たれる [588]。
  5. ポストプロセスボリュームの追加と設定 [593]
    1. プレイヤーの視点での露出を制御するには、「ポストプロセスボリューム」を使用する [597]。
    2. ポストプロセスボリュームは、ワールドアウトライナーにデフォルトで存在する場合がある [601]。
    3. 詳細パネルで「露出」セクションを展開し、「メーターモード」を「オーディオ」から「手動露出」に変更すると、露出を数値で手動制御できる [603]。
    4. ポストプロセスボリュームは、デフォルトではそのボリューム内にあるカメラにのみ影響を与える [653]。
    5. ボリュームのサイズを大きくするか、詳細パネルの「無限範囲(バインドなし)」にチェックを入れることで、シーン全体に影響を与えることができる [656]。
    6. ポストプロセスボリュームでは、ブルーム(光の滲み)、色収差、ビネット(画面端の暗さ)などの視覚効果も調整できる [621]。
    7. 「カラーグレーディング」セクションでは、彩度やコントラストなどの色調整が可能である [636]。
    8. ポストプロセスボリュームを削除するには、ワールドアウトライナーで選択し「Delete」キーを押す [642]。
    9. 新しく追加するには、「作成」タブの「視覚効果」から「ポストプロセスボリューム」をドラッグ&ドロップする [646]。
  6. 露出の固定 [668]
    1. チュートリアルでは、今後の作業のために露出を手動設定し、値を12.5に固定する [668]。

3.2. マテリアルの作成と適用 [671]

  1. 新規レベルの作成と保存 [679]
    1. 新しいマテリアルを作成する前に、コンテンツドロワー内に「My Stuff」という新しいフォルダを作成する [681]。
    2. 「ファイル」メニューから「新規レベル」を選択し、「時間帯」テンプレートを選択する [688]。
    3. 新しいレベルにポストプロセスボリュームを追加し、「無限範囲(バインドなし)」を有効にし、露出補正を手動で12.5に設定する [696]。
    4. このレベルを「My Stuff」フォルダ内に「Material Level」という名前で保存する [745]。
    5. 「Ctrl + L」キーを押しながらマウスを動かすと、太陽の向きをリアルタイムで変更できる [708]。
  2. 既存マテリアルの適用 [715]
    1. コンテンツドロワーの「StarterContent」→「Materials」フォルダには、様々な既存のマテリアルが用意されている [717]。
    2. これらのマテリアルをビューポート内のオブジェクトにドラッグ&ドロップするだけで、簡単に適用できる [721]。
    3. チュートリアルでは、地面に草のマテリアルを適用し、スケールを調整して作業スペースを広げる [734]。
  3. 新規マテリアルの作成 [740]
    1. 「My Stuff」フォルダ内で右クリックし、「マテリアル」を選択して新しいマテリアルを作成する [740]。
    2. マテリアルに「First Material」と名前を付け、ダブルクリックして「マテリアルエディタ」を開く [756]。
    3. マテリアルエディタは、レベルエディタと同様にタブとしてドッキングできる [764]。
    4. マテリアルエディタのビューポートでは、現在のメッシュ(デフォルトは球体)にマテリアルがどのように表示されるかをプレビューできる [783]。

4. マテリアルエディタとPBRの概念 [791]

マテリアルエディタの基本的な使い方、PBR(物理ベースレンダリング)の概念、およびテクスチャの統合方法を学ぶ。

4.1. マテリアルエディタの基本操作とカラーノード [791]

  1. マテリアルエディタのインターフェース [791]
    1. マテリアルエディタの中央には「グラフ」があり、様々なノードを接続してマテリアルを作成する [771]。
    2. 右クリックを押しながらグラフをパンし、マウスホイールでズームイン/アウトできる [775]。
    3. 右側の「詳細パネル」では、選択したノードのプロパティを編集できる [778]。
  2. カラーノードの追加と接続 [798]
    1. グラフ内で右クリックし、「Constant3Vector」(Unreal Engineでは色をConstant3Vectorと呼ぶ)を検索して追加する [798]。
    2. このノードをダブルクリックすると、カラーピッカーが表示され、色を調整できる [802]。
    3. カラーピッカーのスライダーを上げて色を明るくしないと、色が反映されない [806]。
    4. 設定した色をマテリアルの「ベースカラー」入力にドラッグ&ドロップで接続する [810]。
  3. マテリアルの保存と適用 [821]
    1. マテリアルエディタで「適用」ボタンをクリックし、マテリアルを保存する [826]。
    2. これにより、マテリアルがコンパイルされ、シーン内のオブジェクトに適用される [828]。
    3. マテリアルを編集した後、変更をシーンに反映させるには、必ず「適用」ボタンを押す必要がある [830]。

4.2. PBR(物理ベースレンダリング)の概念とマテリアルプロパティ [836]

  1. PBRの概要 [878]
    1. Unreal Engineは「物理ベースレンダリング」(PBR)を使用しており、これは現実世界の光の挙動をシミュレートするレンダリング手法である [878]。
    2. PBRでは、主に「メタリック」と「ラフネス」という2つの値がマテリアルの見た目を決定する [880]。
  2. ラフネス(Roughness) [842]
    1. ラフネスは、マテリアルの表面の粗さを表すスカラー値(0~1の数値)である [842]。
    2. 0は完全に滑らかで光沢のある表面(鏡のような)、1は完全に粗く光沢のない表面(ベルベットのような)を表す [855]。
    3. ラフネス値を0.1に設定すると、非常に光沢のある表面になる [861]。
  3. メタリック(Metallic) [863]
    1. メタリックもスカラー値(0~1の数値)で、マテリアルが金属であるかどうかを表す [863]。
    2. 0は非金属、1は完全に金属を表す [865]。
    3. メタリック値を1に設定すると、マテリアルは金属のように見え、ラフネス値と組み合わせることで、金のような光沢のある金属を表現できる [870]。
    4. ほとんどの現実世界の材料は、メタリック値が0(非金属)か1(完全な金属)のどちらかであり、その間の値を取ることは稀である [891]。
    5. ラフネスとメタリックの値は常に0から1の範囲にクランプされるため、範囲外の値を入力しても自動的に最も近い0または1に丸められる [898]。

4.3. テクスチャの統合とノーマルマップの活用 [906]

  1. テクスチャの追加 [906]
    1. マテリアルにテクスチャを追加するには、コンテンツドロワーから目的のテクスチャ(例: Perlin Noiseテクスチャ)をマテリアルエディタのグラフにドラッグ&ドロップする [921]。
    2. テクスチャの出力(RGBピン)をマテリアルの「ラフネス」入力に接続すると、テクスチャのパターンに基づいてラフネスが変化し、よりリアルな表面になる [933]。
    3. 接続を解除するには、「Alt」キーを押しながらワイヤーの始点または終点をクリックする [946]。
  2. ダートテクスチャの追加 [961]
    1. マテリアルの「ベースカラー」にダートテクスチャ(例: Rustテクスチャ)を追加することで、表面に汚れや古さを表現できる [961]。
    2. テクスチャをマテリアルエディタにドラッグ&ドロップし、そのRGB出力を「ベースカラー」入力に接続する [980]。
  3. Lerpノードによるテクスチャと色のブレンド [992]
    1. 特定の領域にのみダートテクスチャを表示したい場合、「Lerp」(線形補間)ノードを使用する [992]。
    2. Lerpノードは、AとBの2つの入力と、それらをブレンドする「アルファ」入力を持ち、アルファの値に基づいてAとBの間を補間する [996]。
    3. ダートテクスチャをA入力に、元の色をB入力に、ラフネスマップをアルファ入力に接続することで、ラフな部分にのみダートテクスチャを表示できる [997]。
  4. ノーマルマップの活用 [1199]
    1. テクスチャだけでは表面の凹凸が平坦に見える場合、「ノーマルマップ」を使用することで、視覚的な奥行きと影を偽装できる [1199]。
    2. ノーマルマップは、実際のジオメトリを変更することなく、表面のディテールを表現し、シーンのライティングによってリアルな影を生成する [1203]。
    3. ノーマルマップテクスチャをマテリアルエディタにドラッグ&ドロップし、そのRGB出力をマテリアルの「ノーマル」入力に接続する [1204]。
  5. テクスチャタイリングの調整 [1230]
    1. テクスチャがシーン内で繰り返し表示され、タイリングが目立つ場合、「テクスチャ座標」ノードと「乗算」ノードを使用してタイリングサイズを調整できる [1230]。
    2. 「テクスチャ座標」ノードの出力を「乗算」ノードのA入力に接続し、B入力にスカラー値(例: 0.5)を設定する [1237]。
    3. この乗算ノードの出力を、すべてのテクスチャのUV入力に接続すると、テクスチャのタイリングサイズが変更される [1247]。
    4. 値を1より小さくするとテクスチャが拡大され、1より大きくすると縮小される [1252]。
  6. 色合い(Tint)の追加 [1263]
    1. マテリアルに色合いを追加するには、「乗算」ノードと「Constant3Vector」ノードを使用する [1263]。
    2. 「Constant3Vector」ノード(色)を「乗算」ノードのA入力に、ベースカラーの出力をB入力に接続し、乗算ノードの出力をマテリアルの「ベースカラー」入力に接続する [1274]。
    3. 「Constant3Vector」ノードの色を変更することで、マテリアル全体の色合いを調整できる [1278]。

5. マテリアルインスタンスとマスターマテリアル [1291]

マテリアルインスタンスとマスターマテリアルを活用して、マテリアルの調整をリアルタイムで行い、効率的なワークフローを構築する方法を学ぶ。

5.1. マテリアルインスタンスによるリアルタイム調整 [1291]

  1. マテリアルインスタンスの作成 [1291]
    1. マテリアルインスタンスは、元のマテリアル(マスターマテリアル)のパラメータをリアルタイムで調整できるようにする機能である [1298]。
    2. コンテンツドロワーでマテリアルを右クリックし、「マテリアルインスタンスを作成」を選択する [1303]。
    3. 作成されたマテリアルインスタンスをビューポート内のオブジェクトにドラッグ&ドロップで適用する [1310]。
  2. パラメータの公開 [1315]
    1. マテリアルインスタンスで調整できるようにするには、マスターマテリアル内のノードを「パラメータ」として公開する必要がある [1315]。
    2. パラメータとして公開したいノード(例: テクスチャタイリングの乗算ノードのB入力)を右クリックし、「パラメータに変換」を選択する [1323]。
    3. パラメータに名前を付け(例: 「Size」)、マスターマテリアルを「適用」して保存する [1326]。
    4. マテリアルインスタンスを開くと、公開されたパラメータ(例: 「Size」)が表示され、チェックボックスをオンにすることで、その値をリアルタイムで調整できる [1329]。
    5. 同様に、色合い(Tint)やノーマルマップの強度(Normal Flatness)などもパラメータとして公開できる [1335]。
    6. ノーマルマップの強度を調整するには、「Normal Flattening」ノードを追加し、その「Flattening」入力にスカラーパラメータを接続する [1349]。

5.2. マスターマテリアルの構築と活用 [1376]

  1. マスターマテリアルの目的 [1376]
    1. マスターマテリアルは、複数のマテリアルインスタンスの親となる単一のマテリアルであり、様々な種類のマテリアル(木、コンクリートなど)を効率的に作成できる [1376]。
    2. これにより、個々のマテリアルをゼロから作成する手間を省き、時間を節約できる [1408]。
  2. マスターマテリアルの作成 [1385]
    1. 既存のマテリアルをマスターマテリアルとして使用するために、名前を「M_MasterMaterial」に変更する [1385]。
    2. ベースカラー、ラフネス、ノーマルなどのテクスチャサンプルノードを右クリックし、「パラメータに変換」を選択して、それぞれに名前を付ける(例: 「Color」、「Roughness」、「Normal」) [1392]。
    3. テクスチャタイリングのスケールパラメータはデフォルト値(1)に戻し、ノーマルフラットネスもデフォルト値(0)に設定する [1399]。
    4. 「適用」ボタンを押してマスターマテリアルを保存する [1403]。
  3. メタリックの切り替え機能の追加 [1412]
    1. マスターマテリアルに、マテリアルが金属であるかどうかを切り替える機能を追加する [1412]。
    2. 「Static Switch Parameter」(静的スイッチパラメータ)ノードを追加し、名前を「Metallic?」とする [1424]。
    3. このノードの「True」入力にメタリックテクスチャパラメータを接続し、「False」入力にConstantノード(値0)を接続する [1428]。
    4. Static Switch Parameterの出力をマテリアルの「Metallic」入力に接続する [1418]。
    5. マテリアルインスタンスを開くと、「Metallic?」というチェックボックスが表示され、これをオン/オフすることで、金属テクスチャの使用を切り替えられる [1433]。
  4. ノーマルマップの反転(Open GL vs DirectX) [1441]
    1. ノーマルマップには「DirectX」と「Open GL」の2種類があり、Unreal EngineはDirectX形式を使用する [1452]。
    2. Open GL形式のノーマルマップを使用すると、影の方向が逆になる問題が発生する場合がある [1447]。
    3. この問題を修正するには、ノーマルマップテクスチャアセットを開き、詳細パネルの「Flip Green Channel」にチェックを入れる [1462]。
    4. これにより、Open GL形式のノーマルマップがDirectX形式に変換され、影が正しく表示されるようになる [1466]。

6. 3Dアセットのインポートとライティングの基礎 [1472]

3Dアセット(スタティックメッシュ)のインポート方法、およびUE5の新しいライティングシステム「Lumen」と従来のライティング手法を比較しながら、ライティングの基礎を学ぶ。

6.1. 3Dアセット(スタティックメッシュ)のインポート [1472]

  1. スタティックメッシュの概念 [1472]
    1. Unreal Engineでは、3Dアセットを「スタティックメッシュ」と呼ぶ [1473]。
    2. スタティックメッシュは、頂点の集合で構成され、それらが結合されて平面や形状を形成する [1475]。
    3. 3Dアセットは、スタティックメッシュ、それに割り当てられるマテリアル、そしてマテリアルを構成するテクスチャという階層構造を持つ [1478]。
  2. アセットのインポート [1483]
    1. 3Dアセットファイル(例: FBX、OBJ)をコンテンツドロワーにドラッグ&ドロップすると、インポートオプションが表示される [1490]。
    2. インポートオプションでは、マテリアルやテクスチャを自動生成するかどうかを選択できるが、本チュートリアルでは手動でマテリアルとテクスチャを作成するため、これらを無効にする [1494]。
    3. インポート後、スタティックメッシュアセットをダブルクリックすると、スタティックメッシュエディタでプレビューできる [1503]。
    4. インポートしたスタティックメッシュは、ビューポートにドラッグ&ドロップして配置できる [1506]。
  3. テクスチャのインポートと設定 [1510]
    1. 3Dアセット用のテクスチャ(カラーマップ、ノーマルマップ、ラフネスマップ、メタリックマップなど)をコンテンツドロワーにインポートする [1510]。
    2. インポートしたノーマルマップは、テクスチャアセットを開き、詳細パネルで「sRGB」のチェックを外し、「Normal Map」に設定されていることを確認する [1520]。
    3. ラフネスやメタリックマップは、テクスチャアセットを開き、「sRGB」のチェックを外す [1523]。これは、これらのマップが色情報ではなく、物理的なプロパティを表すためである。
  4. マスターマテリアルとマテリアルインスタンスの適用 [1527]
    1. 以前作成したマスターマテリアルからマテリアルインスタンスを作成し、インポートしたテクスチャを各パラメータに割り当てる [1527]。
    2. 例えば、カラーマップを「Color」パラメータに、ノーマルマップを「Normal」パラメータに、ラフネスマップを「Roughness」パラメータに接続する [1537]。
    3. メタリックマップがある場合は、「Metallic?」スイッチをオンにし、メタリックマップを「Metallic」パラメータに接続する [1541]。
    4. 作成したマテリアルインスタンスを、インポートしたスタティックメッシュに適用する [1546]。
    5. スタティックメッシュエディタで、メッシュの「マテリアルスロット」にマテリアルインスタンスをドラッグ&ドロップすることで、デフォルトのマテリアルとして設定できる [1550]。
  5. マスクテクスチャの活用 [1567]
    1. 複数のマスク(メタリック、ラフネス、アンビエントオクルージョンなど)を1つのテクスチャの異なるカラーチャンネル(R、G、B)にパックして使用することが一般的である [1575]。
    2. これにより、アセットの数を減らし、効率的にテクスチャを管理できる [1579]。
    3. マテリアルエディタでは、テクスチャの特定のカラーチャンネル(例: 赤チャンネル)を抽出して、対応するマテリアル入力(例: メタリック)に接続できる [1587]。

6.2. Lumenによるリアルタイムグローバルイルミネーション [1598]

  1. Lumenの概要 [1598]
    1. Lumenは、Unreal Engine 5の新しいグローバルイルミネーション(GI)システムであり、リアルタイムで光の反射をシミュレートする [1599]。
    2. 従来の静的なGI(ライトベイク)とは異なり、Lumenは動的なライトやオブジェクトの動きにもリアルタイムで反応し、GIを計算する [1602]。
  2. Lumenとライトベイクの比較 [1616]
    1. チュートリアルでは、Lumenのデモシーン(Light Exampleマップ)を使用して、Lumenと従来のライトベイク(静的GI)を比較する [1616]。
    2. ライトベイク(静的GI): ライトを「Static」に設定し、ライトビルドを実行することで、GIがテクスチャに焼き付けられる [1633]。
      • 利点: 高品質なGIを生成できる。
      • 欠点: ライトやオブジェクトを動かすとGIが壊れるため、再ビルドが必要になる [1641]。動的なシーンには不向きである。
    3. Lumen(リアルタイムGI): ライトを「Movable」に設定し、ポストプロセスボリュームでLumenを有効にする [1661]。
      • 利点: ライトやオブジェクトを動かしてもGIがリアルタイムで更新される [1673]。動的なシーンや昼夜サイクルに最適である。
      • 欠点: 従来のライトベイクに比べて、わずかにパフォーマンスコストがかかる場合がある。
    4. Lumenは、発光マテリアルからの光の反射もリアルタイムでシミュレートできる [1685]。
  3. Lumenのパフォーマンス調整 [1690]
    1. Lumenのパフォーマンスを調整するには、「プロジェクト設定」→「レンダリング」→「Lumen」セクションに移動する [1692]。
    2. 「ディテールレート」を「グローバルトレース」から「スクリーン空間」に変更することで、品質を下げてパフォーマンスを向上させることができる [1696]。

6.3. 様々な種類のライト [1702]

  1. ポイントライト(Point Light) [1702]
    1. ポイントライトは、電球のように全方向に光を放つライトである [1705]。
    2. 色、温度、光源半径(影の柔らかさ)などのプロパティを調整できる [1707]。
  2. スポットライト(Spot Light) [1715]
    1. スポットライトは、特定の方向に円錐状の光を放つライトである [1716]。
    2. 角度(コーンアングル)や減衰(フォールオフ)のシャープネスを調整できる [1719]。
    3. すべてのライトは「間接光の強度」プロパティを持ち、バウンスライト(反射光)の量を制御できる [1723]。
  3. レクタングルライト(Rect Light) [1730]
    1. レクタングルライトは、長方形の面から光を放つライトであり、窓からの光やスタジオ照明などに適している [1730]。
    2. 幅や高さ、バーンドア(光の広がりを制限する)の角度などを調整できる [1734]。
  4. ディレクショナルライト(Directional Light) [1742]
    1. ディレクショナルライトは、太陽のように無限に遠くから一方向へ光を放つライトである [1745]。
    2. シーン全体の影の方向を制御する [1749]。
  5. スカイライト(Sky Light) [1752]
    1. スカイライトは、シーンの周囲360度のパノラマ画像をキャプチャし、それを光源としてシーンに投影する [1756]。
    2. これにより、屋外の環境光(空の色など)をシーンに取り込むことができる [1759]。
  6. スカイアトモスフィア(Sky Atmosphere) [1766]
    1. スカイライトを機能させるには、シーンに「スカイアトモスフィア」を追加する必要がある [1766]。
    2. 「視覚効果」から「スカイアトモスフィア」をドラッグ&ドロップする [1769]。
    3. ディレクショナルライトの詳細パネルで、「アトモスフィアと雲」セクションの「アトモスフィア、サンライト」にチェックを入れると、ディレクショナルライトが太陽として機能し、スカイアトモスフィアと連動する [1771]。
    4. スカイライトの詳細パネルで「リアルタイムキャプチャ」を有効にし、「Movable」に設定すると、太陽の動きに合わせてリアルタイムで空の色が更新され、それがシーンに投影される [1778]。
    5. これら3つの要素(ディレクショナルライト、スカイアトモスフィア、スカイライト)を組み合わせることで、Unreal Engine 5でリアルな屋外シーンのライティングを構築できる [1785]。
  7. Lumenと反射 [1793]
    1. Lumenは反射にも適用されるため、ポストプロセスボリュームでLumenを有効にすると、リアルタイムで反射が計算される [1793]。
    2. シーン内のオブジェクトを動かすと、反射もリアルタイムで更新される [1805]。
    3. Lumenの品質は、ポストプロセスボリュームの「グローバルイルミネーション」セクションで調整できる [1818]。

7. ライティングスタディと建築ビジュアライゼーション [1825]

Lumenを使用した動的なライティングと、ライトベイクを使用した静的なライティングを比較し、建築ビジュアライゼーションにおけるそれぞれの利点と欠点を学ぶ。

7.1. Lumenを使用した動的なライティング [1825]

  1. シーンの準備 [1835]
    1. チュートリアルでは、ライティングスタディ用のアーカイブシーン(Archvizマップ)を使用する [1835]。
    2. このシーンはデフォルトでは真っ暗だが、ビューモードを「リテ」に切り替えると、部屋の構造が見えるようになる [1841]。
  2. 動的なライティングの追加 [1847]
    1. 「ディレクショナルライト」を追加し、回転させて窓から光が差し込むように配置する [1847]。
    2. 「スカイアトモスフィア」と「スカイライト」を追加し、ディレクショナルライトとスカイライトを「Movable」に設定し、スカイライトの「リアルタイムキャプチャ」を有効にする [1858]。
    3. 「エクスポネンシャルハイトフォグ」(Exponential Height Fog)を追加して、地平線の黒い空間を埋める [1869]。
    4. エクスポネンシャルハイトフォグの詳細パネルで「開始距離」を増やすと、フォグがカメラから遠い位置から始まるように調整できる [1875]。
    5. スカイライトの「強度スケール」を調整して、シーン全体の明るさを調整する [1881]。
    6. ポストプロセスボリュームを追加し、「無限範囲(バインドなし)」を有効にし、Lumenの「最終収集品質」を調整して、GIの品質を向上させる [1890]。
    7. 露出を手動設定し、シーンの明るさを調整する [1904]。
  3. Lumenの利点 [1908]
    1. Lumenは、ライトやオブジェクトを動かしてもリアルタイムでGIが更新されるため、動的なシーンやインタラクティブな建築ビジュアライゼーションに最適である [1908]。
    2. 発光マテリアルからの光のバウンスもリアルタイムでシミュレートできる [1911]。
    3. Lumenは、従来のライトベイクに比べて、レンダリング時間が大幅に短縮される [1922]。
  4. Lumenの欠点とアーティファクト [1928]
    1. Lumenは、リアルタイムGIを実現するために様々な技術を組み合わせているため、完璧ではなく、特定の状況でアーティファクト(視覚的なノイズや不具合)が発生する場合がある [1928]。
    2. 例えば、シーンの特定の角で奇妙なアーティファクトが見られることがある [1930]。

7.2. ライトベイクを使用した静的なライティング [1940]

  1. シーンの準備とライトの静的化 [1940]
    1. Lumenシーンを複製し、ライトベイク用のシーンを作成する [1940]。
    2. ディレクショナルライトとスカイライトを「Movable」から「Static」に変更する [1946]。
    3. ポストプロセスボリュームでLumenと反射を無効にする [1951]。
    4. ライトビルドを実行すると、初期状態では非常に暗く、品質の低いライティングになる [1955]。
  2. ライトマスインポータンスボリュームとライトマスポートルの追加 [1959]
    1. ライトベイクの品質を向上させるために、「ライトマスインポータンスボリューム」(Lightmass Importance Volume)を追加する [1960]。
    2. このボリュームは、ライトベイクの計算範囲を制限し、その範囲内でより詳細なGIを計算させる [1963]。
    3. 窓などの光が入る場所に「ライトマスポータル」(Lightmass Portal)を追加する [1970]。
    4. ライトマスポータルは、ライトマスに光の方向を指示し、窓から入る光の品質を向上させる [1973]。
  3. ワールド設定でのライトマス設定の調整 [1985]
    1. 「ワールド設定」パネルの「ライトマス」セクションで、ライトベイクの品質に関する様々な設定を調整できる [1985]。
    2. 「間接反射の数」を増やしてGIのバウンス回数を増やす [1992]。
    3. 「スカイライトの反射」を増やして、スカイライトからのGIの寄与を増やす [1994]。
    4. 「静的ライティングレベルスケール」を減らす(例: 1から0.1へ)と、GIの解像度が向上するが、アーティファクトが増える可能性がある [1996]。
    5. アーティファクトを軽減するために、「間接光の品質」を増やす(例: 1から10へ)[2000]。
  4. ライトマップ解像度の調整 [2013]
    1. オブジェクトのライトマップ解像度が低いと、GIの品質が低下し、影が粗く見える [2013]。
    2. 各スタティックメッシュアクターの詳細パネルで、「ライトマップ解像度をオーバーライド」にチェックを入れ、解像度を増やす(例: 64から128、256、512など)[2019]。
    3. Unreal Engineは2のべき乗(64, 128, 256, 512など)の解像度を推奨している [2025]。
    4. 床や壁など、広い面積を持つオブジェクトには、より高いライトマップ解像度を割り当てる [2039]。
  5. 反射キャプチャの追加 [2066]
    1. シーン内の反射の品質を向上させるために、「反射キャプチャ」(Reflection Capture)を追加する [2066]。
    2. 反射キャプチャは、その周囲の環境をキャプチャし、オブジェクトに反射として投影する [2071]。
    3. 複数の反射キャプチャを配置することで、シーン全体の反射をより正確に表現できる [2074]。
  6. ライトビルドの実行と品質設定 [2078]
    1. これらの設定を調整した後、「ビルド」メニューから「すべてのレベルをビルド」を選択してライトビルドを実行する [2081]。
    2. ライトビルドの品質は、「プレビュー」から「ミディアム」、「ハイ」、「プロダクション」へと段階的に上げることができ、品質が高いほどビルド時間も長くなる [2083]。
    3. チュートリアルでは「ミディアム」品質でビルドを実行する [2087]。
  7. 最終調整 [2092]
    1. ライトビルド完了後、ポストプロセスボリュームで露出補正やブルームなどの設定を微調整し、シーンの見た目を最適化する [2092]。
    2. ライトベイクは、Lumenに比べてアーティファクトが少なく、より高品質な静的GIを生成できるが、ライトやオブジェクトを動かせないという制約がある [2098]。

8. ランドスケープとMegascansの活用 [2108]

Unreal Engine 5でランドスケープ(地形)を作成し、Megascansライブラリの高品質なアセットを活用して、リアルな環境を構築する方法を学ぶ。

8.1. ランドスケープの作成とライティング [2108]

  1. 新規レベルの作成とランドスケープモードへの切り替え [2108]
    1. 新しいレベルを作成し、「Landscape Example」と名前を付ける [2116]。
    2. ツールバーの「ランドスケープモード」ボタン(山のようなアイコン)をクリックするか、「Shift + 2」キーでランドスケープモードに切り替える [2125]。
    3. ランドスケープモードでは、緑色のグリッドが表示され、これがランドスケープの基本となる [2129]。
  2. ランドスケープの作成 [2131]
    1. ランドスケープモードの「管理」タブで、ランドスケープのサイズやセクション数を設定できる [2131]。
    2. 推奨されるランドスケープサイズについては、Unreal Engineのドキュメントを参照すると良い [2136]。
    3. 本チュートリアルではデフォルト設定を使用し、「作成」ボタンをクリックしてランドスケープを生成する [2138]。
  3. ランドスケープのライティング [2140]
    1. ランドスケープはデフォルトでは暗いため、ライティングを追加する必要がある [2140]。
    2. 「プレースアクター」モード(Shift + 1)に戻り、「ディレクショナルライト」、「スカイアトモスフィア」、「スカイライト」を追加する [2142]。
    3. ディレクショナルライトとスカイライトを「Movable」に設定し、スカイライトの「リアルタイムキャプチャ」を有効にする [2158]。
    4. 「Ctrl + L」キーを押しながらマウスを動かすと、太陽の向きをリアルタイムで変更でき、それに合わせて空の色や影が動的に変化する [2161]。
  4. エクスポネンシャルハイトフォグの追加と設定 [2176]
    1. シーンの地平線に表示される黒い空間を埋めるために、「エクスポネンシャルハイトフォグ」を追加する [2176]。
    2. デフォルトでは、フォグがシーン全体を明るくしてしまう問題がある [2179]。
    3. この問題を解決するには、「プロジェクト設定」→「レンダリング」→「エクスポネンシャルハイトフォグ」セクションで、「スカイアトモスフィアがフォグに影響を与える」を有効にする [2182]。
    4. この設定変更後、Unreal Engineを再起動する必要がある [2186]。
    5. 再起動後、エクスポネンシャルハイトフォグの詳細パネルで、「フォグの色」と「散乱色」を黒に設定し、「開始距離」を調整することで、夜間は真っ暗になり、昼間はフォグが適切に機能するようになる [2199]。

8.2. ランドスケープのスカルプトとペイント [2208]

  1. 人間参照の追加 [2208]
    1. ランドスケープのスケール感を把握するために、人間参照用のキャラクターをシーンに追加する [2208]。
    2. コンテンツドロワーの「追加」→「機能またはコンテンツパックを追加」から「サードパーソン」テンプレートを選択し、プロジェクトに追加する [2211]。
    3. 「ThirdPerson」フォルダ内の「Mannequin」→「Character」→「Mesh」から、SK_Mannequin(男性)とSK_Mannequin_Female(女性)をシーンにドラッグ&ドロップする [2216]。
  2. ランドスケープのスカルプトツール [2223]
    1. ランドスケープモードの「スカルプト」タブでは、様々なブラシツールを使用して地形を編集できる [2223]。
    2. スカルプトブラシ: 地形を隆起させる。Shiftキーを押しながら使用すると、地形を窪ませる [2227]。
      • 「ツール強度」でブラシの強さを調整できる [2246]。
      • 「ブラシフォールオフ」でブラシの端の柔らかさを調整できる [2249]。
      • 「ブラシサイズ」でブラシの大きさを調整できる(「[」キーで縮小、「]」キーで拡大)[2254]。
    3. スムーズブラシ: 地形を滑らかにする [2261]。
    4. フラットブラシ: 地形を平坦にする。ゲームプレイエリアなど、平らな場所を作成するのに便利である [2267]。
    5. その他のブラシツールもあるが、本チュートリアルでは上記の3つを主に扱う [2272]。
  3. ランドスケープマテリアルの作成と適用 [2285]
    1. ランドスケープにマテリアルを適用するには、まずランドスケープマテリアルを作成する必要がある [2285]。
    2. 「My Stuff」フォルダ内で右クリックし、「マテリアル」を選択して新しいマテリアルを作成し、「M_MyLandscape」と名前を付ける [2288]。
    3. マテリアルエディタで右クリックし、「Landscape Layer Blend」ノードを追加する [2296]。
    4. このノードの「+」ボタンをクリックして、複数のレイヤー(例: 「Grass」、「Dirt」)を追加する [2300]。
    5. 各レイヤーにテクスチャセット(カラー、ノーマル、ラフネスなど)を接続する [2313]。
    6. ランドスケープマテリアルを保存し、ランドスケープアクターの詳細パネルの「ランドスケープマテリアル」スロットにドラッグ&ドロップで適用する [2333]。
  4. ランドスケープレイヤーのペイント [2349]
    1. ランドスケープマテリアルを適用した後、ランドスケープモードの「ペイント」タブに切り替える [2349]。
    2. ここには、ランドスケープマテリアルで定義したレイヤー(例: 「Grass」、「Dirt」)が表示される [2353]。
    3. 各レイヤーの横にある「+」ボタンをクリックし、「ウェイトブレンドレイヤー(ノーマル)」を選択して、ランドスケープレイヤー情報アセットを作成する [2357]。
    4. これにより、ランドスケープにレイヤーが割り当てられ、マテリアルのエラー表示が消える [2363]。
    5. レイヤーを選択し、ブラシツールでランドスケープをペイントすると、そのレイヤーのマテリアルが適用される [2366]。
    6. 「ツール強度」を調整することで、ペイントの強さを変更できる [2373]。
    7. ランドスケープマテリアルインスタンスを開き、テクスチャタイリングのスケールパラメータを調整することで、各レイヤーのテクスチャサイズを変更できる [2388]。
    8. ランドスケープマテリアルでは、「マテリアルプロパティの使用」オプションを有効にすることで、個々のテクスチャをブレンドする代わりに、複数のマテリアル全体をブレンドできる [2410]。これにより、より複雑なマテリアル構成を簡潔に表現できる。

8.3. Megascansアセットの活用とリーフペイント [2465]

  1. Megascansの概要とアクセス [2465]
    1. Megascansは、Epic Gamesが提供する数千もの高品質な3Dアセット、テクスチャ、サーフェスを含む無料のライブラリである [2465]。
    2. UE5にはMegascans機能が内蔵されており、別途プログラムをダウンロードする必要はない [2470]。
    3. コンテンツドロワーの「追加」ボタンをクリックし、「Quixel Bridgeコンテンツ」を選択すると、Megascansライブラリにアクセスできる [2485]。
    4. Epic Gamesアカウントでログインすると、すべてのMegascansアセットをUE5プロジェクト内で使用できる [2489]。
  2. Megascansアセットのダウンロードと配置 [2501]
    1. Megascansライブラリから目的のアセット(例: 岩)を検索し、ビューポートにドラッグ&ドロップすると、自動的にダウンロードが開始され、ダウンロード中にアセットを配置できる [2501]。
    2. ダウンロードが完了すると、コンテンツドロワー内に「Megascans」フォルダと「MS_Presets」フォルダが作成され、アセットが保存される [2507]。
    3. 「MS_Presets」フォルダには、Megascansアセットで使用されるマスターマテリアルが含まれている [2513]。
  3. Megascansアセットのパラメータ調整 [2520]
    1. Megascansアセットのマテリアルインスタンスを開くと、様々なパラメータを調整できる [2533]。
    2. アルベドティント(Albedo Tint): アセットの色合いを調整する [2538]。
    3. リフレクタンスコントロール(Reflectance Control): アセットの明るさやコントラストを調整する [2543]。
    4. メタリック(Metallic): アセットが金属であるかどうかを調整する(Megascansの自然物アセットでは通常使用しない)[2550]。
    5. リフレクティビティ(Reflectivity): アセットの反射率を調整する。自然物アセットでは、反射率を下げて光沢感を抑えることが多い [2553]。
    6. ラフネス(Roughness)やノーマル強度(Normal Strength)も調整できる [2561]。
    7. Megascansアセットのパラメータは、デフォルトで高品質に設定されているため、ほとんどの場合、そのまま使用できる [2566]。
  4. リーフ(葉)のペイント [2593]
    1. Megascansライブラリから葉(例: シダ)をダウンロードし、プロジェクトに追加する [2593]。
    2. 葉のマテリアルインスタンスを開き、「Enable Grass Wind」を有効にすると、葉が風になびくようになる [2609]。
    3. 葉を効率的に配置するために、ツールバーの「リーフモード」ボタン(葉のアイコン)をクリックするか、「Shift + 3」キーでリーフモードに切り替える [2616]。
    4. リーフモードでは、コンテンツドロワーから葉のスタティックメッシュを「リーフ」パネルにドラッグ&ドロップする [2621]。
    5. ペイントしたい葉を選択し、チェックボックスをオンにする [2630]。
    6. ビューポートで左クリックを押しながらドラッグすると、選択した葉をランドスケープにペイントできる [2633]。
    7. 「ペイント密度」で葉の密度を調整できる [2635]。
    8. 「均一スケール」で葉のサイズ範囲を調整すると、様々なサイズの葉をランダムに配置できる [2663]。
    9. 複数の葉を同時にペイントすることも可能である [2669]。
    10. 「Shift」キーを押しながらペイントすると、葉を削除できる [2655]。
    11. 葉はデフォルトでスタティックメッシュの上にペイントされるが、リーフモードの「静的メッシュの選択を解除」オプションをオフにすることで、スタティックメッシュへのペイントを無効にできる [2683]。
  5. Nanite(ナナイト)の概要と活用 [2691]
    1. Naniteは、Unreal Engine 5の新しい仮想ジオメトリシステムであり、非常に高密度のポリゴンモデルをリアルタイムでレンダリングできる [2691]。
    2. これにより、映画品質のアセットをゲーム内でリアルタイムに使用することが可能になる [2699]。
    3. Naniteを視覚化するには、ビューポートの「Lites」メニューから「Nanite Visualization」→「Triangles」を選択する [2706]。
    4. Naniteは、カメラからの距離に応じてポリゴン数を動的に調整するため、遠くのオブジェクトは低ポリゴンで、近くのオブジェクトは高ポリゴンでレンダリングされる [2712]。
    5. Naniteは現在、スタティックメッシュにのみ適用可能であり、動的なオブジェクトやアニメーションには適用できない [2717]。
    6. スタティックメッシュでNaniteを有効にするには、スタティックメッシュエディタを開き、詳細パネルの「Nanite Settings」で「Enable Nanite」にチェックを入れる [2729]。
    7. または、コンテンツドロワーでスタティックメッシュを右クリックし、「Nanite」→「Enable」を選択することもできる [2736]。
    8. Megascansライブラリには、Nanite対応の高品質なアセット(例: 崖)が多数用意されており、これらをダウンロードして活用できる [2741]。
    9. Naniteを有効にした高ポリゴンアセットを多数配置しても、パフォーマンスへの影響は非常に小さい [2773]。

9. ブループリントによるプログラミング [2779]

Unreal Engine 5のビジュアルスクリプティング言語であるブループリントの基礎を学び、簡単なゲームロジックを実装する方法を学ぶ。

9.1. ブループリントの概要とキャラクター制御 [2779]

  1. ブループリントとは [2779]
    1. ブループリントは、Unreal Engineのビジュアルスクリプティング言語であり、コードを書く代わりにノードブロックを接続してプログラミングを行う [2783]。
    2. ブループリントは直感的で初心者にも理解しやすいため、ゲームプログラミングの経験がなくても、その基本を学ぶことはUE5を使用する上で不可欠である [2787]。
    3. 従来のC++コーディングも可能だが、本チュートリアルではブループリントに焦点を当てる [2791]。
  2. サードパーソンキャラクターの追加 [2794]
    1. ゲームロジックを実装するために、まず「サードパーソンキャラクター」コンテンツをプロジェクトに追加する [2794]。
    2. コンテンツドロワーの「追加」→「機能またはコンテンツパックを追加」から「サードパーソン」を選択し、プロジェクトに追加する [2800]。
    3. これにより、「ThirdPerson」フォルダ内にキャラクターのブループリントやアセットが追加される [2805]。
  3. ゲームモードの設定 [2820]
    1. ゲーム開始時にサードパーソンキャラクターがスポーンするように設定するには、「ワールド設定」パネルを開く [2820]。
    2. 「ワールド設定」内の「ゲームモード」ドロップダウンで、「ThirdPersonGameMode」を選択する [2825]。
    3. これにより、プレイボタンを押すと、サードパーソンキャラクターがゲーム内にスポーンするようになる [2836]。
  4. ブループリントエディタのインターフェース [2839]
    1. サードパーソンキャラクターのブループリント(例: BP_ThirdPersonCharacter)をダブルクリックして、ブループリントエディタを開く [2840]。
    2. ブループリントエディタには、「ビューポート」、「コンポーネント」タブ、「イベントグラフ」、「詳細パネル」がある [2842]。
    3. ビューポート: キャラクターの3Dモデルをプレビューし、コンポーネント(メッシュ、カメラなど)を配置できる [2846]。
    4. コンポーネントタブ: ブループリントを構成するすべてのコンポーネントがリスト表示される [2856]。
    5. 詳細パネル: 選択したコンポーネントや変数のプロパティを編集できる [2860]。

9.2. イベントグラフと基本的なゲームロジック [2866]

  1. プレイヤー開始位置の設定 [2866]
    1. プレイボタンを押したときにキャラクターが空中にスポーンするのを防ぐため、「プレイヤー開始位置」(Player Start)アクターをシーンに配置する [2866]。
    2. 「プレースアクター」タブから「Player Start」をドラッグ&ドロップし、キャラクターがスポーンしたい場所に配置する [2872]。
  2. イベントグラフの操作 [2876]
    1. ブループリントエディタの「イベントグラフ」タブには、キャラクターの動き、カメラ、ジャンプなどのロジックを構成するノードが表示される [2876]。
    2. イベントグラフ内では、右クリックを押しながらパンし、マウスホイールでズームイン/アウトできる [2881]。
    3. イベントグラフを誤って閉じた場合でも、ブループリントエディタの左側にある「イベントグラフ」をダブルクリックすることで再度開ける [2884]。
    4. 赤いノードは「イベントノード」と呼ばれ、特定の条件(例: キーが押された、オブジェクトが重なった)が満たされたときに実行される [2889]。
    5. 例えば、「Event Jump」ノードは、スペースキーが押されると実行され、キャラクターをジャンプさせるロジックが続く [2893]。
  3. カスタムイベントの作成と実行 [2903]
    1. イベントグラフ内で右クリックし、「Keyboard F」を検索して「Keyboard Event F」ノードを追加する [2903]。
    2. このイベントが実行されたことを確認するために、実行ピンからドラッグし、「Print String」ノードを追加し、テキストを「F Pressed!」に設定する [2907]。
    3. プレイモードで「F」キーを押すと、画面左上に「F Pressed!」と表示され、イベントが正しく実行されていることが確認できる [2913]。
  4. ラグドール効果の実装 [2921]
    1. 「F」キーを押したときにキャラクターがラグドール(物理シミュレーションされた人形)になるロジックを実装する [2921]。
    2. 「Keyboard Event F」ノードの実行ピンからドラッグし、「Set Collision Enabled」ノードを追加する [2923]。
    3. ターゲットはキャラクターのメッシュ(「Mesh」コンポーネント)に設定し、「New Type」を「Query and Physics」に設定する [2926]。
    4. 次に、「Simulate Physics」ノードを追加し、ターゲットをメッシュに設定し、「Simulate」にチェックを入れる [2931]。
    5. 最後に、「Set All Bodies Below Physics Blend Weight」ノードを追加し、ターゲットをメッシュに設定し、「Physics Blend Weight」を1に設定する [2935]。
    6. これらのノードは、キャラクターの衝突を有効にし、物理シミュレーションを開始し、キャラクターの骨格全体に物理を適用することで、ラグドール効果を作成する [2939]。
    7. プレイモードで「F」キーを押すと、キャラクターが倒れてラグドールになる [2945]。
  5. ノードの整理 [2948]
    1. 複数のノードが同じターゲット(例: 「Mesh」)を参照している場合、それらを「Reroute Node」(リルーティングノード)で整理できる [2948]。
    2. ワイヤーをダブルクリックするとリルーティングノードが追加され、そこから複数のノードにワイヤーを接続できる [2954]。
  6. 障害物ブループリントの作成 [2967]
    1. 新しいブループリントクラス(「Actor」タイプ)を作成し、「BP_Obstacle」と名前を付ける [2967]。
    2. このブループリントに「Cylinder」コンポーネントを追加し、サイズを調整して障害物を作成する [2976]。
    3. 「Box Collision」コンポーネントを追加し、シリンダーを覆うようにサイズを調整する [2992]。
    4. Box Collisionの詳細パネルで、「On Component Begin Overlap」イベントを追加する [3005]。
    5. このイベントから「Cast To ThirdPersonCharacter」ノードを追加し、重なったアクターがサードパーソンキャラクターであるかを確認する [3008]。
    6. キャストが成功した場合(キャラクターが重なった場合)、「ThirdPersonCharacter」の出力ピンからドラッグし、「Death」というカスタムイベントを呼び出す [3015]。
    7. 「BP_ThirdPersonCharacter」ブループリントに戻り、イベントグラフ内で右クリックし、「Custom Event」を追加して「Death」と名前を付け、ラグドールロジックをこのイベントに接続する [2989]。
    8. これにより、キャラクターが障害物に触れると自動的にラグドールになる [3019]。
  7. イベントティックとフレームレート独立性 [3026]
    1. 障害物を回転させるために、「Event Tick」ノードを使用する [3026]。
    2. Event Tickは毎フレーム実行されるため、実行ピンから「Add Actor Local Rotation」ノードを追加し、回転量を設定すると、障害物が回転する [3029]。
    3. しかし、Event Tickはフレームレートに依存するため、異なるPCでゲームを実行すると回転速度が変わってしまう [3037]。
    4. フレームレートに依存しない回転を実現するには、「Delta Seconds」ノード(毎フレームの時間差)と「Multiply」ノードを使用する [3051]。
    5. 「Delta Seconds」の出力を「Multiply」ノードのA入力に、回転量(例: 5)をB入力に接続し、Multiplyノードの出力を「Add Actor Local Rotation」ノードの「Delta Rotation」入力に接続する [3057]。
    6. これにより、フレームレートに関わらず、障害物が一定の速度で回転するようになる [3062]。
  8. 変数によるカスタマイズ [3073]
    1. 各障害物の回転速度を個別に設定できるように、「変数」を使用する [3073]。
    2. 「BP_Obstacle」ブループリントの「変数」タブで「+」ボタンをクリックし、新しい変数を作成し、「Spin Speed」と名前を付ける [3080]。
    3. 変数のタイプを「Float」(浮動小数点数)に設定する [3085]。
    4. 変数を編集可能にするには、変数の横にある目のアイコンをクリックして「インスタンス編集可能」にする [3106]。
    5. 「Spin Speed」変数を「Get」ノードとしてイベントグラフに配置し、その出力を「Multiply」ノードのB入力に接続する [3098]。
    6. コンパイルして保存すると、各障害物アクターの詳細パネルに「Spin Speed」が表示され、個別に回転速度を調整できるようになる [3110]。

10. 森林の村の環境構築 [3123]

これまでに学んだ知識を応用し、Megascansアセット、ランドスケープ、ブループリントを活用して、ゼロからリアルな森林の村の環境を構築する。

10.1. プロジェクトの初期設定とアセットのインポート [3123]

  1. 新規プロジェクトの作成 [3123]
    1. 新しいUE5プロジェクトを作成し、「Third Person」テンプレートを選択する [3123]。
    2. プロジェクト名を「Beginner Course」とし、「スターターコンテンツ」は無効にする [3127]。
  2. プロジェクトフォルダの整理 [3130]
    1. デフォルトで作成される「ThirdPerson」関連のフォルダを1つのフォルダにまとめ、不要なフォルダを削除する [3130]。
    2. アセットを移動した後、コンテンツドロワーでフォルダを右クリックし、「修正」→「ディレクトリを読み込む」を実行すると、参照が正しく更新される [3146]。
  3. チュートリアルアセットのインポート [3150]
    1. 以前ダウンロードしたチュートリアル用アセット(Introプロジェクト)を、新しいプロジェクトにマイグレーションする [3150]。
    2. Introプロジェクトのコンテンツフォルダから、目的のフォルダ(例: 「Charic」)を右クリックし、「アセットアクション」→「マイグレーション」を選択する [3155]。
    3. マイグレーション先のプロジェクトのコンテンツフォルダを選択し、アセットをコピーする [3159]。
  4. Megascans中世ゲーム環境のダウンロードと更新 [3162]
    1. Epic Games Launcherのマーケットプレイスから「Medieval Game Environment」を検索し、ダウンロードする [3162]。
    2. このプロジェクトはUE4用に作成されているため、UE5用に更新する必要がある [3167]。
    3. プロジェクトをUE5で開くと、UE5への変換を促すメッセージが表示されるので、「コピーを開く」を選択してUE5互換のコピーを作成する [3189]。
    4. または、プロジェクトフォルダ内の.uprojectファイルを右クリックし、「Unreal Engineバージョンを切り替える」からUE5を選択することもできる [3197]。
  5. 中世ゲーム環境アセットのマイグレーション [3201]
    1. 更新された中世ゲーム環境プロジェクトを開き、その中のマップ(例: Medieval_Village_P)を新しいプロジェクトにマイグレーションする [3201]。
    2. これにより、中世の村を構成するすべてのスタティックメッシュ、マテリアル、テクスチャなどが新しいプロジェクトにコピーされる [3207]。
  6. プロジェクト設定の調整 [3215]
    1. 新しいプロジェクトで中世レベルを開く前に、「プロジェクト設定」でいくつかの設定を有効にする必要がある [3215]。
    2. 「仮想テクスチャリングを有効にする」にチェックを入れる [3219]。
    3. 「エクスポネンシャルハイトフォグ」の「スカイアトモスフィアがフォグに影響を与える」にチェックを入れる [3226]。
    4. これらの設定変更後、Unreal Engineを再起動する [3230]。
  7. 中世アセットの表示問題の修正 [3232]
    1. 中世レベルを開くと、シェーダーのコンパイルに時間がかかり、一部のアセットが遠くで消える問題が発生する場合がある [3232]。
    2. これは、アセットの「最大描画距離」が設定されているためである [3258]。
    3. この問題を修正するには、すべてのスタティックメッシュアクターの「最大描画距離」を0にリセットする必要がある [3262]。
    4. チュートリアルでは、この作業を自動化するブループリント(BP_Fix_Draw_Distance)が提供されており、これをシーンに配置するだけで、すべてのスタティックメッシュの描画距離が0に設定される [3269]。

10.2. 森林の村の地形と水辺の作成 [3370]

  1. 新規レベルの作成とランドスケープの生成 [3370]
    1. 新しいレベルを作成し、「My_Village」と名前を付ける [3386]。
    2. ランドスケープモードに切り替え、ランドスケープを生成する。今回は、より詳細なスカルプトのために「2x2」セクションで作成する [3390]。
  2. ライティングの設定 [3400]
    1. 「ディレクショナルライト」、「スカイアトモスフィア」、「スカイライト」を追加し、すべて「Movable」に設定し、スカイライトの「リアルタイムキャプチャ」を有効にする [3400]。
    2. 「エクスポネンシャルハイトフォグ」を追加し、フォグの色と散乱色を黒に設定する [3415]。
    3. 人間参照用のキャラクターを配置する [3426]。
  3. ランドスケープマテリアルの適用 [3431]
    1. 以前作成したランドスケープマテリアル(M_Auto_Landscape)を、ランドスケープアクターの詳細パネルの「ランドスケープマテリアル」スロットにドラッグ&ドロップで適用する [3448]。
    2. ランドスケープモードの「ペイント」タブで、各レイヤーのレイヤー情報アセットを作成する [3521]。
    3. このランドスケープマテリアルは、急な斜面には岩のマテリアルを、平坦な場所には草のマテリアルを自動的に適用する [3529]。
  4. 水辺の作成 [3590]
    1. ランドスケープのスカルプトツール(スカルプトブラシ、スムーズブラシ、フラットブラシ)を使用して、川や池になる部分を窪ませる [3590]。
    2. コンテンツドロワーから「Water_Creek」マテリアルを検索し、これを適用するための「Plane」スタティックメッシュをシーンに追加する [3618]。
    3. Planeメッシュを水辺の窪みに配置し、スケールを調整して川の形に合わせる [3627]。
    4. 水のマテリアルを適用すると、シェーダーのコンパイルに時間がかかる場合がある [3635]。
    5. 水の表面に表示される影のアーティファクトは、カメラを動かして影から出入りすることで解消される場合がある [3637]。
    6. 水のPlaneメッシュを選択できない場合、ビューポートの「設定」メニューから「半透明選択を許可」を有効にするか、「T」キーを押す [3651]。
    7. 水のPlaneメッシュのサイズを調整し、川が浅く、キャラクターが渡れる程度の幅にする [3655]。
    8. 水辺に草が生えているのは不自然なので、ランドスケープモードの「ペイント」タブで「Dirt」レイヤーを選択し、水辺の草を土にペイントする [3675]。
    9. ランドスケープマテリアルインスタンスで、土のテクスチャタイリングを調整して、より自然に見せる [3690]。
    10. 川岸の形状をスムーズブラシやフラットブラシで調整し、自然な傾斜を作成する [3712]。

10.3. 中間ディテールと家の建設 [3726]

  1. Naniteの有効化 [3726]
    1. 中世アセットの岩メッシュ(ASRM_iSelect_Rain)でNaniteを有効にする [3726]。
    2. Naniteを有効にするには、スタティックメッシュエディタを開き、「Nanite Settings」で「Enable Nanite」にチェックを入れる [3731]。
    3. ただし、このアセットのマテリアルには「Dithered Blend」というノードが含まれており、Naniteと互換性がないため、マテリアルエディタでこのノードを削除する必要がある [3734]。
  2. 岩の配置 [4209]
    1. Naniteを有効にした岩メッシュを、川岸や地形の周りに配置し、自然な岩場を形成する [4209]。
    2. 岩のマテリアルインスタンスで、反射率を調整して光沢感を抑える [4220]。
  3. モジュール式デザインによる家の建設 [4234]
    1. Unreal EngineのMegascansライブラリには、モジュール式の建築アセット(壁、屋根、窓など)が多数用意されており、これらを組み合わせて家を建設できる [4234]。
    2. モジュール式デザインは、LEGOブロックのように、同じ形状のパーツを組み合わせて様々な構造物を作成できる [4251]。
    3. コンテンツドロワーのフィルター機能(例: 「Static Mesh」)を活用して、必要な建築アセットを効率的に検索する [4263]。
    4. まず、家の土台となるキューブを配置し、それにグレーのマテリアルを適用する [4295]。
    5. ドア、壁、窓などのモジュール式アセットを配置し、移動、回転、スケールツールを使って組み立てていく [4312]。
    6. アセットの配置は、完璧な精度を追求するよりも、見た目の自然さを重視する [4343]。
    7. 建設中に、必要に応じてランドスケープをスカルプトして、家が地形に馴染むように調整する [4437]。
    8. 複数のアセットをグループ化することで、家全体をまとめて移動、回転、スケールできる [4404]。グループ化するには、すべてのアセットを選択し、「Ctrl + G」キーを押す [4420]。
    9. グループを解除するには、グループを選択し、「Ctrl + U」キーを押す [4432]。

10.4. 最終的な環境の仕上げと最適化 [4437]

  1. 葉のペイントと調整 [4437]
    1. リーフモードに切り替え、Megascansライブラリから様々な種類の葉(シダ、枯れ草、低木など)をリーフパネルにドラッグ&ドロップする [4445]。
    2. 葉の「ペイント密度」や「均一スケール」を調整し、家や道の周りに自然に配置する [4463]。
    3. 特定の種類の葉(例: 白い花)が多すぎる場合は、選択ツールで個別に選択し、「Shift」キーを押しながら削除する [4498]。
    4. 小さな木もリーフモードでペイントし、森の密度を高める [4511]。
  2. 木の表示問題の修正 [4550]
    1. 遠くの木が消える問題が発生した場合、リーフモードの「呼び出し距離」設定を調整する必要がある [4550]。
    2. 各木の「呼び出し距離」をデフォルト値(0)にリセットすることで、遠くの木も表示されるようになる [4555]。
  3. ライティングの調整と最適化 [4567]
    1. スカイライトの「強度スケール」を調整して、シーン全体の明るさを調整する [4567]。
    2. 水の反射が不自然に見える場合、「平面反射」(Planar Reflection)アクターを追加する [4578]。
    3. 平面反射は、水面などの平坦な表面に高品質な反射を生成するが、パフォーマンスコストがかかる場合がある [4582]。
    4. 平面反射を有効にするには、「プロジェクト設定」で「平面反射を有効にする」にチェックを入れ、Unreal Engineを再起動する必要がある [4585]。
    5. 平面反射アクターの「プレビュー平面を表示」をオフにすると、ビューポートでの表示がすっきりする [4593]。
    6. 平面反射はパフォーマンスに影響を与えるため、必要に応じて削除するか、他の最適化手法と組み合わせる [4604]。
    7. 葉の裏側が暗く見える問題は、リーフモードで葉を選択し、詳細パネルの「下層接触影」をオフにすることで修正できる [4614]。
    8. ポストプロセスボリュームの「グローバルイルミネーション」設定を「Lumen」から「スクリーン空間」に変更すると、パフォーマンスが向上する場合がある [4620]。
    9. 木の幹が風になびく問題は、木のスタティックメッシュアセットを開き、幹のマテリアルで「Enable Grass Wind」を無効にすることで修正できる [4604]。
  4. 最終的なディテールアップ [4624]
    1. 橋の周りに岩や木の板を追加して、橋が地形に自然に馴染むようにする [4624]。
    2. 家の周りに小道具(樽、木箱など)を配置して、生活感を出す [4628]。
    3. 川の中に岩を追加し、水辺に小石をペイントして、ディテールと多様性を加える [4635]。
    4. 道の周りに枯れ草や小枝をペイントして、道の見た目を改善する [4641]。
    5. 木の配置を調整して、影のバランスを改善し、シーン全体に光が適切に当たるようにする [4648]。
  5. 最終シーンの構成と調整 [4651]
    1. 最終的なシーンの構成を調整し、カメラの視野(FOV)を変更して、最適な視点を見つける [4651]。
    2. シーンの側面にある木や低木は、自然なビネット効果を生み出し、視線を中央の家へと誘導する [4657]。
    3. ポストプロセスボリュームで露出補正とブルームを微調整し、シーンの明るさと雰囲気を最終的に調整する [4663]。
  6. ゲームプレイの確認 [4671]
    1. 「ワールド設定」で「ThirdPersonGameMode」を選択し、プレイボタンを押すと、作成した村の中をキャラクターで歩き回ることができる [4671]。
    2. これにより、UE5の強力なツールを使って、わずか5時間でゼロからリアルな環境を構築し、ゲームプレイを体験できることが示される [4679]。