Tutoiral für 3D-Engine in C
-
Kennt jemand ein gutes Tutorial empfehlen, um eine 3D-Engine in C zu programmieren? Ich möchte das wirklich selbst programmieren, also mit selbst meine ich ohne OpenGL, DirectX, Shader etc.
Wie viel Zeit würdet ihr für eine simple 3D-Engine einplanen? Die Engine soll später mal im eigenen Computer auf AVR-Basis eingesetzt werden. Genauer gesagt über den eigene Basic-Interpreter benutzt werden.
-
Was ist simpel?
Was für ein AVR willst du denn einsetzen?
Und wie erfolgt die Ausgabe?
-
Anforderungen:
- Ein simples 3D-Modelformat
- Eine Kamera
- Perspektivische Projektion
- Shading: Wireframe, Flat, Gouraud, Phong, Texturemapping mit JPG oder Tiff
- Punktlichquelle
- StencilschattenAVR: Model noch nicht bekannt. Soll erst mal unter SDL laufen auf dem PC laufen.
Grafikmodus: Framebuffer, das Signal wird per Hand für VGA erzeugt in geringer Auflösung (max 640x480)
-
Das soll also, wenn ich recht verstehe, alles in Software gerendert werden? Dann besteht wenigstens Aussicht auf Erfolg. Ich bin mir aber nicht ganz sicher, auf welcher Ebene deine Software laufen soll: Soll das so etwas werden wie eine Softwareimplementierung von OpenGL? Oder gar noch eine eigene Engine oben drauf?
Ich würde den Aufwand jedes dieser beiden Projekte - ohne das jemals selber gemacht zu haben - mal auf 0.5 bis 1 Mannjahre schätzen. Basierend darauf, dass ich mir ungefähr vorstellen kann, wie das Projekt aussehen könnte und darauf, dass es solche Projekte gibt und deren Entwicklung ungefähr bekannt ist.
Das unter der Voraussetzung, dass du einigermaßen weißt, was du tust. Wenn du dir erst die Grundlagen von 3D-Grafik anlesen musst, dann entsprechend länger.
Was deine Frage nach Lehrmaterial angeht: Kommt halt drauf an, was du schon weißt und was du noch genau wissen musst. Du hast doch sicherlich selbst schon gegoogelt? Warst du mit den Ergebnissen nicht zufrieden? Hier mal die erstbesten Treffer, die ich erhalten habe, die brauchbar aussahen, auf jeweils unterschiedlichem Niveau:
http://chrishecker.com/Miscellaneous_Technical_Articles
http://joshbeam.com/articles/triangle_rasterization/
http://fabiensanglard.net/quake2/quake2_software_renderer.php
Was passte dir an denen nicht? (Du hast doch selber gegoogelt, oder? Alles andere wäre doch gegen jede Internetforumsetiquette)
-
Ja, es soll ein reiner Software-Renderer werden. Zu meinen Vorkentnissen ich kann etwas x86 Assembler(Real-mode) und C. Von der Mathematik dahinter verstehe ich was von Vektoren und Matrizen und wie man mit ihnen soweit rechnet. Auch Begriffe wie Normale etc. sind mir nicht fremd. Bei Quantionen hört es aber dann schon auf.
Gegooglet habe ich schon und auch deine Links sind schon archiviert, nur frage ich ganz gerne immer reale Menschen noch ihren Empfehlungen. So mach einer hat da doch die ein oder andere Quelle im Kopf die man nicht so einfach ergoogeln kann, oder wo das Ergebnis der Suche einfach im Rauschen unter geht.
-
Vielleicht das wichtigste: Mit 3D-Grafik hast du mal gearbeitet? Am besten auf allen Ebenen, also mal selber direkt die Grafikschnittstelle angesprochen (DirectX, OpenGL, eventuell mit kleinen Helferlein wie GLUT), als auch mit fertigen Engines? Falls nicht, dann wäre das ein starker Ansatz, wie du schnell viel zum Thema lernen kannst.
-
Ich habe früher mal auf dem Amiga ein wenig mit Flatshading und mehreren Lichtquellen experimentiert. Das waren so Echtzeitdemos in purem Assembler. Mit OpenGL und DirectX habe ich nur ein paar Tuts gemacht, dies ist aber auch schon etwas her. So aus der Zeit als der Petzold noch aktuell war.
-
Ok, dann kennen wir nun deinen Wissensstand. Was war jetzt eigentlich nochmal die Frage
? Gibt es überhaupt noch eine?
-
Ne, erst mal nicht. Ich lese gerade mal die Links quer und melde mich dann wenn ich konkrete Fragen haben. Wem natürlich noch anderen guten Quellen für einen Software-Renderer einfallen, immer her damit.
Die Quake2-Engine scheint ja ziemlich genialer Shit zu sein, da ziehe ich doch mal ganz spontan meinen nicht vorhandenen Hut.