Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi OpenGL für CAD Anwendung (https://www.delphipraxis.net/180594-opengl-fuer-cad-anwendung.html)

BigAl 1. Jun 2014 20:16

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

BUG 1. Jun 2014 20:45

AW: OpenGL für CAD Anwendung
 
Eine komplette, gut lesbare OpenGL-Referenz habe ich bisher auch noch nicht gesehen.
  • Delphi-spezifische technische Details kann man auf DGL nachschlagen.
  • Generelle Vorgehensweise kann man auch aus "Fremdsprachen" ablesen.
  • Das Spiele-spezifische kann man überlesen.
Das Material für OpenGL für CAD-Anwendungen mit Delphi ist vermutlich ziemlich begrenzt :mrgreen:

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 open.gl hat ein Tutorial, was eine Einführung ohne altes Zeug bietet. Allerdings in C++.

BigAl 1. Jun 2014 21:25

AW: OpenGL für CAD Anwendung
 
Zitat:

Zitat von BUG (Beitrag 1260971)
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 open.gl hat ein Tutorial, was eine Einführung ohne altes Zeug bietet. Allerdings in C++.

Das ist schon mal super. Die Seite schein echt gut zu sein. Die Sache mit den Matrizen, dem Umrechnen der Koordinaten, habe ich bisher halt alles manuell gemacht, was auch super funktioniert... Das Grundverständnis ist also da. Mir fehlt halt im Moment noch der Entscheidende "Kick" :-).

Danke
Alex

himitsu 1. Jun 2014 21:30

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.
http://www.heise.de/mac-and-i/meldun...e-2196422.html
http://www.pcgames.de/Tappy-Chicken-...ine-4-1122062/

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:

Die meisten OpenGL-Hilfen sind leider sehr spezifisch auf C oder JAVA gemünzt
Wie BUG es schon sagte, ist die Sprache erstmal egal.
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.

Jens01 1. Jun 2014 23:05

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:

- 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).
1.)Ja,Zustandsautomat. ZB Farbe einstellen, dann wird die Farbe so lange genutzt bis eine andere eingestellt wird. Es gibt aber auch "neuerdings" die Möglichkeit mit einer Art von Objekten zu arbeiten, da könnte es etwas anders sein. Bin aber gerade nicht so firm darin.
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

Bjoerk 2. Jun 2014 13:17

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).

Jens01 2. Jun 2014 13:36

AW: OpenGL für CAD Anwendung
 
Zitat:

OpenGL ist ganz nett aber nix Besonderes.
Bei OpenGl renderst Du mit der Grafikkarte, was eigentlich bei Cad-ANwendungen mit relativ wenigen Objekten (bzw Triangles) schnell geht. Für das andere von Dir angesprochene hat OpenGL meist eine grundsätzliche Lösung.
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.

Raible 2. Jun 2014 16:32

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" (www.eastwindsoft.com).
Das ist zwar nicht kostenlos aber die
Lizenz ist wenigstens "royalty free".

Jens01 2. Jun 2014 16:47

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.

Das könnte auch etwas sein, wenn man dies "net" eingebunden bekommt.

himitsu 2. Jun 2014 16:50

AW: OpenGL für CAD Anwendung
 
Zitat:

wenn man dies "net" eingebunden bekommt.
Irgendwo im CC gibt es eine .Net-Bridge.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz