fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

≫ EDIT

UE5/UE4 アニメーションモンタージュ(Animation Montage)で再生するスロット(Slot)を変更する(Slot name)

アニメーションモンタージュ(Animation Montage)で再生するスロット(Slot)を変更する方法です。

公式ドキュメントはこちら。

・アニメーション スロット(Animation Slots)
https://docs.unrealengine.com/5.0/ja/animation-slots-in-unreal-engine/

スロットを変更する、またはスロットをモンタージュに追加するには、
スロット トラックの [Slot (スロット)] ドロップダウン メニューをクリックして、次のコマンドを表示します。


というわけでやってみます。
「アニメーションモンタージュ(Animation Montage)」アセットを開きます。
赤枠の部分をクリックして「スロット名」から変更したいスロットを選択します。
アニメーションモンタージュスロット切り替え000

これだけで変更することができます。簡単ですね!
こちらも初歩的なところですが、備忘録としてのメモということで…。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 アニメーションモンタージュ(Animation Montage)でスロット(Slot)を追加する(Anim Slot Manager、Add Slot)

アニメーションモンタージュ(Animation Montage)でスロット(Slot)を追加する方法です。

公式ドキュメントはこちら。

・アニメーション スロット(Animation Slots)
https://docs.unrealengine.com/5.0/ja/animation-slots-in-unreal-engine/

スロットは アニメーション スロット マネージャー で作成し、管理します。
これは アニメーション ブループリント、スケルトン、アニメーション シーケンス の各エディタから開けるパネルです。

とのことで、アニメーションモンタージュ(Animation Montage)でスロット(Slot)を追加するには
「アニメーション スロット マネージャー(Anim Slot Manager)」を使う必要があります。

今回はなんでもよいのでアニメーションシーケンスアセットを開きます。
開いたウィンドウのメニューから「ウィンドウ」の「アニメーションスロットマネージャー(Anim Slot Manager)」を選択します。
アニメーションモンタージュスロット追加000

すると、ウィンドウ右下あたりに「アニメーションスロットマネージャー(Anim Slot Manager)」ウィンドウが開きます。
今回はスロットを追加するので「スロットを追加(Add Slot)」を選択します。
アニメーションモンタージュスロット追加001

追加したいスロット名を入力して決定します。
アニメーションモンタージュスロット追加002
今回は「LowerBody」というスロット名にしてみました。

するとこんな感じでスロットが追加されました。
アニメーションモンタージュスロット追加003
無事「LowerBody」というスロットが追加されているようです。

というわけで、かなり初歩的なところなのですが備忘録としてのメモということで…。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 アニメーションモンタージュ(Animation Montage)の「BlendIn」と「BlendOut」の仕様について

アニメーションモンタージュ(Animation Montage)の「BlendIn」と「BlendOut」の仕様についてです。

こちらに調べてくださった記事があったのでメモです。

・[Animation] Montageの BlendIn / BlendOut の仕様
https://zenn.dev/aziogroup/scraps/5326994431719e#comment-36d765cf5d014c

MontageA再生中に違うMontageBが呼ばれた場合は
MontageAのBlendOutは使用されずにMontageBのBlendInが使用
される

※MontageA BlendingOut時にMontageBを再生した場合1フレだけスロットに接続されてるポーズがブレンドされるのであまりにBlendOutが短いと変なブレンドになる可能性がある


アニメーションモンタージュ(Animation Montage)周りは最近触り始めたばかりで、
あまり細かい仕様については理解していなかったのでこういう情報は助かります…!

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 アニメーションモンタージュ(Animation Montage)全体をループ再生する(Montage Sections Panel)

アニメーションモンタージュ(Animation Montage)全体をループ再生する方法です。

公式ドキュメントはこちら。

・アニメーションモンタージュ(Animation Montage)
https://docs.unrealengine.com/5.1/ja/animation-montage-in-unreal-engine/

アニメーションモンタージュ(Animation Montage)全体をループ再生するには
モンタージュセクションパネル(Montage Sections Panel)で設定するようです。

まずはこんな感じでアニメーションモンタージュアセットを開きます。
アニメーションモンタージュのループ再生000

右下にある「モンタージュセクションパネル(Montage Sections Panel)」に移動し、
チェックボックスを選択してループ再生を設定したいセクション名を指定します。
アニメーションモンタージュのループ再生001

するとこんな感じでチェックボックスがループ再生のマークに変わります
アニメーションモンタージュのループ再生002

これでアニメーションモンタージュ全体のループ再生の設定は完了です。
セクションが複数ある場合はセクションごとに設定できるようですが、
今回は全体なので自動で作成されるデフォルトスロットに対して設定を行いました。

アニメーションモンタージュは再生時ではなく、アセットの方にパラメータを持っていることが多いので
ここらへんは覚えておきたいところですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 2023/05 の無料マーケットプレイスコンテンツと永続コンテンツ(無料の永続コンテンツはなし)

2023/05 の無料マーケットプレイスコンテンツと永続コンテンツのメモです。

公式情報はこちら。

