3D Koordinatensystem - Verzweifelung

wie schnell wär das für dich ? Was verstehst du unter 'schnell geschrieben' ?
Das hängt davon ab, wie deine 3D Koordinaten für die Rohre vorliegen, gib mal ein Beispiel.
Wenn du jetzt mit 1-2 Stunden anfängst, dann muß ich mich mit meinem schlechten Englisch doch durch das Thema schieben ...
Naja 1-2 Stunden werden da nicht ausreichen. Es sei denn du bist schon absolut fit in OpenGL und VB. Nicht mal dann wäre das in 1-2 Stunden geschrieben.
Allerdings solltest du dir genau im klaren sein was du möchtest und außerdem auch die Vorteile eines OpenGL Displays sehen:
- echte 3D Ansicht
- Du kannst dein Objetkt drehen, zoomen und verschieben
- gute Verarbeitung von bestehenden 3D Geometriedaten
- usw...

Natürlich will ich dich nicht von der Picturebox abhalten, aber da hast du hald keine echte 3D Ansicht.

Gruß Homer
 
Hi,

Ein Beispiel, ok.

Also die Daten liegen z.B. in folgendem Format vor:
Position-------X-------------Y-------------Z---------------Radius
1----------------1194,30----121,70----- 34,30------- 0
2----------------1126,30----191,80----- 35,30------- 35
3----------------966,50------10,50------ 23,20------- 35
4----------------924,80---- -115,70----- 92,10------- 35
5----------------924,80---- -157,70----- 92,10-------- 35
6----------------949,90---- -195,60----- 87,60------- 35
7----------------949,90---- -347,10----- 92,10------- 35
8----------------628,40---- -347,10----- 92,10------- 35
9----------------578,30---- -385,80----- 28,90------- 35
10--------------505,00---- -385,80----- 28,90-------- 35
11--------------565,50---- -346,50----- 120,40-------35
12--------------162,80---- -346,50----- 253,40------ 35
13--------------122,20---- -307,00----- 280,00------ 35
14--------------121,10---- -265,40----- 360,00------ 35
15--------------112,40---- -181,40----- 359,10------ 35
16---------------26,20----- -69,90------- 340,80------ 35
17---------------26,20------50,00--------340,80------35
18---------------69,50------102,50------ 303,80------35
19---------------177,70----102,50------ 321,90------35

Da ich kaum etwas über OpenGL und VB gefunden hab, hab ich mich entschieden eine dll in C++ zu schreiben auf die mein VB zugreift. Leichtergesagt als getan mußte ich schmerzlich feststellen.
Bis jetzt hab ich es nicht mal hinbekommen ein Sample zu kopieren und in MSVC6 zum laufen zu bringen.

Wie du schon sagtest sollten alle Merkmale die du aufgeführt hast vorhanden sein (zoom, drehen etc.)

Ich denke wenn ich mit VC6 mal klarkommen würde, schreibn ich da einfach ne executable und rufe diese per Shell unter VB auf. Naja, da bin ich noch lange nicht, muß erstmal so klar kommen.

Sind eigentlich die OpenGL Dateien (glut.h / glut32.lib etc. ) immer alle gleich, oder benötige ich extra Versionen für MSVC6 ?

Gruß
 
Ein Beispiel, ok.
Also die Daten liegen z.B. in folgendem Format vor:
Position-------X-------------Y-------------Z---------------Radius
1----------------1194,30----121,70----- 34,30------- 0
2----------------1126,30----191,80----- 35,30------- 35
3----------------966,50------10,50------ 23,20------- 35
...
Was sind das für Koordinaten?
Bezugspunkte?
Und in welchem Zusammenhang steht dabei der Radius?
Da ich kaum etwas über OpenGL und VB gefunden hab,
Wie gesagt: http://nehe.gamedev.net/
Dort gibt es (zumindestens für die anfangs-lessons) auch VB-Codebeispiele.

Gruß Homer
 
Zuletzt bearbeitet:
Hi,

Nunja die Daten sind eben die Maßpunkte auf den Achsen in einem gewöhnlichen 3D - Koordinatenfeld.

Da es sich um Rohre handelt, haben die Verbindungspunkte zwischen den Geraden natürlich einen Radius, in diesem Fall soll das 35mm sein.

Gint es bei OpenGL eine Function glTUBE, das wär der Hit, dann könnt ich auf schnellem weg zumindest teilerfolg haben :) und besser in OpenGL einsteigen (Verständnismäßig).


Gruß
 
Also ein glTUBE gibt es nicht aber gluCylinder, allerdings wird dabei GLUT benötigt, was eine Zusatzlibrary für OpenGL ist. Und ich bin mir nicht sicher, ob das auch unter VB einsetztbar ist, aber ich denke schon.
Mit dem GLUT kann man relativ bequem primitiven Zeichnen (Zylinder, Kugel, oder äh).
Aber da du ja gebogenen Rohre erstellen möchtest, würde ich dir zu einer reinen Verarbeitung von Koordineten raten.
Ich würde das ganze in etwa so machen:
Zunächst hast du für dein Rohr einige Referenzpunkte (also die Querschnitte) die du als Kreise betrachtest (bzw. als Vielecke, es gibt ja keine Kreise in 3D) sagen wir mal mit einer Unterteilung von etwa 48 oder 72 oder mehr (je nach Grafik, bzw. Rechenpower)
von diesen Kreisen benötigst du dann einfach nur die 3D Koardinaten vom Mittelpunkt und den Radius, und den Vektor, wie der Kreis im Raum steht.
Gezeichnet werden diese Pseudokreise nicht, sondern es werden dann nur die Eckpunkte für die Hülle verwednet.
Jetzt hast du sagen wir mal 10 Kreise für ein bestimmtes Rohr, nun verbindest du die Eckpunkte der Kreise (ich weiß Kreise haben keine Ecken, in OpenGL sind das ja auch Vielecke, s.o.). Somit hast du dann ein Drahtgitter, des Rohres.
Das nur aus den Ausenlinien besteht.
In wirklichkeit sind das allerdings Polygone bzw. Dreiecke.
Als Anhang hab ich mal ein Bild rein, was den Vorgang etwas verdeutlicht. (ist allerdings mal schnell mit einem 3D Programm erstellt worden).

Wenn du dann da noch eine entsprechende Textur drauflegst, und die Normalenvektoren berechnen lässt, und die Szene entsprechend ausleuchtetst, dann sieht das ganz nett und vorallem auch RUND aus.

Das ganze klinkt jetzt aufwendiger als es scheint, glaub mir, wenn du ein wenig Mathematikverständnis und Programmierverständnis mitbringst, dann kannst du sowas in ein paar Tagen fertig haben.

Außerdem hast du ja noch tutorials.de (und mich :) ).


Überleg dir das ganze gut, ob du das mal schnell unprofessionell machen willst, oder ob du das gleich gescheit machen willst.

Gruß Homer
 

Anhänge

  • rohr.jpg
    rohr.jpg
    37,2 KB · Aufrufe: 578
Zuletzt bearbeitet:
Hi,

Ja eigentlich sollte das zu bewerkstelligen sein, allerdings scheiterts an einigen Verständnisproblemen.

Die Seite von NeHe ist ja prima, allerdings ist mein Englisch zu bescheiden um wirklich etwas damit anfangen zu können.

Auch fehlen immer wieder einige Libs um etwas zum laufen zu bekommen.

(glut.h, glaux.h etc. ) Ich finde sie einfach nicht. Desweiteren fehlt mir immer noch das verständnis (Sprachprblem Englisch) wie das ganze initialisiert wird (glInit)

Desweiteren ist mir immer noch nix eingefallen, wie ich die Radien zeichnen könnte, da die geforderten Winkel sehr viel spitzer und die Radien sehr viel kleiner sind als in deinem Beispiel.

Wenns doch was gutes in Deutsch geben würde, hach wär das schön.

Aber Vielen Dank für dein Interesse, freue mich sehr.



Gruß
 
Wie gesagt, es gibt die NeHe Tutorials auch auf deutsch. Sind zwar nicht alle, aber auf alle Fälle die wichtigsten. Man muss nur etwas suchen:
http://www.codeworx.org/opengl_tuts.php

Warum machst du das jetzt nicht in VB, ich dachte da hast du schon Erfahrungen für deine Zwecke sollte da VB schon ausreichend sein.

Das mit den Radien und Größen ist alles relativ.
Was meinst du mit "spizer" wie sieht denn so ein Beispielrohr aus, mach doch mal ne grobe Zeichnung.

Gruß Homer
 
Hi,

hier mal ein Screenshot von der bisherigen Programmversion mit der Grafikansicht via PictureBox:



Hab jetzt 2 Tage Urlaub. Mal sehen ob ich in der Zeit was gerlernt bekomme :)

Gruß

PS: Warum machst du das nicht in VB --- Weil es für VB umsoweniger Beispiele gibt ... Aber ich versuche und Suche nochmal ...
 

Anhänge

  • beispielrohr.jpg
    beispielrohr.jpg
    50,3 KB · Aufrufe: 363
Zuletzt bearbeitet:
Hi ...

Folgendes Quadrat via Maus zu Manipulieren (Größe, Drehrichtung, Farbe etc. ) war doch ziemlich einfach

glBegin bmQuads ' Draw A Quad
glColor3f 0#, 1#, 0# ' Set The Color To Blue
glVertex3f 1#, 1#, -1# ' Top Right Of The Quad Top)
glVertex3f -1#, 1#, -1# ' Top Left Of The Quad Top)
glVertex3f -1#, 1#, 1# ' Bottom Left Of The Quad Top)
glVertex3f 1#, 1#, 1# ' Bottom Right Of The Quad Top)
glColor3f 1#, 0.5, 0# ' Set The Color To Orange
glVertex3f 1#, -1#, 1# ' Top Right Of The Quad Bottom)
glVertex3f -1#, -1#, 1# ' Top Left Of The Quad Bottom)
glVertex3f -1#, -1#, -1# ' Bottom Left Of The Quad Bottom)
glVertex3f 1#, -1#, -1# ' Bottom Right Of The Quad Bottom)
glColor3f 1#, 0#, 0# ' Set The Color To Red
glVertex3f 1#, 1#, 1# ' Top Right Of The Quad Front)
glVertex3f -1#, 1#, 1# ' Top Left Of The Quad Front)
glVertex3f -1#, -1#, 1# ' Bottom Left Of The Quad Front)
glVertex3f 1#, -1#, 1# ' Bottom Right Of The Quad Front)
glColor3f 1#, 1#, 0# ' Set The Color To Yellow
glVertex3f 1#, -1#, -1# ' Bottom Left Of The Quad Back)
glVertex3f -1#, -1#, -1# ' Bottom Right Of The Quad Back)
glVertex3f -1#, 1#, -1# ' Top Right Of The Quad Back)
glVertex3f 1#, 1#, -1# ' Top Left Of The Quad Back)
glColor3f 0#, 0#, 1# ' Set The Color To Blue
glVertex3f -1#, 1#, 1# ' Top Right Of The Quad Left)
glVertex3f -1#, 1#, -1# ' Top Left Of The Quad Left)
glVertex3f -1#, -1#, -1# ' Bottom Left Of The Quad Left)
glVertex3f -1#, -1#, 1# ' Bottom Right Of The Quad Left)
glColor3f 1#, 0#, 1# ' Set The Color To Violet
glVertex3f 1#, 1#, -1# ' Top Right Of The Quad Right)
glVertex3f 1#, 1#, 1# ' Top Left Of The Quad Right)
glVertex3f 1#, -1#, 1# ' Bottom Left Of The Quad Right)
glVertex3f 1#, -1#, -1# ' Bottom Right Of The Quad Right)
glEnd ' Done Drawing The Quad

Hier jedoch meine Fragen:
Als Initial wird bmQuads angegeben, welche Formeninitials gibt es denn noch ?
Ausser bmQuads und bmTriangles kennt er nix, ist das richtig, oder gibts da noch mehr ?
 

Neue Beiträge

Zurück