Sound3D Funktion
Übersicht

![]() |
PucciniBetreff: Sound3D Funktion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi! Ich hab mal ne kleine Funktion für alle 3D Nutzer geschrieben!
Ich hab hier im Forum irgendwo mal gelesen das viele Probleme mit der eingebauten Load3DSound und EmitSound Funktion probleme haben. Sie ist vielleciht nicht so umfangreich, aber wer will kann ja vorschläge machen damti diese Funktionen erweitert werden ![]() ~EDIT:~ Wenn updates am code auftretten poste ich die gleich hier! 18.07.2007 Update - Pan# verbessert, FreeSound3D Funktion Code: [AUSKLAPPEN] Type MusikDaten Field Platz Field Emiter Field Lied Field Channel Field Loop Field Weite Field Vol# End Type Function LoadSound3D(soundpfad$,loop=0,soundweite=100) Musik.MusikDaten = New MusikDaten Musik\Lied = LoadSound(soundpfad$) Musik\Platz = CreatePivot() Musik\Loop=loop Musik\Weite = soundweite Musik\Vol = 0 Return Musik\Lied End Function Function EmitSound3D(soundentity,soundindex) For Musik.MusikDaten= Each MusikDaten If Musik\Lied=soundindex Musik\Emiter=soundentity If Not Musik\Loop=0 LoopSound(Musik\Lied) Musik\Channel = PlaySound(Musik\Lied) Exit End If Next End Function Function UpdateMusik() For Musik.MusikDaten = Each MusikDaten PositionEntity Musik\Platz,EntityX(Musik\Emiter),EntityY(Musik\Emiter),EntityZ(Musik\Emiter) Dis# = EntityDistance(cam,Musik\Platz) If Dis<>0.0 Then Vol# = 1.0 - (Dis#/(Musik\Weite)) ChannelVolume Musik\Channel,Vol# pan# = -Sin(DeltaYaw(cam,Musik\platz))*0.99 ChannelPan Musik\Channel,Pan# EndIf Next End Function Function FreeSound3D(soundindex) For Musik.MusikDaten = Each MusikDaten If Musik\Lied=soundindex FreeSound Musik\Lied:Delete Musik:Exit Next End Function Als Erklärung: Mit LoadSound3D wird ein neuer Sound geladen, angegeben werden kann hier bisher nur der Pfad und die Reichweite des Sounds (Standardwert=100 Einheiten). Rückgabewert ist der Soundindex Mit EmitSound3D wird ein Sound an einer bestimmten Position abgespielt! Dazu muss das Objekt welches den Sound ausgibt sowie der Soundindex mit übergeben werden. Mit UpdateMusik wird dann der Sound korrekt auf Distance und Ausrichtung überprüft und Eingestellt. Mit FreeSound3D kann Speicher wieder freigegeben werden. Hierzu muss nur der Index des Sounds der mit LoadSound3D ermittelt wurde mit übergeben werden. Dank an Krümel für die Hilfestellung ![]() MfG Puccini |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
- Zuletzt bearbeitet von Puccini am Mi, Jul 18, 2007 11:34, insgesamt 2-mal bearbeitet
Krümel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi, Puccini,
ein kleiner Schönheitsfehler lässt sich folgendermassen beseitigen: pan# = -Sin(DeltaYaw(cam,Musik\platz)) * 0.99 das bewirkt, dass der pan-Wert nie 1, bzw -1 annimmt. Ansonsten hast du einen sehr unrealistischen Effekt, weil der linke, bzw rechte Kanal abrupt abbgehackt wird. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group