BooleanOperator für 3D Geometrien
-
Hi,
sicher kennen einige von euch BoolscheOperatoren/ BooleanOperator für 3D Geometrie (z.B. aus Blender), um 3D Modelle zu 'beschneiden'.
Ich versuche nun schon seit Anfang 2009 diesen Algorythmus selbst zu entwickeln, aber ich komme einfach nicht mehr weiter - ich hab es natürlich auch lange Zeit liegen lassen und dann irgendwann wieder 'dran gearbeitet.
Könnt ihr mit bitte Links zu Webseiten geben, in denen das Verfahren genau beschrieben wird oder Bücher nennen, die sich vor allem mit diesem Thema für 'RealTime 3D Graphic', auseinandersetzen? Ist auch nicht so schlimm, wenn das Buch etwas teurer ist, hautpsache ich kann das endlich irgendwo genau nachlesen.
Danke schon mal im Voraus und noch frohe Weihnachten.
EDIT:
Ich hab gerade gelesen, dass der Begriff "Constructive Solid Geometry" (CSG) wohl auch etwas damit zu tun hat. Kann aber dazu kein Buch finden.
-
Also. Ich meine, dass in diesem Computer Graphics | ISBN: 9780321210562 Buch darüber etwas steht. Ich hatte es mal aus der Bibliothek ausgeliehen, kann deswegen jetzt nicht mehr nachschlagen. Bevor du das Buch kaufst, solltest du erstmal schauen, ob das Thema wirklich da so drin steht, wie du es dir vorstellst.
-
Schau mal hier zu dem Thema:
http://www.povray.org/documentation/view/3.6.1/302/
Da sind alle Sourcen zu bekommen. Vielleicht läßt sich grob was herauslesen.
-
Wie schauen denn die Ansätze des Algorithmus aus, den du bisher hast?
Edit: Ich hab hier so ein etwas teureres Buch, Geometric Tools for Computer Graphics, eine Art Bibel der 2d und 3D Geometrie. Hier gibts einen Abschnitt über Boolesche operatoren auf Polygone. Auf den ersten Blick nicht außergewöhnlich Lang, aber was ich so lese scheint dort erklärt zu sein wie man BSP Bäume dafür benutzen kann, Schnittpunkte berechnet etc.
Allein dafür würd ichs nicht kaufen, aber wenn du mit dem restlichen Inhalt noch was anfangen kannst...
Ansonsten lieber internet.
-
CSG für einen Raytracer zu bauen ist recht schwierig, bis man einmal die Grundprinzipien verstanden hat (und ich war eben zu faul, um diese zu lernen; darum kein CSG für mich in diesem Jahr :p). Jetzt suchst du aber auch noch Material, um CSG für Echtzeitgrafik zu verwenden und da artet es dann einmal wieder in Hacks aus. Vor langer Zeit gab es einmal ein Sample im SDK (ob Direct3D9 oder OpenGL weiss ich leider nicht mehr), wo CSG in Echtzeit über den Z-Buffer realisiert wurde (das Stichwort war, glaube ich, Image Space CSG). Man konnte einem Elefantenmodell Löcher hinzufügen, indem man es mit anderen Gegenständen verknüpfte. Such doch mal danach...
MfG :xmas1:
-
Wo ist dein konkretes Problem?
CSG ist doch ganz einfach erklärt:
Gegeben eine Kugel K und ein Zylinder Z. Wir wollen jetzt mal deren Vereinigung bestimmen, also alle Punkte, die entweder Teil der Kugel sind, oder Teil des Zylinders:
K oder Z
dazu prüfen wir für jeden 3D Punkt, ob (K oder Z) erfüllt sind. Die Punkte die das Erfüllen sind jetzt dein Objekt.
Nun möchtest du wahrscheinlich eher kein Volume-Rendering betreiben, d.h. du suchst nur den Rand deines Objektes. Den erhälts du durch
- Ray-Casting
- Marching Cubes
- den z-Buffer (Ich denke, das sollte ala Shadow-Volumes zu realisieren sein)
- oder Object/Object Intersection Tests (ohne es zu Wissen, denke ich, dass Blender das so macht)Gruss, Jochen
-
hatten wir das nicht schonmal?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-241275