Professional Documents
Culture Documents
CAPÍTULO 11
Trabajo con sonidos en 3-D
2
Contenido CAPÍTULO 11
Casi todos los mundos VRML son más sumergiendo experiencias si incluyen el
uso eficaz de sonido, sin embargo, el sonido puede arruinar una presentación
de otro modo eficaz de VRML. Sonidos son normalmente el componente más
grande del mundo. Si no se maneja adecuadamente, sonidos desperdiciar tanto
tiempo de descarga que el cliente pierde interés antes que el mundo se carga.
Para ser contundente, archivos de sonido son muy grandes. Ya los sonidos
largos-como la oración o la música son realmente grandes, y MovieTextures
puede pasar rápidamente de la escala. Más adelante en este capítulo, la
manera de cubrir el mantenimiento de los sonidos lo más pequeño posible.
Asimismo, discutir las posibilidades de streaming de sonido que se encuentran
actualmente en desarrollo para varios navegadores de VRML. Para las
aplicaciones de Internet, sólo debería utilizar MovieTextures muy corto hasta la
transmisión de vídeo se convierte en una característica común navegador.
Piense por un momento acerca de la música que forma la espina dorsal de una
película sonora. Este sonido establece el estado de ánimo para la acción en la
pantalla. Esta música ayudas notablemente la inmersión en el espectador, y
prácticamente no se producen películas modernas sin ella. Mundos VRML se
beneficien del mismo tratamiento. Esta sección discute las partes técnicas
necesarias para crear un sonido en un mundo VRML y muestra cómo utilizarlos
para crear el sonido más simple VRML: el sonido ambiente de fondo, que es un
sonido que juega a través de una gran parte de la escena y no tiene fuerte
asociación espacial.
• En caso de que se
5
Sonido {
exposedField SFVec3f dirección 0 0 1
exposedField SFFloat intensidad 1
exposedField SFVec3f ubicación 0 0 0
exposedField SFFloat maxBack 10
exposedField SFFloat maxFront 10
exposedField SFFloat minBack 1
exposedField SFFloat minFront 1
exposedField SFFloat prioridad 0
exposedField SFNode fuente NULL
campo SFBool spatialize TRUE
}
El sonido del nodo tiene dos mecanismos para el volumen relativo de un sonido
en un punto particular en la escena: variedad y la intensidad. La gama que
cubre un sonido viene determinado por los valores de los parámetros de serie
(maxFront, maxBack, minFront, y minBack). El alcance máximo definir los
parámetros de un elipsoide que marca el máximo de la gama de sonido. En un
principio, mantener la parte trasera y delantera de la misma varía de modo que
el sonido es una forma simple esfera. El rango de valores mínimos de definir el
espacio en el interior, que el sonido se reproduce a todo volumen. Observe que
el valor de las escalas de intensidad del volumen de un sonido que juega, pero,
a diferencia del mundo real, se sube la intensidad no aumente la gama de
sonido.
En la Figura 11.1, la más grande de color gris oscuro elipsoide ilustra el alcance
máximo del sonido y muestra cómo la maxFront y maxBack definir los
parámetros de su forma. En el interior de color gris claro elipsoide, definido por
minFront y minBack, el sonido se reproduce a plena intensidad.
6
AudioClip {
exposedField SFString descripción ""
exposedField SFBool bucle FALSE
exposedField SFFloat pitch 1.0
exposedField SFTime startTime 0
exposedField SFTime stopTime 0
exposedField MFString url []
eventOut SFTime duration_changed
eventOut SFBool isActive
}
El archivo de sonido
NOTA: los archivos de sonido digital se almacenan como una serie de números que
especifican la amplitud del sonido en los momentos sucesivos en el tiempo. La tasa de muestreo
de un sonido digital especifica cuántos números de amplitud en el archivo de un segundo de
tiempo. Por ejemplo, los CD de audio se graba en 44,1 kHz, lo que significa que hay 44.100
"muestra" la amplitud de los números (por canal) por cada segundo de tiempo.
Grupo {
los niños [
DEF terrainInline transformación {
los niños en línea {
url "islandTerrain.wrl"
}
}
DEF pondInline transformación {
los niños en línea {
url "pondInline.wrl"
}
}
DEF oceanInline transformación {
los niños en línea {
url "oceanInline.wrl"
}
}
Transformar de fondo (DEF
Antecedentes niños {
groundAngle 1,01
groundColor [0,1 0,1 0,09,
0,48 0,48 0,45]
Skyangle [0,05, 0,1, 1, 1,57]
skyColor [1 1 0,
1 1 0,5,
0,125 0,125 0,5,
0,3 0,3 0,55,
0,64 0,73 0,84]
)
9
SUGERENCIA: Si no está seguro de cuán grande es tu mundo, empezar con la creación de una
simple caja cúbicos forma y ver si se encierra el mundo y, a continuación, utilizar la mitad del
tamaño de la caja para los cuatro valores de gama.
10
NOTA: A diferencia de otros capítulos de este libro, la mayoría de los ejemplos en este capítulo se han
creado con una herramienta de autoría de VRML, específicamente de la Silicon Graphics CosmoWorlds.
Utilizando una herramienta como esta permite crear mundos complejos más rápidamente que usted puede
hacer a mano.
Fundamentos de sonido
Antes de entrar en detalles sobre el uso de VRML de sonido para crear experiencias de
inmersión para los usuarios, vamos a revisar brevemente cómo funciona el sonido en el
mundo real. La gente es sensible a cómo responder a los sonidos del espacio. Todos
sabemos que los ruidos fuertes cuando están más cerca, y somos capaces de juzgar la
distancia a los objetos sobre la base de cómo son los sonidos fuertes. También podemos
juzgar la dirección de un sonido viene de y utilizar esa información para localizar los
objetos. Tomamos ventaja de estos dos efectos en VRML. La gente también recoger las
señales de sonido ubicación de la cantidad de eco y resonancia que tiene un sonido. Estos
efectos no son una parte específica del VRML sonido, pero podemos modelo cuando se
forma una parte importante de la escena. Voy a mostrar varios ejemplos de esto más
adelante en este capítulo.
Las computadoras son ahora utilizados para modelar los aspectos más sutiles de la buena
percepción de que se utilizan para crear experiencias de inmersión sonora, pero estos no
son una parte estándar de VRML. En un sencillo modelo de sonido estéreo, un sonido
directamente enfrente de usted no se puede distinguir de un sonido directamente detrás de
usted. En el mundo natural, sin embargo, nuestros oídos filtro de las ondas sonoras en las
proximidades de nuestras cabezas antes de que lleguen a nuestros tímpanos. Minuto
diferencia en la forma de reflejar los sonidos a través de la forma de nuestros oídos y
nuestros tímpanos nos dan bastante sutiles señales para saber si el sonido es por delante o
por detrás de nosotros. La gente también sentido la diferencia de tiempo entre la llegada de
un sonido en el oído cerca de el sonido y el oído que es más lejos. Si bien esta diferencia es
muy pequeña, es una señal importante en nuestra percepción del sonido.
NOTA: Para información más detallada sobre la teoría de 3-D de sonido, sonido para ver en 3D y Realidad
Virtual Multimedia por Durand R. Begault publicado por AP Professional (Academic Press).
11
En un mundo ideal-lo que llamamos un anecoico espacio, donde no hay eco o resonancia-
sonido sigue algunas leyes muy simples. El volumen de sonido es inversamente
proporcional al cuadrado de la distancia entre el sonido y el oyente. El sonido es
transmitido como ondas que vibran y se mueven en el aire. La amplitud de estas ondas
determina el volumen del sonido. La percepción humana también entra en esta foto. Que
percibimos como un sonido fuerte cuando la mitad de la amplitud de onda es una décima
parte de su valor original. Esta caída de amplitud se corresponde con un descenso de un
decibelio (dB).
La situación es mucho más complicado en el mundo real, y sigue más allá del alcance
incluso de los superordenadores más rápidos con precisión el modelo a la reflexión de los
sonidos en situaciones del mundo real. El modelo más básico que tienen que comprender
cómo el sonido viaja a través y alrededor de obstáculos como paredes simples y cómo
manejar las diferencias en la transferencia de propiedades y la reflexión de las paredes.
VRML se ocupa de la floración, zumbido de confusión del mundo real sonido dejando a los
autores de VRML para emplear a unos pocos (quizá muy pocos), simple pero potente para
crear un paisaje sonoro para el usuario. Tales sonidos proporcionar una experiencia que
puede o no se parecen sonido del mundo real. Cómo emplear estas herramientas queda a
usted como el constructor del mundo VRML, como tampoco lo es la responsabilidad de un
director de cine para crear una banda sonora para obligar a la moviegoer. Esta tarea es un
poco más complejo porque, a diferencia de las películas, VRML es interactivo y
tridimensional. La mayoría del resto de este capítulo se habla de diferentes formas de
utilizar estas herramientas de sonido: el sonido del nodo AudioClip nodo y nodo
MovieTexture.
Ambiente local y colocar sonidos de fondo era muy simple: el valor por defecto
de 0, 0, 0 el sonido ubicado en el centro del mundo o el centro del estanque,
que fue justo donde y como queríamos. En muchos casos, usted puede poner
el sonido en relación con el mismo nodo de transformación como el ruido de
objetos, sin embargo, a veces hay que localizar el sonido cuidadosamente en
relación con su objeto asociado. En estos casos, se utiliza el campo del sonido
para compensar su posición a la derecha lugar en o cerca del objeto.
15
EXTERNPROTO debugSound [
field SFVec3f direction
field SFFloat intensity
field SFVec3f location
field SFFloat maxBack
field SFFloat maxFront
field SFFloat minBack
field SFFloat minFront
field SFFloat priority
field SFNode source
field SFBool spatialize
] "dsp.wrl"
Group {
children [
DEF background Transform {
children Background {
skyColor 1 1 1
}
translation 25.977 -1.7159 1.89899
}
DEF loudSpeakerDiagram Transform {
children [
Inline {
url "speakerInline.wrl"
}
Transform {
children DEF demoSound debugSound {
direction 0 0 1
location -3.30151 11.9677 -8.002
maxBack 80
maxFront 500
minBack 20
minFront 100
source DEF Sound1clip AudioClip {
url "forest.wav"
loop TRUE
startTime 1
}
16
muy difícil, por lo que planea pasar mucho tiempo trabajando en bucle creativo.
Además, efectos de sonido no tiene que consistir de sonidos procedentes de los objetos que
representan en su escenario VRML. Cualquier programa de edición de sonido razonable, le
permite hacer cambios drásticos a cualquier sonido grabado. Cambiar el tono, añadir eco, y
la aplicación de diversos filtros pueden convertir en un simple sonido un efecto dramático.
Su preparación de Sonidos
No utilizar directamente los sonidos que se han reunido, ya sean sus propias grabaciones o
que proceden de las bibliotecas. Usted debe convertir y editar para obtener lo más pronto
posible, clips de sonido que se logre el efecto deseado:
1. Elige un formato de sonido para el título, y convertir todos sus sonidos a ese formato.
2. Seleccione una velocidad de muestreo y convertir todos sus sonidos de este tipo.
3. En la mayoría de los casos, combinar sonidos estéreo en un solo canal.
4. Reducir el sonido en la mayoría de la longitud efectiva.
18
Muchas muestras de sonido disponibles comercialmente son más largas que las que
necesita. Si el sonido es loop, el sonido debe ser lo suficientemente largo que el bucle no es
obvia. La mayor variación en el sonido, más tiempo tiene que ser. Cada caso es una
elección personal. Estos son los pasos a seguir:
Las respuestas a estas preguntas que deben guiar en el establecimiento de la adecuada bucle
puntos. Más adelante en el capítulo hablo de algunos otros trucos para romper la monotonía
con bucles, sonidos sin agregar mucho a la duración de sus clips de sonido.
Formato de sonido que debo utilizar?
Archivos WAV
El más prominente es el de Windows WAV (onda) el formato. Todos los navegadores
sonido que son necesarias para apoyar el formato WAV sin comprimir archivos de sonido.
Si necesita la aceptación universal, utiliza el formato WAV, que apoya una variedad de
sistemas de compresión. Sin embargo, estos sistemas no están ampliamente apoyados. Para
comprimir el sonido, el formato MPEG es probablemente preferible.
MPEG consta de dos formatos de compresión (MPEG-1 y MPEG-2) creado por la Motion
Picture Experts Group para comprimir película de calidad o de calidad de vídeo de TV.
Dado que el sonido es parte del código fuente, estos formatos de sonido incluye un
esquema de compresión. Además, dado que es el MPEG VRML MovieTexture, el apoyo
que la mayoría de los navegadores. MPEG utiliza un esquema de compresión con pérdida,
que no reproducen exactamente la misma secuencia que se muestra inicialmente
comprimido. (Lossy compresión de sonido sistemas de comprimir el sonido en la medida
en que la información se pierde. Cuando descomprimido, el sonido no es idéntico a la
información antes de la compresión.) Además, MPEG le da cierto control sobre la cantidad
de compresión que desea aplicar. Usted puede obtener 3:1 o 4:1 de compresión sin
comprometer seriamente su sonidos. Si está dispuesto a perder un poco de fidelidad a
cambio de archivos de sonido significativamente menor, el MPEG es el formato para usted.
Si bien el soporte de sonido MPEG no es una característica necesaria del navegador, el
MPEG es el formato estándar para el nodo MovieTexture, por lo que pueden esperar que la
mayoría de los navegadores de apoyo para MPEG y sonido.
AIFF
AIFF (Formato de archivo de audio de intercambio) es el formato de archivo de sonido de
Macintosh, que también es a menudo el apoyo de las computadoras de Windows, sin
embargo, AIFF no es tan universal como WAV. AIFF es probablemente una mala elección,
a menos que su público objetivo es principalmente basada en el Mac. AIFC (o AIFF-C) es
una versión comprimida de AIFF. Hay algunos comúnmente aceptados libre determinación
de los regímenes de compresión AIFC. Este formato puede ser útil en casos especiales, pero
probablemente todavía MPEG es una mejor elección.
UA
Sonidos en el tiempo
El nodo de sonido lugares su sonido en el espacio, el nodo AudioClip lugares su sonido en
20
el tiempo. El AudioClip es uno de los VRML nodos en función del tiempo que Justin
discutido en el Capítulo 2, "El Modelo de Ejecución de VRML." Al entender el
funcionamiento de la sutil startTime, stopTime, bucle y campos de la AudioClip, puede
conseguir todo el control de un reproductor de CD con un temporizador. El nodo
MovieTexture también puede ser una fuente de sonido para un nodo, y todo lo dicho sobre
el nodo AudioClip calendario se aplica a la reproducción de un nodo MovieTexture.
Disparadores y Rutas
Para programar un sonido para jugar dos veces en dos veces con una pausa
entre ellos, iniciar la primera instancia del sonido y de iniciar un temporizador
con un cycleInterval que termina cuando el sonido debe comenzar a jugar por
segunda vez. Usted necesita un script para manejar esta situación debido a
que el cycleTime caso de los incendios TimeSensor comienza cuando el
TimeSensor, así como cuando los ciclos. Tener la secuencia de comandos de
ignorar la primera cycleTime evento, y la segunda una ruta a la AudioClip, de
modo que el sonido se reproduce por segunda vez. Para asegurar que el sonido
se reinicia, incluso cuando aún no ha terminado su primer juego, enviar un
evento a la cycleTime stopTime AudioClip. En caso contrario, el AudioClip
ignora la segunda startTime valor. Véase el ejemplo de submarinos en el CD-
ROM para mayor aclaración.
Creación de secuencias de sonidos
protocolo MIDI se ha ampliado para incluir a General MIDI, lo que sugiere una
cartografía de eventos de nota MIDI tipos básicos de instrumentos (por
ejemplo, Grand Piano). General MIDI ha hecho mucho más probable que una
secuencia de sonidos más o menos la misma como lo hizo en el estudio donde
se ha creado.
NOTA: Los archivos MIDI describir la música como una secuencia de eventos que representa a pulsar y
soltar las teclas de un teclado sintetizador. Archivos MIDI de tipo 1 (con mucho, el tipo más común) organizar
estas secuencias nota en las pistas, cada una de las cuales puede utilizar un instrumento de sonido diferente,
llamado un parche. Otros eventos MIDI especificar parche que debe utilizar una pista, la pista de cómo se
controla el volumen, la posición panorámica de los sonidos de una pista, y muchos otros parámetros que
pueden ser cambiados en la reproducción del archivo MIDI.
Ventajas de Tamaño
En VRML, el problema viene cuando con MIDI que desea utilizar como un
spatialized sonido. Un flujo tiene comandos MIDI incorporado para control de
volumen y de izquierda / derecha el control de pan. Estos comandos se
encuentran en conflicto directo con los métodos de espacialización que el
navegador de VRML quiere aplicar al sonido. Además, la mayoría de las
computadoras sólo puede desempeñar un arroyo MIDI a la vez. La mayoría de
las implementaciones actuales del navegador se limitan a un único flujo de
MIDI, y es poco probable que la corriente es atenuada o spatialized
correctamente.
26
Sonido MIDI pueden ser generados de tres formas distintas por una
computadora, con muy diferentes resultados.
La mayoría de las veces, MIDI sonido es generado por una tarjeta de sonido
con un sintetizador MIDI en. Esas tarjetas de sonido tienen un costo muy bajo
en la memoria o uso de la CPU, pero el rendimiento real de la música MIDI varía
con el tipo de tarjeta de sonido que el usuario tiene. Además, la calidad de
sonido que generan las tarjetas suele ser bajo. Con el General MIDI y una
tarjeta de sonido, que se limitan a utilizar los 128 General MIDI presets que
proporciona la tarjeta, no se puede descargar de cualquier otro sonido.
Futuro de MIDI
MovieTexture Sonido
Hasta el momento, tengo la mayoría a que se refiere el nodo AudioClip
como la fuente de sonido para un nodo. Puede utilizar un nodo
MovieTexture en cualquier lugar de usar un nodo AudioClip (a la inversa
no es cierto). Si uno se VRML herencia múltiple objeto estructura,
entonces MovieTexture se heredan de los genéricos y el nodo de textura
TimeDependent nodo.
Su configuración de sonido
Group {
children [
DEF terrainInline Transform {
children Inline {
url "islandTerrain.wrl"
}
}
DEF streamGroup Transform {
children [
DEF streamInline Transform {
children Inline {
url "streamInline.wrl"
}
translation 0 0 0.86
}
DEF upperStreamSoundX Transform {
children DEF upperStreamSound Sound {
source DEF streamClip AudioClip {
url "stream.wav"
}
location 0 0 0
direction -0.7 0 0.7
minFront 40
maxFront 60
minBack 40
maxBack 60
}
translation 54.3724 150 63.4805
rotation 0 -1 0 0.575525
scale 1 1 1.8
}
DEF lowerStreamSoundX Transform {
children DEF lowerStreamSound Sound {
source DEF streamClip AudioClip {
url "stream.wav"
}
location -1.15131 -0.000106519 -0.32568
direction -0.270864 3.05128e-07 0.962618
minFront 40
maxFront 60
minBack 40
maxBack 60
}
translation -1.9744 65.4665 231.756
rotation 0.95971 -0.27975 -0.0263893 0.565217
scale 1 1 3
}
30
}
DEF background Transform {
children Background {
groundAngle 1.01
groundColor [ 0.1 0.1 0.09,
0.48 0.48 0.45 ]
skyAngle [ 0.05, 0.1, 1, 1.57 ]
skyColor [ 1 1 0,
1 1 0.5,
0.125 0.125 0.5,
0.3 0.3 0.55,
0.64 0.73 0.84 ]
}
translation 139.537 161.86 -16.62
rotation 0 0 1 0
}
DEF Light1 DirectionalLight {
direction -0.30 -0.945 0.124
}
DEF IslandSound Sound {
source DEF cricketClip AudioClip {
url "crickets.wav"
loop TRUE
}
location 0 10 0
direction 0 0 1
minFront 400
maxFront 550
31
En este ejemplo, mantener el nivel de sonido Creek casi constante como usted
se mueve a lo largo de la quebrada por la organización de los sonidos para que
los máximos se solapan y casi tocar el mínimo (plena intensidad) de la otra
gama de sonido.
Otra propiedad del sonido que requiere apoyo adicional en VRML es la oclusión.
Dado que los navegadores de VRML no modelo caminos sonido, el navegador
no puede detectar si el mundo tiene una buena prueba de la pared entre el
punto de vista y la fuente de sonido. Para modelar este caso, usted necesita
32
WorldInfo {
info ["Created in CosmoWorlds",
"Packaged by CosmoPackage"]
}
DEF navInfo NavigationInfo {
avatarSize [ 5, 10, 5 ]
headlight FALSE
type "FLY"
}
Background {
skyColor 0.38 0.63 0.75
}
DEF entryView Viewpoint {
position -320 56 2003
orientation -0.974 0.218 -0.0575 0.13
fieldOfView 0.785
description "entry"
}
DEF trainGroup Transform {
children [
DEF echoTimer TimeSensor {
cycleInterval 0.5
loop FALSE
startTime 0
}
DEF fadeTimer TimeSensor {
cycleInterval 0.5
loop FALSE
startTime 0
}
Group {
children [
DEF trainLoop Group {
33
}
DEF trainGroupTransInterp PositionInterpolator {
key [ 0, 0.0667, 0.125, 0.192,
0.25, 0.317, 0.375, 0.442,
0.5, 0.567, 0.625, 0.692,
0.75, 0.875, 0.942, 1 ]
keyValue [ 37.8 9.16e-05 52.8,
171 -1.67 111,
344 -4.55 145,
509 -3.73 119,
618 14.6 75.5,
695 36.6 -18.8,
743 63.1 -165,
725 80.2 -319,
657 85.7 -443,
530 90 -538,
371 93.1 -557,
211 87.3 -538,
92.3 76.6 -478,
-47.6 38.2 -206,
-39.5 18.3 -66.5,
37.8 9.16e-05 52.8 ]
}
DEF trainGroupRotInterp OrientationInterpolator {
key [ 0, 0.0667, 0.125, 0.192,
0.25, 0.317, 0.375, 0.442,
0.5, 0.567, 0.625, 0.692,
0.75, 0.875, 0.942, 1 ]
keyValue [ -0.178 0.983 0.0414 0.465,
0.103 0.964 0.246 0.842,
0.148 0.97 0.195 1.05,
0.146 0.968 0.206 1.3,
-0.00263 0.98 0.2 1.75,
-0.089 0.983 0.161 2.1,
-0.0246 0.989 0.145 2.49,
-0.0172 0.993 0.115 2.89,
-0.0365 0.993 0.116 3.26,
-0.0536 0.985 0.166 3.86,
-0.045 0.978 0.202 4.13,
-0.0514 0.986 0.159 4.39,
0.0525 -0.992 -0.119 1.28,
0.0439 -0.996 -0.0776 0.707,
0.365 -0.931 -0.0275 0.256,
-0.178 0.983 0.0414 0.465 ]
}
]
}
DEF touchTrain TouchSensor {
}
DEF trainSoundFXScript Script {
34
"
}
DEF trainGeomInline Transform {
children Inline {
url "trainGeomInline.wrl"
}
intensity 1
location -614 -141 1.44e+03
direction 0.0456 -0.612 0.79
minFront 40
maxFront 400
minBack 40
maxBack 400
}
DEF trainEcho Sound {
source DEF trainEchoClip AudioClip {
url "trainTunnel.wav"
loop TRUE
startTime
stopTime 1
}
intensity 1
location 614 -142 1.44e+03
direction 0.0456 -0.612 0.79
minFront 40
maxFront 400
minBack 40
maxBack 400
}
DEF cabView Viewpoint {
position -629 -163 1.4e+03
orientation -0.0229 0.992 0.12 3.72
fieldOfView 0.785
description "cabcam"
}
]
center -620 -169 1420
}
DEF terrainGeomInline Transform {
children Inline {
url "terrainGeom.wrl"
}
}
DEF tunnelGroup Transform {
children DEF tunnelGeomInline Transform {
children Inline {
url "tunnelGeomInline.wrl"
}
}
DEF Light1 DirectionalLight {
intensity 0.796
ambientIntensity 0.41
color 0.974 1 0.947
direction -0.797 -0.13 -0.59
}
DEF VP2 Viewpoint {
position -749 -119 1.33e+03
orientation 0.0252 -0.998 -0.0534 0.655
fieldOfView 0.785
description "tunnelView"
}
ROUTE trainSoundFXScript.echoStart TO echoTimer.set_startTime
ROUTE trainSoundFXScript.fadeStart TO fadeTimer.set_startTime
ROUTE touchTrain.touchTime TO trainTimer.set_startTime
ROUTE cabView.bindTime TO trainTimer.set_startTime
ROUTE trainTimer.fraction_changed TO trainGroupTransInterp.set_fraction
ROUTE trainTimer.fraction_changed TO trainGroupRotInterp.set_fraction
ROUTE echoTimer.fraction_changed TO trainSoundFXScript.echoFract
ROUTE fadeTimer.fraction_changed TO trainSoundFXScript.fadeFract
ROUTE trainTimer.startTime_changed TO trainSoundFXScript.startTrain
ROUTE trainTimer.cycleTime TO trainSoundFXScript.cycleTrain
ROUTE trainSoundFXScript.startTrainOut TO trainclip.set_startTime
ROUTE trainSoundFXScript.stopTrainOut TO trainclip.set_stopTime
ROUTE trainSoundFXScript.mainintensity TO trainSound.set_intensity
ROUTE trainSoundFXScript.startEffects TO trainEchoClip.set_startTime
ROUTE trainSoundFXScript.stopEffects TO trainEchoClip.set_stopTime
ROUTE trainSoundFXScript.echointensity TO trainEcho.set_intensity
ROUTE trainGroupTransInterp.value_changed TO trainGroup.set_translation
ROUTE trainGroupRotInterp.value_changed TO trainGroup.set_rotation
En el ejemplo anterior Creek, que muestran cómo usar múltiples sonidos para crear la
geometría compleja de sonido. Puede usar múltiples sonidos para crear complejos efectos
de sonido y señales para el usuario acerca de dónde son y qué entorno les rodea. En esta
sección discutir algunas de las técnicas que han funcionado bien en algunos mundos que
hemos desarrollado en Silicon Graphics.
Eco y resonancia
37
Algún día, en un mundo con superordenadores en cada vuelta, efectos de sonido como eco
y resonancia-que dependen del medio ambiente que rodea el sonido puede ser calculado
automáticamente, y los autores de un mundo VRML 99,0 obtendrá el efecto deseado,
simplemente especificando el sonido propiedades de reflexión en torno a todos los
materiales. Por ahora, en el mundo real, que los autores de VRML debe agregar estos
efectos directamente en nuestros mundos. Hacemos esto mediante la creación de una
segunda versión de la original de sonido que incluye o bien añade el eco o la resonancia, y
hace que la segunda de sonido cuando el objeto es hacer el sonido en la zona de resonancia
o echoic. Esta solución es imperfecta, porque significa que podemos añadir eco y
resonancia a los sonidos que sólo se puede conocer o moverse a través de resonancia echoic
o espacios.
La mejor manera de aplicar uno de estos efectos sobre el medio ambiente es tener en su
sonido original y pasarla a través de un procesador de efectos que tiene efectos sólo una
salida. Grabar un clip de la parte del sonido que es exactamente la misma duración que el
sonido original. Añadir este efecto de sonido al sonido original, cuando el sonido que
emiten objetos en el entorno adecuado. Por la animación de la intensidad de los efectos de
sonido, puede incluso desaparecer en forma gradual y fuera. Cuando se inicia el efecto de
sonido, debe tener el mismo startTime que el original. Si ambos son sus clips exactamente
la misma longitud, los dos sonidos se sincronización exacta. (Para más información sobre la
sincronización de sonido, consulte la sección "Sincronización de los sonidos y Eventos",
anteriormente en este capítulo.)
Si su procesador de efectos no tiene efectos sólo una salida, puede grabar una nueva versión
del sonido con el efecto añadido a la misma y cambiar a este sonido en el momento
oportuno. Este método tiene el peligro de clics o el sonido aparece como interruptores, y
usted no tiene el lujo de ser capaces de desaparecer el efecto de entrada y salida.
Tomemos el ejemplo del sonido de clic en un tren a lo largo de una pista, y el efecto en el
sonido de clic cuando el tren pasa por un túnel. En el fragmento de código VRML en el
Listado 11.11, cuando el tren comienza un bucle alrededor de la pista, la animación
horarios cycleTime un temporizador que se desvanece el tren normal de sonido en el sonido
del tren en el túnel como el tren entra en el túnel, y un segundo temporizador a desaparecer
el túnel de sonido de eco y reanudar el tren normal de sonido como el tren sale del túnel.
Para otro ejemplo de una cuidadosa sincronización entre la animación y las múltiples
sonidos programados, véase el ejemplo del submarino en el CD-ROM.
Efectos a distancia
En el mundo natural, el sonido no atenuar uniformemente a lo largo de la distancia, por lo
que el timbre de un sonido como los cambios que se alejan de ella. Frecuencias más altas
atenuar más rápidamente, especialmente en un entorno con muchas superficies, como un
escenario al aire libre con árboles y hierbas. Un ejemplo conocido de esta idea es el sonido
de una cascada. Al acercarse a una distancia de, la cascada tiene un bajo ruido de los
cuelgues de la línea principal de agua abajo la cuesta, pero como que se acerque, se oye el
silbido de la pulverización que rodea la principal caída. Siseo que no lleva más lejos. En
VRML, este modelo puede tener dos sonidos con diferentes rangos. Tome una cascada de
38
En el ejemplo anterior Creek, que muestran cómo usar múltiples sonidos para crear la
geometría compleja de sonido. Puede usar múltiples sonidos para crear complejos efectos
de sonido y señales para el usuario acerca de dónde son y qué entorno les rodea. En esta
sección discutir algunas de las técnicas que han funcionado bien en algunos mundos que
hemos desarrollado en Silicon Graphics.
Eco y resonancia
Algún día, en un mundo con superordenadores en cada vuelta, efectos de sonido como eco
y resonancia-que dependen del medio ambiente que rodea el sonido puede ser calculado
automáticamente, y los autores de un mundo VRML 99,0 obtendrá el efecto deseado,
simplemente especificando el sonido propiedades de reflexión en torno a todos los
materiales. Por ahora, en el mundo real, que los autores de VRML debe agregar estos
efectos directamente en nuestros mundos. Hacemos esto mediante la creación de una
segunda versión de la original de sonido que incluye o bien añade el eco o la resonancia, y
hace que la segunda de sonido cuando el objeto es hacer el sonido en la zona de resonancia
o echoic. Esta solución es imperfecta, porque significa que podemos añadir eco y
resonancia a los sonidos que sólo se puede conocer o moverse a través de resonancia echoic
o espacios.
La mejor manera de aplicar uno de estos efectos sobre el medio ambiente es tener en su
sonido original y pasarla a través de un procesador de efectos que tiene efectos sólo una
salida. Grabar un clip de la parte del sonido que es exactamente la misma duración que el
sonido original. Añadir este efecto de sonido al sonido original, cuando el sonido que
emiten objetos en el entorno adecuado. Por la animación de la intensidad de los efectos de
sonido, puede incluso desaparecer en forma gradual y fuera. Cuando se inicia el efecto de
sonido, debe tener el mismo startTime que el original. Si ambos son sus clips exactamente
la misma longitud, los dos sonidos se sincronización exacta. (Para más información sobre la
sincronización de sonido, consulte la sección "Sincronización de los sonidos y Eventos",
anteriormente en este capítulo.)
Si su procesador de efectos no tiene efectos sólo una salida, puede grabar una nueva versión
del sonido con el efecto añadido a la misma y cambiar a este sonido en el momento
oportuno. Este método tiene el peligro de clics o el sonido aparece como interruptores, y
usted no tiene el lujo de ser capaces de desaparecer el efecto de entrada y salida.
Tomemos el ejemplo del sonido de clic en un tren a lo largo de una pista, y el efecto en el
sonido de clic cuando el tren pasa por un túnel. En el fragmento de código VRML en el
39
Para otro ejemplo de una cuidadosa sincronización entre la animación y las múltiples
sonidos programados, véase el ejemplo del submarino en el CD-ROM.
Efectos a distancia
En el mundo natural, el sonido no atenuar uniformemente a lo largo de la distancia, por lo
que el timbre de un sonido como los cambios que se alejan de ella. Frecuencias más altas
atenuar más rápidamente, especialmente en un entorno con muchas superficies, como un
escenario al aire libre con árboles y hierbas. Un ejemplo conocido de esta idea es el sonido
de una cascada. Al acercarse a una distancia de, la cascada tiene un bajo ruido de los
cuelgues de la línea principal de agua abajo la cuesta, pero como que se acerque, se oye el
silbido de la pulverización que rodea la principal caída. Siseo que no lleva más lejos. En
VRML, este modelo puede tener dos sonidos con diferentes rangos. Tome una cascada de
sonido completo y utilizar un programa editor de sonido o efectos de sonido a la caja de
filtro en un componente de baja frecuencia y un alto componente de frecuencia. Ponga
ambos sonidos en el mismo lugar y definir el rango de valores de la componente de alta
frecuencia mucho menor. Listado de 11-12 muestra una versión ligeramente modificada de
nuestra isla con una cascada en medio de la corriente.
}
]
center 27.605 85.052 183.717
}
DEF lowerStream Transform {
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.152091
diffuseColor 0.309 0.331 0.415
specularColor 0.106 0.106 0.106
shininess 0.2
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [ 35.1548 23.8628 215.602,
17.6137 23.8628 219.136,
19.496 12.9992 335.064,
43.0546 13.2699 334.429,
43
11,12 Waterfal
En la Figura 11-7 a continuación, puede ver la gama más amplia de la cascada
bajo retumbar el sonido y la más corta de la gama superior de la cascada siseo
del aerosol.
Usted obtiene casi el mismo efecto si se utilizan los nodos de sonido separada,
DEF y USE, pero la misma fuente-el mismo nodo AudioClip. Compartir el clip
también debería velar por que el archivo de sonido es cargado una sola vez,
pero los dos sonidos siguen desempeñando la misma fuente de sonido en el
mismo tiempo, sin embargo, ahora puede tener diferentes tipos de dirección y
valores de intensidad de sonido para los distintos lugares. Compartir el
AudioClip garantiza que los sonidos desempeñado por los distintos nodos de
sonido serán idénticos y sincronizados.
La creación de dos nodos de sonido, cada uno con su propio nodo AudioClip
que utilice la misma URL, le permite reproducir el mismo sonido desde
diferentes lugares en diferentes momentos. La mayoría de los navegadores
deben compartir el archivo de audio, sino que depende de la aplicación del
navegador.
Prioridad de sonido
A veces puede que desee limitar el número de sonidos de juego por debajo de
lo que el navegador puede manejar. Si se activa un sonido (hacer esto por su
stopTime ahora), el navegador puede ignorar un sonido en lugar de calcular los
ciclos de los residuos que es demasiado lejos para oír o no lo suficientemente
alto para ser significativo.
Cuando un título es casi completa, que paso mucho tiempo buscando en las
partes del mundo en el que otras partes se puede apagar porque no están
haciendo contribuciones significativas. Esta práctica se aplica a los sonidos, las
animaciones, y la geometría. LD VisibilitySensors nodos y son útiles para el
sacrificio de la geometría y las animaciones, pero son de riesgo para el sonido.
LD nodos y ProximitySensors puede apagar un sonido que está fuera de
alcance, pero su uso en una que es audible causas probablemente un clic.
Además, si su LD especificado el mismo sonido en dos (cerca) los niveles,
podría haber un pop en el sonido del límite de detección cuando se cambia
entre nodo esos niveles. Cada mundo es único (de ahí el plan de pasar algún
tiempo en los ajustes de rendimiento), pero he tenido éxito usando un sensor
de proximidad para desactivar una sección entera de un mundo en que el
usuario no está cerca de él apagando sus animaciones y sonidos. Luego use un
nodo LDD para simplificar la geometría. Mantenimiento de los dos me permite
ajustar las distancias de la geometría sin preocuparse de cómo se comportan
los sonidos.
Depuración de sonido es difícil porque hay tantos factores que pueden llevar
un sonido de jugar cuando y donde le esperan, ninguno de los cuales es
fácilmente visible. Aquí está una breve lista de algunas técnicas para la
búsqueda de sus sonidos desaparecidos.
Si el sonido no se reproduce,
He visto a cada uno de estos puntos causa un sonido para jugar y no han
aprendido a través de la experiencia como prueba para algunos de los casos
más oscuros, y la revisión de algunas de estas en las próximas secciones.
Comprueba tu alcance
Comprueba tu disparadores
VRML 2.0 se ha diseñado para que sea extensible, y los prototipos son el
mecanismo para las extensiones. En muchas aplicaciones, se puede aplicar
directamente en VRML PROTOS y utilizarlos como nodos. La especificación de
VRML permite la ejecución del navegador nativo para crear implementaciones
de prototipos que son más eficientes que los creados en VRML. Además, puede
acceder a aplicaciones nativas plataforma de servicios del sistema de acogida.
Prototipo de las ampliaciones de las capacidades de sonido de VRML mayoría
requieren este tipo de sistema de apoyo. Navegador o los autores que los
diseñadores crear aplicaciones nativas para determinados navegadores
50
Streaming de audio
Secuencia de sonido