JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

3D Kollisionserkennung
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 12:51    Titel: 3D Kollisionserkennung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 13:14    Titel: Antworten mit Zitat

Hmm...ich schreibe für sowas z.Z.(eher nebenher Rolling Eyes ) 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 13:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 13:36    Titel: Antworten mit Zitat

Oder guck hier mal vorbei: http://photoneffect.com/coldet/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 13:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 13:53    Titel: Antworten mit Zitat

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 Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 14:19    Titel: Antworten mit Zitat

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 Wink

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... Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 21:39    Titel: Antworten mit Zitat

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 Razz
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 22:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 29.05.2004, 23:05    Titel: Antworten mit Zitat

Die Kollisionserkennung gibts auch auf der Website als Tutorial.

http://www.scherfgen-software.net/index.php?action=tutorials&PHPSESSID=f1bf631abfb6cfa0bcfc4c606f8ada01
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 30.05.2004, 10:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 07.06.2004, 13:24    Titel: Antworten mit Zitat

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 Wink
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.06.2004, 14:10    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 07.06.2004, 15:03    Titel: Antworten mit Zitat

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 Smile
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.06.2004, 16:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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

Impressum