Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.

Ähnliche Präsentationen


Präsentation zum Thema: "Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung."—  Präsentation transkript:

1 Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Dozent: Prof. Dr. Manfred Thaller Referent: Tobias Kemper

2 Direct Sound Soundpuffer Kontrolle eines Sounds WAV-Dateien laden 3D-Sound Echtzeiteffekte Musik Direct Sound in TriBase

3 Komponente von DirectX Mischen einer unbegrenzten Anzahl an Sounds Nutzung von Echtzeiteffekten 3D-Sound (!) Alle Sounds werden in Soundpuffern organisiert Mixer mischt alle spielenden Soundpuffer zu einem zusammen und schreibt das Ergebnis zum Abspielen in den primären Soundpuffer

4 Schnittstellen: IDirectSound8 und IDirectSoundBuffer8 Abzählen der Geräte mit DirectSoundEnumerate Die DirectSound-Schnittstelle IDirectSound8 wird durch DirectSoundCreate8 erzeugt Mit IDirectSound8::SetCooperativeLevel setzt man die Kooperationsebene von Direct-Sound

5 Soundpuffer mit IDirectSound8::CreateSoundBuffer erzeugen Ein Primärer und mehrere Sekundäre für die einzelnen Sounds Drei Parameter : -Zeiger auf eine DSBUFFERDESC-Struktur -Adresse eines Zeigers auf die Schnittstelle -nicht verwendeter Parameter (NULL) Struktur DSBUFFERDESC beinhaltet verschiedene Informationen über den Soundbuffer, die Größe (Länge) des Soundpuffers und sein Format Flags zu Sonderwünschen auf Seite 424 Das Format (Audioformat) bestimmt die Soundqualität: Sampling- Frequenz, Anzahl der Bits pro Sample und die Anzahl der Kanäle Um IDirectSoundBuffer8 zu erhalten wird die COM-Methode QueryInterface aufgerufen -> Mehr Fähigkeiten als die Normale

6 Soundpuffer sperren Ringförmiger Soundpuffer (Looping) Stückweises Füllen mit Streaming Abspiel- und Schreibcursor g_pSound->Lock(0,//Sperren abPosition 0,//Anz zu sperr Bytes (void**)(&pSamples),//Zeiger 1 &dwNumBytes,//Zeiger 2 NULL, DSBLOCK_ENTIREBUFFER)//Flag Gesamt/Teil g_pSound->Lock(0,//Sperren abPosition 0,//Anz zu sperr Bytes (void**)(&pSamples),//Zeiger 1 &dwNumBytes,//Zeiger 2 NULL, DSBLOCK_ENTIREBUFFER)//Flag Gesamt/Teil

7 Beispiel 05-02 Soundpuffer

8 IDirectSoundBuffer8::Play spielt einen Soundpuffer ab Mit Stop wird er angehalten SetVolume setzt die Abspiellautstärke eines Soundpuffers –10000 (totale Stille) bis 0 (Originallautstärke) Soundpuffer Flag DSBCAPS_CTRLVOLUME setzen! Balance mit der SetPan-Methode –10000 bedeutet 100% links und 0% rechts, +10000 bedeutet 0% links und 100% rechts Die Frequenz eines Sounds lässt sich mit SetFrequency anpassen

9 unkomprimierte PCM-Rohdaten bestehen aus einem Header und mehreren Chunks LoadWAVFile WAV-Dateien können direkt geladen und in den Soundpuffer geschrieben werden

10 Sound und Hörer besitzen eine Position und eine Geschwindigkeit Effekte und Geräuschspositionen können simuliert werden IDirectSound3DBuffer8 steht für einen 3D-Soundpuffer QueryInterface auf einem Soundpuffer aufrufen, der mit dem Flag DSBCAPS_CTRL3D erstellt wurde und nur einen Kanal hat 3D-Algorithmus: DS3DALG_NO_VIRTUALIZATION(einfach und schnell) DS3DALG_HRTF_FULL(realistischstes Ergebnis, viel Rechenzeit) DS3DALG_HRTF_LIGHT (fast so gut wie FULL, weniger Rechenzeit) Hörerschnittstelle IDirectSound3DListener8 repräsentiert den virtuellen Hörer

11 SetPosition und SetVelocity weisen dem 3D- Soundpuffer bzw. dem Hörer eine Position und einen Geschwindigkeitsvektor im Raum zu SetOrientation -> Orientierung für den Hörer BEISPIELPROGRAMM 3D Sound Bsp. 05-04

12 Sounds in Echtzeit verändern: Echo, Verzerrung, Widerhall muss mit dem Flag DSBCAPS_CTRLFX erstellt worden sein Effekte dem Soundpuffer zuweisen, bevor er abgespielt wird und während er nicht gesperrt ist -> SetFX

13 Jeder Effekttyp besitzt eine eigene Schnittstelle, über die man die Effektparameter einstellen kann Über die Methode GetObjectInPath des Soundpuffers Mit IDirectSound3DListener8::SetDopplerFactor und SetRolloffFactor die Intensität des Dopplereffekts beziehungsweise der Schallabschwächung über- oder untertreiben

14 DirectShow für alle Multimediaformate alle Audio und Videodaten durchlaufen ein Filtersystem Schnittstelle IMediaControl erlaubt Kontrolle über Play, Pause und Stop Über IMediaSeeking lässt sich der Abspielcursor verschieben und die Geschwindigkeit verändern

15 tbDirectSound tbSound tbMusic automatische Berechnung der Geschwindigkeit des Hörers Laden von Sounds und Musik weitere Methoden zum Generieren der Schnittstellen BEISPIELPROGRAMM 05-06

16 Verwendete Literatur: David Scherfgen: 3D-Spiele-Programmierung. München, 2006, S. 418-480.


Herunterladen ppt "Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung WS 12/13 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung."

Ähnliche Präsentationen


Google-Anzeigen