制作ワークフロー
AMS はオーディオ解析を再利用可能なデータとランタイム制御に変換します。エディタには4つの専用ワークスペースがあり、ランタイムモジュールはコンポーネント、アセット、Blueprint ヘルパー、C++ インターフェースを公開します。
PAUTINKAAudio Motion System 1.0
Unreal Engine 向けのオーディオ駆動ランタイムモーション、決定論的 Choreography、再利用可能な Dialogue Curve アセット、Animation Sequence ミキシング。
概要
AMS はオーディオ解析を再利用可能なデータとランタイム制御に変換します。エディタには4つの専用ワークスペースがあり、ランタイムモジュールはコンポーネント、アセット、Blueprint ヘルパー、C++ インターフェースを公開します。
プレビューは反復調整用です。完成した結果は再利用可能なアセットとランタイムコンポーネントを通じて実際のプロジェクトで利用できます。
技術情報
インストール
AudioMotionSystem 配下に置きます [Project]/Plugins/.Intermediate または Saved フォルダを別のマシンへ。
クイックスタート
Connect Audio Motion または Bake 済みの Audio Motion Clip.音声駆動制御
音楽駆動 Motion
グローバル移動を抑制します。
その場での再生に使用します。計画済み軌道を使用します。
シーケンスに移動が必要な場合に使用します。安定化されたグローバル軌道パスを使用します。
計画移動に安定化が必要な場合に使用します。
スカラー出力
作成する Audio Motion Dialogue Curve Blueprint またはマテリアルパラメータ向けに1つのベイク済みスカラー値が必要な場合に使用します。
ランタイム評価はベイク済みカーブを読み取り、エディタ解析を繰り返す必要はありません。
Connect Dialogue Curve Asset ターゲット Actor 上に Audio Motion Dialogue Curve コンポーネントを作成または再利用し、アセット設定で開始します。
現在のスカラー値は Get Dialogue Curve Valueから取得できます。マテリアル出力が有効な場合、同じ値が選択したスカラーパラメータへ書き込まれます。
Animation Sequence + Dialogue
参照階層とジオメトリから Source-to-Target Mapping を構築します。
ターゲット Rig のネイティブアニメーションは Retargeting を行いません。Auto をベースに、修正が必要な Mapping を置換またはクリアできます。
特殊なケースや信頼度が低い場合に使用します。既知の Source / Target ペアに保存済み Retarget Profile を再利用します。
繰り返しの制作作業に最適です。
アーキテクチャ
AudioMotionRuntimeランタイムオーディオ評価、コンポーネント、Blueprint ヘルパー、アセット、Mapping、Choreography データ。Game + EditorAudioMotionAnimationランタイムランタイム AnimGraph コントロールノード。アニメーションシステムAudioMotionEditorエディタTools ウィンドウ、アセットファクトリ、Preview、オーサリング、Bake、Animation Mixer。Editor のみAudioMotionRuntime また必要に応じて AudioMotionAnimation。追加しないでください AudioMotionEditor shipping runtime コードへの依存関係。ランタイムモジュールはコンパクトな AMS Vocabulary / view ファイルを Content/AMSData NonUFS ランタイム依存としてステージします。
*.amsvocab.json
*.amsvocabz
*.amsview.json
ランタイムビルドルールが対応するプロジェクト側 Vocabulary フォルダも、存在する場合はステージできます。
主要統合ノード
Blueprint ヘルパーはターゲット Actor 上の AMS コンポーネントを作成または再利用します。必須入力は検証され、セットアップに失敗すると None / nullptr.
UAudioMotionComponent*メインの Audio Motion Component を作成または再利用し、Voice Sound パスを準備、Dialogue bindings を再構築、ターゲット Rig コンポーネントを接続して処理を開始します。
UAudioMotionComponent*baked Audio Motion Clip をターゲット Actor に接続します。このパスではソースオーディオ再生は不要です。
UAudioMotionComponent*選択した SoundWave を Background Music として使用し、メインコンポーネントを音楽駆動処理向けに設定します。処理は Voice ソースとは独立して継続できます。
UAudioMotionComponent*Voice Sound と独立した Background Music を同じ Audio Motion Component に接続します。Voice 再生が停止しても音楽パスを継続できるよう処理は継続されます。
UAudioMotionComponent*ターゲット Actor に追加された最初の Audio Motion Component を検索します。存在しない場合は None を返します。
UAudioMotionDialogueCurveComponent*Dialogue Curve コンポーネントを作成または再利用し、そのスカラー出力を Blueprint と、デフォルトではマテリアルのスカラーパラメータへ接続します。
UAudioMotionDialogueCurveComponent*Dialogue Curve コンポーネントを作成または再利用し、生成済み Dialogue Curve アセット一式(Source Sound、baked カーブ、Response 設定、Loop、Material Target、Material Slot、Parameter Name)を適用します。
UAudioMotionPulseComponent*コンパクトなスカラー Audio Pulse コンポーネントを作成または再利用します。ソースには Voice、音楽全体のエネルギー、周波数帯、Onset、Beat、カスタム Audio Motion チャンネルを使用できます。
ランタイム制御
ヘッダー: AudioMotionComponent.h · Module: AudioMotionRuntime
SetAudioSource(UAudioComponent*)Audio Component 入力を設定し、ソース状態を更新します。SetSourceSound(USoundWave*)SoundWave ソースパスを設定します。SetSourceClip(UAudioMotionClip*)baked Audio Motion Clip ソースを設定します。StartProcessing(bool)評価を開始し、必要に応じて再生時間をリセットします。StopProcessing(bool)評価を停止し、必要に応じてソースオーディオも停止します。ResetProcessing(float)プロセッサ状態を指定時間へリセットします。PushEnvelopeValue(float)Manual Envelope 入力モードへ手動 Envelope 値を渡します。EvaluateAtTime(float,float)明示的な時間と Envelope 値を評価します。EvaluateSourceAtTime(float)現在設定されているソースを指定時間で評価します。ApplyExternalFrame(FAudioMotionFrame,bool)事前構築済み Frame を適用し、必要に応じて自動 Bindings も適用します。RefreshAutomaticConnection()自動ランタイムターゲット接続を再解決します。ResetAutomaticBindings()キャッシュされた自動 Binding 状態をクリアします。SetTargetSkeletalMesh(...)ランタイム適用対象の Rig コンポーネントを明示的に設定します。GetChannelValue(EAudioMotionChannel)現在の Frame から1つの値を読み取ります。GetPlaybackTimeSeconds()現在のメイン再生クロックを返します。GetSourceDurationSeconds()利用可能な場合、設定済みソースの長さを返します。IsProcessing()処理状態を返します。SetBackgroundMusic(...)独立した Background Music SoundWave を設定します。PlayBackgroundMusic(float)Background Music を指定ローカル時間から開始します。StopBackgroundMusic()Background Music の再生を停止します。SetBackgroundMusicVolume(float)Background Music の音量を更新します。IsBackgroundMusicPlaying()Background Music の再生状態を返します。On Frame UpdatedOn Speech Value UpdatedOn Speech StartedOn Speech Stoppedヘッダー: AudioMotionPulseComponent.h · Module: AudioMotionRuntime
選択した AMS チャンネルまたはスタンドアロンサウンドを読み取り、Attack/Release スムージング付き Input/Output 範囲でマッピングし、必要に応じて動的マテリアルスカラーへ書き込み、しきい値イベントを公開します。
StartPulse()Tick とソース評価を開始します。StopPulse(bool)評価を停止し、必要に応じてスタンドアロンオーディオも停止します。SetStandaloneSound(USoundWave*,bool)スタンドアロンソースを変更し、必要に応じてすぐ再生します。GetPulseValue()現在のスカラー出力を返します。On Pulse Value UpdatedOn Pulseヘッダー: AudioMotionDialogueCurveComponent.h · Module: AudioMotionRuntime
Audio Motion Pulse Component 派生です。Curve Asset を割り当てると、その baked カーブがスカラーソースとなり、再生/マテリアル設定がコンポーネントへコピーされます。
SetCurveAsset(UAudioMotionDialogueCurveAsset*,bool)アセットを割り当て、必要に応じて Source Sound を開始します。GetDialogueCurveValue()現在の baked カーブのスカラー値を返します。公開ヘッダー
自分のコードが実際に使用するモジュールだけを追加してください。
PublicDependencyModuleNames.AddRange(new[]
{
"AudioMotionRuntime",
"AudioMotionAnimation" // only when your runtime animation module needs FAnimNode_AudioMotion
});
AudioMotionEditor Editor モジュールからのみ追加してください。Shipping 用ランタイムモジュールを AMS Editor モジュールに依存させないでください。UAudioMotionComponentAudioMotionComponent.h主要ランタイム評価器。ソース選択、処理クロック、フレーム評価、自動接続、バックグラウンドミュージック、チャンネル読み取り。UAudioMotionBlueprintLibraryAudioMotionBlueprintLibrary.hBlueprint Connect ノードで使用する静的ユーティリティ層。C++ から直接呼び出すこともできます。UAudioMotionProfileAudioMotionProfile.hEnvelope、Dialogue、音楽、評価設定を含む Primary Data Asset。UAudioMotionBindingProfileAudioMotionBindingProfile.hターゲット Mapping 用の Primary Data Asset。公開 helper: FindDialogueRole、EnsureDialogueRoles、RebuildDialogueBindings。UAudioMotionClipAudioMotionClip.hBaked Dialogue カーブ。EvaluateChannel、EvaluateFrame、BuildFromFrames、ClearClip、IsEmpty。UAudioMotionDialogueCurveAssetAudioMotionDialogueCurveAsset.hポータブルなスカラーカーブアセット。EvaluateCurve と GetSourceSound。UAudioMotionPulseComponentAudioMotionPulseComponent.hマテリアル出力とトリガーイベントを持つスカラー音声リアクションコンポーネント。UAudioMotionDialogueCurveComponentAudioMotionDialogueCurveComponent.hPulse 派生で baked Dialogue Curve アセットを評価するコンポーネント。FAudioMotionDialogueProcessorAudioMotionDialogueProcessor.h決定論的 Dialogue プロセッサ。Reset(seed)、Evaluate(...)。FAudioMotionMusicAnalyzerAudioMotionMusicAnalyzer.hSoundWave または Audio Component 評価用の音楽解析 helper。FAudioMotionFrameAudioMotionTypes.h共有フレームコンテナ。GetChannel / SetChannel と Dialogue/音楽チャンネル値。UAMSMotionDataSubsystemAMSMotionDataSubsystem.hコンパクトな Vocabulary データをロードする Engine subsystem。ReloadData、GetVocabulary、GetDefaultVocabulary、GetVocabularyIds。UAMSMotionVocabularyAMSMotionVocabulary.hVocabulary メタデータと Motion 参照。FindMotion、GetMotionCount、ValidateVocabulary。UAMSMotionClipAMSMotionClip.h計測済み Motion Unit データ。Track 評価、Pose 適用、Authoring 検証、トランジションメタデータ。UAMSMotionLibraryAMSMotionLibrary.hVocabulary と Book データから構築される Planner 向け候補ライブラリ。UAMSPerformanceBookAMSPerformanceBook.hChoreography のポリシー/文法 Data Asset。組み込み Book helper、検証、family rules。FAMSPerformancePlannerAMSPerformancePlanner.h決定論的な静的 BuildPlan インターフェース。Book/Library + Analysis + Planner Settings から Motion Sequence を生成します。UAMSMotionSequenceAMSMotionSequence.hスケジュール済み Choreography sequence。Duration/time 正規化、Pose 評価、compiled track のビルドと検証。UAMSRigProfileAMSRigProfile.hRig Mapping プロファイル。Mapping 解決、Reference Hierarchy からの構築、手動 Overrides、検証、Reference Scale。FAnimNode_AudioMotionAnimNode_AudioMotion.hRuntime AnimGraph コントロールノード。デフォルトでは所有する Audio Motion Component から Frame を読み取ります。#include "AudioMotionBlueprintLibrary.h"
#include "AudioMotionComponent.h"
UAudioMotionComponent* ConnectAMS(
AActor* TargetActor,
UAudioMotionProfile* Profile,
UAudioMotionBindingProfile* BindingProfile,
USoundWave* VoiceSound)
{
return UAudioMotionBlueprintLibrary::ConnectAudioMotion(
TargetActor,
Profile,
BindingProfile,
VoiceSound,
nullptr,
true,
false);
}
#include "AudioMotionDialogueCurveAsset.h"
float ReadDialogueCurve(
const UAudioMotionDialogueCurveAsset* CurveAsset,
float TimeSeconds)
{
return CurveAsset
? CurveAsset->EvaluateCurve(TimeSeconds, false)
: 0.0f;
}
アセットとデータ型
Envelope、Dialogue、音楽解析、評価レート設定。
ターゲット Mapping と生成された Dialogue Bindings。
再利用可能な baked Frame-Channel カーブ。
Source SoundWave、1本の baked スカラーカーブ、マテリアル設定。
Rig Mapping、手動 Overrides、トポロジーデータ、Reference Scale。
Vocabulary メタデータと Motion Units への参照。
Vocabulary と Book データから構築される Planner 候補ライブラリ。
Planner が使用する選択ポリシー/グラマー。
スケジュール済み Choreography エントリと任意のコンパイル済みトラック。
再利用可能な Source/Target Mapping と Translation 設定を保存する Editor アセット。
EAudioMotionModeEAudioMotionInputModeEAudioMotionChannelEAudioMotionPulseSourceEAudioMotionTransformChannelEAudioMotionTargetTypeEAudioMotionDialogueRoleEAudioMotionDialogueTargetTypeEAMSRigProfileKindEAMSMotionSequenceModeEAMSTrajectoryModeEAMSMotionCurveModeEAMSMotionActionKindEAMSMotionPathKindEAMSMotionDirectionEAMSMotionLevelEAMSMotionTimeQualityEAMSMotionForceQualityEAMSMotionFlowQualityEAMSSupportState
API の正確性のため C++ 識別子は正確な名前で記載します。エディタでは主要な制作向け Dialogue ロールに中立的な表示名を使用します。
FAudioMotionFrameFAudioMotionMusicSettingsFAudioMotionEnvelopeSettingsFAudioMotionDialogueSettingsFAudioMotionValueMappingFAudioMotionDialogueTargetConfigFAudioMotionDialogueRoleTargetFAudioMotionMorphBindingFAudioMotionMaterialScalarBindingFAudioMotionSceneBindingFAMSPerformanceAnalysisFAMSPerformancePlannerSettingsFAMSRigSlotMappingFAMSRigManualOverrideFAMSMotionKeyFAMSMotionTrack
アセットの安全性
AMS は設定済み Output Folder をルートとして使用します。Mesh 依存アセットは選択した Rig Mesh 名のフォルダ配下に保存されます。
/Game/AudioMotion/
SK_MyRig/
Profiles/
Clips/
Animations/
Retarget/
Choreography/
RigProfiles/
Generated/
DialogueCurves/
生成された最終アセットは、既存アセットを黙って置き換えるのではなく Unreal の一意命名を使用します。
Dialogue Curve アセットは共有され、特定の Rig Mesh には紐づきません。
互換性
トラブルシューティング
プラグインがプロジェクトで有効になっており、有効化後にエディタを再起動したことを確認してください。また、パッケージがプロジェクトの Unreal Engine バージョンと一致することも確認してください。
Voice Sound 解析データ、Profile/Binding Profile、ターゲット Rig Mesh、自動割り当てを確認してください。Rebuild または Bake 前に不足・不審な Mapping を修正してください。
Rig Profile を検証します。Custom Mapping に切り替え、自動ベースから開始し、誤った行だけを修正して Validate、Apply を実行し、その後コンパイル済み Choreography Track を再構築します。
エディタのステータスメッセージに従ってください。AMS が必要な解析設定を有効にしたら SoundWave を保存し、Unreal にオーディオ解析データを再構築させてから Analyze + Build + Compile を再実行します。
Material Output が有効で、スカラーパラメータが存在し、Material Slot が正しく、Target Component Name が目的の Mesh コンポーネントに一致しているか、空欄にして AMS が最初の適切な Mesh コンポーネントを使用できることを確認してください。
Custom モードを使用し、Auto Mapping をベースに誤った行だけを置換またはクリアします。同じ Source/Target ペアを再利用する場合は再利用可能な Retarget Profile を保存してください。
そのエンジンバージョン専用の AMS ソースパッケージを使用し、そのエンジンがサポートするコンパイラ/ツールチェーンで再ビルドしてください。別バージョンの Binaries や Intermediate は再利用しないでください。
Pautinka
Unreal Engine バージョン、AMS バージョン、問題が Editor Preview / Runtime / Bake のどこで発生するか、正確な再現手順、関連する Unreal ログ抜粋を添えてください。
Mapping または Animation Mixer の問題では、Source/Target Rig の種類と Auto、Custom、Profile のどのモードを使用したかも記載してください。
Editor オーサリング、再利用可能なアセット、Blueprint 統合、公開 C++ ランタイム API を1つの制作ワークフローにまとめます。