【UE5】【CRI ADX LE v2】基礎からおさらいしてみる vol.1
概要
色々あって、unrealからもadxからも離れていたので基礎からおさらいをしてみる。
「1から行いつつまとめる」というよりも「行ったことをまとめる」という形で記載をします。自分への備忘録です。
コードを乗せる便利なやつが無いので箇条書きを利用して記載します。
環境
Unreal Engine 5.3.2
CRI ADX LE v2_01_00
Atom Craft v3.50.06
公式
.acfファイル
AtomCraftからビルドするプロジェクトに必ず1つ存在しているもの。
共通のデータとしてこういう部分の情報を保持している。
acbはacfを参照しているため、acfの更新があった場合はすべてのacbを再ビルドして再インポートする必要があります。
unrealプロジェクトでもProjectSettingで設定を必ずする必要がある。(インポート時に自動でされることが多い)
.acb
ストリーミングでない音データを保持しているものです。
以下のCueSheet_0とCueFirstなどがそれぞれ一つのacbファイルとして出力されます。
.awb
ストリーミング再生として指定された音の波形データです。
該当の音(acb)(キュー)を再生するためには必ず必要なものとなります。
ストリーミング設定にする方法としては、ターゲットコンフィグやマテリアルから設定ができます。
ストリーミング再生はちょっと手間いるので最後のほうに記載してます。
キューシート
キューシート=.acb
CueSheet_0というのが一つのキューシート
.acbのuassetが一つのキューシート
キュー
キューシートの中にあるのが基本的にキュー
unrealでキューシートを開くと中に入っているキューが表示される
ループ設定されるキュー
右上のループアイコンで表示されているのがループされるキュー
ループ指定はマテリアル側など
BPでキューの再生
アクターにAtomComponentを持たせて再生。
Playノードを呼ぶだけ
3Dポジショニング
パンタイプを3Dポジショニングにするだけ
範囲や残響などはAtomCraft側で細かく調整できるが面倒なので省略
unreal上でも範囲が表示される
C++でキュー再生
再生関係のものが欲しいのでモジュールを追加
プロジェクト名.Build.cs
-
public class EternalADXLEV2C : ModuleRules
{
public EternalADXLEV2C(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "CriWareCore" });
}
}
データはuassetとなるので、BPから再生するQを指定できるようにし、c++内で再生をしてみます。
アクター.h
- class UAtomComponent;
class UAtomSoundBase; - <<<
-
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UAtomSoundBase> Sound;private:
UPROPERTY(Transient)
TObjectPtr<UAtomComponent> AtomComponent;
アクター.cpp
- #include "Atom/AtomComponent.h"
#include "Atom/AtomSoundBase.h" - <<<
-
void ANormalActor::BeginPlay()
{
Super::BeginPlay();AtomComponent = NewObject<UAtomComponent>(GetWorld());
if (IsValid(Sound) && IsValid(AtomComponent))
{
AtomComponent->SetSound(Sound);
}if (IsValid(AtomComponent))
{
AtomComponent->Play(0.0f);
}
}
BPのアクター側で右のDetailsのほうでキューを設定できるようになるので、再生したいものを設定すれば完了です。
ややこしそうな変数名だったので二つの変数(UAtomSoundBase型 Sound/SoundVer2)作ってみてこんな感じ
ストリーミング設定のキュー再生
ストリーミング設定されると.awbが出力されます。こちらを利用しなければストリーミングを含むキューは再生がされません。
1. .acbと.acfが全て同じ階層に置いてあるとして、.awb用のAWBフォルダを用意します。
2. AWBフォルダの中に.awbをインポートさせます。
※acbとawbが同じ階層だと同名のuassetを作る都合でインポートエラーが起きますが、別階層のフォルダであればインポートできます。
3. ストリーミングのacbのWaveBanksにファイル指定が出来るようになっているので、先ほどのawbを指定します。
波形が無いのでわかりにくいですが、問題なく再生されるようになります。
パッケージの際にはawbのファイルも含めるようにしてください。