Study Works

YuukiHiraiの勉強したものを上げていきます。

Cascadeurでグレイマンモーション(UE4)を女の子にしてみた!

Unreal Engine (UE) Advent Calendar 2021 の12月20日の代理記事です!

qiita.com

 

マーケットプレイスのモーションでこんな経験はないでしょうか?
・このモーションの女性版がほしい!
・リターゲットしたけど、モデルに食い込んでる。。。
こういった「既存のモーションを少し調整したい」という要望を解説します!

 

Cascadeur でUE4のモーションを加工する方法を紹介します!

 

今回、UE4の標準アセットの「Mannequin」を調整してグレイマンに女の子のモーションを入れます!

f:id:yuukihirai0331:20211202202010g:plain

 

 

Cascadeur とは

Cascadeur は物理ベースでキャラクターアニメーションを作成できる3Dアニメーション制作ソフトウェアです。

cascadeur.com

使用した感じ、とてもシンプルで使いやすかったです!

 

Cascadeur 導入

導入の仕方は下記の流れで進みます。
1、アカウントの作成
2、プランの選択
3、インストール

今回は導入方法を割愛しますが、プランについて軽く説明しておきます。

f:id:yuukihirai0331:20211126224605p:plain

Cascadeur をインストールする際に上記の画像の4つのプランの内から1つを選択します。
収益が10万ドル以下であれば、Basic(無料版)
をインストールできます。
しかし、Basic(無料版)にはいくつか制約(エクスポート時の制限等)があります。
本格的に使用する場合は Pro
が良いかと思います。

Pro は年間150ドルで1年経過すると自動的に永久ライセンス化するみたいです。
そのため、途中で年間の支払いをキャンセルしても、購入した際のバージョンは永久に使えるみたいです。これは嬉しいです!

UE4からモーションをエクスポート

UE4から標準アセット「Mannequin」より待機モーション「ThirdPersonIdle」を外部フォルダにエクスポートします。

f:id:yuukihirai0331:20211128200556p:plain

エクスポートの方法は「コンテンツブラウザ」よりエクスポートしたい「アニメーションシーケンス」を右クリックから「アセットアクション」→「エクスポート」でエクスポートします。

f:id:yuukihirai0331:20211128201227p:plain

エクスポートの詳細な設定は上記を参考にすると良いです。
筆者が試した限りでは「Fbx Export Compatibility」が「FBX 2013」等の古いバージョンでは上手くインポート出来なかったので、なるべく新しめのバージョンが良いかと思います。

 

https://cascadeur.com/images/category/2020/04/22/fad32fa508a39fbf2de3b41ad5c49e3e.jpg

CascadeurでUE4からエクスポートしたFBXファイルを開くと画像のように左肩がずれることがあります。

その場合、下記のCascadeur公式のドキュメントより改善方法が載っていますので、参考にしていただければと思います。

cascadeur.com

筆者が試した限り、UE4標準アセット「Mannequin」のみ、左肩がずれる現象が発生していました。
それ以外のアニメーションシーケンスではエクスポートしても問題ありませんでしたが、物によって発生する可能性があります。

Cascadeurへモーションをインポート

f:id:yuukihirai0331:20211128234401p:plain
Cascadeurを開いて、「File」→「Add Fbx/Dae」→「Add model」を選択して
UE4でエクスポートしたFBXファイル「ThirdPersonIdle」を開きます。
これでCascadeur上にモデル(グレイマン)が表示されます。

 

f:id:yuukihirai0331:20211128234822p:plain

その後、「File」→「Import Fbx/Dae」→「Animation」を選択して
モデルをインポートした際と同じ、UE4でエクスポートしたFBXファイル「ThirdPersonIdle」を開きます。

 

f:id:yuukihirai0331:20211128235653p:plain
これでインポートは完了ですが、モデルが不自然な方向に向いているので修正します。

 

UE4はZアップなので、全体的にX軸に90度回転させる必要があります。

f:id:yuukihirai0331:20211129191020p:plain

画像の左上のアイコン(赤線を引いたアイコン)を選択します。
※矢印マークを押すとアイコンリストが表示されます。

 

f:id:yuukihirai0331:20211129191147p:plain

マウスでドラッグすると上記のような赤で囲えるようになります。
これで表示されたボーン類を囲うように選択します。

 

f:id:yuukihirai0331:20211129191526p:plain

次にアニメーションの全フレームを選択します。
画像の下側の赤線を引いた箇所を端から端までドラッグします。

 

f:id:yuukihirai0331:20211129191907p:plain

次に画像で右下あたりの赤線した鍵アイコン「Interval Edit Mode」をオンにします。

 

f:id:yuukihirai0331:20211129192330p:plain
これで編集するとボーン全体とアニメーションフレーム全体を調整することが出来ます。

「Interval Edit Mode」の公式解説は以下を参考ください。
Interval Edit Mode

 

f:id:yuukihirai0331:20211129192618p:plain

オブジェクトを回転させる際は画像の左上の赤線したアイコンを選択します。
※矢印マークを押すとアイコンリストが表示されます。

 

このまま手動で90度回転させても良いのですが

f:id:yuukihirai0331:20211129193358p:plain

画像の右側の赤線で記載している「Scene settings」から「Manipulators」の「Fix angle」を有効にして「90」を選択した状態で回転させると正確に90度回転することが出来ます。

この後の編集作業を行う際に邪魔になるので、90度回転が終わったら無効化します。

 

 

f:id:yuukihirai0331:20211129194134p:plain

後は「Interval Edit Mode」をオフにして、上記の画面の右下のフレーム数が記述している箇所をクリックすると余分なフレームをカットします。
これでアニメーションを再生するとインポート完了です。

 

Cascadeur のUI説明、基本動作説明

良く使用する動作を抜粋して紹介します。

カメラの操作は下記のとおりです。
カメラ回転・・・Alt + 右ドラッグ
ズームカメラ ・・・Alt + マウスホイール 
カメラ移動・・・Alt + マウスホイールドラッグ

 

f:id:yuukihirai0331:20211129222740p:plain

オブジェクトを移動させる際は画像の左上の赤線のアイコンで矢印操作できます。
オブジェクトを回転させる際は画像の左上の青線のアイコンで円形操作できます。

 

ざっくりとよく使用する操作を解説しましたが
その他のよく使う操作は下記の公式動画より説明されています。

www.youtube.com

 

 

Cascadeur でリグを作成

モーションをつけやすくするため、リグを作成します。
今回、Cascadeurで用意されている「Quick Rigging Tool」を使って自動的に作成していきます。

 

f:id:yuukihirai0331:20211129224537p:plain

画像の右上の赤線のアイコンをクリックします。
これで画面の左側に設定一覧が表示されます。

 

f:id:yuukihirai0331:20211129224739p:plain

次に画像の右側の赤線のボタン「Quick rigging tool」をクリックします。

 

f:id:yuukihirai0331:20211129225201p:plain

画像のようなウィンドウが表示されます。

ここでウィンドウの右側のボーンを設定するリストにすべて設定されているか確認しましょう。
UE4からエクスポートしたデフォルトのモーションのモデルであれば自動的に入ると思いますが、自動で入らない場合もあると思います。
その際は適切なボーンを設定します。

ボーンの設定が終わりましたらウィンドウの下部分の「Create prototypes rig」で検証用のリグ作成を行います。

 

f:id:yuukihirai0331:20211129225642p:plain

ウィンドウは閉じてもらって、画像のようになっていれば
画面左下の「Generate rig」でリグを作成します。

 

f:id:yuukihirai0331:20211129230012p:plain

次に画像の右上のアイコンを押して、リグを操作できるように表示させます。
これでリグの作成は完了です。

 

今回のリグ作成は公式でも解説されています。
バージョンが古いためか異なるUI操作になっていそうです。。。
詳しく知りたい方は参考にしてください。

cascadeur.com

 

 

Cascadeur でモーションを調整

インポートしたモーションを調整していきます。

f:id:yuukihirai0331:20211130002653p:plain

モーション設定をする前にオブジェクト表示調整とオブジェクト移動に設定します。
画像の左上のアイコンのように設定します。

 

ここでCascadeurにモデルやモーションをインポートした時に行った全体的な90度回転と似たような手法で女の子のモーションにします!

 

f:id:yuukihirai0331:20211130223135p:plain

画像の下部分の青線の通りにフレーム全体を端から端までドラッグして選択、画像の右下の青線のアイコン「Interval Edit Mode」を有効化します。

 

f:id:yuukihirai0331:20211130224107p:plain

まずは足のひざ部分のIKボーンを調整して内また気味にします!
画像の左側のように内また気味になれば良いかなと思います!

 

f:id:yuukihirai0331:20211130224627p:plain

次に肘部分のIKボーンを内側にして脇を締めます!
これで女の子のポーズになったと思います!

 

もしかしたら、ここでカクカクしたような動きになることがあります。
全体補正をかけているので、設定値によってカクカクしたような動きになることがあります。。。
その場合はフレームの中抜きを行います。

f:id:yuukihirai0331:20211130225740p:plain

画像の下部分の赤線で記載した中抜きしたい不要なフレームを選択、画像の下部分の赤線の鍵アイコンを押すことでフレームのキーを削除できます。
逆にフレームにキーを追加する場合はフレームを選択して鍵アイコンを押すと追加できます。

 

f:id:yuukihirai0331:20211130230304p:plain

次に空いたフレームを補完する設定を行います。
中抜きしたフレームを選択した状態で画像の下部分の赤線のアイコンを押します。
これでカクカクしたモーションが滑らかになります!

 

youtu.be

作成するとこんな感じのモーションになるかと思います!

 

 

CascadeurからUE4へモーションをインポート

f:id:yuukihirai0331:20211130231455p:plain

画像の右上の赤線した「File」→「Export Fbx/Dae」→「Without Meshes」を選択してFBXファイルをエクスポートします。

 

f:id:yuukihirai0331:20211130232120p:plain

UE4のエディタ画面に入りまして、エクスポートしたFBXファイルをUE4にインポートします。
インポートする際は元のスケルトン(画像の赤線)を選択してインポートします。

 

f:id:yuukihirai0331:20211130232412p:plain

これでUE4インポート完了です!

 

UE4へのエクスポートで詳しく知りたい方は公式ドキュメントで詳細が記載されています。

cascadeur.com

 

 

まとめ

Cascadeurは個人利用する分にはとても良いツールだと感じました!
筆者はBlenderでキャラをモデリングして、モーションをどうしようか悩んでいましたが、今回使ってみてとても良かったので、これから使っていこうかと考えています!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

今年、話題になったリアルなモーションを実現できる高機能プラグイン Motion Symphony を使ってみた!

Unreal Engine (UE) Advent Calendar 2021 の12月5日の記事です!

qiita.com

はじめに

今年リリースされて話題になったマーケットプレイスの新着アセット Motion Symphony を使ってみました。

www.unrealengine.com

 

およそ3万円もするので、気になるけど買っていない方が多いかと思います。。。

 

今回、使ってみて検証したことをまとめました。
購入する際の参考になれれば幸いです。

 

f:id:yuukihirai0331:20211120213659j:plain

 

 

Motion Symphony とは

公式サイトの説明より引用です。

