lunes, 27 de octubre de 2008

3. DirectSound - Sonido 3D

Sebastian Franco
Andrés Segovia

El oyente y las coordenadas


El oyente nos representa a nosotros mismos en un mundo tridimensional. Al igual que un objeto buffer secundario (que puede representar el sonido que hace una motocicleta) puede ser colocado en unas coordenadas en el espacio 3D, el oyente también puede ser situado en una coordenada concreta, que inicialmente es la (0,0,0) y según todo esto, DirectSound calcula según la posición y orientación del oyente, por qué parlantes se debería escuchar la moto y a qué volumen.

Las coordenadas cartesianas (x,y,z) nos sirven para representar la posición, la velocidad y la orientación. Las unidades para la posición se expresan en metros y para la velocidad en metros por segundo. Si en la aplicación se utilizan medidas distintas, basta con establecer un factor de escala. Para el vector de orientación las unidades no son relevantes, ya que este vector solo representa una dirección y es lo mismo el vector (1, 0, 1) que (5, 0, 5) y lo mismo que (0.25, 0, 0.25).


Percepción del sonido en un espacio 3D


En el mundo real, la percepción del sonido en el espacio está influenciada por varios
factores:

* Intensidad del sonido: Un sonido que se mueve lejos del oyente,disminuye su volumen en una tasa fija. Este fenómeno es conocido como rolloff.

* Diferencia de intensidad interaural: Un sonido que viene desde la derecha del oyente es más fuerte en el oído derecho que en el izquierdo.

* Diferencia de tiempo interaural: Un sonido emitido por una fuente a la derecha del oyente llega al oído derecho ligeramente antes que al oído izquierdo. La duración de este intervalo es aproximadamente un milisegundo.

* Muffling: La forma y orientación de las orejas asegura que los sonidos que viene desde detrás del oyente son ligeramente tapados o cubiertos (muffled), es decir que se escuchan menos, con respecto a los sonidos que vienen de delante. De igual forma, un sonido que viene desde la derecha se escucha ligeramente encubierto en el oído izquierdo gracias a la masa de la cabeza del oyente que es la que se interpone.

* Efecto de los lóbulos de las orejas: Los pliegues de las orejas causan sutiles cambios en el pitch y temporización de los sonidos que llegan de diferentes direcciones. Las matemáticas que sustentan estos efectos son conocidas como funciones de transferencia cabeza-relacionadas (HRTF).

Distancias máximas y mínimas

Cuando un oyente se aproxima a la fuente de sonido, este se vuelve más fuerte. El volumen se dobla cuando la distancia es reducida a la mitad. Pasado un cierto punto, no es razonable que el sonido siga aumentando. Esta es la mínima distancia para la fuente de sonido.

La distancia mínima que se asigna a un sonido determina como de rápido el sonido decae con la distancia. Por ejemplo, para el motor de un auto la distancia mínima es de 50 metros y 2 centímetros para una mosca. Con estos parámetros, el motor del auto se escucha a la mitad a los 100 metros, pero la mosca se escucha a la mitad del volumen a 4 centímetros. La explicación anterior muestra como la mínima y la máxima distancia afectan al volumen del motor y la mosca conforme aumenta la distancia al oyente. Por defecto la distancia mínima para un buffer secundario es 1 unidad que por defecto es lo mismo que decir un metro. La distancia máxima es aquella en la que más allá el volumen del sonido no se decrementa. Establecer este parámetro es importante, ya que evita a DirectSound tener que calcular el volumen de sonidos muy lejanos. Se puede establecer un valor adecuado e incluir la bandera DSBCAPS_MUTE3DATMAXDISTANCE cuando se crea el buffer. Entonces los sonidos que se encuentren más allá de la distancia máxima directamente no se escuchan. También se puede conseguir que un sonido nunca deje de ser audible.


Modo de proceso

Los buffers de sonido tridimensional tienen 3 modos de procesamiento:

* Modo Normal(DS3DMODE_NORMAL): El buffer se coloca de forma relativa al espacio y no se desplaza a medida que lo hace el oyente. La mayoría de los sonidos 3D funcionan de esta forma. Esta es la configuración por defecto.

* Modo Relativo a la cabeza(DS3MODE_HEADRELATIVE): El buffer se coloca en una posición relativa a la del oyente. Ejemplos de este tipo de sonido podría ser los pasos del personaje, que siempre se sienten donde esta el personaje.

* Modo Desactivado(DS3DMODE_DISABLE): el procesamiento 3D del buffer se desactiva y cualquier sonido parece originarse desde el centro de la cabeza del oyente. Esta configuración se puede utilizar para ahorrar tiempo de la CPU al desactivar el proceso 3D de un buffer de sonido.

FUENTE: BARGEN, Bradley. 1998. A fondo DirectX. Madrid: Microsoft Press.
FUENTE: Microsoft DirectX. http://www.microsoft.com/windows/directx/

No hay comentarios: