Sie stellen die falsche Frage. Sie machen den Fehler, den viele neue Spielprogrammierer machen. Spiele sind keine perfekten Simulationen, sie sind nicht einmal nah. Spiele simulieren gerade genug, um Spaß zu haben / interessant zu sein. Alles andere ist gefälscht.
Ein typisches Beispiel:
World of Goo: Simuliert Masse, Zugfestigkeit und Elastizität. Der Rest ist gefälscht, weil er das Spielgefühl nicht verbessert. Zum Beispiel simuliert es keine Schwerkraft. Alle Objekte beschleunigen mit konstanter Kraft. Boyancy ist gefälscht. Ballons ziehen mit konstanter Kraft hoch und Goo-Bälle unter Wasser erfahren ebenfalls eine konstante Aufwärtskraft. Das alles funktioniert gut für das Spiel. Es würde jedoch zusammenbrechen, wenn Sie versuchen würden, einen Weltraumaufzug mit der Physik-Engine von World of Goo zu bauen.
Stellen wir uns eine nahezu perfekte physikbasierte Sound-Engine vor. Was ist mit Umwelteinflüssen? Ist die Flöte in einer Höhle oder auf einem Feld. Bietet die Engine einen vordefinierten Satz von Umgebungen (wie viele?) Oder ermittelt sie dies durch Berechnung der tatsächlichen physischen Topographie (ja, richtig)? Hat der Spieler direktionale Ohren (ala Mensch) oder nur Ohrlöcher (ala Delphin oder Alien) oder multidirektional wie ein Tier? Ist die Luft heiß? Wie feucht ist es? Diese Liste kann schnell außer Kontrolle geraten.
Nehmen wir nun für einen Moment an, dass es eine solche echte Physik-Sound-Engine gab. Möchten Sie es wirklich verwenden, um ein Spiel zu machen? Wie lange würden Sie brauchen, um den Klang einer Flöte zu definieren, die durch die Luft fliegt? Wie viele Parameter müssen Sie genau richtig machen (100er?).
Was Sie hätten fragen sollen ist:
Wie kann ich den Klang einer Flöte simulieren, wenn sie am Player vorbei fliegt?
OpenAL kann machen was Sie wollen.
- Richtungshörer
- Richtungsschallquellen
- Quellgeschwindigkeiten und Doppler-Effekte.
Ich würde vorschlagen, einen sich wiederholenden Soundeffekt einer sich drehenden Flöte zu haben. Geben Sie die Spielerposition und die Position / Geschwindigkeit der Flöte ein. Überspringen Sie vorerst das Richtungsmaterial.
Sie können den Klang aufnehmen, der von jedem Ende einer Flöte kommt, wenn die Luft vorbeiströmt, und die Flöte zwei Schallquellen verwenden lassen. Aber ich bezweifle, dass es die Mühe wert wäre, wenn sich die gesamte Spielmechanik nicht um geworfene und sich drehende Flöten dreht.
Sie möchten physikalische Modellierung? Probieren Sie das Synthesis Toolkit aus:
https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .
Sie müssen den Klebercode schreiben, der die Windgeschwindigkeit / -amplitude selbst einstellt.
Was Sie verlangen, wurde noch nicht wirklich erfunden. Wir kommen aber näher - sehen Sie sich das an, ich habe es neulich gesehen:
http://www.physorg.com/news198351307.html
quelle
Ich bezweifle, dass Sie eine Physik-Audio-Engine finden werden. Es ist wahrscheinlicher, dass Sie eine beliebige Physik-Engine (z. B. Bullet ) verwenden und OpenAL für den Sound verwenden. Berechnen Sie die Position der Flöte und verwenden Sie diese als Position der Quelle.
quelle
Phya ist eine auf "Physical Sampling" basierende Kollisions-Audiosynthesebibliothek, die von einer Spielphysik-Engine gesteuert werden kann. (Aufzählungszeichen wurde in den Beispielen verwendet)
http://www.zenprobe.com/phya/
Ich bin mir nicht sicher, was das neueste ist. Das letzte Site-Update ist jetzt über ein Jahr her.
Es ist nicht so sehr darauf ausgerichtet, die Resonanz von Luft in einem Volumen zu modellieren, könnte aber vielleicht ein gutes Beispiel dafür sein, wie man die Echtzeit-Audiosynthese aus der Physik heraus antreibt.
Ich denke, dies muss kein unmöglich CPU-teures Unterfangen sein. Das angegebene Problem ist völlig deterministisch und sollte mit moderner Hardware erreichbar sein. (Zumindest bis zu einem für ein Unterhaltungs- / Lernprodukt geeigneten Niveau.)
Die zu beantwortende Frage ist, wie vollständig Sie simulieren müssen und wie viel Sie fälschen können. Wenn Audio nur eine Art Echtzeit-Modulation des Klangs auf eine einigermaßen überzeugende Weise aufweist, erhalten Sie viel, ohne akustische Schwingungen bis auf das Molekül modellieren zu müssen.
Vielleicht hilft das. Gute Frage übrigens.
-j
quelle
Tatsächlich wäre eine genaue Simulation der hier beteiligten Physik wesentlich komplexer (und rechenintensiver) als ein gewöhnliches Physiksystem wie Havok oder Bullet. Ein traditionelles Physiksystem ist für starre Körper und weiche Körper optimiert, die beide aus Geschwindigkeitsgründen in ihrer Netzkomplexität begrenzt sind.
Schall hingegen ist eine Ausbreitung von Wellen durch die Luft, und die Frequenzen, die von so etwas wie Ihrem Beispiel erzeugt werden, hängen von Tonnen und Tonnen von Eigenschaften ab. Aus welchem Material bestand es? Welches mathematische Modell sollten wir für Luftpartikel verwenden, die mit diesem Material interagieren? Wenn es sich um eine Rohrform handelt, wie groß ist das Rohr? (Dies bestimmt die Resonanzfrequenz.) Usw. usw.
Darüber hinaus müssen Sie eine ziemlich ausgefeilte Partikelsimulation durchführen, um die Luft zu modellieren, und Partikelbewegungswellen extrahieren, die im Wesentlichen die Schallwellen sind, die auf Ihr Trommelfell treffen. Und lassen Sie uns nicht einmal das Trommelfell erwähnen, denn die Resonanz der Wellen in Ihrem Gehörgang beeinflusst auch das, was Sie hören.
Alles in allem ist dies viel zu viel Simulation für ein aktuelles Spiel, insbesondere wenn Sie auf eine interaktive Bildrate hoffen. Wie deft_code feststellte, handelt es sich bei Spielen selten um genaue Simulationen, sondern um herrlich gefälschte. Der beste Weg, dies zu erreichen, besteht wahrscheinlich darin, mit einem großen Sound-Sample-Set zu beginnen und die Dinge über einen DSP auszuführen, bis Sie verstanden haben, wie Sie die Wirkung dieser Sounds beeinflussen können. DSPs sind definitiv schnell genug für Echtzeitspiele, und wenn der Sound eine große Komponente wäre, ist es sinnvoll, einen anständigen Teil Ihrer Frame-Zeit für die Soundverarbeitung aufzuwenden.
tl; dr: Eine genaue Simulation kommt wahrscheinlich für viele Jahre nicht in Frage. Tolle Spiele fälschen es. Mit einem ausreichend großen Sampleset und genügend DSP-Optimierungen können Sie es wahrscheinlich auch fälschen.
quelle
Überprüfen Sie unseren Ansatz.
http://dsp.agh.edu.pl/en:research:rayav
Die entwickelte Bibliothek verwendet Beamtracing, um dem Benutzer eine realistische Audio-Auralisierung zu bieten. Alle Audioeffekte werden basierend auf der tatsächlichen Geometrie eines bestimmten Spielniveaus sowie seinen akustischen Eigenschaften (akustische Materialien, Luftdämpfung) berechnet. Der Sound ändert sich dynamisch zusammen mit der Bewegung des Spielcharakters und der Soundquellen. Der Algorithmus zur Erzeugung von Schallpfaden unterstützt Phänomene wie Spiegelreflexionen, diffuse Reflexionen und Kantenbeugung, während die Audioverarbeitung die Signalfilterung (Modellierung von Luftdumping, Reflexions- / Beugungswirkung usw.), Doppler-Effektmodellierung und räumliche Effekte unterstützt. Schließlich wird der Richtungsklang unter Verwendung von HRTF für jeden Schallweg implementiert.
quelle
Mir ist klar, dass dies eine alte Frage ist, aber die Dinge haben sich in den letzten Jahren weiterentwickelt, und was Sie beschreiben, wird rechnerisch immer praktikabler.
Werkzeuge wie das Synthesis Toolkit werden verwendet, um die folgende Art von Frage zu beantworten: "Meine Physik-Engine hat mir gesagt, dass die Flöte auf die eine oder andere Weise vibriert. Welche Note erzeugt das?"
Es gibt jedoch noch eine weitere wichtige Frage, die beantwortet werden muss: "Wie klingt diese Note aus der Position des Hörers?"
Es ist ein weit verbreitetes Missverständnis, dass Audio-APIs wie OpenAL sich darum kümmern. Tatsächlich ist alles, was sie tun, das, was als Positionsaudio bezeichnet wird . Sie modellieren nicht die Schallausbreitung: die Wechselwirkungen zwischen den Schallwellen und der Umgebung. Zur Schallausbreitung gehört die Beantwortung von Fragen wie:
Phonon ist eine Audio-Physik-Engine, die diese Fragen beantwortet. (Vollständige Offenlegung: Ich bin an der Entwicklung von Phonon beteiligt.) Bei Phonon muss der Benutzer einen sehr kleinen Satz von Parametern (Absorptions- und Streukoeffizienten) angeben . Phonon führt dann gerade genug Berechnungen durch, um Schallausbreitungseffekte für den Hörer überzeugend nachzubilden.
Phonon ist derzeit als Plugin für Unity verfügbar. Neben PC und Mobile kann Phonon auch auf VR-Plattformen wie Oculus Rift ausgeführt werden, und dies macht auch dort einen spürbaren Unterschied.
Hoffe das hilft!
quelle
Wenn ich Ihre Frage lese, kann ich sie auf zwei Arten übersetzen.
Beim Spielen? nicht das ich davon gehört hätte.
Ja! Sie werden als "3D-Sound-Engines" bezeichnet. Eine bekannte ist OpenAL .
quelle