Motion Symphony is a suite of cutting edge animation tools that enable high fidelity character animation while also simplifying your animation graph.The flagship technology of 'Motion Symphony' is motion matching but it also contains several pose matching nodes that can either supplement motion matching or be used independently as needed. 

日本語翻訳 

Motion Symphonyは、アニメーショングラフを簡素化しながら、忠実度の高いキャラクターアニメーションを可能にする最先端のアニメーションツールです。

Motion Symphonyの主力テクノロジーはモーションマッチングですが、モーションマッチングを補完するか、必要に応じて独立して使用できるいくつかのポーズマッチングノードも含まれています。

簡潔に説明すると状況に応じて動的にモーション(ポーズ)を生成する感じです。
Motion Matching を取り入れています。

Motion Matching とは

前提として Motion Symphony で使用されている Motion Matching にはアニメーションクリップという概念がありません。
アニメーションクリップとはUE4従来のアニメーションシステムを指します。
1つ1つに小分けされた待機モーション、移動モーション等を遷移、ブレンドすることでキャラクターを移動アニメーションさせていました。
しかし、Motion Matching では小分けされたモーションを必要とせず、設定されたモーション群から適切なポーズを生成します。

www.wikiful.com

 

パッケージング確認

UE4マーケットプレイスでよくあることなのですが
アセットを入れるとパッケージングが出来ないということが発生します。

Motion Symphony は空のプロジェクトでパッケージング出来ませんでした。
これは Motion Symphony をビルドする際に必要な Visual Studio のバージョン設定等が必要みたいなのですが、筆者は分かりませんでした。

そのため、今回は下記の Motion Symphony のサンプルプロジェクトを用いることでパッケージング出来ました。

github.com

実機確認

UE4.26.2でサンプルプロジェクトを軽く触ってみました。

youtu.be

滑らかな動きに見えそうですが、カクカクと動いている箇所があり、ちょっと粗さが目立っています。。。

 

使い方

www.wikiful.com

上記のチュートリアルにてサンプルプロジェクトを参考にデータ作成や使い方を把握することができます。

検証した内容

今回、下記のサンプルプロジェクトをベースにモーションの差し替えをしてみました。
https://github.com/Animation-Uprising/MotionSymphony_ExampleProject

 

差し替えを行ったモーションは下記のアセットです。

www.unrealengine.com成人男性の動きがリアルに表現されていてとても良いと思い、事前に買っていました。
個人的に Motion Matching と相性が良いアセットだと感じています!

 

差し替えを行う大まかな方針として
差し替えモーションをサンプルプロジェクトのベースキャラクターにリターゲットを行いました。

docs.unrealengine.com

 

f:id:yuukihirai0331:20211125205230p:plain

Motion Symphony には様々なデータ形式が存在します。
今回はわかりやすく解説するため、1つのデータ形式に絞って解説します。

 

f:id:yuukihirai0331:20211125211929p:plain
Motion Data はモーションを登録するデータ形式です。

 

サンプルプロジェクトのMotion Dataは大まかに3つに分かれています。
・MD_RunLocomotion
・MD_SprintLocomotion
・MD_StrafeLocomotion
今回は操作していて分かりやすい走る動作「MD_RunLocomotion」を差し替えていきます。

f:id:yuukihirai0331:20211124204937p:plain

まずは「MD_RunLocomotion」を開いて「Clear Animations」をクリックしてモーションデータをリセットします。

f:id:yuukihirai0331:20211124205226p:plain

その後、「Pick Animations」をクリックして、モーションデータをインポートします

f:id:yuukihirai0331:20211124205735p:plain

上記の画像のように適当に走るモーションアセットを追加します。

f:id:yuukihirai0331:20211124210219p:plain

「Sequences」の中にモーションデータが一覧が追加されます。
これによりレベルをプレイ(実行)した際に登録したモーション一覧から適切なモーションが排出されるようになります。

登録したモーションアセット内にタグを付けたり、パラメータを調整することで
意図したモーションを取れるようになります。
今回はタグやパラメータの解説は割愛します。


差し替え作業は完了です。

 

www.youtube.com

実際に動かすとこんな感じに動きます。

 

まとめ

軽く触った限りでは0から作るより、既存のモーションやキャラを拡張して使うのが良いと感じました。
UE4のモーションの知見が欲しい方や Motion Matching の勉強をしたい方におすすめしたいです。
しかし、ゲームを作りたいという方にはおすすめしにくいアセットかと思います。
今後もアップデートを行うみたいなので、期待しています!

Unity Dungeon Architect アップデートで追加されたSnap Dungeonの紹介

この記事は「Unityアセット冬のアドベントカレンダー 2021 Summer!」の 8/28 の記事です!

assetstore.info

 

はじめに

Dungeon Architectというアセットをご存知でしょうか

assetstore.unity.com

ダンジョン系のマップを作成する際にとても便利なアセットで
知っている方やすでに購入されている方が多いかと思います。

Dungeon Architect は2016年にリリースされて、現在に至るまで様々なアップデートで新機能の追加が行われてきました。

その中で追加された機能のSnap Dungeonを紹介します。

 

Snap Dungeonについて

イメージとしては作成した部屋を図面上のグラフでつなぎ合わせてダンジョンを作成する機能な感じです。

 

Snap Builderは、構築済みの部屋のプレハブをつなぎ合わせてダンジョンを生成します。それらをステッチするためのルールは、グラフ文法によって制御されます
~下記のサイトより引用~

docs.dungeonarchitect.dev

www.youtube.com 

サイドスクロールダンジョン

今回、サイドスクロールのダンジョン作成をもとにSnap Dungeonを解説します。

f:id:yuukihirai0331:20210808211900p:plain

Dungeon Architectと言えば3Dの見下ろす型のマップをよく思いつきますが、実は2Dのサイドスクロールダンジョンも生成できます!

 

1、モジュールプレハブの作成解説

モジュールプレハブとは、Snap Dungeonで使用する1つ1つのエリアや部屋を指します。
下記の例画像のようにオレンジのブロックをドア(穴)として設定して、それらのエリアをつなぎ合わせています。

f:id:yuukihirai0331:20210814013601p:plain

モジュールプレハブ(エリア)を作る際に2つのポイントがあります。
・ドア(入口や出口)を用意する
・ドアが重なっても問題がないように整形する

 

ドア(入口や出口)を用意する

モジュールプレハブはドア(SnapConnection)が存在するように作成します。
ドアがないと入口が見つからず、ダンジョンとして成立しなくなるためです。

ドアとなる空のGameObjectにSnapConnectionをAddComponentし、WallObjectに壁となるオブジェクトを入れます

f:id:yuukihirai0331:20210816001328p:plain

モジュールプレハブは重なっても問題がないように作成します。

 

f:id:yuukihirai0331:20210816002731p:plain
上記の画像のようなはみ出しているモジュールプレハブだとダンジョンビルド時にエラーが発生してダンジョンが生成出来なくなります。

 

f:id:yuukihirai0331:20210816003146p:plain
上記の画像のように重なる部分がなければ、ダンジョン作成可能です。

 

f:id:yuukihirai0331:20210816003238p:plain
しかし、歪なダンジョンになるため注意が必要です。

 

2、Dungeon Flow EditorのUI解説

最初は下記の画像の通りにダンジョンの設計図となるダンジョンフローグラフを作成します。
ダンジョンフローグラフはSnapDungeonの設計図となるオブジェクトです。

f:id:yuukihirai0331:20210818011540p:plain


ダンジョンフローグラフを作成したら、ダブルクリックをしてSnapFlowEditorを開きます。

f:id:yuukihirai0331:20210818011856p:plain

 

それぞれのグラフ画面について説明します。

f:id:yuukihirai0331:20210822043744p:plain

RuleList はダンジョンの法則や配置情報をまとめたリストになります。
最初は「Start Rule」が入っていて、その「Start Rule」にマップの配置情報を設定していきます。
他のルールを追加することでマップ情報を拡張していくことも可能です。


f:id:yuukihirai0331:20210822044525p:plain

NodeList は先ほど解説したモジュールプレハブ(エリア)のリストになります。

 

f:id:yuukihirai0331:20210822045410p:plain

Production Rule: ~ は RuleList の各ルールを編集するグラフになります。

 

f:id:yuukihirai0331:20210822045735p:plain

Execution Graph は RuleList のルール同士を繋いだり編集するグラフです。
左上の「▶」ボタンを押すことで全ダンジョンのシミュレートビルドできます。
ビルドした結果は Result Graph や ErrorList に表示されます。

 

f:id:yuukihirai0331:20210822050725p:plain

Result Graph は Execution Graph で実行されたダンジョンの全体図を表示します。

 

f:id:yuukihirai0331:20210822050734p:plain

Error Graph は Execution Graph で実行されたダンジョンに問題がある場合や他の動作で問題が発生した際にエラーログとして表示されます。 

3、ダンジョン生成

次はダンジョンを作成していきます。
今回、下記の画像のようにダンジョンフローグラフを作成し
f:id:yuukihirai0331:20210823215925p:plain

 

下記の画像のダンジョンを作成しました。

f:id:yuukihirai0331:20210824232514p:plain

 これらをどのように作成したか解説します。

 

今回、下記2つのモジュールプレハブを作成しました。
・ダンジョンの基礎となる部屋
f:id:yuukihirai0331:20210823215933p:plain
・部屋を繋ぐ通路
f:id:yuukihirai0331:20210824232311p:plain

部屋(Room)と通路(Corridors)をNode Listに追加し、初期ルール(Start Rule)に4つのルームを繋ぎます。

f:id:yuukihirai0331:20210825000932p:plain

部屋と部屋の間に通路を入れるように追加のルールを作成します。
初期設定のルール以外に下記のルールを作成しました。

f:id:yuukihirai0331:20210823215937p:plain

LHS Graph で Room → Room の接続を設定し、RHS Graoh にて Room → Corridors → Room と設定します。
これにより LHS Graph で設定した Room → Room の接続箇所を RHS Graoh の Room → Corridors → Room ように置き換えるルールを設定しました。

 

f:id:yuukihirai0331:20210825002116p:plain

そして、作成したルールを Execution Graph に設定してUnityエディタのInspectorで Run Mode を Iterate に設定します。
Iterate にすることでルールを加算で追加することが可能です。

 

次に、SceneにDungeonSnapSideScrollerを配置します。
DungeonSnapSideScrollerはサイドスクロール型用のダンジョン生成プレハブです。
DungeonSnapSideScroller以外にもDungeonSnap~のプレハブでスナップダンジョンが作成できます。
そして、モジュールプレハブを統括するDungeonMapという空のGameObjectを作成します。

f:id:yuukihirai0331:20210825003454p:plain



Sceneに配置したDungeonSnapSideScrollerを開きます。

f:id:yuukihirai0331:20210825004115p:plain

1、Pooled Dungeon Scene Provider の Item Parent に 先ほど作成したGameObjectのDungeonMapを設定します。これによりダンジョンで使用されるモジュールプレハブをDungeonMapの子に生成します。

2、Snap Config の Modules に作成したモジュールプレハブ(部屋と通路)を設定し、Node Listで設定したRoom(部屋)とCorridors(通路)をCategoryに設定します。

3、作成したダンジョンフローグラフを Snap Config の Snap Flow に設定します。

4、最後に Build Dungeon を押して、ダンジョン作成です。

f:id:yuukihirai0331:20210826234930p:plain 

最後に

今回、紹介した内容はサイドスクロール以外にもアップダウン型のダンジョン等でも使用されている機能です。
Dungeon Architect以外のAssetも無料でアップデートされていたり、有料版でバージョンアップされているAssetもあります。
購入した後も定期的にアップデートを確認してゲーム開発をより良く進められればと思います。

Unityで再生時にゲームビューを大きく表示する

はじめに

Unityでゲームを確認する際にゲームビューが小さい…けど「Maximize on Play」にしたらHierarchyやConsoleのウィンドウが見えなくてやりにくい…と感じたことはないでしょうか?

f:id:yuukihirai0331:20210430230427p:plain

再生時だけゲームビューを別ウィンドウとして表示するエディタ拡張を開発しました。

PlayWindow.cs

using UnityEditor;
using UnityEngine;
using System.Reflection;

namespace YuukiHirai_PlayWindow
{
    [InitializeOnLoad]
    public static class PlayWindow
    {
        const float GameView_Width = 1920;  // Gameビューの横サイズ
        const float GameView_Height = 1080; // Gameビューの縦サイズ 

        static PlayWindow()
        {
            // Unityプレイモード変更時に関数を登録
            EditorApplication.playModeStateChanged += OnChangedPlayMode;
        }

        static void OnChangedPlayMode(PlayModeStateChange state)
        {
            if (state == PlayModeStateChange.ExitingEditMode)
            {
                // ~Unity再生時~

                // Gameビューを表示、取得
                var typeView = Assembly.Load("UnityEditor").GetType("UnityEditor.GameView");
                var gameView = EditorWindow.GetWindow(typeView, false, "Game", false);

                // Gameビューを表示する位置を計算
                float posX = Screen.currentResolution.width / 2 - GameView_Width / 2;
                float posY = Screen.currentResolution.height / 2 - GameView_Height / 2;

                // Gameビューの位置とサイズを設定
                gameView.position = new Rect(posX, posY, GameView_Width, GameView_Height);
            }
            else if (state == PlayModeStateChange.EnteredEditMode)
            {
                // ~Unity再生終了時~

                // Gameビューを表示、取得
                var typeView = Assembly.Load("UnityEditor").GetType("UnityEditor.GameView");
                var gameView = EditorWindow.GetWindow(typeView, false, "Game", false);

                // Gameビューを閉じる
                gameView.Close();
            }
        }
    }
}

CSファイルを作成して、上記のコードをコピペしてください。

再生を停止した際はゲームビューが閉じるようになっています。

まとめ

UE4を参考に作りました、UE4ではゲーム再生時にウィンドウを表示してゲームを確認するフローが個人的に気に入っていたのでそれを参考に開発しました。
導入する際は自己責任でお願いいたします。

2020年、UE4マーケットプレイスおすすめアセット3選!(Beautify、Advanced ARPG Combat System V2、Stylish Combat Starter Kit)

これは Unreal Engine 4 (UE4) Advent Calendar 2020 12月21日の記事です!

qiita.com

みなさん、今年1年どうでしたでしょうか?
私は毎日、マーケットプレイスの新着アセットを確認していました…

新着アセット - UE マーケットプレイス

私はUE4は業務で使わず、プライベート活動でもなかなか触れる機会がないため
マーケットプレイスのアセットを参考にさせてもらっています・・・

そのため、今年購入したアセットでおすすめの物を紹介します!!

※パッケージ化を試していないので、購入や導入は自己責任でお願いいたします・・・

Beautify

www.unrealengine.com

私の中で今年1番のアセットです!
ポストプロセスのアセットです~
これを入れるだけでUE4臭が完全に消えます!!
UE4臭とは画面をみただけでUE4だとわかってしまう現象
色彩が目立つようになり、とてもリッチな見た目になります!

f:id:yuukihirai0331:20201214235325p:plain

f:id:yuukihirai0331:20201214235357p:plain

Advanced ARPG Combat System V2

www.unrealengine.com

3人称アクションRPGのシステムテンプレートです! 

有名な死にゲーにとても似ていますね・・・

www.youtube.com

チュートリアル動画を見る限り、他のマーケットプレイスのアセット
(3Dキャラやモーション)を組み込むことを前提に作られている感じがします。
マーケットプレイスのアセットが増える度にボリュームを増やしていけるので
とても良いなと思いました!

タイトル画面からゲーム画面までゲームの一通りの流れが入っているので
UE4でゲーム制作したい方は参考にしやすいと思います!

Stylish Combat Starter Kit

www.unrealengine.com


スタイリッシュアクションゲームのテンプレートです! 

ブループリントを見る限り、かなり力技で実装しているところがありますが
個人的に今まで一番カッコいいテンプレートだと思います!

スタイリッシュアクション系は処理が独特になっていく感じがして
どういう実装を行っているか興味があり購入したのですが
やっぱり処理は独特ながらも今後の拡張性を考慮されていて
ちょっと本腰入れてこのテンプレートで勉強したいなと感じました!

まとめ

いかがでしたでしょうか、購入したアセットを紹介しないまま埋もれるのは勿体ないなと思い記事を書きました。
セールした時や購入の参考になれれば幸いです!
好評なら来年もしようと思います・・・

UMotion Pro – Animation Editor で男性モーションを女性モーションに調整してみた!

この記事は「Unityアセット冬のアドベントカレンダー 2020 Summer!」の 8/5 の記事です!

assetstore.info

 

AssetStoreのモーションを見ていて、こんな経験はないでしょうか?
・このモーションの女性Verがほしい!
・モーション内で何かを持たせたい!
こういった「既存のモーションを少し調整したい!」という要望を解説します!

 

今回はUMotion Proで既存のモーション加工を紹介します!
※ブログではUnity 2019.4.5f1で解説しますが、Unity2018でも問題なく動作すると思います。 

 

 

