Estoy trabajando en un sistema embebido de algún tipo, y en algún tiempo libre me gustaría probar sus capacidades de dibujo.
El sistema en cuestión es el microcontrolador ARM Cortex M3 conectado a la placa EasyMX Stellaris. Y tengo una pequeña pantalla TFT de 320x240 :)
Ahora, tengo algo de tiempo libre cada día y quiero crear un cubo giratorio. Micro C PRO para ARM no tiene capacidades de dibujo en 3D, lo que significa que debe hacerse en software.
Del libro Introducción a la programación de juegos en 3D con DirectX 10 conozco el álgebra matricial para las transformaciones, pero eso es genial cuando tienes DirectX para configurar la cámara correctamente.
Supongo que podría hacer que el objeto 2D gire, pero ¿cómo iría con 3d uno?
Cualquier idea y ejemplo son bienvenidos. Aunque preferiría consejos. Me gustaría entender esto.
fuente
Respuestas:
¿Te das cuenta de que una cámara DirectX es solo un par de transformaciones matriciales? Tiene ModelView, Proyección, luego transformación de matriz de Viewport a cada vértice en ese orden para cambiar las coordenadas 3d a coordenadas 2d.
Más detalles sobre la transformación a lo largo de la tubería estándar (creo que DirectX y OpenGL funcionan de la misma manera).
Luego rasteriza los triángulos en función de las ubicaciones 2D (que resultaron de tus transformaciones) de la matriz ahora 2D de vértices que tienes. Esto puede complicarse rápidamente, pero usar la prueba PIT y colorear completamente cualquier píxel que colisione debería ser lo suficientemente simple y efectivo en su caso.
La otra forma de hacer esto y la manera más fácil es hacer un trazador de rayos. Simplemente des-proyecte el rayo utilizando la matriz de transformación que desea aplicar a su objeto.
No he jugado con cosas de bajo nivel en mucho tiempo, así que puedo estar recordando mal pero cualquiera de las rutas no debería ser demasiado difícil. Comprenda cómo funciona la tubería de hardware e impleméntela en software o escriba un rastreador de rayos.
Por cierto, aquí es donde aprendí lo que sé sobre la tubería de gráficos.
fuente
En los días en que el hardware 3D no estaba disponible, teníamos que construir nuestros propios motores 3D y rasterizadores poligonales. 3DICA es un gran tutorial que explica todos los conceptos básicos de un motor 3D de software. Para mí, las imágenes no se mostrarán en Firefox, pero en Internet Explorer funcionan bien.
Los capítulos 2.1 y 3.1 deberían ser suficientes para cubrir sus necesidades, pero leer todo el tutorial debería enseñarle mucho.
fuente