最後の旅を始めよう

-黒の英雄譚・零-

UEメモ

2021年12月01日 | その他・スクリプト
【アニメーションBP作成方法】
「追加/インポート」(右クリックでも開ける)から[アニメーション]>[アニメーションBP]で作成
そのアイコンをダブルクリックして編集画面を開き「新規ステートマシン」からステートマシンノードを作成
「出力ポーズノード」の「Result」に接続
ステートマシンを開きステートを追加し「Entry」と接続。
ステートの編集画面を開きアニメーションノードを読み込んで「アニメーションポーズを出力」ノードの「Result」と繋ぐ
最低限の構造はこれで動く。

あとはアニメーションクラスにこのBPを指定する事でメッシュの対応が可能となる
(UE4の場合モーションデータは0フレーム開始の方が扱い易い)

【アクションをキーに割り当て】
[編集]>[プロジェクト設定]>[エンジン]>[インプット]から
「アクションマッピング」の「+」から新規のキー割り当てを追加する
キャラ操作のBPクラスを開き
「イベントグラフ」タブ内にキー操作のアルゴリズムを組む
まず、右クリックでノード作成メニューを開き
[インプット]>[アクションイベント]から先程作成した新規のキー割り当ての
インプットアクションノードを作成する
ボタンを押した信号を受け取る為の変数(ブール型)を作成し
その変数ノードを二つ作成しブールのチェックを入れたものと外したものにしておく
インプットアクションノードの
「pressed」とチェックを入れた変数と繋ぎ
「Releasend」とチェックを外した変数と繋ぐ
アニメーションBPから「イベントグラフ」を開き
設定したキャラ操作のBPをキャストノードとして読み込む
ノード作成メニュー[ユーティリティ]>[キャスティング]
(量が多いので検索で探した方が早そう)
「GetPlayerCharacter」ノードを作成しキャストノードの「Object」に接続
更に「As[キャラ操作BP名]」をドラックで何も無い空間を選び
ノード作成メニュー[変数]>[デフォルト]から作成した変数を選択して
出力ノードを作成する
新規でステートマシンにフラグを流す用の変数(ブール型)を作成し
出力ノードと接続
アニメーションBPのステートマシンを開き、新規ステートを作成
ボタンを押した際に再生したいモーションを出力と接続する
アイドルのステートと作成したステートを遷移と戻りで繋ぎ
遷移条件にはステートマシンにフラグを流す用の変数と繋ぎ
戻り条件には「TimeRemaining」終了の「<」の計算で繋ぐ


【モーションリターゲット】(骨名が統一されている場合)
まずスケルタルメッシュをインポートする
読み込んだスケルトンに右クリックメニューから
[作成する]>[リグを作成]からリグを作成する
(このとき必要のない骨は除く事が出来る)
このリグをソースとターゲット両方のスケルトンに適用する
スケルトンエディタを開き[リターゲットマネージャー]タブの
[リグを設定]から[リグを選択]のプルダウンメニューから設定
リターゲットしたいモーション(アニメーションシーケンス)を選択し
右クリックメニューから「Arnimアセットをリターゲットする」を選択
リグの適用されているスケルトンからターゲットモデルのものを選択し
書き出し先のフォルダを指定し[リターゲット]を押す


【ルートモーション】
ルートモーションの移動分をプレイヤーの移動にも反映する
アニメーションアセットから
[アセット詳細]>[ルートモーション]>[EnabelRootMotion]にチェック
アニメーションブループリントから
[クラスのデフォルト]>[ルートモーション]>[Root Motion Mode]>[Root Motion from Everything]


