Moteur sonore 3D parfait pour la physique (ou quelque part près) [fermé]

11

Je suis nouveau dans la programmation de jeux, bien que j'ai quelques années d'expérience dans le développement de console / web. Mon problème n'est pas tant que je ne trouve pas ce que je recherche, c'est juste que je n'ai pas la terminologie pour effectuer une recherche réussie.

Je recherche un moteur physique qui se concentre sur les sons. En fait, je ne me soucie pas du tout d'autre chose. Ce que je veux dire est mieux expliqué par un exemple:

Supposons un jeu de type 1ère personne. Vous êtes face au Nord, et quelqu'un quelque part autour de vous vous lance une flûte (peu importe l'absurdité de la situation). La flûte tourne alors qu'elle est en route, émettant des sons à travers ses trous. Il y a un vent de dire, 5 nœuds Sud.

J'imagine qu'un moteur physique sera capable de calculer la trajectoire de la flûte, ainsi que la direction qu'elle prend après son impact. Ce que je veux, c'est que le moteur physique calcule les sons précis qu'il émettra, du point de vue de tout auditeur.

Existe-t-il un tel moteur? S'il y en a plusieurs, lequel serait le mieux pour l'exemple ci-dessus?

Félix Saparelli
la source

Réponses:

10

Vous posez la mauvaise question. Vous faites l'erreur de nombreux nouveaux programmeurs de jeux. Les jeux ne sont pas des simulations parfaites, ils ne sont même pas proches. Les jeux simulent juste assez pour être amusants / intéressants. Tout le reste est truqué.

Exemple:
World of Goo: simule la masse, la résistance à la traction et l'élasticité. Le reste est truqué car il n'ajoute pas la sensation du jeu. Par exemple, il ne simule pas la gravité. Tous les objets accélèrent vers le bas avec une force constante. La boyancy est truquée. Les ballons se dressent avec une force constante et les balles gluantes sous l'eau subissent également une force ascendante constante. Tout cela fonctionne très bien pour le jeu. Cela tomberait cependant en panne si vous tentiez de créer un ascenseur spatial à l'aide du moteur physique de World of Goo.

Imaginons un moteur sonore basé sur la physique presque parfait. Qu'en est-il des effets environnementaux? Est la flûte dans une grotte ou dans un champ. Le moteur fournit-il un ensemble prédéfini d'environnements (combien?) Ou le comprend-il en calculant la topographie physique réelle (ouais à droite)? Le joueur a-t-il des oreilles directionnelles (ala humain) ou juste des trous d'oreille (ala dauphin ou alien) ou multidirectionnel comme un animal? L'air est-il chaud? Comment est-il humide. Cette liste peut rapidement devenir incontrôlable.

Supposons maintenant un instant qu'un tel moteur de son physique existe. Voudriez-vous vraiment l'utiliser pour créer un jeu? Combien de temps vous faudrait-il pour définir le son de la flûte traversant l'air. Combien de paramètres devez-vous obtenir juste (100?).

Ce que vous auriez dû demander, c'est:
Comment puis-je simuler le son d'une flûte lorsqu'elle passe devant le joueur?

OpenAL peut faire ce que vous voulez.

  • Auditeur directionnel
  • Sources sonores directionnelles
  • vitesses de la source et effets doppler.

Je suggérerais d'avoir un effet sonore répétitif d'une flûte en rotation. Saisissez la position du joueur et la position / vitesse de la flûte. Sautez les trucs directionnels pour l'instant.
Vous pouvez enregistrer le son provenant de chaque extrémité d'une flûte au fur et à mesure que l'air s'écoule et demander à la flûte d'utiliser deux sources sonores. Mais je doute que cela en vaille la peine à moins que toute la mécanique du jeu ne tourne autour des flûtes lancées et tournoyantes.

deft_code
la source
Eh bien, toute l'idée du jeu tourne autour des objets en mouvement qui font du son. L'exemple donné est trop complexe à dessein, mais l'idée de jeu implique des objets au son réaliste en mouvement.
Félix Saparelli
La plupart des paramètres seraient en fait contrôlés: considérez une pièce cubique fermée (scellée) avec des murs d'un matériau particulier (dont je définis les propriétés), la température de l'air, la pression, l'humidité, etc. sont tous contrôlés. Les oreilles sont humaines. Je n'ai même pas besoin de considérer le reste du corps. En fait, au lieu de la liste noire, je peux spécifier exactement les paramètres que j'utilise et définir (constant) tout le reste. C'est mon monde (virtuel): je le définis comme je veux qu'il soit.
Félix Saparelli
Mon point était que la quantité d'effort qu'un tel moteur audio exigerait dans le cas général ne vaut pas la peine. Surtout quand des ingénieurs du son talentueux peuvent simuler de manière très convaincante les effets dont vous avez besoin. Le doppler est intégré. L'écho, l'amortissement, etc. peuvent tous être effectués avec un filtrage.
deft_code
8

Vous souhaitez une modélisation physique? Essayez la boîte à outils de synthèse:

https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .

Vous devrez écrire le code de colle qui définit vous-même la vitesse / amplitude du vent.

Ce que vous demandez n'a pas encore vraiment été inventé. Nous approchons cependant - regardez ça, je l'ai vu l'autre jour:

http://www.physorg.com/news198351307.html

homebrew
la source
Des trucs intéressants. C'est ce que je veux dire, et cela ne se fait pas encore ne me gêne pas. Je ne prévois pas de commencer un travail réel (non conceptuel) dessus avant 1-2 ans.
Félix Saparelli
4

Je doute que vous trouverez un moteur physique-audio. Ce qui est plus probable est d'utiliser n'importe quel moteur physique que vous aimez (comme Bullet ) et d'utiliser OpenAL pour le son. Calculez la position de la flûte et utilisez-la comme position de la source.

Le canard communiste
la source
Je veux cependant un peu plus que cela.
Félix Saparelli
1
Que veux-tu de plus? Avec ma suggestion, vous pouvez changer la position du son à chaque image. Je pense que je manque quelque chose.
The Communist Duck
6
Je pense qu'il veut dire simuler les ondes d'air et autres vibrations afin de générer les sons. Et bien sûr, c'est possible, mais aucun ordinateur (sauf peut-être certains super-clusters d'ordinateurs) ne pourrait calculer cela pour n'importe quel espace de taille utile en temps réel, donc non, si vous voulez dire qu'il n'y a rien de tel (ni besoin réel, utilisez le moteur physique et lire les données de collision pour jouer un échantillon approprié est "assez proche").
Elva
3
Si vous voulez progresser, non seulement il y a a) comme Yourdoom l'a dit, aucun moyen qu'un ordinateur normal puisse le faire, et b) personne ne pourrait faire la différence.
The Communist Duck, le
3
Il y a encore beaucoup de choses que les jeux modernes font (et des API de plus haut niveau comme FMOD fournissent) qu'OpenAL ne peut pas faire, ou du moins ne fait pas immédiatement - tels que les effecteurs basés sur le volume (géométriques), qui peuvent être en plus connectés aux portails pour simuler le son passant par plusieurs pièces. Ce n'est pas courant, mais c'est fait, et vous pouvez faire la différence.
4

Phya est une bibliothèque de synthèse audio basée sur un "échantillonnage physique" qui peut être pilotée par un moteur physique de jeu. (Bullet a été utilisé dans les exemples)

http://www.zenprobe.com/phya/

Je ne sais pas quelle est la dernière, la dernière mise à jour du site remonte à plus d'un an maintenant.

Il n'est pas tellement axé sur la modélisation de la résonance de l'air dans un volume, mais pourrait peut-être être un bon exemple de la façon de piloter la synthèse audio en temps réel à partir de la physique.

