Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Einfaches 3D-Programm erstellen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.10.2006, 17:05 Uhr
~Player140
Gast


Hi,

ich möchte ein einfaches Programm erstellen welches mir 3D-Dateien einlesen kann, dazu habe ich für den Anfang keine bestimmten Anforderungen, nur zur Übung irgendein Format, es würde sich z.B. das 3ds-Format anbieten, aber das soll im Moment noch nicht mein Problem sein.

Mein Problem ist, wie ich all das regle mit Vertexes (Punkten) u. den Polygone (Flächen).
Ich brauche also ein anständiges Konzept wie ich den Aufbau der Objekte programmintern verwalte um später möglichst kompfortable Funktionen schreiben zu können mit denen ich das Objekt modifizieren kann u. rendern kann.
Ich habe mir dazu schon einige Dinge überlegt, wüsst aber trotzdem gerne wie man das professionell angeht, gibt ja sicher einige theorien dazu (wie wird das z.B. in 3D Studio Max oder Cinema 4D Gehandhabt, auch wenn das keiner weis *g* der nicht am Sourcecode sitzt).

Außerdem wüsst ich gerne was sich für die Ausgabe besser eignet: DirectX oder OpenGL?
Ich Tippe jetzt einfach mal auf OpenGL, das wird ja von den meisten Programmen benutzt.

Ich weis aber doch nicht so recht auf was ich aufbauen will. Einerseits möchte ich früher oder später anfangen eine kleine Engine für DirectX zu bauen, da die Möglichkeiten hier ja doch höher sind als bei OpenGL, auch die Ergebnisse sind beeindruckender. Dieses Projekt das mir jetzt eher dazu dienen soll besser C++ u. anderes zu lernen würde sich daher anbieten DX zu verwenden um erste Erfahrungen damit zu sammeln.

Andererseits möchte ich vielleicht auch mal probieren möglichst so zu programmieren dass ich das Programm auch auf Linux laufen lassen kann, könnt ihr mir hier sagen was sich eher anbietet für die Anzeige der Modelle u. drehbare Kamera, Selektieren von Polygone u. Punkte...?


Meine dritte Frage weicht etwas vom Thema ab, muss auch nicht umbedingt drauf eingegangen werden:
Ich wüsste gerne noch wie das mit C# ist: Ist die Syntax hier einfacher zu erlernen u. die ganze Sprache übersichtlicher, kann ich wenn ich halbwegs gut C++ kann auch leicht auf C# überspringen, oder gibts dann einer erneute harte lange Lernzeit?
Programmieren kann ich VB schon ziehmlich gut, das Grundverständnis habe ich also, weis auch im Berufsschulunterricht das meiste über Klassen usw. erhoffe mir also auch dass ich jetzt für den Anschluss zu C++ nicht allzu lange brauche. Die Basics wie Kontrollstrukturen, Arrays, Klassen u. Objekte kann ich ja schon, das mit den ganzen Headerfiles ist denke ich eine Sache der Erfahrung. Alles in allem ist alles in C++ ziehmlich gewaltig umfangreich u. um alles zu verstehen braucht man denke ich doch einiges an Zeit. Ist das in C# einfacher?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.10.2006, 17:49 Uhr
stephanw
localhorst


Was willst Du denn nach dem Einlesen genau damit machen ? Selbst ein einfaches "nur Anzeigen" in einem simplen Viewer erfordert einige Überlegungen: man möchte wahrscheinlich die Kamera so positionieren, dass man zunächst die gesamte Szene sieht. Man möchte vielleicht auch grob herum navigieren oder als Wireframe anzeigen etc... . Das heißt, Du hast noch eine Menge Probleme mehr, als Du selbst bereits geschildert hast, insgesamt etwa:

* C/C++
* compiler- und IDE-spezifische Sachen
* Computergrafik
* 3D-Bibliothek, Render-Engine, was auch immer (OpenGL)
* Dateiformat (3ds oder was auch immer)
* ... ?

We ich aus Deinem Beitrag herauslese, hast Du erstmal allgemein Interesse an Computergrafik, C/C++ und dem Programmieren. Ich würde als Einsteiger nicht OpenGL oder DirectX empfehlen, da ist die Hürde viel zu groß. Stattdessen würde ich empfehlen, ein Highlevel-3d-Grafikpaket oder Game-Engine zu nehmen und damit herumspielen. D.h., erstmal auf Deinem System überhaupt zum Laufen bekommen (übersetzen, eigene Hello-World-Programme damit schreiben und sehen, dass es kompiliert und linkt) und dann so weiter.
Wenn Du (lobenswerterweise) platformübergreifenden Code schreiben willst, kommst Du nicht umhin, eine Lib zu verwenden, die auf OpenGL aufbaut.
Ich kenne leider keine Game-Engine wirklich, aber ich könnte Dir z.B. OpenInventor empfehlen. OpenInventor ist keine Game-Engine, hat aber einige schöne Mitbringsel. Du hast z.B. eine Viewer-Klasse, die Dir Deine Szene fertig darstellt, mit all den oben genannten Punkten. Du kannst *.iv und *.vrml -Files einlesen, die Du im Klartext selbst schreiben kannst und damit auch Computergrafik erlebbar lernen kannst (Transformationen, div. Shapes, Materialien, etc.).
Vergleichbar mit OpenInventor ist auch OpenSG, kenne ich aber weniger und kann nicht viel dazu sagen.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.10.2006, 19:50 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~Player140:
Hi,

ich möchte ein einfaches Programm erstellen welches mir 3D-Dateien einlesen kann, dazu habe ich für den Anfang keine bestimmten Anforderungen, nur zur Übung irgendein Format, es würde sich z.B. das 3ds-Format anbieten, aber das soll im Moment noch nicht mein Problem sein.


Hi,
ich befürchte dass du den Aufwand für ein solches Projekt "etwas" unterschätzt.
Ich arbeite nebenbei an nem ähnlichen Projekt(CAD Viewer mit Projektmanagment) und ich kann dir versichern dass von "einfachem Programm" in diesem Zusammenhang keine Rede sein kann.
Ich möchte dich nicht demotivieren (schließlich arbeite ich selber an meinem Projekt um meinen Horizont zu erweitern) aber ob dass jetzt das geeignete Projekt ist um seine ersten Schritte mit C++ zu machen,möchte ich doch anzweifeln.
Ansonsten,wenn du Plattformunabhängig programmieren möchtest bleibt im Grunde ja nur OpenGL.
Für den "Anfang" würde es sich wahrscheinlich erstmal anbieten wenn du fertige Libs benutzt.
Bei SourceForge.net kannst du z.B. jede Menge Libs finden um mit 3ds Files zu arbeiten.

Gruß Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.10.2006, 20:26 Uhr
BoBtheREapER
kein job für nen BoB


also am einfachsten ist es wahrscheinlich directx zu verwenden das unterstützt das X format. frag mich nicht wie genau das funktioniert (ich kenne mich nur opengl aus)
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.10.2006, 20:28 Uhr
BoBtheREapER
kein job für nen BoB


momentan benutze ich für ein projekt die irrlich engine. die ist opensource und auch ganz brauchbar
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.10.2006, 21:55 Uhr
~Player140
Gast


Naja, in C++ bin ich noch Anfänger, verstehe aber doch schon nicht gerade wenig vom programmieren an sich u. sehe es nicht als so großes Problem mich in C++ einzuarbeiten.

Dass ich das Programm einfach genannt habe war wohl ein Fehler. So einfach wirds sicher nicht, aber mit dem einfachen habe ich gemeint, dass ich zuerst mal zur ein 3D-Modell darstellen möchte u. rendern möchte, wenn das geht importieren (dazu kann ich von mir aus auch eine fertige lib nehmen).
Mich würden einfach mehr Praktiken zur Klassenstruktur interessieren, die die Polygone u. Vertexes beschreiben soll damit ich mir besser Gedanken machen kann wie ich das ganze am strukturiertesten angehen kann.

In VB habe ich schonmal eine kleine Direct-X 3D-Anzeige programmiert in der einfach ein paar Polygone angezeigt werden, war aber ehrlich gesagt mehr Copy-And-Paste, allerdings habe ich verstanden was da abgeht, also die Hintergründe. Dieses Projekt möchte ich jedoch lieber in C++ angehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.10.2006, 21:58 Uhr
~Player140
Gast


Achja, mit "einfach" meinte ich dass das Programm erstmal nur die o.g. Dinge tun können soll, nicht wie 3ds Max oder ähnliches Programm ewig viele Funktionen zur bearbeitung beinhalten soll. Mir ist klar dass ich das alleine nicht schaffen könnte, zumindest nicht in einem angemessenen Zeitrahmen. Das ist auch nicht mein Ziel da ich falls ich das erste Ziel schaffe vielleicht eines Tages ein kleines Toole daraus programmieren möchte mit dem ich bestimmte Aufgaben beweltigen kann, also automatisieren der Erstellung bzw. bearbeitung eines geladenen Modells.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: