16
6

フィギュアに命を吹き込きこんでバーチャル世界を走らせよう!【3Dスキャン×Unreal Engine 5】

Last updated at Posted at 2023-12-12

はじめに

この記事は「NTTテクノクロス Advent Calendar 2023」の13日目の記事です。

こんにちは!NTTテクノクロスの田中太和です。
今年に入りUnrealEngine5(以下UE5)を業務で触り始めました。
今回は3DスキャンしたフィギュアをUE5で動かす方法を調べてみたので実際にやってみたいと思います。
最初に結果だけお見せするとこんな感じになります。

▼実物のフィギュア
360.gif

▼UE5で動いてる様子
UE5.gif

手順の大まかな流れはこんな感じになります。
スクリーンショット 2023-12-11 011350.jpg

上記を実施するにあたりの必要なアカウントとソフトウェアは以下です。
※この記事ではアカウント作成や、ソフトウェアのインストールの手順は割愛させていただきます。
◆アカウント
Luma AI(ブラウザ)
Mixamo(ブラウザ)
Epic Games
◆ソフトウェア
Blender(4.0)
Epic Games Launcher
・UnrealEngine(5.2.1):Epic Games Launcher からインストール

フィギュアの動画撮影

今回は、被写体としてデッサン人形を用意しました。
3Dモデルを生成するにあたり、フィギュアを360°から撮影します。
モデル化するにあたりなるべくノイズになるようなものが映り込まないようにし、人形のポーズは後で骨を入れやすいように手足を伸ばした状態で固定します。
1分30秒かけてフィギュア中心にゆっくり2周する動画を撮影しました。
Image.jpg

モデルの生成

3Dモデルの生成にはLumaAIと呼ばれるウェブサービスを利用します。
NeRF(ナーフ)と呼ばれるAIを使った画像生成技術を用いて動画から高クオリティな3Dモデルを生成することができます。
ここからは、LumaAIの画面のスクリーンショットを用いて操作方法を解説いたします。
スクリーンショット内にて具体的な操作箇所を赤ペンで書き込んでおります。
参考:https://lumalabs.ai/

・LumaAIにログインし、右上の"Create"をクリック
スクリーンショット 2023-12-10 143635.jpg

・撮影した動画をドラッグ&ドロップし、名前を付けてアップロード
スクリーンショット 2023-12-10 143806.jpg

しばらくすると生成された3Dモデルが見られるようになります。
スクリーンショット 2023-12-10 160757.jpg

右上にある↓マークをクリックしてダウンロードします。
スクリーンショット 2023-12-10 174538.jpg

「OBJ」のプルダウンで「high poly」をクリックして3DモデルをOBJ形式でダウンロードします。
LumaAIでの操作は以上になります。
スクリーンショット 2023-12-10 174614.jpg

ダウンロードすると画像のような階層構造のデータが得られます。
luma.PNG

OJB形式の"mesh"が3Dモデルです。
また、"textures"に含まれる画像は「ボーンの作成」にて使います。

続いて3DモデリングソフトウェアのBlenderを用いて3Dモデルの不要な部分を削除します。
ここからは、Blenderの画面のスクリーンショットを用いて操作方法を解説いたします。
スクリーンショット内にて具体的な操作箇所を赤ペンで書き込んでおります。
参考:https://www.blender.org/download/

・Blenderを開く
・右クリック>"オブジェクト">"削除"をクリックしてキューブを削除
削除.jpg

・"ファイル">"インポート">"Wavefront(.obj)"をクリック
スクリーンショット 2023-12-09 205950.jpg

・LumaAIからダウンロードしたOBJ形式の3Dモデル"mesh"を選択して開く
スクリーンショット 2023-12-10 175406.jpg

取り込んだモデルに色が付いてないので色付きで見てみます。
・右上の"マテリアルプレビュー"をクリック
スクリーンショット 2023-12-10 175447.jpg

モデルに色が付きました。
スクリーンショット 2023-12-10 175525.jpg

モデルが原点位置から離れているため、移動させます。
・モデルをクリックし"移動"をクリック
スクリーンショット 2023-12-10 175543.jpg

・XYZ軸の矢印が表示されるので、原点位置になるようにドラッグして移動
スクリーンショット 2023-12-10 175656.jpg

軸に対して斜め向きになっているのでモデルを回転させます。
・"回転"をクリック
スクリーンショット 2023-12-10 175823.jpg

・XYZ軸の線が表示されるので、-Y軸が正面になるようにドラッグして回転
※以降の画像で誤ってY軸を正面にしてしまっています。モデルの正面が‐Y軸でない場合、UE5に取り込んだ際に正しく動作しません。この記事ではモデルをエクスポートする前に修正しております。
スクリーンショット 2023-12-10 175904.jpg

・"オブジェクト">"原点を設定">"原点をジオメトリへ移動"をクリック
スクリーンショット 2023-12-10 180024.jpg

デッサン人形の土台の部分が残っているため、ここは削除します。
スクリーンショット 2023-12-10 180356.jpg

・右上のギズモでX軸をクリック
スクリーンショット 2023-12-10 180434.jpg

・Tabキーを押して編集モードに変更
スクリーンショット 2023-12-10 181446.jpg

・右上の"ワイヤーフレーム"をクリック
スクリーンショット 2023-12-10 182406.jpg

・ドラッグで土台部分を選択
スクリーンショット 2023-12-10 182734.jpg

スクリーンショット 2023-12-10 182821.jpg

・右クリック>"頂点">"頂点を削除"をクリック
スクリーンショット 2023-12-10 182839.jpg

スクリーンショット 2023-12-10 183022.jpg

モデルをFBXでエクスポートします。
・"ファイル">"エクスポート">"FBX(.fbx)"をクリック
スクリーンショット 2023-12-12 113817.jpg

・名前を付けて、"FBXをエクスポート"をクリック
モデルの生成におけるBlenderでの操作は以上になります。
スクリーンショット 2023-12-10 183147.jpg

ボーンの作成

作成した3DモデルにAdobeのMixamoを使って骨を入れる作業を行います。
ここからは、Mixamoの画面のスクリーンショットを用いて操作方法を解説いたします。
スクリーンショット内にて具体的な操作箇所を赤ペンで書き込んでおります。
参考:https://www.mixamo.com/

スクリーンショット 2023-12-10 183431.jpg

下準備として、モデルの生成でダウンロードした"textures"の画像とBlenderでエクスポートしたFBXファイルを一つのフォルダ内に配置します。
スクリーンショット 2023-12-10 184703.jpg

フォルダをzip形式で圧縮します。これにて下準備は完了です。
スクリーンショット 2023-12-10 184743.jpg

・Mixamoにログインし、"UPLOAD CHARACTER"をクリック
スクリーンショット 2023-12-10 183746.jpg

・zipファイルをドラッグ&ドロップ
スクリーンショット 2023-12-10 184909.jpg

・ファイルの読み込みが終わったら"NEXT"をクリック
スクリーンショット 2023-12-10 185543.jpg

右側のお手本画像を参考にして関節部分に〇を配置していきます。
・"Use Symmetry"のチェックを外す
スクリーンショット 2023-12-10 185945.jpg

・CHIN(顎)、WRSTS(手首)、ELBOWS(肘)、KNEES(膝)、GROIN(股間)の位置に〇を配置
スクリーンショット 2023-12-10 190204.jpg

・出来たら"NEXT"をクリック
ボーンが生成されると動いた時のプレビューが表示されます
mixamo.gif

・"DOWNLOAD"をクリック
スクリーンショット 2023-12-10 191343.jpg

・Formatに"FBX Binary(.fbx)"とPoseに"T-pose"を指定して"DOWNLOAD"をクリック
Mixamoでの操作は以上になります。
スクリーンショット 2023-12-10 191402.jpg

ダウンロードしたFBXファイルをそのままUE5で扱おうとするとモデルを動かすときに必要な"ROOT"と呼ばれるボーンがないため、正しく動作しません。
Blenderに"mixamo converter"というアドオンをインストールし、モデルに"ROOT"を追加します。

・以下にアクセスして、"Code">"Download ZIP"をクリック
GitHub:Mixamo Converter

スクリーンショット 2023-12-10 011107.jpg

ここからは、再度Blenderの画面のスクリーンショットを用いて操作方法を解説いたします。
スクリーンショット内にて具体的な操作箇所を赤ペンで書き込んでおります。
参考:https://www.blender.org/download/
・Blenderを開き、"編集">"プリファレンス..."をクリック
スクリーンショット 2023-12-10 011451.jpg

・"アドオン">"インストール"をクリック
スクリーンショット 2023-12-10 013603.jpg

・ダウンロードした"mixamo_converter-master.zip"を選択し、"アドオンをインストール"をクリック
スクリーンショット 2023-12-10 013924.jpg

・アドオン内の"アニメーション:Mixamo Converter"にチェックを入れて有効化
スクリーンショット 2023-12-10 013953.jpg

・Nキーを押して画面右上に出るタブ内の"Mixamo"をクリック
スクリーンショット 2023-12-10 015952.jpg

・"Advanced Options"をクリック
スクリーンショット 2023-12-10 020014.jpg

・"Remove Namespaces"と"リーフボーンを無視"にチェックを入れる
・"Input Path:"でFBXファイルが配置されたフォルダを指定
・"出力パス:"で保存先フォルダを指定
※MixamoからダウンロードしたFBXファイルとは別のフォルダを指定してください。
・"Batch Conbert"をクリック
Blenderでの操作は以上となります。
スクリーンショット 2023-12-11 115522.jpg

アンリアルエンジン5で動かす

UE5にてデフォルトで使用できるアバターの機能やアニメーションを流用して作成した3Dモデルを操作できるようにしていきます。

・Epic Games Launcherを起動し、右上の"起動"プルダウンから"Unreal Engine 5.2.1"を選択してクリック
以下はEpic Games Launcherの画面のスクリーンショットになります。
スクリーンショット内にて具体的な操作箇所を赤ペンで書き込んでおります。
参考:https://store.epicgames.com/ja/download

スクリーンショット 2023-12-10 233103.jpg

ここからは、UnrealEngine5の画面のスクリーンショットを用いて操作方法を解説いたします。
スクリーンショット内にて具体的な操作箇所を赤ペンで書き込んでおります。
参考:https://www.unrealengine.com/ja/unreal-engine-5

・UE5のプロジェクトブラウザで"ゲーム">"サードパーソン"を選択しプロジェクト名を設定後、"作成"をクリック
スクリーンショット 2023-12-10 233234.jpg

プロジェクトが作成されるとこのような画面が出ます
・左下の"コンテンツドロワー"をクリック
スクリーンショット 2023-12-10 233508.jpg

・右クリック>"新規フォルダ"をクリック
スクリーンショット 2023-12-11 111003.jpg

作成したフォルダ内に3Dモデルをインポートします。
この時"ROOT"を追加した3Dモデルはマテリアルとテクスチャが正しく取り込めません。
そのためマテリアルとテクスチャはMixaomでダウンロードしたFBXファイルのものを使用します。
・コンテンツブラウザの"インポート"をクリックし、MixamoでダウンロードしたFBXファイルを開く
スクリーンショット 2023-12-10 233623.jpg

・"FBXインポートオプション"ウィンドウが表示されるので"全てインポート"をクリック
スクリーンショット 2023-12-10 233658.jpg

・インポートしたデータの中から"スケルタルメッシュ"、"物理アセット"、"スケルトン"を選択
・右クリック>"削除"をクリックして削除
スクリーンショット 2023-12-10 233807.jpg

・コンテンツブラウザの"インポート"をクリックし、Blenderで"ROOT"を追加したFBXファイルを開く
スクリーンショット 2023-12-10 233937_2.jpg
・"FBXインポートオプション"ウィンドウが表示されるので"全てインポート"をクリック
スクリーンショット 2023-12-10 233658.jpg

3Dモデルのインポートが終わったのでデフォルトのアバターと同じ動きができるように設定していきます。
・右クリック>"アニメーション">"IKリグ">"IK リグ"をクリック
スクリーンショット 2023-12-10 233937.jpg