【揺れもの設定】
物理アセットから骨をシミュレーション制御する場合
物理アセットを作成後、任意の骨に[ツール]>[ボディ作成]から
コリジョンを作成する(コンストレインも同時に作成される)
コリジョンのサイズを調整したら右クリックメニューを開き
[コリジョン]>[すべてのコリジョンを有効にする]でコリジョンを有効にする
[シミュレート]から状況を確認出来る
シミュレーションを入れたくないコリジョンは[物理タイプ]を[キネマティック]にする
移動制限を設ける場合は、コンストレインの[Angular Limits]の設定を[Limited]にして
制限値を指定する
また、重力の影響を受けにくい軽いものを設定する場合は[物理]>[Linear Damping]を上げる
[PhysicsType]を[Simulated]にする事でアイテムのシミュレーションが常に入る


【KawaiiPhysics】
ダウンロード
https://github.com/pafuhana1213/KawaiiPhysics/releases/
プラグインを設定し、ノードを作成して出力とモーションの間に繋ぐ
[PhysicsSettings]
Damping(減衰)0.2
WorldDampingLocation 0.8
WorldDampingRotation 0.8
Stiffness(剛性)0.005
Radius(コリジョンの半径)
LimitAngle(限界角度)50

※コリジョンをヴューに反映させる為には一度コンパイルを行う必要がある

