 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 29.05.2004, 12:51 Titel: 3D Kollisionserkennung |
|
|
Ich hab gedacht, dass es schon mehrere solcher Topics gibt, hab aber über die Suche keine genauen Antworten gefunden.
Mir gehts um Algorithmen, um kollisionen von verschiedenen Boundingobjekten miteinander zu erkennen.
Also ein Algorithmus zum Kollisionstest für ne BoundingBox mit einer anderen BoundingBox oder für ne BoundingBox mit ner BoundingSphere usw. Ich denke ihr wisst, was ich mein.
Ich würd in meiner Engine gerne folgende Boundingobject Typen unterstützen:
Sphere,
Ellipse,
Box,
Triangle,
Line.
Das heist ich brauch insgesamt algorithmen für die Kollision von
Sphere und Sphere, // hab ich schon
Sphere und Ellipse,
Sphere und Box, // hab ich schon
Sphere und Triangle,
Sphere und Line,
Ellipse und Ellipse,
Ellipse und Box,
Ellipse und Triangle,
Ellipse und Line,
Box und Box, // hab ich schon
Box und Triangle, // hab ich schon
Box und Line, // hab ich schon
Triangle und Triangle,// hab ich schon
Triangle und Line, // hab ich auch schon
Line und Line.
Ich weis, das ist ein bisschen viel gefragt, aber ich denke der eine oder andere von euch wird den einen oder anderen Algorithmus kennen.
Zusammen werden wir bestimmt ne gute Sammlung zusammenbekommen.
Also wenn jemand von euch Tutorials kennt, oder selber schon ne Funktion für eine dieser Kollisionen geschrieben hat und sie gerne bekannt geben will, dann bitte posten!
Das Thema beschäftigt denke ich jeden von uns, der mit 3D zu tun hat.
Cu,
VH
[Edit]
Ich schreib hinter jeder kollision, die ich noch gefunden hab ein "// hab ich schon".
[/Edit]
[Edit]
Also ich werd nicht alles sofort implementieren, da manche kollisionen wahrscheinlich nie gebraucht werden.
Die Boxen Kollision mach ich über orientierte Boxen, da ich eine Achsen ausgerichtete Box ja einfach in eine orientierte konvertieren kann. Das wär den aufwand einer eigenen klasse mit eigenen kollisionsmethoden einfach nicht wert, denke ich.
[/Edit]
Zuletzt bearbeitet von VerruecktesHuhn am 01.06.2004, 11:00, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 29.05.2004, 13:14 Titel: |
|
|
Hmm...ich schreibe für sowas z.Z.(eher nebenher ) eine Geometrieengine.
Allerdings ist diese bisher nur für 2D.
Deshalb weiß ich auch nicht, ob dir/euch die Algos etwas nützen würden. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 29.05.2004, 13:35 Titel: |
|
|
Ist halt die Frage, ob man das selber machen will oder eine Toolkit/API nutzen will. Hast du diesen Link schon?
http://www.realtimerendering.com/int/
C. |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
|
Nach oben |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 29.05.2004, 13:42 Titel: |
|
|
Danker erstmal für die Antworten!
Ich hab auch in nem alten Buch noch ein paar Algorithmen gefunden und die Liste oben upgedated.
Also ich will eigentlich keine vorhandene Engine oder so nutzen, sondern alles selber implementieren. Ich werd mir eure Links aber noch genauer anschaun.
@Christian:
Nein, den hat ich noch nicht. Danke!
@TLoP:
2D hab ich auch schon zum Großteil (also mit rects und kreisen), aber ich bin zur Zeit an nem 3D Projekt dran. |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 29.05.2004, 13:53 Titel: |
|
|
VerruecktesHuhn hat Folgendes geschrieben: | @TLoP:
2D hab ich auch schon zum Großteil (also mit rects und kreisen), aber ich bin zur Zeit an nem 3D Projekt dran. |
Wenn dus schon für 2D hast, dürfte es aber nicht schwer fallen, das auf 3D zu übertragen
Eigentlich müsste man doch den Algo einfach 2 Mal ausführen.
Beim ersten Mal z.B. erhält man die Kollision zweier 2D-Rects.
Wenn man das mit einem zweiten Aufruf kombiniert und statt X/Y-Koordinaten Y/Z nimmt, dann müsste es auch funzen(vorausgesetzt, die Quader liegen waagerecht). _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 29.05.2004, 14:19 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | Wenn dus schon für 2D hast, dürfte es aber nicht schwer fallen, das auf 3D zu übertragen
Eigentlich müsste man doch den Algo einfach 2 Mal ausführen.
Beim ersten Mal z.B. erhält man die Kollision zweier 2D-Rects.
Wenn man das mit einem zweiten Aufruf kombiniert und statt X/Y-Koordinaten Y/Z nimmt, dann müsste es auch funzen(vorausgesetzt, die Quader liegen waagerecht). |
Naja, wenn sie waagrecht liegen hast du denk ich recht. Aber ich will ja nicht nur diesen Spezialfall.
Auserdem hab ich von 2D auch nur Kreise untereinander und eben diese nicht gedrehten Rects. Das hilft dann auch nich so arg weit...  |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 29.05.2004, 21:39 Titel: |
|
|
Hmm...stimmt, wäre schon net schlecht, wenn man auch gedrehte Quader nehmen kann.
Aber perfektionistisch wie ich bin werde ich trotzdem(wenn ich mich erst mal in 3D eingearbeitet habe) versuchen, den Algo selber zu programmieren  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 29.05.2004, 22:38 Titel: |
|
|
Wenn du noch ein bischen Geld übrig hast, könntest du dir das Buch
3D Spieleprogrammierung von David Scherfgen kaufen. Das hat insgesamt 800 Seiten und erklärt erst alles aus dem theoretischen Teil und dann die implementierung mit C++ und DX.
Ein Teil ist über Kollisionserkennung, ziemlich umfangreich, alle Formel schön hergeleitet und alle Funktionen fertig auf der CD.
Im Buch wird ein richtig nettes 3D Weltraum Ballerspiel entwickelt. Schau dir mal die Screenshots auf www.Scherfgen-Software.net an, die Grafik ist echt net schlecht (vielen wären froh, wenn so sowas hinbekämenen, und wenn man das Buch gelesen hat, kann mans theoretisch).
Also hier mal ein bischen Inhalt:
- Kugel Kugel
- Linie Kugel
- Linie Dreieck
- Dreieck Dreieck
- Linie Quader
- Quader Quader
- Linie Modell
- Modell Modell _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
|
Nach oben |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 30.05.2004, 10:05 Titel: |
|
|
Danke nochmal für die vielen Antworten! Vor allem der Link von Christian ist ne Goldgrube.
Ich mach mich jetzt wieder daran die Kollisionserkennung zu implementieren und melde mich wieder wenns probleme gibt. Ich werd die Liste oben dann immer Updaten, wenn ich eine Funktion implementiert hab, falls jemand von euch eine braucht/will.
nochmals Danke! |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 07.06.2004, 13:24 Titel: |
|
|
Mir ist jetzt noch etwas eingefallen:
Im Prinzip besteht ja ein Quader aus 6 Ebenen(bzw. Rechtecken im 3D-Raum) und 12 Strecken(bzw. Kanten). Man müsste hier nur überprüfen, ob eine der Kanten eine der Ebenen des anderen Quaders schneidet.
Dann ginge das auch mit gekippten Quadern  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 07.06.2004, 14:10 Titel: |
|
|
@Lord of programming
Du must berücksichtigen, das ein Quader auch komplett in einem anderen liegen kann. Ansonsten stimm ich dir zu. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 07.06.2004, 15:03 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | @Lord of programming
Du must berücksichtigen, das ein Quader auch komplett in einem anderen liegen kann. Ansonsten stimm ich dir zu. |
Stimmt, kleiner Denkfehler. Aber das müsste auch einfach zu beheben sein.
Wenn sich nämlich die Verlängerungen aller Kanten(weiß net, ob es wirklich alle sein müssen) eines Quaders mit irgendwelchen Flächen des anderen Schneiden, dann liegt auch eine Kollision vor  _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 07.06.2004, 16:29 Titel: |
|
|
Du könntest dir ja mal die WildMagic Libary anschaun im Quellcode wird das ausführlich auch kommentiert. Und da sind alle Methoden die du haben willst dabei. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|