・"Preview Mesh"のプルダウンをクリックしインポートしたモデルのスケルタルメッシュをクリック
スクリーンショット 2023-12-10 234028.jpg

・左下のコンテンツドロワーをクリックし、"All">"コンテンツ">"Characters">"Mannequins">"Rigs">"IK_Mannequin"をダブルクリック
スクリーンショット 2023-12-10 234120.jpg

・作成したIKリグと"IK_Mannequin"を並べる
スクリーンショット 2023-12-10 234146.jpg

・作成したIKリグの"Hips"を選択し、右クリック>"リターゲティングルートの設定"をクリック
スクリーンショット 2023-12-10 234215.jpg

・"IK_Mannequin"のチェーン名をコピーし、IKリグの対応するリグ要素を選択後、右クリック>"新しいリターゲティングチェーン..."をクリック
・"チェーン名"にコピーしたチェーン名をペーストして"チェーンを追加"をクリック
retarget.gif

同様の手順で、首、両腕、両足のチェーンを追加します。一通りチェーンの追加行ったところ以下のようになりました。IKリグの設定はこれで終了です。
スクリーンショット 2023-12-10 234805.jpg

・モデルをインポートしたフォルダを開き、右クリック>"アニメーション">"IK リグ">"IK リターゲッタ"をクリック
スクリーンショット 2023-12-10 234839.jpg

・作成したIKリターゲッタをダブルクリック
・"ソースのIKリグを選択(アニメーションのコピー元)"で"IK_Mannequin"をダブルクリック
スクリーンショット 2023-12-10 235017.jpg

・"ターゲットのIKリグを選択(アニメーションのコピー先)"で作成したIKリグをダブルクリック
スクリーンショット 2023-12-10 235029.jpg

IKリターゲッタのウィンドウが開かれますが、何もせず閉じます。
スクリーンショット 2023-12-10 235058.jpg

・"All">"コンテンツ">"Characters">"Mannequins">"Animations">"ABP_Manny"を選択し、右クリック>"アニメーションアセットのリターゲティング">"アニメーションアセット/ブループリントを複製してリターゲティング"をクリック
スクリーンショット 2023-12-10 235139.jpg

・"アニメーションアセットを複製しリターゲット"ウィンドウにて作成したIKリターゲッタを選択
スクリーンショット 2023-12-10 235205.jpg

・"プレフィックス"に適当に名前を入れて、"フォルダ"で保存先を指定し、"リターゲット"をクリック
スクリーンショット 2023-12-10 235741.jpg

指定した保存先に、"ABP_Manny"のアニメーションを元としたモデルのアニメーションブループリントが作成されました。
スクリーンショット 2023-12-10 235806.jpg

あとはインポートしたモデルと、このアニメーションをデフォルトのアバターと差し替えればUE上で操作できるようになります。
・"All">"コンテンツ">"ThirdPerson">"Blueprints">"BP_">"BP_ThirdPersonCharacter"をダブルクリック
スクリーンショット 2023-12-11 131130.jpg

・詳細タブの"Skeltal Mesh Asset"のプルダウンで作成したモデルのスケルタルメッシュを選択
スクリーンショット 2023-12-10 235841.jpg

・詳細タブの"Anim Class"のプルダウンで作成したアニメーションブループリントを選択
スクリーンショット 2023-12-10 235902.jpg

・左上の"コンパイル"をクリック
スクリーンショット 2023-12-10 235921.jpg

・▷をクリックして動作確認
スクリーンショット 2023-12-10 235937.jpg

撮影したフィギュアで自由に空間を歩き回ることができるようになりました。
マウスで視点操作、WASDキーで前後左右に移動、Spaceキーでジャンプできます。
UnrealEngine5での操作は以上になります。
UE5.gif

さいごに

今回は記事の関係上シンプルなフィギュアを使用して撮影した映像から3Dモデルを作成し、UnrealEngine5で動かしてみました。
ジャンプモーションをMixamoのアニメーションと差し替えてみたり、ブループリントを編集して演出を付け足しても面白そうです。
明日は、@suzukimaによる「NTTテクノクロス Advent Calendar 2023」の14日目をお届けしますので引き続きお楽しみください!

16
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
6