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

24.03.2005, 19:37

Boolscher Operator

Ich habe eine Platte. Jetzt will ich in diese Platte ein Loch bohren. Wie kann ich dies in Echtzeit machen. Bei einem 3D-Modelierungs Prog kann man einfach eine Zylinder von der Platte mit boolschen Operator Subtrahieren. Wie kann ich dies berechnen?

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

25.03.2005, 00:04

Willst Du beliebige 3D Geometrien voneinander abziehen oder ist es im wesentlichen ein 2D Problem?
"Games are algorithmic entertainment."

Anonymous

unregistriert

3

25.03.2005, 11:32

Ich muss eigentlich nur einen Zylinder und einen Quader von einem anderen Quader abziehen. Ich weiß nicht ganz genau, was du mit 2D-Problem meinst.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

25.03.2005, 13:30

Man suche bei Google nach
realtime CSG rendering
und werde fündig!

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

25.03.2005, 13:38

Die Frage ist eben ob das Ergebniss immer eine 2D Figur ist, die eben nur in die Tiefe gezogen ist, was manche übrigens 2 1/2 D nennen. Dies erleichtert die Sache sehr deutlich. Wenn Du z.B. schräge "Bohrungen" zulässt oder welche, die nicht völlig durchgehen, dann ist es 3D.

Also, gehen die Bohrungen immer voll durch die Platte durch? Sind sie immer gerade?

Ist die Zahl der Seitenflächen des Zylinders immer die selbe?

Wird jede Platte nur einmal durchbohrt?
Wenn nein:
Können Bohrungen überlappen? Werden Quader und Zylinder gemischt angewandt oder wird eien platte immer nur von Quadern ODER von Zylindern durchbohrt?
"Games are algorithmic entertainment."

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

6

25.03.2005, 13:42

Zitat


Man suche bei Google nach
realtime CSG rendering
und werde fündig!


Was mich zu der nächsten Frage bringt ;) :
Muss es nur so aussehen, als ob die Platte durchbohrt ist oper brauchst Du wirklich ein 3D Model der Platte mit Polygonen? Letzteres ist z.B. der Fall, wenn Du in einen Editor eine Boolsche Operation einbaust und man das Object dann beliebig weiter bearbeiten kann.
"Games are algorithmic entertainment."

Anonymous

unregistriert

7

25.03.2005, 15:52

zu 1) Die Bohrungen gehen nicht immer durch die Platte, aber sie sind immer gerade.
zu 2) Die Zahl der Seitenflächen des Zyliders ist immer gleich.
zu 3) Ja, es werden mehrere Bohrungen gemacht und diese können sich auch überlappen und Quader und Zylinder werden gleichzeitig werwendet.
zu 4) Die Platte muss richtig durchbohrt werden und dann als 3D-Model vorliegen. Am Anfang soll nur ein Quader vorhanden sein.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

8

25.03.2005, 16:56

Ok.

Im wesentlichen sehe ich zwei Möglichkeiten:
1. Du nimmst einen Standardalgorithmus, der auch Ei mit Kuh mit Schaf mit Sau vereinigen könnte ;). Der ist zwar wahrscheinlich komplexer, aber es gibt dazu Literatur. Als ich mirs mal Anno Dazumal angeschaut habe, war ein Artikel von einem Herrn Laidlaw am besten. 632 Google hits für
"CSG laidlaw"
bedeuten, dass andere offensichtlich auch so denken und auf seiner Arbeit aufsetzen. Grob gesagt werden die Möglichkeiten, wie sich zwei Polygone schneiden können vollständig aufgezählt und implementiert. Du wirst sicher nicht alle haben, aber rauszusuchen welche bei Dir nicht vorkommen können (und dabei auch 100% sicher sein!) ist sicher aufwendiger als "einfach" alle einzubauen. Ich weiss nicht, inwieweit es fertigen Code gibt, den Du nehmen kannst. Du kannst auch mal auf www.sf.net schauen. Es gibt auch ein Buch zu dem Thema.

2. Du baust eine spezielle Lösung. Deine Anforderungen sind IMHO speziell genug, dass es eine einfachere (sagen wir, weniger Code Zeilen) Lösung für Dein Problem als das allgemeine gibt. Allerdings müsstest Du Dir den Algorithmuss selber zusammenstellen und das "können sich überschneiden" macht das glaub ich zur schlechteren Wahl. Ganhz grob wie ich ohne lang zu überlegen vorgehen würde:

- Deckelfläche rein 2D mäßig machen, dazu All Löcher daring bestimmen und den Rest tesselieren. Hierfür gibt es fertigen Code, z.B. in Mesa. Ob fertigen, guten Code, weiss ich nicht. Die Bodenfläche macht man mit der selben Funktion.

- Den Boden jeden Loches (was nicht durchgeht) machen. Solange es keine Überschneidungen gobt, ist dies der leichteste Schritt.

- Die Seitenwände machen, also normalerweise 4ecke vom Boden der Platte oder des Loches zur Deckelfläche.

Die große Unbekannte sind die Überscheidungen.

Die Quader könntest Du übrigens als Zylinder mit 4 Seiten ansehen.
"Games are algorithmic entertainment."

Anonymous

unregistriert

9

25.03.2005, 17:40

Danke. Ich wer mir dieses Zeugs mal anschauen

Werbeanzeige