|
Windgate
|
 |
« on: June 10, 2009, 12:47:02 PM » |
|
Estoy usando Bennu para crear una aplicación que permite obtener información de vértices y polígonos mediante un interfaz muy simple. El programa genera a partir de esa información una estructura de datos basada en pointer y haciendo uso 100% de memoria dinámica con malloc. La información 3D es dibujada en pantalla utilizando únicamente primitivas 2D, prácticamente son todo draw_line() Ya sé que la idea es un poco "grotesca", se trata de un proyecto para la universidad... Para poder dibujar en 3D usando primitivas 2D hago uso extenso de matrices de rotación, álgebra y "teoría" de la informática gráfica. El programa es una beta que muestra ciertos cálculos matriciales, genera un triángulo y las normales de sus vértices y finalmente pide datos por teclado para crear un objeto 3D (Vértices, polígonos, superficies, etc.) Os lo dejo como curiosidad, os mantendré informado sobre mejoras: Debo comentar que el uso de matrices y la memoria dinámica en Bennu funcionan a las 1000 maravillas. No había usado tantos pointer y malloc() en mi vida... Y todo funciona perfecto.
|
|
|
|
|
Logged
|
Programador, estudiante de ingeniería, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es
|
|
|
|
SplinterGU
|
 |
« Reply #1 on: June 10, 2009, 04:58:06 PM » |
|
No entiendo mucho que hace (para no decir que no entiendo nada), pero bueno, el tema de las ventanitas esta lindo.
Impresionante los docs escaneados!
|
|
|
|
« Last Edit: June 10, 2009, 05:02:48 PM by SplinterGU »
|
Logged
|
|
|
|
|
Windgate
|
 |
« Reply #2 on: June 11, 2009, 12:13:58 AM » |
|
Es complicadillo de entender, todos los pasos previos hasta el interfaz de obtención de datos son simples pruebas. Las pruebas dan un resultado de ejecución correcto (Tras mucho esfuerzo...) y una vez termine el interfaz de obtención de datos que sale al terminar las pruebas será fácil introducir coordenadas 3D para generar un cubo, una pirámide o cualquier otro elemento 2D sencillo. El plato fuerte es el wireframe de un triángulo que sale en la tercera prueba. Si el programa es capaz de dibujar el triangulo a partir de su estructura de datos, entonces debería ser capaz de dibujar cualquier figura. Luego vendría aplicar texturas a cada polígono, será lo último que tengo que hacer... Y la verdad que esa parte me da auténtico PAVOR 
|
|
|
|
|
Logged
|
Programador, estudiante de ingeniería, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es
|
|
|
|
syous
|
 |
« Reply #3 on: June 11, 2009, 01:10:55 AM » |
|
Estoy usando Bennu para crear una aplicación que permite obtener información de vértices y polígonos mediante un interfaz muy simple. El programa genera a partir de esa información una estructura de datos basada en pointer y haciendo uso 100% de memoria dinámica con malloc. La información 3D es dibujada en pantalla utilizando únicamente primitivas 2D, prácticamente son todo draw_line() Ya sé que la idea es un poco "grotesca", se trata de un proyecto para la universidad... Para poder dibujar en 3D usando primitivas 2D hago uso extenso de matrices de rotación, álgebra y "teoría" de la informática gráfica. El programa es una beta que muestra ciertos cálculos matriciales, genera un triángulo y las normales de sus vértices y finalmente pide datos por teclado para crear un objeto 3D (Vértices, polígonos, superficies, etc.) Os lo dejo como curiosidad, os mantendré informado sobre mejoras: Debo comentar que el uso de matrices y la memoria dinámica en Bennu funcionan a las 1000 maravillas. No había usado tantos pointer y malloc() en mi vida... Y todo funciona perfecto. una idea interesante que intente y deseche para generacion de personajes y personalizacion
|
|
|
|
|
Logged
|
|
|
|
|
Windgate
|
 |
« Reply #4 on: June 11, 2009, 07:03:05 AM » |
|
No me extraña que lo desecharas, yo tengo que hacerlo como trabajo de la Universidad casi por obligación, y menos mal que lo hago en Bennu, porque los que lo están haciendo con Java están sufriendo miles de tormentos...  Bien, tengo nueva versión en la que finalmente "pretendo" mostrar el wireframe (Rejilla poligonal) de los vértices y polígonos que introduces por teclado. He eliminado las pruebas iniciales ya que funcionaba todo bien, y ahora directamente el programa pide datos y los muestra. Como problema... Me aparecen unos punteros a NULL y no entiendo el motivo, ya que uso mem_alloc() en todos los lugares necesarios y muestro su dirección de memoria por pantalla y es todo distinto de NULL. Pero al leer la estructura después de ser escrita me aparecen unos NULL en los que estoy investigando... Hasta ahora la memoria dinámica de Bennu me parece McNífica 
|
|
|
|
|
Logged
|
Programador, estudiante de ingeniería, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es
|
|
|
|
syous
|
 |