Je pense que cela n'a pas besoin d'être une entreprise incroyablement coûteuse en CPU, Le problème indiqué est entièrement déterministe et devrait être réalisable sur du matériel moderne. (au moins à un niveau adapté à un produit de divertissement / d'apprentissage.)

La question à laquelle vous devez répondre est la suivante: combien devez-vous simuler et combien pouvez-vous simuler? Pour l'audio, le simple fait d'avoir une sorte de modulation du son en temps réel d'une manière raisonnablement convaincante vous apporte beaucoup sans avoir à modéliser les vibrations acoustiques jusqu'à la molécule.

Peut-être que cela aide. Bonne question, btw.

-j

Jason Cobb
la source
Je peux truquer beaucoup. Juste ... beaucoup moins que les jeux vidéo contemporains. C'est le point: je ne crée pas un jeu vidéo, mais un jeu audio. Un peu.
Félix Saparelli
3

En fait, faire une simulation précise de la physique impliquée ici serait beaucoup plus complexe (et coûteux en calcul) qu'un système physique ordinaire comme Havok ou Bullet. Un système de physique traditionnel est optimisé pour les corps rigides et les corps mous, qui sont tous deux limités dans leur complexité de maillage pour des raisons de vitesse.

Le son, d'autre part, est une propagation des ondes dans l'air, et les fréquences générées par quelque chose comme votre exemple dépendent de tonnes et de tonnes de propriétés. De quel matériau était-il fait? Quel modèle mathématique devrions-nous utiliser pour les particules d'air interagissant avec ce matériau? Si c'est une forme de tube, quelles sont les dimensions du tube? (Ceci détermine la fréquence de résonance.) Etc., etc.

En plus de tout cela, vous devez exécuter une simulation de particules assez sophistiquée pour modéliser l'air, ainsi que l'extraction des ondes de mouvements de particules qui sont essentiellement les ondes sonores qui frappent vos tympans. Et ne parlons même pas des tympans, car la résonance des ondes dans votre conduit auditif affecte également ce que vous entendez.

Dans l'ensemble, c'est beaucoup trop de simulation pour un jeu actuel, surtout si vous avez un espoir de fréquence d'images interactive. Comme l'a noté deft_code, les jeux sont rarement des simulations précises, mais plutôt des simulations glorieuses. La meilleure façon d'aborder cela serait probablement de commencer avec un grand ensemble d'échantillons sonores et de commencer à exécuter les choses via un DSP jusqu'à ce que vous compreniez comment vous pouvez influer sur l'effet de ces sons. Les DSP sont certainement assez rapides pour les jeux en temps réel, et si le son est un gros composant, il est logique de consacrer une bonne partie de votre temps de trame au traitement du son.

tl; dr: Une simulation précise est probablement hors de question pour de nombreuses années à venir. De grands jeux font semblant. Avec un ensemble d'échantillons suffisamment grand et suffisamment de réglages DSP, vous pouvez probablement le simuler également.

Bob Somers
la source
2

Vérifiez notre approche.

http://dsp.agh.edu.pl/en:research:rayav

La bibliothèque développée utilise le tracé de faisceau pour fournir à l'utilisateur une auralisation audio réaliste. Tous les effets audio sont calculés en fonction de la géométrie réelle d'un niveau de jeu donné ainsi que de ses propriétés acoustiques (matériaux acoustiques, atténuation de l'air). Le son change dynamiquement avec le mouvement du personnage du jeu et des sources sonores. L'algorithme de création de chemin sonore prend en charge des phénomènes tels que les réflexions spéculaires, les réflexions diffuses et la diffraction des bords, tandis que le traitement audio prend en charge le filtrage des signaux (modélisation du dumping de l'air, de l'impact de la réflexion / diffraction, etc.), la modélisation de l'effet Doppler et les effets spatiaux. Enfin, le son directionnel est implémenté à l'aide de HRTF pour chaque chemin sonore.

NoMoreMrNiceGaius
la source
0

Je sais que c'est une vieille question, mais les choses ont progressé au cours des deux dernières années, et ce que vous décrivez devient de plus en plus réalisable, sur le plan informatique.

Des outils comme Synthesis Toolkit sont utilisés pour répondre au type de question suivant: "Mon moteur physique m'a dit que la flûte vibre de telle ou telle manière. Quelle note cela produit-il?"

Il y a cependant une autre question importante à laquelle il faut répondre: "À quoi ressemble cette note de la position de l'auditeur?"

C'est une idée fausse que les API audio comme OpenAL s'en occupent. En fait, tout ce qu'ils font, c'est ce qu'on appelle l' audio positionnel . Ils ne modélisent pas la propagation du son: les interactions entre les ondes sonores et l'environnement. La propagation du son implique de répondre à des questions telles que:

  • Cette pièce est-elle suffisamment grande pour qu'il y ait une réverbération notable?
  • Ou les meubles de la pièce absorbent-ils la majeure partie du son?
  • Lorsque je suis à l'extérieur, dois-je entendre les échos d'une colline éloignée? Un bâtiment à proximité?
  • Le son se dissipe-t-il sur de longues distances?
  • La source sonore est-elle occlus (cachée) à l'auditeur?
  • Si oui, existe-t-il des voies alternatives que les ondes sonores peuvent utiliser pour atteindre l'auditeur? Peut-être sous une porte fermée, autour d'un coin de couloir ou à travers un évent?

Phonon est un moteur audio-physique qui répond à ces questions. (Divulgation complète: je participe au développement de Phonon.) Avec Phonon, l'utilisateur doit spécifier un très petit ensemble de paramètres (coefficients d'absorption et de diffusion). Phonon effectue alors juste assez de calculs pour pouvoir recréer de manière convaincante des effets de propagation du son pour l'auditeur.

Phonon est actuellement disponible en tant que plugin pour Unity. Outre PC et mobile, Phonon peut également fonctionner sur des plates-formes VR comme Oculus Rift, et cela fait également une différence notable.

J'espère que cela t'aides!

Lakulish Antani
la source
0

En lisant votre question, je peux la traduire de deux façons.

  1. Existe-t-il un moteur capable de créer des sons basés sur des simulations physiques? Tels que l'air qui souffle sur un roseau, ou un marteau frappant une corde?

Dans les jeux? pas que j'aie entendu parler.

  1. Existe-t-il un moteur qui reproduit des sons préexistants mais les modifie en fonction d'informations physiques telles que la distance du microphone pour simuler une "expérience de son surround"?

Oui! on les appelle les "moteurs sonores 3D", dont un bien connu est OpenAL .

Nathan Goings
la source