ぼっちプログラマのメモ

UE4とかVRとかについて書いたり書かなかったり。

【UE4】【UE5】SequencerのTransform Origin (Actor) が実行・Previewしなくても反映されるようになって感動したという話

はじめに結論から

UE4.26まではLevelSequenceActorが持つTransform Origin (Actor)を反映するには実行・Previewする必要があったのですが…
UE4.27以降(UE5も含む)からはそれが不要になりました!
具体的にはTransform Trackが再生されたら実行の有無を問わずに反映されるようになりました!


動画の高解像度版:
bandicam 2022 06 21 12 05 48 975 - YouTube
超便利!!!

以降はTransform Origin (Actor)がどんな機能でどんな時に使うのかを軽く説明

続きを読む

【UE5】「1フレーム後に実行」が少し簡単に実装できるようになった話(Next Tick)

はじめに

記事名の通りですが、UE5から「1フレーム後に実行」を少し簡単に実装できるようになったという話
※ ↓「次フレーム」じゃなかったので記事にしました

まず結果・結論から


https://twitter.com/pafuhana1213/status/1533347622424940544/photo/1 (高解像度版)

[348]LogBlueprintUserMessages:  --- START ---
[348]LogScript: Warning: Script Msg: ThirdPersonMap_WP_C_43 CustomEvent_1 SetTimer passed a negative or zero time. The associated timer may fail to be created/fire! If using InitialStartDelayVariance, be sure it is smaller than (Time + InitialStartDelay).
[348]LogBlueprintUserMessages:  [UE4] delay 0 1st
[348]LogBlueprintUserMessages:  [UE5] Delay Until Next Tick
[348]LogBlueprintUserMessages:  [UE5] Set Timer for Next Tick by Event

[349]LogBlueprintUserMessages:  [UE5] Delay Until Next Tick After Using Set Timer
[349]LogBlueprintUserMessages:  [UE4] delay 0 2nd
  • Delay 0 の代わりにDelay Until Next Tickノードを使えるようになったので、0を入力する手間がなくなったよ
  • Set Timer でも Set Timer for Next Tick by Eventノードを使うことでDelay 0 的なことができるようになったよ
  • 1フレーム後に処理したい場合は複数使う必要がある仕様は変わってないよ
続きを読む

【UE4】PoseAI LiveLinkプラグインとiPhone(iPad)を使ってフィギュアからポーズアセットを作ろう!

はじめに

Twitter経由で知ったiPhoneのカメラを使ってモーキャプできるPoseAI LiveLinkを検証してたら、フィギュアのポーズをUE4に持ってこれました!
(昔やりたかったことができて感動してます!

f:id:pafuhana1213:20220216234625j:plain

アクション人形やフィギュアを使ってポーズを作って…iPhoneで撮影するだけでUE4でポーズを作れる!

これはやばい!!!!!

みんなやろう!!!!!!!!!!

公式サイト
Motion Capture | Pose AI
公式ドキュメント
UE4 LiveLink | Pose AI
公式Q&A
FAQ | Pose AI

必要なもの

https://unrealengine.com/marketplace/en-US/product/poseai-livelink

  • Pose Cam アプリ ( 年間6 ~ 7ドル )

https://apps.apple.com/app/id1555012109#?platform=iphone

  • フィギュア( 人っぽいものならいけそう。ロボは駄目でした )

以降は雑に導入方法と使い方についてのメモ書きみたいなものです。
公式が配布しているサンプルを使いますが、ご自身のプロジェクトに導入したい場合は↑のドキュメントをどうぞ。
ちなみに、このプラグイン・アプリはカメラ一台からのモーキャプ用途がメインなのでご注意ください

続きを読む

【UE4】テキストローカライズのプレビュー言語をBPやC++から制御する方法について

はじめに

エディタ設定のPreview Game LanguageやUMGのツールバーのアイコンから言語を指定することで、テキストのローカライズ結果をエディタ上で確認することができます。
f:id:pafuhana1213:20220120235035p:plain
f:id:pafuhana1213:20220120235052p:plain

ただON・OFFや言語変更する度にこれらを触りにいくのは面倒です。オレオレデバッグ機能・エディタから変更できるようにしておくと色々便利な気がしたので、BP, C++から制御できる方法を探してみました

Preview Game LanguageをBP, C++から変えるには

void UMyBlueprintFunctionLibrary::SetLocalizationPreviewLanguage(FString InCulture)
{
	FTextLocalizationManager::Get().ConfigureGameLocalizationPreviewLanguage(InCulture);
	FTextLocalizationManager::Get().EnableGameLocalizationPreview();
}

void UMyBlueprintFunctionLibrary::EnableGameLocalizationPreview()
{
	FTextLocalizationManager::Get().EnableGameLocalizationPreview();
}

void UMyBlueprintFunctionLibrary::DisableGameLocalizationPreview()
{
	FTextLocalizationManager::Get().DisableGameLocalizationPreview();
}

bool UMyBlueprintFunctionLibrary::IsGameLocalizationPreviewEnabled()
{
	return FTextLocalizationManager::Get().IsGameLocalizationPreviewEnabled();
}

参考:SDesignerToolBarの各実装
Engine\Source\Editor\UMGEditor\Private\Designer\SDesignerToolBar.cpp

これらの関数を使うと…


いけました。やったー!
ただし、この設定はPreview Game LanguageとかUMGのツールバーと共通なのでご注意を。


おしまい

【UE4】ローカライズ対象の言語がリストになくて困ったときに試すべきこと

はじめに

ローカライズ(多言語)対応を開始したのはいいけど、プロジェクト設定のLocalizations to PackageのShow Localizedが空だったり、
f:id:pafuhana1213:20220120224639p:plain
エディタ設定のPreview Game Languageが空だったり、
f:id:pafuhana1213:20220120224658p:plain
Asset Localizationの言語候補が1つしか無くて困ってる人向けの記事です
f:id:pafuhana1213:20220120224743p:plain

試してほしいこと

LocalizationDashboardで一度Compileしてみてください。たぶん80割ぐらいの確率で解決します。

Compile後
f:id:pafuhana1213:20220120224047p:plain
f:id:pafuhana1213:20220120224113p:plain
f:id:pafuhana1213:20220120224325p:plain

やったね!

LocalizationDashboardについて
qiita.com


おしまい

【UE4】キャラクターが崖際で浮いてしまう問題を改善する方法について(PerchRadiusThresholdはいいぞ編)

本記事は「Unreal Engine (UE) Advent Calendar 2021 その3」の3日目の記事の代理投稿です。

f:id:pafuhana1213:20211224211518p:plain

はじめに

便利なCharacterですが、デフォルト設定ですと上図のように崖際で浮いてしまいます…見え場が非常に悪いですね!

そんな時に便利なのが、Character Movement Component の PerchRadiusThreshold
デフォルトは0なのですが、この値を上げていくと…

f:id:pafuhana1213:20211224200014g:plain

崖際で落ちるようになります!やったね!

少し解説とか補足とか

このPerchRadiusThreshold が 0.15( SWEEP_EDGE_REJECT_DISTANCE )以上の値に設定されていると、崖際で留まるか否かのチェック処理が走るようになります。その計算に関しては PerchRadiusThreshold だけでなく

  • 床のチェック処理の結果 (
  • Characterの各パラメータ(カプセルの半径、MaxStepHeight、PerchAdditionalHeight)

が使われており…更にエンジンコード上で固定の値が微調整(?)で使われていて少し複雑な感じです。しかも、カプセルの半径とMaxStepHeightに関しては崖際以外の場面での挙動に影響を与えてしまいます。なので、まずは PerchRadiusThreshold の調整のみで解決できるかどうかを模索してみる所から始めるのが良いのかなと思います。

また、もしこの辺りの挙動を変えたい!場合は

  • UCharacterMovementComponent::ShouldComputePerchResult 関数
  • UCharacterMovementComponent::FindFloor関数 の Sweep floor処理の次

をまず確認することになるはずです。コード自体は比較的シンプルなのでぜひ。

個人的な所見

PerchRadiusThresholdを大きめの値にすることで崖際で浮くことはなくなるのですが…アクション性の高いゲームの場合はユーザのストレスになる場合があるかもしれません。意図しない落下が多発したり、ギリ届くと思ったジャンプが届かなかったり…。

なので、PerchRadiusThresholdの値調整は両足が浮いてしまうような明らかにおかしい挙動の回避に使いつつ、重心が崖側にあるときは専用の崖際モーションをブレンド or AnimGraphやControlRigを使ってプロシージャルアニメーション制御をするのがバランス良いのかなと思います。

f:id:pafuhana1213:20211224211456p:plain
(イメージ)

簡単な内容でしたが困ってる人を自分含めて2人知ってるので記事にしてみました!
ご参考になれば幸いです!

【UE4】Subsystem, GAS, DataAssetを活用して実装した会話システムについて雑多に書いてみた

f:id:pafuhana1213:20211213133528p:plain

はじめに

本記事はUnreal Engine (UE) Advent Calendar 2021(カレンダー1)の13日目の記事です!
12日目はじゅる (@xxJulexx) | Twitterさんによる
qiita.com
でした!DMX周りは基本的な知識もあまりないのでこういった記事は大変助かります…いつもありがとうございます!

アドベントカレンダーの記事はいつも何を書こうか悩むのですが…以前に解説してほしいと要望のあった『Subsystem, GAS, DataAssetを活用して実装した会話システム』について書こうと思います!ちなみに、実際に動いてる様子はこちら。

個人的には手応えはある程度感じてますが…まだまだ実装途中の部分もあったり…プロジェクトや実現したい表現によって色々変わってくると思うので…あくまで一例として参考程度に読んで頂けますと幸いです!そういったこともあり、作り方というよりも設計・思想の話が多めになってます。

あと、本記事はSubsystem, GAS, DataAssetに関する講演を既に読んだ・見た方を対象としています。もしまだという方は先にこちらをどうぞ。

www.slideshare.net
www.youtube.com

続きを読む