Ich arbeite an einem eingebetteten System und möchte in einiger Freizeit seine Zeichenfähigkeiten testen.
Bei dem fraglichen System handelt es sich um einen ARM Cortex M3-Mikrocontroller, der an die EasyMX Stellaris-Karte angeschlossen ist. Und ich habe einen kleinen 320x240 TFT Bildschirm :)
Jetzt habe ich jeden Tag etwas Freizeit und möchte einen rotierenden Würfel erstellen. Micro C PRO für ARM verfügt nicht über 3D-Zeichenfunktionen, was bedeutet, dass dies in Software erfolgen muss.
Aus dem Buch Einführung in die 3D-Spielprogrammierung mit DirectX 10 kenne ich die Matrixalgebra für Transformationen, aber das ist cool, wenn Sie DirectX haben, um die Kamera richtig einzustellen.
Ich denke, ich könnte 2D-Objekte zum Drehen bringen, aber wie würde ich mit 3D-Objekten vorgehen?
Ideen und Beispiele sind willkommen. Obwohl ich Ratschläge bevorzugen würde. Ich würde das gerne verstehen.
quelle
Antworten:
Sie wissen, dass eine directX-Kamera nur ein paar Matrixtransformationen sind? Sie haben eine ModelView-, Projektions- und dann eine Ansichtsfenster-Matrixtransformation für jeden Scheitelpunkt in dieser Reihenfolge, um die 3D-Koordinaten in 2D-Koordinaten zu ändern.
Weitere Details zur Transformation entlang der Standard-Pipeline (ich glaube, DirectX und OpenGL funktionieren beide auf die gleiche Weise).
Dann rastern Sie die Dreiecke basierend auf den 2D-Positionen (die sich aus Ihren Transformationen ergeben haben) des jetzt 2D-Arrays von Scheitelpunkten, die Sie haben. Dies kann schnell kompliziert werden, aber die Verwendung des PIT-Tests und das vollständige Färben aller kollidierenden Pixel sollte in Ihrem Fall einfach und effektiv sein.
Die andere und einfachere Möglichkeit besteht darin, einen Raytracer zu erstellen. Projizieren Sie den Strahl einfach mit der Transformationsmatrix, die Sie auf Ihr Objekt anwenden möchten.
Ich habe seit einiger Zeit nicht mehr mit Sachen auf niedrigem Niveau herumgespielt, daher erinnere ich mich vielleicht falsch, aber beide Routen sollten nicht zu schwer sein. Verstehen Sie, wie die Hardware-Pipeline funktioniert, und implementieren Sie sie in Software oder schreiben Sie einen Ray Tracer.
Übrigens habe ich hier gelernt, was ich über die Grafik-Pipeline weiß.
quelle
In den Tagen, als 3D-Hardware nicht verfügbar war, mussten wir unsere eigenen 3D-Engines und Polygon-Rasterizer bauen. 3DICA ist ein großartiges Tutorial, das alle Grundlagen einer Software-3D-Engine erklärt. Für mich werden die Bilder in Firefox nicht angezeigt, aber in Internet Explorer funktionieren sie einwandfrei.
Die Kapitel 2.1 und 3.1 sollten ausreichen, um Ihre Anforderungen zu erfüllen, aber das Lesen des gesamten Tutorials sollte Ihnen viel beibringen.
quelle