2016-08-01 38 views
0

Ich schreibe gerade ein einfaches 3D-Sound-System, aber ich blieb stecken. Das Problem ist: Ich habe einen Punkt im Raum, woher der Klang kommt, und natürlich habe ich den Zuhörer, mit seinem Punkt und seiner Ausrichtung.Holen Sie sich die "Pfanne" des Sounds im 3D-Raum

Die Entfernung war nicht das Problem, es funktioniert perfekt, aber wenn ich den Pan des Klangs (wie viel links/rechts) berechnen wollen, ist es eine totale Katastrophe.

Ich habe es im Internet gesucht, aber ich kann keine brauchbare Lösung finden, und dann habe ich versucht, es mit Dreiecken und Sachen selbst zu berechnen, aber Sie wollen nicht wissen, was das Ergebnis war.

Ich werde Code nicht zeigen, weil ich es dreimal geschrieben habe, und jede Version war unbrauchbar.

Ich möchte nicht, dass Sie mir unbedingt Code geben, ich werde mich freuen, wenn ich dafür eine mathematische Lösung bekomme. Ich würde gerne hören, ob der Ton wie viel links oder rechts von der Kamera ist.

Ich arbeite in C++ 11 und die Sound-Bibliothek ist Audiere.

Bearbeiten: Dank willywonkadailyblah habe ich eine Lösung gefunden. Sie können es hier sehen: Get x position of sound from camera

mit dem Skalarprodukt kann ich das cos Alpha des Dreiecks dann mit einem einfachen Pitagoras Theorem kann ich den Abstand (A) bekommen.

Und am Ende teile ich den pandistance mit dem heartreist und multipliziere mit der Schalldistanz.

+1

Sie sollten besser Ihren besten Versuch zeigen und erklären, was die spezifischen Symptome sind und was Ihre genauen Ziele sind. Es gibt einfache Ansätze und komplexe (mit ausgefallenen Head-Response-Funktionen). –

Antwort

1

Sie können das Punkt Produkt der Kamerarichtung und des Vektors berechnen, der die Kamera und die Tonquelle verbindet. Dies ergibt den Kosinus des Winkels zwischen den Vektoren. Wenn das Skalarprodukt näher bei Null liegt als eins, ist die Schallquelle mehr "zur Seite" als "vor".

+0

Dank dir habe ich etwas herausgefunden. Ich werde Ihnen den Punkt nennen, aber ich möchte Sie bitten, die Formel zu überprüfen. Manchmal bin ich verzweifelt. – Bady

+0

@Bady stellen Sie sicher, dass Sie durch die Größen beider Vektoren teilen, um den Kosinus zu erhalten. –