1、UMotion Proとは

assetstore.unity.com

公式より引用です。

 Powerful Animation Editor for animating any type of 3D model right inside Unity.
Reduce development time by fine tuning animations even while being in play mode.

No CPU overhead: UMotion produces Unity animation clips that require no run-time components.

日本語翻訳 

Unity内であらゆるタイプの3Dモデルをアニメーション化する強力なアニメーションエディター。
再生モードでもアニメーションを微調整して、開発時間を短縮します。

No CPU overhead:UMotionは、ランタイムコンポーネントを必要としないUnityアニメーションクリップを生成します。

使用した感じだとUnityエディタ上でモーションを作成できるエディタ拡張な感じです! 

2、UMotion Proセットアップ

最初に適当な「Scene」を作成して「Plane」を配置しましょう

f:id:yuukihirai0331:20200801000223p:plain

このPlaneを初期位置(0,0,0)に配置することで
モーションを調整、作成するうえでの地面とします!

 

「Windou」から「UMotion Editor」から「Pose Editor」と「Clip Editor」を開きます!

f:id:yuukihirai0331:20200801001523p:plain

私は画像のようなレイアウトで構成していますが、
みなさんの好みに応じて調整して大丈夫です!

  • 「Clip Editor」

    アニメーションのキーを管理するタイムラインをイメージしています

  •  「Pose Editor」
    モデルやボーン情報の詳細やキー登録の管理を行っています。

次に「New Project」から「Humanoid」を選択して、適当な名前でプロジェクトファイルを作成します。

f:id:yuukihirai0331:20200801123235p:plain

今回はHumanoidのモーションとHumanoidに適したモデルを使用していきます。

 

基本的にUMotion Proは

  • 「Scene」   モデルのアニメーション結果を確認
  • 「Clip Editor」 アニメーションのキーフレーム調整
  • 「Pose Editor」  モデルやボーンの調整

 で運用していきます! 

 

3、キャラモデルをセットアップ

 今回、使用する女性モデルはUnityちゃんです!

unity-chan.com

 

 

実際に作成したSceneに配置しましょう

f:id:yuukihirai0331:20200801235805p:plain

Scene上に「unitychan」プレハブを配置して配置したオブジェクトを
「Pose Editor」の「Select a GameObject to animate:」にドラッグ
「UMotion - New Rig Detected」で「Create Configuration」を選択

f:id:yuukihirai0331:20200802002231p:plain

 「UMotion - Blend Shapes Found」で「Add to Head」を選択
これでプロジェクトデータにモデルのインポートが完了しました!

f:id:yuukihirai0331:20200802011254p:plain

 

4、モーションをインポート、モデルにIKを設定しよう!

モーションは「Third Person Controller - Melee Combat Template」の待機モーションを拝借します!

assetstore.unity.com

 

今後の作業を行うため、IKを設定しましょう!

f:id:yuukihirai0331:20200802010752p:plain

 「Config Mode」の「IK Setup Wizard」を選択、「UMotion - Calibrate Character Front」で表示される矢印とデフォルト設定で問題ないので「OK」を選択

f:id:yuukihirai0331:20200802010911p:plain

 「UMotion - IK Setup Wizard」で「Create」を選択

f:id:yuukihirai0331:20200802201715p:plain

これでIKの設定は完了しました。
赤字で囲っているボックスや球体を動かすとボーンが動くようになります!

次にモーションをインポートしましょう!

f:id:yuukihirai0331:20200802202306p:plain

「Clip Editor」の「Import Clips」を選択

f:id:yuukihirai0331:20200803004802p:plain

「UMotion - Import Clips」で調整するモーションを「Animation Clips:」にドラッグします。
モーションデータが複数含まれていますが、今回は1つしか調整しないのでidleのモーションだけチェックします。
そして、インポートする際にIKを適応させるため「FK To IK Conversion」を「On」にして「Import」します。

f:id:yuukihirai0331:20200803005358p:plain

今後の作業をわかりやすくするため
・「Pose Editor」の「Rig Layers」を「IK」を選択
 これによりIKのボーンのみを表示します。
・「Pose Editor」の「Bone Style」で「Stick」を選択
 これによりIKのボーンがモデルとなるべく被らないように表示します。
・「Clip Editor」のリピートアイコンを有効化してリピート再生。
・「PM」でRootモーションのように移動値が蓄積されるのをリセットします。

再生させるとこんな感じになるかと思います!

youtu.be

5、女性モーションに加工

ここで女性モーションについて解説します。
私は専門家ではないのですが
みなさんの受けが良い姿勢、モーションを列挙すると
・内股気味
・脇締める
この3つになるかと思います!

男性モーションに多いポイントとしては
・ガニ股
・脇が広がっている
2点のポイントにより女性モデルに置き換えた時、違和感が出てしまうと思います。

 

今回、調整するモーションなのですが

f:id:yuukihirai0331:20200803023856p:plain
すごくガタイのいい男性モーションですね、強そうです…


レイヤーを作成しましょう!

f:id:yuukihirai0331:20200803030152p:plain

「Clip Editor」の「Layers」のレイヤー作成ボタンよりレイヤーを2つ作成します。
1つめは「Blending」を「Additive」にして

f:id:yuukihirai0331:20200803030410p:plain

2つめは「Blending」を「Override」にします。
・「Additive」はキーフレームに対して加算
・「Override」はキーフレームに対して固定
上記、2つの加算と固定を用いて調整を行っていきます!

 

男らしく足を開いているので、内股気味に足の位置を調整しましょう!

f:id:yuukihirai0331:20200803182605p:plain

右側の「Additive」のレイヤー、「A」のマークが付いているレイヤーを選択して
0フレーム目を選択した状態で
左足のボックス、「IK_Foot_L」を選択します。


