Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

27.12.2003, 02:01

Kollision Kugel - Dreieck

Hallo,

weiß einer wie man ne Kollisionserkennung zwischen Kugel und Dreieck bastelt?
Ich habs versucht seit 3 Stunden, aber das klappt alles nicht ???

vielen dank
rudi

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

27.12.2003, 02:52

Wenn man so überlegt gibt es da mal wieder mehrere Fälle. Einmal kann man prüfen ob ein Punkt des Dreiecks in der Kugel liegt (Entfernung Dreieckspunkt zu Mittelpunkt der Kugel mit dem Radius vergleichen). Falls das nicht eintritt muss man noch testen ob eine Seite des Dreiecks vielleicht noch irgendwie in der Kugel liegt. Weiß nicht mehr woei aber es gab es schon irgendwo das man für die Seite stichprobenartig in 1000 Teile oder so teilt und dann pro Punkt überprüft wie weit der wieder von Mittelpunkt der Kugel entfernt ist. Was anderes fällt mir da net ein.

NoName

Treue Seele

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

3

27.12.2003, 03:01

Ebenengleichung des Dreiecks mit Gleichung der Kugel gleichsetzen.
=> testen ob sich Dreieck und Kreis der Schnittpunkte schneiden (2D).

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

27.12.2003, 09:34

Zitat von »"NoName"«

Ebenengleichung des Dreiecks mit Gleichung der Kugel gleichsetzen.
=> testen ob sich Dreieck und Kreis der Schnittpunkte schneiden (2D).

Aber ist das Problem dadurch leichter lösbar geworden?
Ich würde auch erst testen, ob Punkte im Dreieck liegen, und dann die Kollision der Dreiecksseiten mit der Kugel testen. Dann noch die Seitenhalbierenden. Wenn die Kugel nicht zu klein gegenüber dem Dreieck ist, wird es gehen.

Anonymous

unregistriert

5

29.12.2003, 01:33

hallo,

das ganze klappt bei kleineren Objekten super,

aber bei großen sind dreieckige Löcher im Boden
(kamera = kugel, objekt = dreiecke),

hat einer Vorschläge für Erweiterungen hierzu:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool Linie_Kugel_Test(D3DXVECTOR3 vKamPos, D3DXVECTOR3 vKamPosVorige, D3DXVECTOR3 v0, D3DXVECTOR3 v1, D3DXVECTOR3 v2)
{

  if (LineHitsSphere(v0, v1, vKamPos) == true)
  { return true;  }
  if (LineHitsSphere(v0, v2, vKamPos) == true)
  { return true;  }
  if (LineHitsSphere(v1, v2, vKamPos) == true)
  { return true;  }

  if (LineHitsSphere(Mesh[2].vPos, v0, vKamPos) == true)
  { return true;  }
  if (LineHitsSphere(Mesh[2].vPos, v1, vKamPos) == true)
  { return true;  }
  if (LineHitsSphere(Mesh[2].vPos, v2, vKamPos) == true)
  { return true;  }

  else 
  { return false; }
}
[/code]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

29.12.2003, 08:59

Also aus Deiner Funktion werde ich irgendwie nicht schlau.
Sie soll doch dem Namen nach prüfen, ob eine Linie eine Kugel schneidet.
Aber von einer Kugel sehe ich da nichts - wo ist beispielsweise der Radius?
Warum werden drei Punkte v0, v1 und v2 angegeben? Was haben die mit der Kugel zu tun?
Und warum erwartet LineHitsSphere keinen Radius als Parameter?

Anonymous

unregistriert

7

29.12.2003, 13:10

Hiiii

hab mir das folgendermaßen gedacht:

Die 3 Punkte sind 3 Vertexe von dem Dreieck von nem Objekt,

Der Radius der Kamera wird frei Hand angegeben,
ansonsten werden die anderen Radiuse vom Objekt geholt,
so dass ich alle Radiuse rausgenommen hab aus den Parameterlisten.

Ich such nun nach weiteren Linien bei größeren Objekten die einfach zu berechnen sind. Wenn die Objekte nen größeren Radius haben dann test ich mehrere Linien, sonst recihen die ersten 3 Linien.

Objekt2 ist der Boden bei mir.

Anonymous

unregistriert

8

29.12.2003, 22:08

spring-problem

n´abend,

das mit den löchern im boden hat weitere folgen,

wenn ich da in so n loch reinwander,
steck ich fest und kann nicht mehr springen,

ich könnte zwar die collisionsfunktion trennen nach bodenobjekte und
normalobjekte aber dann kann ich nicht auf normalobjekten laufen,
also zum beispiel auf n paar kisten die da rumstehen

wie löst man dies?

Anonymous

unregistriert

9

29.12.2003, 22:13

p.s.

noch ne frage:
ist ne kamerabox genauso schnell?
die ist unten wenigst waagerecht.

Und wenn ja, wie testet man ob ne Linie in ner Box ist?
ich find dazu nix,
das mit der Kugel ist n ziemliches rumgeeier ???

Anonymous

unregistriert

10

31.12.2003, 17:53

hallo :huhu:

ok problem erledigt, hab jetzt ne Schwebekugel,
allerdings versteht die sich nicht mit der Schwerkraft

hat jemand ne lösung?
:help:

Werbeanzeige