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

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

1

19.04.2005, 10:11

Körper, die ineinader liegen ausblenden

Hallo,

Ich arbeite mit dem OpenSG- Scenegraph, lade dort vrml- Objekte und stelle sie als Drahtgitter dar. Bei vielen Objekte in der Scene sieht das natürlich ziemlich durcheinander aus, weil Objekte auch ineinander liegen und durcheinder hindurch gehen. Nun hab ich mir gedacht, es müsste doch möglich sein, den Teil eines Körpers, der in einem Anderen liegt, nicht zu rendern. Nur wie geht dass? Die Objekte sind zudem noch ziemliche komplex.


Wenn mir jemend einen Tipp geben könnte, wie ich den Übergang zwischen sichtbar und nicht sicht realisieren kann, wär ich sehr dankbar.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

19.04.2005, 10:57

Die erste Frage ist ja scheinbar, wie erkenne ich, dass ein Körper in einem anderen ist?

Sind Deine Körper völlig geschlossen, d.h. nirgendwo ein Loch?

Einfach gesagt, um rauszufinden ob ein Punkt in einem geschlossenen Körper ist, sendet man einen Strahl von dem Punkt aus, z.B. in +x Richtung und zählt die Schnittpunkte mit dem anderen Körper. Wenns ungerade ist, ist der Punkt innerhalb. Spezialfälle wie der Strahl ist innerhalb einer Fläche müssen natürlich behandelt oder zumindest bedacht werden.

Selbst wenn alle Eckpunkte innerhalb wären, könnte der Köper immer noch mit dem mittelteil eine Fläche "raushängen". Also alle Flächen des einen Körper gegen alle des anderen Testen. Dann reicht es auch, einen Eckpunkt auf "innerhalb" zu testen.

Insgesammt also schon einiges an Aufwand, insbesondere wenn es numerisch "sauber" sein soll.
"Games are algorithmic entertainment."

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

3

19.04.2005, 11:09

Im Grunde muss ich davon ausgehen, dass alle möglichen Körper lade. Aber die Idee mit dem Strahl ist gut. Danke!
Ich werd mal die Idee weiterverfolgenen und mal schaun, wie ich das ganze in OpenSG implmentiere.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

4

19.04.2005, 11:23

Wenn Du nicht weisst, ob die Objekte Löcher haben und es trotzdem durchziuehen willst, mach mindestens folgenden Check:

Wenn ein Körper eine Kante mit mehr oder weniger als zwei Nachbarflächen hat, kannst Du Ihn als "verdeckenden" Körper vergessen, da er nicht vernünftig ein Volumen beschreibt.
"Games are algorithmic entertainment."

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

5

19.04.2005, 12:45

japp, dann kann man ja quasi reingucken.
Bin grad dabei rauszusuchen, welche Methoden OpenSG anbietet, um die Sache zu vereinfachen. Ich muss nur aufpassen, dass der Rechenaufwand nicht zu groß wird. Gerade mit den Strahlen, denn das werden ja doch einige.
Außerdem hab ich noch noch nicht rausgekriegt, wie ich einige Polygone eines Objektes rendern lassen kann und andere nicht. Das wär dann das nächste Problem.

Werbeanzeige