Kollisions abfrage bei 3D spiel?

MrTroble

Bekanntes Mitglied
Ich Programmiere ein 3D Spiel ich möchte eine Kollisions abfrage zwischen der Kamera und den Objekten so wie den Objekten selbst haben wie mach ich das am besten
 
Hallo,
bei solchen Berechnungen brauchst du immer relativ viel Mathematisches Verstehen. Ich weiß nicht wie weit du dieses Besitz, aber wenn nicht (oder auch wenn du es hast) würde ich dir irgendeine Physik Engine empfehlen, das erspart dir unheimlich Arbeit und Stress ^_^

Gruß,
AntiMuffin
 
Zuletzt bearbeitet:
Wie weit bist du denn schon mit der Programmierung?
Guck dir mal die JMonkeyEngine an.
Ich weiß nicht, wie gut dein Englisch ist aber hier gibt es für den Anfang mehr als genug Infos dazu.
 
Zum Lernen der Bedienung der JMonkeyEngine kann ich dir das Buch JMonkeyEngine 3.0 empfehlen.
Es vermittelt alle wichtigen Informationen, die es zum Umgang mit der Engine zu wissen gibt.
Falls dir das nicht reichen sollte, kannst du dir als weiterführendes Buch JMonkeyEngine 3.0 Cookbook holen.

Natürlich kannst du die Bedienung auch mit Tutorials im Internet lernen, allerdings ist das deutlich aufwändiger.

Falls du es wirklich selber machen willst, solltest du dich mit Oberstufenmathematik auseinandersetzen.
Das Wichtigste ist dabei die Vektorrechnung. Wenn du mit Skalarprodukt, Abstandsbestimmung und Winkelbestimmung zwischen 2 Vektoren umgehen kannst, kannst du noch einmal über sowas nachdenken.
 
Zuletzt bearbeitet:
Man sollte vielleich dazu sagen dass es drauf ankommt was für Objekte hast.
Wenn das einfach nur Würfel sind, dann kannst du die Kollision auch viel einfacher Lösen.

Mfg Major
 
na das klingt ja schon besser also Oberstufenmathematik wird ja irgend wie machbar sein

Sei dir da mal nicht so sicher 😉 Was man in der Oberstufe über Mathematik lernt ist zwar genau das Theoriewissen, welches du für eine Kollisionsprüfung brauchst; aber das lässt sich nicht 1:1 programmieren:
Mathematische Aufgaben löst man ggf. pro Aufgabe mit einer anderen Formel. Du musst also die kompletten Vorgänge bei den Berechnungen erstmal stark abstrahieren und dann ja nach Fall sehr viel konkreten Code einbauen.
Dazu kommt: Wissenschaftliche Taschenrechner rechnen einen großen Term nicht einfach nur aus. Sie suchen nach optimierungen, vereinfachen das ganze mehrfach und haben eine auf Mathematik zugeschnittene Prozessorachitektur. In Java ist der double das höchste der Gefühle. Er hat zwar mehr genauigkeit als der Wissenschaftliche Taschenrechner aber die JVM kann keine Optimierungen zur Laufzeit ausführen. Mit einer Mathematik-Bibliothek zu rechnen, die all das implementiert, das der wissenschaftliche Taschenrechner tut, ist von der Performance her nicht machbar.
Faitz: gaaanz oft wirst du anstatt == prozentual > und < prüfen müssen; damit das suber läuft brauchst du vieeeeeel Feintuning, was alleine (und nur mit bloßer Oberstufenmathematik) nicht zu stämmen ist. Engines bringen das mit.
 
Zuletzt bearbeitet:
Du solltest auch um die eigentlichen Modelle einfachere Kollisionsmodelle herumlegen.
Einen Menschen könntest du z.B. mit einer Kugel und einem Zylinder beschreiben.
Das beschleunigt das um einiges.
 
naja sagen wir mal so ich hatte mir da selbst mal n ansatz parat gelegt
1. abspeichern in arrays die Koordinaten ,länge ,höhe und breite von allen objekten
2. diese genzen zahlen dann erstmal in einem neun thread herum rechnen und mit den postionen der kamera bzw abjekt abgleichen
3.wenn das objekt jetzt also bei dem anderen objekt ist wird irgendwas ausgelöst

das ist aber sehr rechenleistungs belastend und Ineffizient des halb werd ich das wohl er mit Vector geometry machen
 

Zurück
Oben