プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【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

 

 

公式

game.criware.jp

 

 

.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のファイルも含めるようにしてください。