![]() |
OpenGL für CAD Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich entwickle derzeit eine Anwendung die mit Vektorgrafiken arbeitet. Bisher erfolgt die Ein- und Ausgabe der Grafik mit VCL-Bordmitteln über TBitmap-Puffer und den standard Canvas-Funktionen. Bei der Ausgabe handelt es sich um Vektor-Informationen wie Punkte (X/Y/Z), Linien (Referenzen auf die Punkte) sowie Volumenkörper (Hexaeder, ebenfalls mit Referenzinformation auf die Punkte). Im Anhang mal ein (sehr einfaches und altes) Beispiel wie sowas aussieht. Nun habe ich das Problem, dass die Ausgabe einige Aspekte nicht abdeckt, die allerdings immer wichtiger werden: 1. Ausblenden / Abblenden verdeckter Kanten 2. Färben der Flächen 3. ... Die Ausgabe soll später in die Richtung wie z.B. bei Sketchup erfolgen. Dabei ist halt wichtig, dass mir alle Informationen zum Modell vorliegen. Damit meine ich, dass ich auch das "Innenleben" der Bauteile habe. Ich habe diesbezüglich mal etwas geforscht und mir scheint die optimale Lösung OpenGL zu sein (wie das Sketchup beispielsweise auch nutzt). Leider sind im Internet alle Informationen die ich gefunden habe immer für Spieleentwickler konzipiert. Da geht es halt um Oberflächenmodellierung, Echzeitanimation usw.. Ist für mich aber alles kein Thema. Ach ja: VCL soll auf jeden Fall bleiben. FMX ist für mich keine Option. Bleibt eh alles nativ auf Windows. Nun zu meiner Frage: Weiß irgendjemand wo man entsprechend Literatur her bekommt? Die DelphiGL-Seite war ja erstmal net schlecht, beschäftigt sich aber auch "nur" mit der Spieleentwicklung. Die meisten OpenGL-Hilfen sind leider sehr spezifisch auf C oder JAVA gemünzt. Wäre prinzipiell nicht das Problem, aber es gibt doch gerade in Hinsicht auf die VCL doch einige Hürden... Schön wäre so eine allgemeine Leitlinie mit: - Wie arbeitet OpenGL (Zustandsautomat und was muss da wo und in welcher Reihenfolge eingestellt werden etc.) - Welche Darstellungsarten gibt es (Ortho etc.) - Was kann im Normalfall auf der Ebene der Grafikkarte und was muss auf Rechnerseite erledigt werden - OpenGL-Referenz mit Beispielen (leider sind fast alle Referenzen die ich bisher gefunden habe nur mit rudimentären Erklärungen und nicht mit entsprechenden Beispielen versehen. Auch DelphiGL bildet da keine Ausnahme). Ich weiß, dass ist sehr viel Info die ich da suche. Ich bin aber im Moment halt in der Vorbereitungsphase und versuche möglichst viel Infos zu sammeln. Evtl. liege ich ja mit OpenGL auch ganz falsch? Keine Ahnung. Am Liebsten wären mir gedruckte Bücher zum Theme... Vielen Dank schon mal fürs Lesen und evtl auch fürs Antworten :-D Alex |
AW: OpenGL für CAD Anwendung
Eine komplette, gut lesbare OpenGL-Referenz habe ich bisher auch noch nicht gesehen.
Wichtig zu wissen: Nur modernes OpenGL ist schnell. Wer jeden Vector einzeln auf auf die Grafikkarte schiebt oder schlecht unterstützte Funktionen nutzt, wird langsam. Auf ![]() |
AW: OpenGL für CAD Anwendung
Zitat:
Danke Alex |
AW: OpenGL für CAD Anwendung
Muß es denn unbedingt nativ sein?
Eventuell kannst du auch eine GameEngine dafür benutzen. Die Unreal-Engine solll sowas von einfach sein ... damit hat letzens Einer in nur 3 Wochen das das Flappy Bird nachprogrammiert. ![]() ![]() OK, das Beispiel war jetzt nicht ganz ernst gemeint, aber im Prinzip gibt es einige Engines, welche sich in Delphi leicht benutzen lassen und dir Einiges an Arbeit abnehmen. z.B. 1. Ausblenden / Abblenden verdeckter Kanten 2. Färben der Flächen 3. ... Zitat:
OK, bei Java ist es eventuell etwas anders, aber in C greifst du ja am Ende auf die selben APIs zu, womit es da grundsätzlich keine Unterschiede gibt. |
AW: OpenGL für CAD Anwendung
Also ich habe so ein Cad-Ähnliches-Ding mit Delphi + OpenGL umgesetzt bzw es ist immer noch in der Entwicklung. Für Cad-Sachen kannst Du nicht auf diese Spiele-Frameworks und überhaupt nicht auf FMX setzen . -das ist meine Meinung-
Ich habe es von unten hochprogrammiert und mir die meisten Infos aus DelphiGL geholt. Das ganze ist aber so nicht in 5 Minuten zu verstehen. 3D-Programmierung kostet viel Einarbeitungszeit auch in entsprechende Mathematik. Zitat:
2.) Es gibt einen Ortho- und einen Perspektiv-Modus. Ansonsten kannst Du das über eine ensprechende Matrix auch selbst einstellen. 3.) ... 3.) DelphiGL hat schon einige Beispiele. Da muß man vielleicht auch mal tiefer tauchen, aber da sind sie schon. Es gibt auch eine ganze Tutorial-Serie, die zwar alt aber anfangs sehr nützlich ist. Ansonsten kostet das ganze sehr intensive Einarbeitungszeit. Gruss Jens |
AW: OpenGL für CAD Anwendung
Ich bin seit mehr als einem Jahr an einem ebenen CAD Programm dran. Setze den ganzen Kram ohne Hilfsmittel auf (war ein Fehler). Ist quasi ein Marathonlauf. Der geneigte User möchte neben dxf Import auch branchenspezifische Grafikobjekte und AddOns (in meinem Falle ein Bewehrungsmodul für Stahlbeton). Letzteres dauert nochmal mind. 3 Monate. Ohne diese AddOns ist ein CAD Programm schlicht unverkäuflich ("Da kann ich auch DraftSight verwenden"). Es ist auch ein Unterschied wieviele Objekte du darstellen möchtest. Bei mehr als ca. 1000 muß man m.E. interne Berechnungen z.B. Schnittpunkte von Threads erledigen lassen sonst wird das Programm mit zunehmender Zahl der Objekte viel zu langsam. Und das Ganze jetzt noch im Raum? Das Bild bei jedem MouseMove oder Zoom neu zu berechnen kann man sowieso vergessen. Festzustellen ob eine Line sichtbar ist oder nicht dürfte sehr zeitaufwendig werden? Da sind ja dann für die Projektion ggf. neue Sichtkanten einzuführen. OpenGL ist ganz nett aber nix Besonderes. Es gibt professionelle Engines, aber so um die € 2000,- (zzgl. X € je AppUser).
|
AW: OpenGL für CAD Anwendung
Zitat:
Aber Cad ist eine aufwendige Sache, die mit OpenGL stark vereinfacht wird. Das Entwerfen und Positionieren von Objekten muß man natürlich selbst machen. OpenGL übernimmt "nur" die Darstellung. Wenn Du ein richtiges Cad erstellen willst, eignet sich auch sowas wie Spatial. Die brauchen gar kein OpenGL, weil die sowas selbst programmieren. Die Grundversion kostet da aber auch irgendwas im 5-stelligen Bereich zzgl Einzellizenzen für jeden Kunden. |
AW: OpenGL für CAD Anwendung
für CAD gibt es OpenCascade (OpenSource).
Das scheint sehr leistungsfähig zu sein, ist aber in C++ programmiert. Mit Delphi hat man keinen direkten Zugriff. Es gibt jedoch eine ActiveX Schnittstelle von "East Wind Software" ( ![]() Das ist zwar nicht kostenlos aber die Lizenz ist wenigstens "royalty free". |
AW: OpenGL für CAD Anwendung
OpenCascade scheint gut zu sein. Es gibt aber nur so einen veralteten Delphi-Wrapper.
Das ist aber auch ein kommerzielles Projekt, wo ich nocht nicht weiss, wie die ihr Geld verdienen. "East Wind Software" - Bin mir nicht so sicher, ob das sein Geld wert ist. ![]() |
AW: OpenGL für CAD Anwendung
Zitat:
|
AW: OpenGL für CAD Anwendung
Hallo zusammen,
erstmal vielen Dank für die zahlreichen Antworten und Vorschläge. Das eine oder andere konnte ich da bereits raus fischen... Der Titel "CAD Anwendung" war natürlich etwas provozierend gewählt (mit Absicht). Ich erstelle hier keine CAD-Anwendung sondern stelle eigentlich nur fertige Objekte dar. Diese sind nur marginal bearbeitbar (Position, Rotation). Die Basisobjekte werden derzeit mit Sketchup erstellt. Da gibt es dann einen Export den ich mit RUBY erstellt habe. Diese Datei wird in einen mit Delphi programmierten Editor geladen. Dort kann ich dann so Dinge wie Basisposition, Diskretisierung usw. durchführen. Das so manipulierte Objekt wird dann in ein weiteres Programm importiert. Dort wird dann aus Basisobjekten eine Gesamtkonstruktion erstellt. Diese wird dann weiter "verkabelt" und für die später erforderlichen Berechnungen präpatriert. Natürlcih passiert da im Hintergrund noch einiges mehr aber im Wesentlich geht es mir um eine saubere Darstellung. Was habe ich also wirklich für Anforderungen: - Darstellung der Objekte mit verschiedenen Modi (Solid, Wireframe, Culling...) - Bei der Darstellung benötige ich Zugriff auf die Farbe jeder Linie und Fläche - Positionieren der Zeichnung (zoomen, drehen, schieben) - Mit der Maus sollen auch Linien, Punkt selektiert werden können Obiges habe ich bis auf ein paar Dinge wie "Culling" usw. bisher über den Standard-Canvas sowie selbst erstellte Matrix-Operationen etc. bisher alles gelöst bekommen. Witzigerweise waren viele meiner mühsam erstellten Entwicklungen des letzten Jahrs in einer Delphi-Version (glaube XE5) zum Großteil plötzlich als Standard integriert :-)... Wie gesagt: Die meisten Dinge habe ich mit Bordmitteln am laufen. Da geht auch recht schnell. bei ca. 40.000 Linien benögt das Zeichen etwa 50 ms. Allerdings ohne Antialiasing usw.. Weiterhin wird halt alles einfach übereinander gezeichnet. Was ich bereit gemacht habe ist eine "BackToFront"-Sortierung der Element. Es werden also nach jeder Drehung die Element sortiert und von hinten nach vorne gezeichnet. Somit habe ich zumindest eine teilweise realistische Abdeckung... Da die Teile halt jetzt immer aufwändiger werden ist eine neue Darstellung absolut notwendig. In der bisherigen Fassung besteht so ein Objekt mal schnell aus über 100.000 Linien (und entsprechen Punkten und Volumenelementen)... Habe hier auch zwei Bücher liegen, die auf den ersten Blick nicht schlecht - bei genauerem Hinsehen dann aber doch wieder spezifische Dinge wie GLUT usw. verwenden. Die Bücher sind "Computergrafik 2. Auflage" von "HANSER" und "Lehrbuch der Grafikprogrammierung" von "Spektrum akademischer Verlag". Bin also für alle weiteren Tipps dankbar. Viele Grüße Alex |
AW: OpenGL für CAD Anwendung
Also das, was Du da haben willst, schreit eigentlich nach OpenGL oder Direct3D. So wie Du es jetzt machst, ist es -so von hier gesehen- sehr aufwendig.
Zitat:
Probleme ergeben sich nur bei transparenten Flächen. Da die entweder sortiert sein oder mit einem aufwendigen Shader gezeichnet werden müssen. ![]() veraltet aber trotzdem gut: ![]() ![]() usw |
AW: OpenGL für CAD Anwendung
Hallo Alex,
ich werfe hier mal ![]() Habe damit bissher gute Erfahrungen gemacht. Gruss, Jörn |
AW: OpenGL für CAD Anwendung
Hi,
vielen Dank für die tollen Links. Werde mich da mal durchlesen. Leider gehe ich nächste Woche für ein paar Wochen geschäftlich nach China. Da ist das Internet halt net so toll. Deshalb suche ich halt auch gute "Offline"-Dokumente. Ich bin halt immer inspiriert von Sketchup. Die Darstellung finde ich da genial. Auch mit den Optionen "Rönten", "Hinterkanten", "Drahtgitter", "Linienausblendung" usw.. Wäre genau das was ich benötige. Das Teil ist ja auch bei umfangreichen Zeichnungen sehr schnell. Texturen brauche ich ja nicht. Ich färbe die Teile nur mit festen Farben ein. Diese basieren dann auf Berechnungen... Aufwändig? Ja. Das ist mir klar. Ist aber eine Entwicklung die eh über Jahre läuft und ich sitze da beruflich drann. Ab und zu kommen mal ein paar Aufträge dazwischen die mich mal für ein bis zwei Wochen binden. Ansonsten habe ich die volle Arbeitszeit zur Verfügung :-). By the way: Wo findet man gute (professionelle) Delphi-Programmierer mit mathematischen Kenntnissen. Haben da noch ein paar sehr spezielle Dinge für die mir momentan die Zeit fehlt. Wäre nur für zeitlich begrenzte bzw. in sich abgeschlossene Aufgaben. Gruß Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz