• Skip to primary navigation
  • Skip to main content

Alessandro Famà

  • Portfolio
  • Game Audio Tutorials
  • Wiki
  • Über Mich
  • Impressum
Alessandro Famà > Game Audio Tutorials > FMOD + Unreal Engine 4 Tutorials > FMOD Parameter in Unreal Engine 4 steuern

FMOD Parameter in Unreal Engine 4 steuern

In diesem Tutorial werden wir FMOD Game Parameters steuern, indem wir Blueprint Nodes verwenden und einfachen C++ Code schreiben.

Inhaltsverzeichnis

Vorbereitung in FMOD Studio

Erstelle ein neues Event in FMOD Studio und füge einen Continuous Parameter namens Pitch mit Werten zwischen -12 und 12 ein (entsprechend der Master-Pitch-Einstellung mappen):

FMOD Studio Event mit Pitch Parameter
FMOD Studio Event mit Pitch Parameter

Erstelle auch einen globalen Parameter namens EQ Global mit Werten zwischen 0 und 1 und füge eine Automatisierungskurve hinzu, so dass die Frequenz des Filters bei Erreichen des Wertes 1 sinkt:

FMOD Studio Event mit Global Parameter
FMOD Studio Event mit Global Parameter

Builde die Banks und öffne nun den Unreal Editor.

Steuern von FMOD Parametern mit Hilfe von Blueprints

Wir können den Event Instance Set Parameter Node verwenden, um einen Parameter einer Event Instance in Blueprints zu steuern:

FMOD Event Instance Set Parameter Node
FMOD Event Instance Set Parameter Node

Hier spielen wir das Event ab, indem wir die Taste 1 drücken. Wir überprüfen jeden Frame, ob die Event Instance gültig ist, und wenn ja, setzen wir den Parameter auf eine neue Pitch-Variable (denke daran, die Variable Instance Editable zu machen). Wir können jetzt den Parameterwert im Details-Tab des Actors ändern.

Wenn wir stattdessen den FMOD Ambient Sound Actor oder den FMODAudio Component verwenden, können wir einfach auf den FMODAudio Component verweisen und den Set Parameter Node verwenden:

FMODAudio Set Parameter Node
FMODAudio Set Parameter Node

Steuerung der Globalen FMOD Parameter mit Hilfe von Blueprints

Verwende den Set Global Parameter by Name Node, um Globale Parameter in einem Blueprint zu steuern:

FMOD Set Global Parameter By Name Node
FMOD Set Global Parameter By Name Node

Wir haben den vorherigen Blueprint um den Set Global Parameter by Name Node erweitert und eine neue Float-Variable namens EQ erstellt, die wir dem Feld Value hinzugefügt haben. Starte das Level und ändere die Parameter Werte im Details Tab deines Charakters/Actors.

Steuern von FMOD-Parametern in UE4 mit C++ Code

In diesem Tutorialabschnitt werden wir FMOD Parameter über die Schnittstelle mit den Blueprint-Funktionen oder den direkten Zugriff auf die Studio API von FMOD steuern.

EventInstanceSetParameter und setParameterByName

Deklariere eine float-Variable namens pitch:

UPROPERTY(EditAnywhere, Category = "FMOD", meta = (ClampMin = "-12", ClampMax = "12"))
float Pitch;

Die Pitch-Variable wird dank des EditAnywhere-Specifiers im Details Tab unseres Actors angezeigt. ClampMin und ClampMax ermöglichen es uns, den Bereich des Variablenwertes visuell einzuschränken:

FMOD Event Parameter im Details Tab
FMOD Event Parameter im Details Tab

Wir können nun EventInstanceSetParameter aufrufen, um den Parameter auf unsere Pitch-Variable zu setzen:

if (UFMODBlueprintStatics::EventInstanceIsValid(InstanceWrapper))
{		
	UFMODBlueprintStatics::EventInstanceSetParameter(InstanceWrapper, FName("Pitch"), Pitch);
}

Alternativ ist es auch möglich, den Parameter direkt über die Studio API von FMOD zu ändern:

InstanceWrapper.Instance->setParameterByName(TCHAR_TO_UTF8(*FName("Pitch").ToString()), Pitch);

setParameterByID

Deklariere in der Header-Datei des Charakters eine FMOD_STUDIO_PARAMETER_ID Variable :

FMOD_STUDIO_PARAMETER_ID PitchParameterId;

Wir können die Parameter-ID abrufen, indem wir die Event Description der Event Instance abrufen, danach eine Parameter Description deklarieren und die Parameter Description erhalten, indem wir die Funktion getParameterDescriptionByName aufrufen. Wir weisen die Id der Parameter Description der Parameter-ID-Variablen zu, die wir in der Header-Datei deklariert haben:

FMOD::Studio::EventDescription* eD;
InstanceWrapper.Instance->getDescription(&eD);
FMOD_STUDIO_PARAMETER_DESCRIPTION pD;
eD->getParameterDescriptionByName(TCHAR_TO_UTF8(*FString("Pitch")), &pD);
PitchParameterId = pD.id;

Alternativ können wir auch das IFMODStudioModule Singleton verwenden, um die Event Description von einem UFMODEvent zu erhalten:

FMOD::Studio::EventDescription* eD = IFMODStudioModule::Get().GetEventDescription(Event, EFMODSystemContext::Max);
FMOD_STUDIO_PARAMETER_DESCRIPTION pD;
eD->getParameterDescriptionByName(TCHAR_TO_UTF8(*FString("Pitch")), &pD);
PitchParameterId = pD.id;

Setzen eines FMOD Global Parameter in C++

Lasst uns zuerst eine neue float-Variable in unserer Header-Datei erstellen:

UPROPERTY(EditAnywhere, Category = "FMOD", meta = (ClampMin = "0", ClampMax = "1"))
float EQ;

Diese Variable ist auch im Editor sichtbar. Danach können wir einen globalen Parameter setzen, indem wir SetGlobalParameterByName in der Klasse des Charakters aufrufen:

UFMODBlueprintStatics::SetGlobalParameterByName(FName("EQ Global"), EQ);

Gib den obenstehenden Code in die Tick-Funktion ein und starte das Spiel. Wenn du den EQ-Schieberegler im Detail Tab des Charakters bewegst, wirst du die Parameteränderung hören.

Herzlichen Glückwunsch! Du hast gelernt, wie man FMOD-Parameter in Unreal Engine 4 steuert. Im nächsten Tutorial werfen wir einen Blick auf den FMOD Mixer in Unreal Engine 4.