ぼっちプログラマのメモ

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

【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

続きを読む

Gameplay Effect にてModifierの値をBPから直接指定できる Set by Caller の使い方について

Gameplay Effectについてはこちら
okawari-hakumai.hatenablog.com
historia.co.jp
qiita.com
github.com

Gameplay EffectによるAttribute Setへの設定・変更値は基本的にAbilityやCurveTableや自作Magnituteで設定するのですが、自分のプロジェクトにてBPから直指定したいケースがあったので調べたらヒットしたのがこちらスレッド
f:id:pafuhana1213:20210703143340p:plain
f:id:pafuhana1213:20210703143348p:plain
引用:GameplayEffect: How to set magnitude programatically? - UE4 AnswerHub より

上の画像が全てな感じがありますが、

  1. Gameplay Effect の ModifiersのMagnitude Calculation TypeをSet by Caller に
  2. Data TagにBPから設定する際の識別用にGameplayTagを設定
  3. ↑の画像のようにBPを組む

これで手元の環境(UE4.26.2)にて、BPから直接Gameplay Effectの値を指定して適用することができました。多分C++でも同様にして組めるはずです。
雑ですがSet By Callerの使い方に関する資料がほぼなかったのでメモ代わりに。おしまい

【UE4.25】Mac環境でのビルド時に MultitouchSupport でエラーが出たときの解決方法

2回ほど引っかかったので自分用メモも兼ねて

UE4.25 & Mac環境でエンジンビルドなどを行うと以下のエラーが出る可能性があります。

clang: error: no such file or directory: '/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/Current/MultitouchSupport'

で、これは以下の変更を組み込むことで修正できます。
https://github.com/EpicGames/UnrealEngine/commit/1d252ee345cdf6c232b20c3b4bf14f13bb569c9d

なお、この修正はUE4.26で組み込まれています。
issues.unrealengine.com

おしまい