良い感じの位置と角度に調整したらキーを打ちましょう!

f:id:yuukihirai0331:20200803190752p:plain

「Pose Editor」の「Key Dialog」で表示されるウィンドウの「Add Keys」 で編集したキーを打ち込みます。
これがキーフレームアニメーション作成の基本動作として作業していきます!

f:id:yuukihirai0331:20200803234749p:plain

次に左足のひざの向きを変えましょう。

f:id:yuukihirai0331:20200804003019p:plain

球体の「IK_Pole_Knee_L」を内側に移動させて左足を内股気味にしましょう!

「Additive」のレイヤーに作成したことにより
既存のモーション(一番下のレイヤー)に対して加算という形で
モーションを構成することができます!

 

この手順で左右手足調整しました!

youtu.be

不自然なところはありますが、Unityちゃんらしい動きになったかと思います!

ここからさらに調整をかけます!
次は「Override」のレイヤーを使います!

f:id:yuukihirai0331:20200804010830p:plain

「Override」のレイヤーを選択した状態で

f:id:yuukihirai0331:20200804011306p:plain

左足の「IK_Foot_L」の「Pose Mode」の「IK Pinned」にチェックを入れます。
これによりIKの位置は変わらず固定されます!
この際に足の位置が少し変わってしまいますが、これを再度調整をかけます…

f:id:yuukihirai0331:20200804012008p:plain

レイヤーの「M」を押すことでそのレイヤーを無視(ミュート)することが出来るので、これを切り替えて使用して位置を調整します!

youtu.be

右足も同様に固定化させた結果
両足を地面についたまま、モーションを調整することができました!

  • 「Additive」レイヤー
    ボーンの位置を加算調整したい時に使用
  • 「Override」レイヤー
    ボーンの位置を上書きしたい時に使用

 

で使い分けると良いと思います!!

6、モーションデータをエクスポート

最後に作成したモーションを書き出します

f:id:yuukihirai0331:20200804021752p:plain

「Clip Editor」の「File」から「Export」で「Current Clip」を選択

f:id:yuukihirai0331:20200804022015p:plain

プロジェクトデータで最初に書き出す場合、書き出し場所を聞かれます。
Destination Folder」にて適当なフォルダを設定しましょう!

f:id:yuukihirai0331:20200804022749p:plain

ちゃんと書き出し出来れば大丈夫です!

7、まとめ

 UMotion Pro を使う上で
「Additive」レイヤー
「Override」レイヤー
 を上手く使い分けてより良いモーションにしていきましょう!

閲覧いただきありがとうございました!

明日は ニア(ニアルカちゃんねる)  さんのPuppet3D使ってみた」です!

 

f:id:yuukihirai0331:20170819151212p:plain

このブログはユニティちゃんライセンス条項の元に提供されています

ステートマシンを使わないアニメーションシステム Motion Matching for Unity 導入、解説!

はじめに

この記事は「Unityアセット冬のアドベントカレンダー 2019 Winter」の 12/10 の記事です!

 

今回、ご紹介するアセットは「Motion Matching for Unity」です。

assetstore.unity.com

このアセットは、ステートマシンの複雑なロジックと剛性を使用せずに、ゲームで流動的なキャラクターアニメーションを使用したい人向けです。ただし、結果は、使用可能なリソースのアニメーションデータとコーディング能力によって異なる場合があります。

 ~ドキュメントより引用~

f:id:yuukihirai0331:20191209220854g:plain

 

注意
Unity 2018.4 以降対応
この記事ではUnity 2018.4.6f1で紹介しています。
今回紹介するアセットを運用するには、モーションとプログラミングをある程度知っておく必要があります。

 

Motion Matching という言葉をご存じでしょうか?

game.watch.impress.co.jp

定義はされていないと思いますが、私なりに解釈すると
複数のアニメーションからその場で適切な組み合わせにブレンドするという感じかと思います。。。
よく海外の3Dアクションゲームを見ていてキャラがとても自然なモーションをしていて良いなぁと思っていた際に見つけたアセットを紹介したいと思い記事を作成しました。

導入の仕方

導入手順はドキュメントや動画でもご紹介されていますが 

docs.google.com

www.youtube.com

特殊な操作が多く、詰まるポイントがあるため今回軽くご紹介します。


1、パッケージインストール

Motion Matching for Unity を動作させるには下記のパッケージをインストールする必要があります。
注意:「Show preview packages」を有効にしないと出てこないものがあります。

f:id:yuukihirai0331:20191209000023p:plain



Motion Matching for Unityに必要なパッケージリスト

・Mathematicsf:id:yuukihirai0331:20191207142022p:plain・Collectionsf:id:yuukihirai0331:20191207142055p:plain・Burstf:id:yuukihirai0331:20191207142253p:plain・Jobs (Preview)
f:id:yuukihirai0331:20191207142155p:plain

Motion Matching for Unity で必須ではありませんが、
サンプルシーンで使用しているのでインストールしましょう。

・Cinemachine

f:id:yuukihirai0331:20191207142654p:plain

・PlayableGraph Visualizer
f:id:yuukihirai0331:20191207142657p:plain

 

動画では1:04~で解説されています。
https://youtu.be/Y-mCNsDEt6c?t=64

 

2、サンプルシーン実行

これでもう実行できるのでサンプルシーンを開きましょう!Assets\Plugins\MotionMatching\Demo\Scenes\MxMDemo.scene を実行しましょう。

 

実際にモーションを使って実践しましょう

ここからは実際に Motion Matching for Unity の機能を使ってみましょう
今回、作成するのは MxMDemo.scene で使用されている移動系の動作です。
紹介する内容はこちらの動画をもとに紹介します。

www.youtube.com

1、ベースシステムを作成

 Assetフォルダ内から「Create」で「MxMPreProcessData」を作成しましょう

f:id:yuukihirai0331:20191208122834p:plain

「MxMPreProcessData」はキャラクター1人に対してベース部分となります。
ここに様々な設定や機能が入っています。

2、MxMPreProcessData設定

f:id:yuukihirai0331:20191208205551p:plain

次はこちらのパラメータに設定していきます。
※紹介しない箇所は設定しなくても今回は大丈夫です

~ General ~

f:id:yuukihirai0331:20191208214843p:plain
・「Target Model」 には動かしたいキャラのベースファイル(fbxモデル等)を設定しましょう。
今回は Assets/Plugins/MotionMatching/Demo/Model/Robot Kyle.fbx を設定しますが、お好みで別のキャラでも構いません。

・「Pose Interval」は各ポーズごとのインターバル時間を入れます。今回は「0.05」を入れます。個人的な目安で言うと動かしたいフレームレートの1フレームあたりの時間を入れると良いかと思います。(30FPSなら0.033等)

 

~ Trajectory Configuration ~

f:id:yuukihirai0331:20191208220059p:plain

右下の「Add Trajectory Point」で「Trajectory」を5つ追加します。
ポイントは4~5つ追加して等間隔で時間を指定するのが良いらしいです。

 

~ Pose Configuration ~

f:id:yuukihirai0331:20191208225132p:plain

右下の「Add Pose Property」で「Pose Property」を3つ追加します。
それぞれ「Left Foot」「Right Foot」「Hips」を選択します。
ここではモーションで重視したい箇所を選択します、例えば右手に剣を持っている場合は右手を追加すると良いと思います。しかし、追加しすぎるとパフォーマンスに影響がでるため8つまでしか選択できません。

 

~ Animation Data ~

f:id:yuukihirai0331:20191208225854p:plain

 

次は実際に使用するアニメーションデータを入れます。

f:id:yuukihirai0331:20191208230405p:plain
待機モーションを入れます、ドラッグして入れます。
「Assets/Plugins/MotionMatching/Demo/Animations/Idle/Idle_Neutral_1.anim」

 

f:id:yuukihirai0331:20191208231627p:plain

次に「Composites」の「Add New Category」で「Walk」「Run」の2つのカテゴリを作成します。

f:id:yuukihirai0331:20191208232104p:plain

f:id:yuukihirai0331:20191208232208p:plain

f:id:yuukihirai0331:20191208232647p:plain

f:id:yuukihirai0331:20191208232803p:plain

上記は画像でカテゴリに入れるモーションデータを紹介しましたが
下記に文面で記載しておきます。

「Walk」
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/WalkArkLeft.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/WalkArkLeft_Narrow.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/WalkArkRight.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/WalkArkRight_Narrow.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/WalkFWD.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2walk_AllAngles.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2walk_AllAngles_Right.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2walk_AllAngles_Right.anim

「Run」
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/RunArcLeft_Narrow.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/RunArcLeft_Wide.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/RunArcRight_Narrow.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/RunArcRight_Wide.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/BlendSpace_Anims/RunForward_NtrlFaceFwd.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/HalfSteps2Idle_PasingLongStepTOIdle.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/HalfSteps2Idle_PasingLongStepTOIdle_Right.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run45L.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run45R.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run90L.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run90R.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run135L.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run135R.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run180L.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Idle2Run180R.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/JogForwardTurnLeft_NtrlMedium.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/JogForwardTurnRight_NtrlMedium.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/PlantNTurn90_Run_L.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/PlantNTurn90_Run_R.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/PlantNTurn135_Run_L.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/PlantNTurn135_Run_R.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/PlantNTurn180_Run_L_2.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/PlantNTurn180_Run_R_2.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Run_LedgeStop2_Idle.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/Run_LedgeStop_Idle.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/RunForwardStart.anim
Assets/Plugins/MotionMatching/Demo/Animations/Locomotion/RunFwdStop.anim

今回、カテゴリ分けする必要性は薄いですが、今後の運用でこのようにカテゴリをわけしておくととても運用がしやすいです。

 

f:id:yuukihirai0331:20191208234610p:plain

MxMPreProcessData設定の最後に「Pre-Process Animation Data」で統合されたアニメーションデータを書き出します。
保存する場所やファイル名はとくに指定はありません。
もし、今後モーションを追加したり削除する場合は MxMPreProcessData を調整して書き出す感じになります。

3、Scene にキャラを作成

f:id:yuukihirai0331:20191209000747p:plain

MxMPreProcessData設定の General で設定した「Target Model」をScene上に配置します。

f:id:yuukihirai0331:20191209001051p:plain

Scene上に配置したキャラに Add Component で「MxMTrajectoryGenerator」を追加します。
追加した際に「MxM Animator」も一緒に付くので、「MxM Animator」の「AnimationData」に「Pre-Process Animation Data」で書き出したアニメーションデータを入れます。

 

これで完了です!

f:id:yuukihirai0331:20191209223149g:plain
※障害物を貫通していますが、更に手順が必要なためこれで正解です 

もっと活用するには

今回、機能の最初の部分しか紹介しきれませんでしたが、具体的な活用方法等はYouTubeのチャンネルにて公開していただいています!

www.youtube.com

最後に

Motion Matching for Unity の紹介動画が早いペースで上がってきていて
Discordで積極的に意見交換しているようなので今後のアップデートに期待できます!

明日は 汗人柱 さんの「【冬のアドカレ2019】unityでオープンワールド型ゲーム開発!GTAっぽい世界作りが捗るアセットまとめ(CyberWeekセールは12月14日 17時まで) - Unity AssetStoreまとめ」です!