【プラグイン設定】
・プロジェクト単位でプラグインを適用する場合は、
プロジェクトフォルダ内に「Plugins」フォルダを作成しそこに入れるだけで適用させる
・エンジンのプラグインでエラーが出てプロジェクトが立ち上がらない場合
プロジェクトフォルダ内にある「.uproject」ファイルをメモ帳で開くと
「 "Plugins": [ 」が追加されているので、その中のエラーの原因のプラグインを消せば
プロジェクトは立ち上がる様になる


【シーケンサーのセットアップ】
1、シーケンスの追加
インターフェース左上にあるカチンコアイコンから
「レベルシーケンスを追加」>シーケンサーの保存先を決め「保存」
2、カメラの追加
シーケンサーのカメラアイコンから「カメラ」を作成
アニメーションをFBXから呼ぶ場合は「CameraComponent」の名前をFBXのカメラと揃え
右クリックメニューから「インポート」で読み込む
(このときZupX正面として読み込まれるので
「Cine Camera Actor」の回転Xに90°を入れオフセットしてやる必要がある)
3アクターの追加
スケルタルメッシュをシーケンサーにドラック&ドロップでアクターとして読み込む
「アニメーション」の「+」アイコンからモーションを適用

【ニアクリッププレーン】
UEのニアクリップ情報は「プロジェクト設定」に持っている
[プロジェクト設定]>[エンジン]>[基本設定]>[設定]>[平面近傍のクリップ]
※設定後は再起動の必要アリ

【カメラの切り替え・シーケンサーの再生】
https://unrealengine.hatenablog.com/entry/2015/09/26/215004
https://lunanelis.hatenablog.com/entry/2021/02/24/022220
切り替えというよりは同期と言った感じか?

【別レベルでシーケンサーを再生】
基本的にはブループリントでレベルとシーケンサーを両方呼ぶ事で出来る
1、別レベルとそれに対応したシーケンサーを用意する
2、「ウィンドウ」>「アクターを配置」>「TriggerBox」から
マップにトリガーボックスを配置する
3、プループリントアイコンから「レベルブループリント」を開き
作成したトリガーボックスを選択した状態で「On Actor Begin Overlap」ノードを作成
4、「OpenLevel」ノードを作成し、開くレベル名を指定して
「Add On Actor Begin Overlap」と接続する
これでトリガを踏むと任意のレベルに飛べる様になる
5、次は呼ぶ側のレベルに移行したらシーケンスを再生するという命令を組む
呼ぶ側のレベルに再生したいシーケンサーを置き「レベルブループリントを開く」
6、まずは「EventBeginPlay」ノードを作成し、イベント開始トリガーとする
アウトライナ等から呼び出したいシーケンサーを選択した状態で
ブループリントエディタの右クリックメニューからシーケンスのリファレンスノードを作成し
参照からドラッグして「Play (SequencePlayer)」ノードを作成する
それを「EventBeginPlay」ノードと接続する
これでトリガを踏むと別レベルに飛んでシーケンサーが再生される

【別レベルから戻ってくる】
別レベルでシーケンサーを再生した後に元のレベルに戻る方法
1、再生するシーケンサーに「イベントトラック」を作成し、動画の最後にキーを打つ
2、キーの右クリックメニューから「プロパティ」>「イベント」のプルダウンメニューから
「新規エンドポイントを作成」を選ぶとブループリントにエンドポイントが作成される
3、エンドポイントの実行からドラッグして「OpenLevel」ノードを作成して
開くレベル名を指定する事で、シーケンサーが終わると該当のレベルに戻れる
https://historia.co.jp/archives/10445/


【プレイヤーキャラの操作】
プレイヤーの方向をカメラに追従させる
[CharacterMovement]>[ポーン]>[Use Controller Rotation Yaw]
プレイヤーの方向をキー入力に合わせる
[CharacterMovement]>[キャラクタ移動(回転設定)]>[Orient Rotation to Movement]


【マテリアル】

【Lumen】
https://www.youtube.com/watch?v=nfGhrZLMY9g
【MatCapマテリアル】
https://www.youtube.com/watch?v=oaPCR3_vzRY
【マンガで使う!初めての Unreal Engine】
https://www.youtube.com/watch?v=aPpcflAxbtg


【GPUビジュアライザー】
[Ctrl] + [Shift] + [,]

【Stat コマンド】
ゲームの情報を表示するコンソール コマンド
ゲーム再生中に「@」を押すとプレビュー下部に開かれるのでそこに任意のコマンドを入れる
https://docs.unrealengine.com/4.26/ja/TestingAndOptimization/PerformanceAndProfiling/StatCommands/


【UE5・Python】
https://docs.unrealengine.com/5.0/ja/control-rig-python-scripting-in-unreal-engine/
コントロールリグのPythonログ
コントロールリグエディタを開いた状態で「ウィンドウ」>「メッセージログ」を開き
「コントロールリグのPythonログ」からログを確認できます。
アウトプットログ
Pythonのスクリプトテストはアウトプットログの入力から行えます。
その際、モードは「Python」にしておく必要があります。


【UE5・コントロールリグ】
モーション編集
任意のレベルにリグをD&Dすると「アニメーションモード」に切り替わる
「セクション」を右クリックして「このセクションにアニメーションシーケンスをインポート」から
任意のアニメーションシーケンスを読み込む事で、そのモーションをリグコントローラに焼き込める。
編集した、モーションをアニメーションシーケンスとして扱う場合、
「スケルタルメッシュコンポーネント」を右クリックで「リンクされたアニメーションシーケンスを作成」で
書き出すフォルダを指定し「アニメーションシーケンスにエクスポート」を押します。


【UE5・コンパーチブルスケルトン】
別スケルトンアセットのモーションを参照出来る様にする
スケルトンアセットエディタから「ウィンドウ」>「アセット詳細」でアセット詳細を開き
「Comoatible Skeletons」欄の「+」で参照スケルトンアセット覧を追加して、
そこに任意のスケルトンアセットを設定する

そのままだと体形(骨の移動値)を直に反映してしまうので、
スケルトンツリーの設定(歯車アイコン)から「リターゲットオプションを表示」で
「トランスレーションのリターゲティング」列を表示し、
「Animaition」を「Skeleton」に変更すると回転値のみを参照する様になります。
ちなみに、右クリックメニューから「移動リターゲティングスケルトンを再帰的に設定」で
子供もまとめて変更する事が出来ます。
ただし、腰の骨をこの設定にしてしまうと、上下移動等が死んでしまいます。



関連-------------------------------------
編集
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« こんなに絶望しかない選挙も... | トップ | Python_エラーメモ »
最新の画像もっと見る

コメントを投稿

その他・スクリプト」カテゴリの最新記事