« Reply #5 on: June 11, 2009, 07:05:22 AM » |
|
|
|
|
|
|
Logged
|
|
|
|
|
Windgate
|
 |
« Reply #6 on: June 11, 2009, 10:06:45 AM » |
|
Syous, este programa crea modelos en un formato muy extraño, similar a los .md2, .md3, .3ds, pero no necesariamente iguales. Por tanto la compatibilidad con Bennu 3D es 0,0%, recuerda que todo está basado en Bennu 2D. Además no tengo planeado que guarde en un fichero el modelo (Al menos por ahora). Simplemente es una demostración de la GRAN cantidad de cálculos que hay que realizar para hacer un render capaz de convertir coordenadas 3D de modelos a coordenadas 2D de pantalla según el punto de vista, el ángulo de visión y otros factores. En cualquier caso, ya me dibuja los polígonos introducidos por teclado: http://www.mediafire.com/?ydmzl1ojxh1Sólo he probado con un triángulo, pero yo no puedo más, me ha costado sangre y sudor, me voy a casa y mañana continúo a ver cómo se comporta con cubos y otros esperpentos tridimensionales xD He estado a punto de rendirme un puñado de veces, al menos me voy a casa contento 
|
|
|
|
|
Logged
|
Programador, estudiante de ingeniería, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es
|
|
|
|
Drumpi
|
 |
« Reply #7 on: June 12, 2009, 05:12:31 AM » |
|
No te rindas, tarde o temprano el PC acaba por ceder y hacer lo que tu quieres que haga. La cuestión es ser más cabezota que él, y tener más paciencia. Al final acaba saliendo. ¡¡¡GAMBAREEE!!!
|
|
|
|
|
Logged
|
|
|
|
|
splinter_work
|
 |
« Reply #8 on: June 12, 2009, 06:37:02 AM » |
|
No te rindas, tarde o temprano el PC acaba por ceder y hacer lo que tu quieres que haga. La cuestión es ser más cabezota que él, y tener más paciencia. Al final acaba saliendo. ¡¡¡GAMBAREEE!!!
je!
|
|
|
|
|
Logged
|
|
|
|
|
Prg
|
 |
« Reply #9 on: June 12, 2009, 08:34:53 AM » |
|
je je je, amigo, no te rindas... revisaré esta nueva versión. saludos y ánimo 
|
|
|
|
|
Logged
|
ya se acabó la navidad?!... no... todo un año esperándola y... bueno, pero feliz año nuevo y felices fiestas!! 
|
|
|
|
|
|
Windgate
|
 |
« Reply #11 on: June 16, 2009, 06:40:29 AM » |
|
¿Texturizado de objetos en 2D? Suena interesante, es la última parte de ese visor y me da un poco de miedo  Gracias por los ánimos, me pondré más cabezota que el maldito PC y le haré tragarse sus propios errores de ejecución.
|
|
|
|
|
Logged
|
Programador, estudiante de ingeniería, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es
|
|
|
|
syous
|
 |
« Reply #12 on: June 16, 2009, 07:31:23 AM » |
|
|
|
|
|
|
Logged
|
|
|
|
|
SplinterGU
|
 |
« Reply #13 on: June 16, 2009, 07:46:14 AM » |
|
si tienes problemas, no dejes de avisar, no sea que se deba a algun bug de bennu.
Saludos.
EDIT: No teman preguntar aunque piensen que es algo estupido y se esta cometiendo un error... quizas sea un problema de la herramienta, y si no se comenta no se podra corregir.
Saludos.
|
|
|
|
|
Logged
|
|
|
|
|
Windgate
|
 |
« Reply #14 on: June 16, 2009, 11:20:44 AM » |
|
Por ahora es un tema con los draw_line(), ya que por alguna razón se me van fuera de la pantalla y dibujan varias diagonales en lugar de una sóla línea. Supongo que será problema al calcular las coordenadas de pantalla, que salen valores demasiado altos, pero para saberlo con seguridad tendré que mostrar por pantalla las coordenadas que se están dibujando y ver cuáles valores son los que dan problemas. No creo que sea un bug de Bennu. Con mi antiguo Animalicos sí que me quedé con la duda de si había un bug en la versión de Windows, pero no he tenido tiempo últimamente de hacer más pruebas con él, cuando termine exámenes las haré  En cualquier caso gracias Splinter, informaré sobre cualquier duda extraña que me surja!
|
|
|
|
|
Logged
|
Programador, estudiante de ingeniería, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es
|
|
|
|