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.
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
la source
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.
la source
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
la source
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.
la source
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.
la source
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:
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!
la source
En lisant votre question, je peux la traduire de deux façons.
Dans les jeux? pas que j'aie entendu parler.
Oui! on les appelle les "moteurs sonores 3D", dont un bien connu est OpenAL .
la source