Implementing Environmental Audio Occlusion and Obstruction in Fmod
Table of Contents
Introdução à Oclusão e Obstrução de Áudio Ambiental
O áudio do jogo é um componente crítico da imersão, e a propagação sonora realista pode fazer ou quebrar o sentido de presença de um jogador. Oclusão e obstrução de áudio ambiental simulam como o som se comporta quando encontra obstáculos, adicionando profundidade e consciência espacial à jogabilidade. Na FMOD, a implementação destes efeitos requer uma combinação de raiação de nível de motor e características de áudio espacial integradas da FMOD. Este guia expandido caminha através da teoria, configuração e implementação prática de oclusão e obstrução usando o FMOD, fornecendo passos acionáveis para fluxos de trabalho de Unity e Unreal Engine.
A execução adequada, oclusão e obstrução permitem aos jogadores localizar inimigos através das paredes, medir o tamanho de um espaço e sentir-se conectado ao mundo do jogo. Sem eles, o áudio se sente plano e desconectado. No final deste artigo, você terá um pipeline pronto para a produção para adicionar filtragem de áudio ambiental ao seu jogo alimentado pelo FMOD.
Compreender a Oclusão vs. Obstrução
Antes de mergulhar na implementação, é essencial distinguir entre oclusão e obstrução, pois afetam o som de forma diferente e requerem manipulação separada em código e FMOD Studio.
Oclusão
A oclusão ocorre quando um objeto sólido bloqueia completamente a linha de visão direta entre uma fonte sonora e o ouvinte. O som deve difract em torno do objeto ou viajar através dele, resultando em redução significativa do volume e um efeito de filtragem passa- baixa. Por exemplo, um tiro disparado em uma sala de concreto adjacente soará abafado e distante. No FMOD, a oclusão é tipicamente modelada por atenuação de volume e aplicação de um filtro passa- baixa para remover altas frequências.
Obstrução
A obstrução descreve o bloqueio parcial da localização do som. A localização directa não é totalmente cortada, mas o som deve passar por um material semitransparente ou em torno de uma borda. Isto provoca uma redução moderada do volume e atenuação da frequência. Um jogador que fale através de uma porta de madeira fina é um exemplo clássico de obstrução. A voz permanece inteligível, mas parece ligeiramente amortecida. Na prática, a obstrução utiliza frequentemente um filtro de passagem baixa mais suave e uma redução de volume menos extrema do que a oclusão.
Ambos os efeitos dependem da geometria e propriedades materiais do ambiente. Um princípio fundamental é que a oclusão e obstrução são valores contínuos em vez de estados binários. A quantidade de bloqueio deve escalar suavemente com base no número, espessura e material de obstáculos.
Configurar o FMOD para o Áudio Espacial
O FMOD fornece um robusto pipeline de áudio 3D que pode ser estendido com lógica de oclusão/obstrução personalizada. O primeiro passo é configurar corretamente seu projeto e estrutura de eventos do FMOD.
Criando um Evento 3D no Estúdio FMOD
Abra o FMOD Studio e crie um novo evento. Sob a 3D tab, garantir que o evento está definido para 3D em vez de 2D. Isso permite a espacialização, atenuação da distância e efeitos Doppler. Dentro do evento, adicione dois parâmetros: Oclusão e Obstrução. Estes serão conduzidos pelo código do jogo em tempo de execução. Defina os seus intervalos de 0, 0 (sem bloqueio) a 1, 0 (bloqueio total). Na linha do tempo do evento, mapeie estes parâmetros para a automação de filtro de volume e de passa baixa.
Para oclusão, você pode definir o volume para cair para - 40 dB e a frequência de passagem baixa para 400 Hz. Para obstrução, uma queda mais suave para - 15 dB e passa baixa para 2000 Hz funciona bem.
Integrando o FMOD com o seu motor de jogo
Após atualizar o projeto do FMOD Studio, as construções bancárias devem ser regeneradas. Em Unity, importe o pacote de Integração de Unidade do FMOD. No Unreal, habilite o plugin do FMOD Studio. Ambos os motores fornecem APIs C# ou C++ para controlar o FMOD em tempo de execução. Certifique-se de que seu ouvinte e todos os objetos emissores de som usam as chamadas diretas para do FMOD para criar e gerenciar eventos. Os desenvolvedores de Unity podem usar ; Unreal developers use ] ou chamadas diretas para .
Implementação de Raycasting para detecção de obstáculos
Raycasting é o método mais comum e eficiente para detectar obstáculos entre a fonte sonora e o ouvinte. A abordagem básica lança um raio da posição do ouvinte para a posição da fonte sonora. Se o raio atingir um colisor, existem obstáculos. Os valores de oclusão/obstrução são derivados do número de hits, distâncias de hits e propriedades do material.
Implementação Básica de Raios Únicos
Na Unity, um simples ou pode detectar se a linha de visão está bloqueada. O seguinte trecho C# demonstra como definir o parâmetro de oclusão em uma instância de evento FMOD com base em um único raio de batida:
Embora isso funcione, um único raio não é confiável – pode falhar as bordas ou dar um resultado binário. Para um comportamento realista, você precisa de vários raios ou uma abordagem volumétrica.
Múltiplos Raycasts para Oclusão Mais Suave
Em vez de um raio, lance vários raios de pontos em torno da fonte sonora (por exemplo, uma esfera pequena). Cada raio contribui para um valor de oclusão médio. Por exemplo, lance 8 raios em um padrão hemisférica em torno da fonte sonora. Conte quantos raios são bloqueados e peso- os pela distância da fonte. Isto produz um valor de oclusão fracionária entre 0 e 1.
Abaixo está uma versão ampliada da lógica:
Este método suaviza a transição à medida que a fonte sonora se move atrás dos objectos. Você poderá refinar ainda mais, não contando os raios que atingiram objectos muito finos ou usando camadas de raycast para ignorar a própria fonte e o colisor do ouvinte.
Propriedades do material e filtragem de frequência
Diferentes materiais absorvem ou refletem o som de forma diferente. Uma parede de parede de gesso amortece menos do que um pilar de concreto sólido. Para dar conta do material, atribua materiais fÃsicos aos seus colididores com propriedades de oclusão. Na Unity, você pode usar um script personalizado que leia ou e mapeie-o para um valor. Por exemplo, um ] pode ter um Absorção Sonora propriedade flutuante. Quando raycasting, recuperar o material do colisor de batida e usar o seu valor de absorção para escalar o parâmetro de oclusão. Para obstrução, você também pode modular a curva de corte de baixa passagem de frequência.
FMOD pode ser chamado várias vezes por quadro para atualizar ambos os parâmetros:
Esta abordagem permite ambientes dinâmicos onde os materiais mudam (por exemplo, uma quebra de parede).
Aplicando as características integradas do FMOD
O FMOD fornece vários mecanismos integrados para aplicar oclusão e obstrução além dos parâmetros personalizados. Usar corretamente os métodos é crucial.
e Mistura espacial
Cada evento 3D deve ter seus atributos 3D atualizados cada frame. Chame com as posições do ouvinte e fonte. Isto permite a espacialização nativa do FMOD, incluindo atenuação de distância e panning. A oclusão e obstrução são aplicadas em cima disso. Certifique-se de que a curva de atenuação do seu evento é definida como algo sensível no FMOD Studio — comece com uma curva padrão “Logarítmica” e ajuste com base na escala de jogo.
Usando o Reverb Ambiental da FMOD
O FMOD inclui um efeito de reverberação ambiental que pode ser automatizado ao lado da oclusão. Quando um som é ocluÃdo, você pode querer que o reverberamento se torne mais proeminente para simular o som que vem através de uma parede. No FMOD Studio, adicione um efeito de reverberação ao grupo de mistura do evento. Crie um terceiro parâmetro chamado ReverbMix. O lado do script, quando a oclusão é alta, aumenta a mistura de reverb. Isto cria uma ilusão auditiva convincente de que o som atravessa uma barreira.
Por exemplo, uma explosão distante atrás de um edifÃcio terá um forte tubulação de baixo nÃvel com muitos reverb, enquanto as explosões diretas de linha de visão são nÃtidas e secas.
Curvas de Parâmetro e Automação
De volta ao FMOD Studio, os parâmetros que você dirige do código devem ser mapeados para propriedades de áudio reais. Faixa (por exemplo, a linha do tempo do clipe de áudio). Clique no envelope de volume e escolha Adicionar Automação â Parâmetro â Oclusão. Agora, o volume irá seguir o valor de oclusão. Faça o mesmo para um filtro passa-baixo (efeito adicionado à cadeia de sinal da pista). Defina o ponto de corte do filtro para mapear de 22000 Hz (sem oclusão) para, digamos, 400 Hz (oclusão total). Para obstrução, use uma curva menos agressiva, talvez apenas descendo para 2000 Hz e reduzindo o volume em -10 dB no máximo.
Estas curvas podem ser editadas clicando com o botão direito da linha de automação e adicionando pontos.
Técnicas Avançadas
Para projetos maiores, a raycasting básica pode não ser suficiente. Considere estes métodos avançados para melhorar a precisão e desempenho.
Oclusão volumétrica com Sistemas de Portal
Em jogos com geometria complexa, como transições internas/exteriores, considere implementar um portal ou sistema baseado em células. Precompute quais salas estão conectadas e trate portais acústicos. Quando uma fonte sonora está atrás de um portal, o fator de oclusão é determinado pelo número de portais entre fonte e ouvinte. Isto evita raycasting por quadro e funciona bem para geometria estática. O FMOD ainda se aplica, mas o valor de oclusão é derivado de um gráfico de sala.
Zonas de reverberação e formas de áudio
Outra abordagem é definir zonas de gatilho de áudio com diferentes configurações de reverb. À medida que o ouvinte se move através de zonas, o reverb da fonte sonora muda. Combinado com a oclusão de raycast, isso produz transições naturais. Por exemplo, uma fonte dentro de uma catedral terá longa cauda de reverb, enquanto uma fonte externa terá um reverb curto. Use o FMOD Reverb Efeito sobre um ônibus e controle sua mistura através de um parâmetro global definido pela zona do jogador.
Considerações sobre o desempenho
Raycasting cada quadro para cada fonte de som pode ser caro. Otimizar por:
- Limitação dos raios de onda aos sons a uma distância máxima (por exemplo, 50 metros).
- Usando um temporizador de arrefecimento (por exemplo, recalcular a cada 0,1 segundos).
- Pedidos de raycast de rebatimento via .
- Apenas aplicando oclusão a sons importantes (por exemplo, inimigos, não aves ambientais).
Também certifique-se de que seus parâmetros do FMOD não sejam atualizados em cada quadro se o valor de oclusão não tiver mudado muito â use uma comparação de limiar.
Dicas práticas e melhores práticas
- Usar vários raios em torno da fonte sonora para evitar bordas finas causando resultados binários. Um array de 5-8 raios fornece um bom equilíbrio.
- Ajuste as curvas de atenuação para combinar com materiais ambientais. Por exemplo, uma parede de madeira deve amortecer o som mais do que uma cortina. Crie uma tabela de pesquisa com relações de material para absorção.
- Combinar oclusão com efeitos de reverb Os sons ocluídos têm frequentemente mais reverb; os sons diretos têm menos.
- Teste em vários ambientes para calibrar parâmetros para diferentes materiais e geometrias. Use um nível de teste com cubos simples e diferentes materiais físicos para verificar o comportamento.
- Usar a atualização ao vivo do FMOD para monitorar os valores dos parâmetros em tempo real. Na Unity, conecte-se através da atualização ao vivo do estúdio FMOD. Isto permite que você veja os valores de oclusão ajustarem-se enquanto move o ouvinte.
- Não se esqueça do próprio ouvinte. Se um ouvinte estiver debaixo d'água, isso afeta todo o som. Implemente um modificador global de oclusão que se combina com a oclusão por fonte.
- Considere uma interpolação suave para atualização do parâmetro de oclusão. Em vez de definir o parâmetro diretamente cada frame, lerp em direção ao valor alvo para evitar mudanças abruptas.
Testes e Ajustes em Jogo
Uma vez implementado, testes é crucial. Caminhe o ouvinte através de vários ambientes e ouvir para transições não naturais.
- A oclusão caiu para zero instantaneamente quando a fonte está atrás de um pilar.
- Muito filtro passa-baixo fazendo sons inaudÃveis.
- Reverb não corresponde à acústica esperada.
Usar o integrado do FMOD Visualizador de áudio 3D no Studio para ver as posições de ouvinte e fonte. Alternativamente, você pode desenhar raios de depuração no motor de jogo para visualizar raycasts. No Unity, use para mostrar os raios bloqueados vs. claros. Grave os valores dos parâmetros usando as ferramentas de perfil do FMOD. Ajustar as curvas de automação até que a oclusão/obstrução se sinta natural sem se tornar um incômodo de jogabilidade (por exemplo, os jogadores ainda devem ouvir passos através das paredes, apenas abafados).
Conclusão
Implementar a oclusão e obstrução de áudio ambiental no FMOD transforma uma paisagem sonora plana em um mundo de áudio vivo e reativo. Ao combinar a automação e reverb de parâmetros do FMOD com a automação e o reverb, você pode simular uma propagação sonora realista que responde à geometria e aos materiais. Comece com uma configuração simples de um único raio, então expanda para múltiplos raios e filtragem consciente de materiais. Use as técnicas avançadas de sistemas de portal ou zonas de reverb para ambientes maiores e mais complexos. Lembre-se de testar exaustivamente e ajustar as curvas de parâmetros no FMOD Studio.
O resultado será um jogo mais imersivo onde os jogadores podem realmente âouvirâ o espaço ao seu redor.
Para mais informações, consultar o funcionário Documentação do FMOD, Unity Physics.Raycast referência, e Guia de Traceamento de Linhas de Motores Unreal. Recursos adicionais sobre oclusão de áudio incluem Artigo do desenvolvedor do jogo sobre oclusão/obstrução e a Papel branco de oclusão Wwise (as técnicas são transferíveis).