・2023年05月の無料マーケットプレイスコンテンツ
https://www.unrealengine.com/ja/blog/featured-free-unreal-marketplace-content-may-2023

無料コンテンツについては期日がすぎると無料でなくなるので公式情報や他のサイトさんを見たほうが良いかと思います。
こちらでは永続コンテンツについてのメモを残しておきます。

と思ったのですが2023/05は無料の永続コンテンツはないようです。残念…。
とはいえ期限ありの無料コンテンツでダウンロードできるのでそれだけでもとても助かります!

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 C++でデバッグ文字列(FString)をビューポート(Viewport)に表示する(UEngine::AddOnScreenDebugMessage)

C++でデバッグ文字列(FString)をビューポート(Viewport)に表示する方法です。

公式ドキュメントはこちら。

・FString
https://docs.unrealengine.com/4.27/ja/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/

デバッグ文字列(FString)をビューポート(Viewport)に表示するには
「UEngine::AddOnScreenDebugMessage()」関数
を使います。

ドキュメントはこちら。

・UEngine::AddOnScreenDebugMessage
https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Engine/UEngine/AddOnScreenDebugMessage/1/

こんな感じで記述します。

#include "Engine/Engine.h"

// ビューポートに FString を表示
FString aFStringTest = FString::Printf(TEXT("Test = %02d, %.3f"), 1, 123.456f);
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, aFStringTest);

第一引数の「uint64 Key」は同じ値の場合は重複表示を避けることができます、指定なしは「-1」のようです。
第二引数の「float TimeToDisplay」は表示時間(秒)を指定します。
第三引数の「FColor DisplayColor」は表示する色を指定します。
第四引数の「const FString & DebugMessage」は表示する文字列(FString)を指定します。

結果はこんな感じになります。
画面に文字列を表示000
ちょっとわかりづらいですが、ちゃんと画面に表示されています。

以下の第五引数と第六引数はデフォルト引数として指定しなくても問題ないようになっています。
第五引数の「bool bNewerOnTop」は新しい表示が上からになるかどうかを指定します。デフォルトは「true」になります。
第六引数の「const FVector2D & TextScale」は表示倍率を指定します。デフォルトは「1.0f,1.0f」となります。

上記二つの追加引数を指定するとこんな感じになります。

#include "Engine/Engine.h"

// ビューポートに FString を表示(第五、第六引数指定版を追加)
FString aFStringTest = FString::Printf(TEXT("Test = %02d, %.3f"), 1, 123.456f);
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, aFStringTest);
FVector2D aScale(2.0f, 2.0f);
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, aFStringTest, true, aScale);


結果はこんな感じになります。
画面に文字列を表示001
第六引数を指定した文字列がちゃんと拡大されて表示されています。

基本的にはこの処理自体はBPでの「PrintString」の「Print to Screen」のみ版といったもののようです。
PrintStringのKey000

C++からこの関数を使うとしたらデバッグ用途でしょうか。

| UE4 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5 C++で文字列を画面とログの両方に表示する(UKismetSystemLibrary::PrintString)

C++で文字列を画面とログの両方に表示する方法です。

といってもBPでよく使っている「PrintString」をC++から実行するだけのメモになります。
C++で「PrintString」を使う場合「UKismetSystemLibrary::PrintString」関数を使います。

公式ドキュメントはこちら。

・UKismetSystemLibrary::PrintString
https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Kismet/UKismetSystemLibrary/PrintString/
微妙に古い…。

実際の記述はこんな感じになります。

// Include
#include "kismet/KismetSystemLibrary.h"

// 文字列を画面とログの両方に表示する
FString aString("C++でPrintString")
FLinearColor aColor(0.0f, 0.5f, 1.0f, 1.0f);
UKismetSystemLibrary::PrintString(WorldContextObject, aString, true, true, aColor, 5.0f, NAME_None);

「WorldContextObject」には「WorldContextObject」を指定します。
「InString」には「表示したい文字列」を指定します。
「bPrintToScreen」には「画面上に表示するかどうか」を指定します。
「bPrintToLog」には「ログに表示するかどうか」を指定します。
「TextColor」には「文字列のカラー」を指定します。
「Duration」には「表示時間」を指定します。
「Key」には「キー」を指定します。

実行してみた結果がこちら。
プログラムでPrintString000
問題なく表示されているようです。

あまりC++からは使わない気もしますが、念のため覚えておいた方が良いかなというところでしょうか。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 C++でコンストラクションスクリプト(Construction Script)を使ってアクター(Actor)のラベル名を変更する(SetActorLabel)

C++でコンストラクションスクリプト(Construction Script)を使ってアクター(Actor)のラベル名を変更する方法です。

こちらを参考にさせていただきました。

・[UE4] アクターのラベル名を自動変更する機能の実装方法
https://historia.co.jp/archives/14654/

アクター(Actor)のラベル名を変更するには「SetActorLabel」関数を使うようです。
というわけでコンストラクションスクリプト(Construction Script)を使ってラベル名を変更してみます。

// コンストラクション
void AActor::OnConstruction(const FTransform& Transform)
{

Super::OnConstruction(Transform);
#if WITH_EDITOR
// ラベル名変更
FString aLabelString = FString("NewActorLabelName");
this->SetActorLabel(aLabelString);
#endif
}


これでアクターのラベル名を変更することができました。

何かしらの規則に従ったラベル名にしたいなどがある場合は使う機会があるのかなと思います。

注意点としては以下のようなことがあるようです。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 C++でコンストラクションスクリプト(Construction Script)を実行する(OnConstruction)

C++でコンストラクションスクリプト(Construction Script)を実行する方法です。

こちらを参考にさせていただきました。

・【UE4】ConstructionScriptについて【★★】
https://kinnaji.com/2021/02/09/aboutconstructionscript/

公式ドキュメントはこちら。

・コンストラクション スクリプト(Construction Script)
https://docs.unrealengine.com/4.27/ja/ProgrammingAndScripting/Blueprints/UserGuide/UserConstructionScript/

というわけで、実際に「コンストラクションスクリプト(Construction Script)」を実行するためのクラスを作成します。

// コンストラクションスクリプト(Construction Script)を実装するクラス
class ANewActor : public AActor
{

GENERATED_BODY()
public:
// コンストラクタ
ANewActor ();
public:
virtual void BeginPlay() override;
virtual void EndPlay( const EEndPlayReason::Type EndPlayReason ) override;
virtual void Tick( float DeltaTime ) override;
// コンストラクション
virtual void OnConstruction(const FTransform& Transform) override;
};

このクラスの「OnConstruction」という関数がコンストラクションスクリプトに該当します。

実体の方はこんな感じになります。

// コンストラクション
void ANewActor ::OnConstruction(const FTransform& Transform)
{

Super::OnConstruction(Transform);
#if WITH_EDITOR
// エディタのみで実行される処理など
#endif
}


これでコンストラクションスクリプトを実行する処理は完了です。
アクターに変更が起きた場合に自動で何かしたいなど結構ありそうなので、色々と使えるのかなと思います。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 変数に対してインクリメント(Increment )やデクリメント(Decrement )を一つのノードで行う(Increment Int、Decrement Int、Increment Float、Decrement Float、++、--)

変数に対してインクリメント(Increment )やデクリメント(Decrement )を一つのノードで行う方法です。

こちらを参考にさせていただきました。

・【UE4・UE5】〈Tips〉諦めないで!分かりづらいブループリントノード集&知ってると幸せになれる小技
https://namiton.hatenablog.jp/entry/2022/09/15/144430#%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88%E3%83%87%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88

変数に対してインクリメント(Increment )やデクリメント(Decrement )を一つのノードで行うには
「Increment Int」「Decrement Int」「Increment Float」「Decrement Float」ノード
を使います。
インクリメントデクリメント000
「Int」と「Float」二つの型が対応しているようです。

使い方はこんな感じです。

インクリメント。
インクリメントデクリメント003
変数へのセットも行うので「+= 1」が実行されているものになります。

デクリメント。
インクリメントデクリメント004
変数へのセットも行うので「-= 1」が実行されているものになります。

上記ノードは「++」キーや「--」キーで出すことができます。

「++」キーだとこんな感じに。
インクリメントデクリメント001

「--」キーだとこんな感じに。
インクリメントデクリメント002

BPのノードをすっきりさせるためにもこういった機能は使っていきたいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 データテーブル(Data Table)アセットを「CSV」ファイルとして出力する(Export as CSV)

データテーブル(Data Table)を「CSV」ファイルとして出力する方法です。

こちらを参考にさせていただきました。

・[UE4] CSVファイル出力機能が用意されている箇所について
https://qiita.com/EGJ-Kaz_Okada/items/ab5b21b6c5ad861d4987

UE4でCSVといったらまず思いつくのがDataTable!アセットの右クリックメニューから入出力が可能です。
https://docs.unrealengine.com/ja/Gameplay/DataDriven/index.html
また、類似の機能である CurveTable でも同様の操作が可能です。
http://historia.co.jp/archives/1067/

とのことです。

普通にデータテーブル(Data Table)アセットの右クリックメニューからできるようなのでやってみます。

まずはこんな感じのデータテーブル(Data Table)アセットを用意してみました。
データテーブルをCSV出力000
型の違う変数と配列を混ぜてみました。

次にデータテーブル(Data Table)アセットを右クリックででてくるメニューで
「CSVとしてエクスポート(Export as CSV)」を選択
します。
データテーブルをCSV出力001
実行すると保存ダイアログがでてくるので、ファイル名や保存先を設定してCSVファイルに保存します。

出力されたCSVファイルの中身を見てみるとこんな感じになっていました。
データテーブルをCSV出力002
無事データテーブル(Data Table)の中身がCSVファイルとして出力されたようです。

あまり使う機会はないかもしれませんが、書き戻して編集して再インポートとかもできると思いますので
ワークフローと合わせたときには使うのかなと思います。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

PREV | PAGE-SELECT | NEXT