HTML

gondolataim elsősorban játékfejlesztésről

Elsősorban játékfejlesztés magyarul: az enginem fejlesztése során felmerülő problémák, ötletek, tévutak stb dokumentálása, amely számomra és talán mások számára is hasznos lehet később Másodsorban gondolatok szavakban...

Kapcsolat:
aalberik 'at' gmail 'dot' com

Haletető

Galéria

Címkék

Összes

Linkblog

Naptár

november 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Hang és 3D #2 - HRTF - r2167

2014.09.11. 12:50 :: syam

Az OpenAL-lel való több, mint 3 éves kapcsolatom úgy tűnik végre "révbe ért" a napokban. Röviden arról, hogy miért éri meg használni: 

  • cross-platform - sok platformra elérhető (valamilyen formában)
  • OpenGL-szerű a szintaxisa
  • 3D hangokat (és akár térhangzást is) kezel

Tudni kell azonban, hogy mivel a szabvány története meglehetősen szövevényes az elérhető implementációk körül nem egyértelmű a helyzet. Tudomásom szerint Windows alatt megszűnt a hivatalos support (a Creative Labs végezte ezt a feladatot). Ámde az Apple (még) támogatja így MacOS ill. iOS alatt nincs probléma.

Lehetséges alternatíva az OpenAL Community implementációja az OpenAL Soft, ami nyílt forrású viszont LGPL licensszel rendelkezik (ez azt jelenti, hogy jogi következmények nélkül csak külön binárisként (.dll, .so) lehet használni). Nagy előnye viszont, hogy sok API-hoz készült támogatás - jelenleg (1.16.0) ez a szám 15. Ezek között szerepel DirectSound (Windows), Alsa (Linux), OpenSL ES (Android) és Core Audio (Mac) is.

Vagyis amennyiben sikerül megküzdeni a forráskód lefordításával (szerencsére gondosan összeállított cmake projekt is tartozik a forráshoz) gazdagabbak leszünk Windows, Linux és Android OpenAL driverrel / wrapperrel.
Így számomra a legfontosabb platformokon - Windows (PC), Linux (PC), Android, MacOS ill. iOS - használhatóvá vált az OpenAL (Win, Android, MacOS letesztelve) és nem lesz többé gond az OpenAL32.dll-el.

Most pedig következzen a "hab a tortán" a HRTF (head-related transfer function), amit az OpenAL is (jó eséllyel) támogat tekintve, hogy 3D-s koordináta-rendszerben dolgozik.
Ennek segítségével mesterséges térhangzás érhető el vagyis érzékeltetni tudjuk (térben elhelyezett) hangok térbeliségét. Pontosabban ez egy olyan függvény amivel kiszámítjuk, hogy az adott hangot hogyan hallaná valós térbeli szituáció esetén a bal ill. jobb fülünk. Mivel a kapott eredmény a két fülhöz kiszámított "adat" ezért az így előállított mesterséges térhangzáshoz elegendő (sőt mi több ajánlott) egy sztereó fülhallgató ( HRTF nélkül csak a bal-jobb irányokat érzékelnénk HRTF-fel viszont elöl-hátul (jó esetben még a fel-le) irányokat is).
Fontos, hogy a függvény működéséhez figyelembe kell venni az anatómiai tényezőket (fülek formája, helyzete, koponya mérete stb).

Az OpenAL Soft biztosan támogatja a HRTF-t mindössze egy, a működéséhez szükséges adatbázist igényel, amely tárolja a HRTF számításához szükséges adatokat. Az anatómiai tényezők hatása ebben az adatbázisban jelenik meg. Szerencsére ilyen adatbázist akár magunknak is tudunk készíteni az itt található minták és az OpenAL Soft-hoz adott alkalmazás (ill. a fülünk) segítségével.
Megjegyzés: természetesen nem ez az egyetlen módja, hogy térhangzást hozzunk létre OpenAL-lel.

 

 Androidon az OpenAL Soft

Screenshot_2014-09-08-23-25-02

 

 

Mac-en pedig a "gyári" OpenAL

Screen Shot 2014-09-10 at 01.12.12

Szólj hozzá!

Címkék: creative hang openal cmake hrtf

A bejegyzés trackback címe:

https://sakura7.blog.hu/api/trackback/id/tr606688579

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása