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

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

1

15.06.2013, 15:32

Frustum/Frustum Kollision

Hallo. Wie kann ich prüfen, ob sich mein Kamerafrustum mit dem eines Spot-lichtes schneidet? Ich denke, das läuft auf eine Ebene/Ebene Kollision hinaus. Hat jemand dazu Tipps oder gute Artikel?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

3

15.06.2013, 23:51

Das hilft mir aber nicht weiter bei meinem Problem. Wie ich Frustum-Culling durchführe, kenne ich bereits. Mir geht es eher darum, auszurechnen, ob eine Ebene eine Ebene schneidet.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

4

16.06.2013, 00:18

Wenn die Normalenvektoren von zwei Ebenen nicht linear voneinander abhängig sind, schneiden sich die Ebenen.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

16.06.2013, 08:50

Ich glaube genauer genommen meint er wohl ob ein Polygon ein anderes Polygon schneidet. Komplette Ebenen sind in 3D-Grafik eher unüblich. Ein Frustum ist immerhin beschränkt. Nur verstehe ich gerade nicht, wo das Problem genau liegt. Er hat die Anforderung verstanden, er hat die logische Konsequenz erkannt, jetzt fehlt doch nur die Umsetzung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

6

16.06.2013, 16:38

Ich berechne dafür 5 Eckpunkte der Pyramide - den Fußpunkt und die vier Ecken des Spotlight-Frustums. Dann teste ich diese fünf Punkte gegen das Kamerafrustum.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

16.06.2013, 19:42

Du hast vermutlich auch keine Lichtquellen, die so groß sind, dass sie komplett außerhalb des Frustums liegen und trotzdem hindurch scheinen kann?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

8

16.06.2013, 21:39

Doch. Du machst nur Deinen Frustum Test falsch.

So, und nach diesem hochpräzisem und wertungsfreiem Austausch von Fakten die Auflösung:

BC nahm an, dass ich einen Frustum Test vorschlug, bei dem der Lichtkegel als im Frustum gilt, sobald einer der fünf Grenzpunkte im Frustum liegt. Das ist natürlich Unsinn, weil es für die von BC genannten Lichtkegel-Lagen fälschlicherweise "nicht sichtbar" zurückgibt. Ein besserer Test dagegen ist es, den Lichtkegel nur dann als "unsichtbar" anzunehmen, wenn alle fünf Testpunkte jenseits derselben Frustum-Ebene liegen. Damit werden dann wiederum manche sehr langen dünnen Lichtkegel fälschlicherweise als sichtbar angenommen, wenn sie nah an einer Frustum-Kante vorbeigehen, aber das habe ich in Kauf genommen, weil das Kamera-Frustum üblicherweise deutlich größer als die zu prüfenden Lichtkegel-Frusta sind und dieser Fall dadurch recht selten ist.

Die mathematisch korrekte Lösung wäre natürlich immernoch, die Dreiecke gegeneinander zu prüfen.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

16.06.2013, 22:01

Ich glaube du hast da jemanden verwechselt, Schrompf. Die detaillierter ausgeführte Lösung funktioniert natürlich hinreichend. Die Aussage vorher war nur etwas sehr knapp gehalten, weswegen ich noch etwas nachgestichelt habe ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

10

01.07.2013, 20:00

Ich habe jetzt ein brauchbare Lösung. Ich berechne Linien, die das Frustum abgrenzen. Diese Linien prüfe ich auf Kollision mit meinem Kamerafrustum bzw. ob sie im Frustum liegen.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige