Bennu Game Development

Foros en Español => Proyectos => Topic started by: Windgate on June 10, 2009, 07:47:02 PM

Title: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 10, 2009, 07: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:

http://www.mediafire.com/?zli2jtcnkyj (http://www.mediafire.com/?zli2jtcnkyj)

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.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: SplinterGU on June 10, 2009, 11: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!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 11, 2009, 07: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 :o
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: syous on June 11, 2009, 08:10:55 AM
Quote from: Windgate on June 10, 2009, 07: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:

http://www.mediafire.com/?zli2jtcnkyj (http://www.mediafire.com/?zli2jtcnkyj)

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
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 11, 2009, 02:03:05 PM
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... ;D

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.

http://www.mediafire.com/?jxzk2y3ynhi (http://www.mediafire.com/?jxzk2y3ynhi)
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 :o
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: syous on June 11, 2009, 02:05:22 PM
 ;D ;D ;D como te salga bien te lo cojo prestado para la generacion de pj en el Sod  ::)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 11, 2009, 05:06:45 PM
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/?ydmzl1ojxh1 (http://www.mediafire.com/?ydmzl1ojxh1)

Só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 :D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Drumpi on June 12, 2009, 12:12:31 PM
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!!!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: splinter_work on June 12, 2009, 01:37:02 PM
Quote from: Drumpi on June 12, 2009, 12:12:31 PM
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!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on June 12, 2009, 03:34:53 PM
je je je, amigo, no te rindas...

revisaré esta nueva versión. saludos y ánimo :)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: l1nk3rn3l on June 12, 2009, 06:03:46 PM
GENIAL, de pronto esto le sirva de algo:
http://www.coldcity.com/index.php/category/code/


bueno animo,,

hay una libreria llamada VSE en el fenixpack seccion ejemplos DLLS
http://fenixpack.blogspot.com/

pero corre en fenix no en bennu
incluye texturizado de objetos en 2D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 16, 2009, 01:40:29 PM
¿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.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: syous on June 16, 2009, 02:31:23 PM
Quote from: Windgate on June 16, 2009, 01:40:29 PM
¿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.


:o miedo das  ;D ;D ;D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: SplinterGU on June 16, 2009, 02:46:14 PM
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.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 16, 2009, 06:20:44 PM
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é :P

En cualquier caso gracias Splinter, informaré sobre cualquier duda extraña que me surja!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on June 17, 2009, 01:07:01 PM
Nueva versión. Había comentado un problema de líneas que se iban "al infinito" pero ya está arreglado, se trataba del puntero al último vértice del polígono, y es que el último vértice es siempre el primero (El polígono tiene que cerrarse!!!) y tenía un puntero que almacenaba datos no inicializados...

Además he añadido un módulo de verborrea. No se trata de ninguna enfermedad digestiva, la verborrea es el texto que muestra el programa para controlar las direcciones de memoria a las que apuntan los punteros, los puntos iniciales y finales de las líneas dibujadas, etc. Con unas CONST se determina cuál verborrea se muestra y cuál no, incluso se puede activar una CONST para que toda la verborrea sea bloqueante, y pida pulsar Intro para mostrar la siguiente. Ese módulo me será útil en el futuro a la hora de debugear programas que hacen operaciones peludas y es difícil saber por dónde revientan xD

Aquí la descarga de la v0.6b: http://www.mediafire.com/?1zyd2tn1wnj (http://www.mediafire.com/?1zyd2tn1wnj)

Podéis hacer alguna prueba y dibujar cualquier cosita a ver qué os parece.

En el interfaz se cambian los valores de los puntos de 1 en 1 pulsando arriba y abajo y de 100 en 100 pulsando izquierda y derecha, para que sea más rápido. Me costaba menos hacerlo así que andar leyendo enteros desde teclado y tener que comprobar errores en la entrada... ¿Alguna sugerencia al respecto? Las funciones son independientes y sería muy muy fácil cambiarlas por algo mejor (interfaz_aux.prg).

Por ahora no tengo ninguna duda que no raye exclusivamente en el álgebra y en matrices de traslación... Pero ya llegarán y os las preguntaré. Gracias por todo como siempre :P
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on July 24, 2009, 07:37:27 PM
Esto es un horror...

He incluído un módulo que se encarga de mostrar información formateada por pantalla sobre las direcciones a las que apuntan los punteros, las coordenadas calculadas, etc. Si no es imposible controlar la ejecución :P

Tengo todo el código escrito, pero el periodo de pruebas de este programa está siento terrible, no consigo más que valores astronómicos de dibujado, dejo aquí el link de la versión actual como mera curiosidad:

DESCARGAR: http://www.mediafire.com/?ttxhrofzwof (http://www.mediafire.com/?ttxhrofzwof)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on July 24, 2009, 11:54:40 PM
Quoteno consigo más que valores astronómicos de dibujado, dejo aquí el link de la versión actual como mera curiosidad:
mmm, a qué te refieres con valores astronómicos? valores muy grandes? no será por divición de floats entre cero... bueno, no se...  :)

suerte con tu proyecto amigo. :)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on July 25, 2009, 12:05:02 AM
La trigonometria que hay debajo del visor es impresionante... Por un lado esta la dificultad de entender como funcionan las matrices de transformacion de coordenadas, los angulos de visionado rho, thetha y phi y otras tantas cosas matematicas nada agradables, creeme...

Tambien me he basado en un pseudocodigo para implementacion de renders, y aunque lo he portado a Bennu minuciosamente, siempre queda la posibilidad de que tenga cualquier error, por eso ahora mismo no tengo mas que probar y testear hasta el infinito...

La division por 0 en Bennu segun lo que he probado produce una salida inmediata del programa, todavia no he detectado si el problema es a causa de la division por 0, ahora mismo tengo el modulo que informa de todas las operaciones por pantalla y es cuestion de ir viendo la ejecucion y los valores que va generando el programa para transformar las coordenadas del mundo en 3D a coordenadas de pantalla totalmente en 2D.

Un error grave corregido recientemente es la trigonometria de Bennu que se basa en milesimas de grado y me ha dado algunos quebraderos de cabeza hasta que me he dado cuenta del estupido error ;D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on July 26, 2009, 02:07:41 AM
mmm si la divición es con floats entonces te dará un # indf o lo que es lo mismo el infinito y más ayá (las diviciones con cero, si son floats, no producen la salida abrupta del programa, si no un número infinito)

también ten cuidado al usar las trigonométricas inversas, ya que ahí tenía algunos problemas yo cuando inicié a trabajar con angulos en 3d :)
saludos
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on July 27, 2009, 05:04:05 AM
Trigonométricas inversas no tengo, sólo seno, coseno y tangente.

Lo que me dices de infinitos... Cierto es que muchas veces genero valores y al mostrarlos por pantalla con write me sale "nan"...

Quizás sean los infinitos que dices, nunca lo había visto. Sigo haciendo pruebas, he estado un par de días ocupado formateando.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on August 25, 2009, 03:25:21 PM
He localizado algunos errores garrafales, tenía funciones con variables PRIVATE que morían, dejando un puntero a sus variables PRIVATE vivo en otra función... Eso provocaba algún cuelgue de vez en cuando, direcciones de memoria iguales que guardaban 2 cosas distintas y bueno, ya os imagináis.

Subo versión sin cambios visibles, simplemente un nuevo interfaz con muestreo de información en "plan juego RPG" gracias a un módulo cortesía de Dario (Gracias Dario).

Ahora mismo estoy creando un formato de fichero del que leer la información de vértices, polígonos, etc. Ya que como os dije, se trata de un proyecto para la Universidad y me piden que se lea la información desde fichero, y no desde teclado como lo venía haciendo hasta ahora.

El avance: Lento, aunque ahí está, y el plazo de entrega termina en poco más de una semana así que ya veremos.

DESCARGAR: http://www.mediafire.com/?ziy3rooim2m (http://www.mediafire.com/?ziy3rooim2m)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: DCelso on August 25, 2009, 05:00:48 PM
te recomendaría que utilizases algún formato existente, en vez de uno prioritario, para ello, ya sea xml u otro similar así podrás usar otros programas para comprobar resultados.
http://computacion-grafica-avanzada.blogspot.com/2009/03/formatos-de-archivo-para-modelos-3d.html

Hay muchos más, busca uno facilote, en modo texto que se adapte a tus necesidades.
http://www.mallorcaweb.net/juanki/JC/practicas/lig/ig.doc
http://www.caddyspain.com/noticias/stl.htm
http://www.arquitectuba.com.ar/curso-sketchup-gratis/exportacion-de-modelos-3d-3ds/
http://en.wikibooks.org/wiki/Choosing_The_Right_File_Format/Vector_3D
http://commons.apache.org/math/apidocs/org/apache/commons/math/geometry/Vector3DFormat.html

Uff, yo estoy muy pez en el tema, a ver si alguien como PRG o linkernel podría aconsejarnos alguno que conozca. Yo recuerdo uno que usaba arquitectura xml y servía para interpretarse directamente en los navegadores, pero no recuerdo cual era.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on August 25, 2009, 08:37:44 PM
Jarl amiguete, es que el formato nos lo dan ellos y nos tenemos que adaptar, si no de qué xD

Sobre el MD2 hice una presentación en la Universidad bastante chula, pero es demasiado complejo para lo que pretendo, con tener información de vértices, polígonos y superficies me sirve. Y poder mostrar las figuras rotadas, escaladas, desplazadas... Que esa es la parte gorda...

Al menos ya me funciona la lectura del formato desde fichero, dejo la nueva versión, ahora me queda solucionar el wireframe, que en versiones anteriores me mostraba algo, pero ahora no :P

DESCARGAR: http://www.mediafire.com/?zdidyny5nd2 (http://www.mediafire.com/?zdidyny5nd2)

El fichero de prueba se llama objeto.ig, hay que introducir por teclado el nombre para cargarlo.

Por cierto, para ello he creado una sencilla función para leer cadenas desde teclado (string = string + ascii básicamente, saltando repeticiones de lectura de tecla), pero claro, no puedo borrar si me equivoco :( ¿Hay algo ya hecho para leer cadenas desde teclado en Bennu?

Con la tontería también me he creado otra función para recibir enteros por teclado, pero tengo el mismo problema para borrar.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on August 25, 2009, 10:41:49 PM
yo hice esto:

[code language="bennu"]
/**************************/
/* escanea teclado por prg*/
/*16 abril del 2009, bennu*/
/**************************/
import "mod_text";
import "mod_grproc";
import "mod_video";
import "mod_map";
import "mod_screen";
import "mod_key";
import "mod_wm";
import "mod_file";
import "mod_say";
import "mod_draw";
import "mod_string";
import "mod_effects";
import "mod_debug";
import "mod_math";
import "mod_sys";
import "mod_mem";
import "mod_dir";
import "mod_regex";

private
string car;
begin
set_mode(800,600,32);

escanea_teclado(0,400,300,4,&car,0);
frame;
end

//gr=gráfico a usar
function escanea_teclado(int fuente_int,x,y,alin,string * mi_texto,int gr)
private
   
   contador=0, contador1;
   car_act;
   mitexto_string;
   press;

   string trabajo;
   int  pos,possel;
   
begin

   z=-206;
   graph=gr;
   mitexto_string=write_var(fuente_int,x,y,alin,trabajo);

   trabajo=mi_texto[0];
   pos=len(mi_texto[0]);

   while (not key(_enter))

      if (ascii<>0 or key(_backspace) or key(_space) or key(_del))
         if (press ==false)
         if (key(_backspace)or key(_del))
                                        while (key(_backspace))
                                        if (pos<>0)
               mi_texto[0]=substr(mi_texto[0],0,pos-1)+substr(mi_texto[0],pos,len(mi_texto[0]));
               end
               pos--;
               trabajo=substr(mi_texto[0],0,pos)+"_"+substr(mi_texto[0],pos,len(mi_texto[0]));
               frame(300);
               end
               while (key(_del))
               mi_texto[0]=substr(mi_texto[0],0,pos)+substr(mi_texto[0],pos+1,len(mi_texto[0]));

               trabajo=substr(mi_texto[0],0,pos)+"_"+substr(mi_texto[0],pos+1,len(mi_texto[0]));
               frame(300);
               end
         elseif (ascii > 32 AND ascii < 126)

         mi_texto[0]=substr(mi_texto[0],0,pos)+chr(ascii)+substr(mi_texto[0],pos,len(mi_texto[0]));
         pos++;
                        //len(mi_texto[0])-1

         elseif (key(_space))
         mi_texto[0]=substr(mi_texto[0],0,pos)+" "+substr(mi_texto[0],pos,len(mi_texto[0]));
         pos++;
                        end
            

                                press=true;
                                ascii=0;
         end
      else
         press=false;
      end
      contador++;
                trabajo=mi_texto[0];
                if (contador>15)
                car_act=true;

                                if (car_act==true)
                                trabajo=substr(mi_texto[0],0,pos)+"_"+substr(mi_texto[0],pos,len(mi_texto[0]));
                                end
                else

                car_act=false;
                end
                if (contador>30)
                contador=0;
                end
                while (key(_left)or key(_right))
                trabajo=substr(mi_texto[0],0,pos)+"_"+substr(mi_texto[0],pos,len(mi_texto[0]));

                if (key(_left) & pos>0) pos--; frame(300); end
                if (key(_right) & pos<len(mi_texto[0])) pos++; frame(300); end
                frame;
                end
                if (key(_end) ) pos=len(mi_texto[0]);  end
                if (key(_home) ) pos=0;  end
      frame;
   end
   delete_text(mitexto_string);
   while (key(_enter))  frame; end

end

[/code]

a ver si te sirve, recibe un puntero a una string y cuando presionas enter sale de la función para dejar de leer el teclado... algo as{i como si usaras scanf en c

las teclas inicio, fin y los cursores, suprimir y borrar funcionan. aunque todavía hay cositasraras, como que escriba al reves cuando presionas inicio... o cosas raras que no he revisado

espero te sirva :), si quieres lo puedes modificar
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: DCelso on August 25, 2009, 10:50:48 PM
en la wiki encontré este otro
http://wiki.bennugd.org/index.php?title=Tutorial:Textinput
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on August 25, 2009, 11:30:29 PM
lol mañana lo miro a fondo porque ya me voy a mimir pero...

Veo en el código de Prg que accede a componentes de la string como si fuese un vector, ¿Eso se puede hacer siempre o sólo si pasas la string con un puntero?

Recuerdo que en su día (Con Fenix...) no me funcionó y me disgustó...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Drumpi on August 26, 2009, 01:10:12 AM
Pues yo usaba algo parecido al de la wiki (siendo malpensado, podría decir que me han copiado :D :D :D) Es lo más sencillo y efectivo: ver el valor ascii de borrar, intro y todos los caracteres especiales que tengan un boton y afecten a la cadena).
Y creo que si, que yo, incluso en Fenix, he accedido a valores de la string, pero guardando como tipo char (valores numéricos creo que daban errores, no se si por la rigidez de tipos de la 084 o por los fallos con los tipos que se metieron en ella)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on August 26, 2009, 02:34:39 AM
je je
si te fijas hago
[code language="bennu" options="singleline"]mi_texto[0][/code]
siempre, es como si hiciera *mi_texto pero como array, otra forma de acceder... je je je
la costumbre, creo que ahora si se puede trabajar la string como cadena de arrays (no estoy muy seguro), pero en mi ejemplo no lo hago :)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: darío on August 26, 2009, 09:10:35 AM
Según creo yo, a los strings se puede acceder como arrays, pero no pueden ser modificados de esa forma, es decir:


...
string s = "Hola"
...
write(0, 10, 10, 0, s[3]); // Válido, escribe 'a'
s[3] = 'd'; // No válido
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on August 26, 2009, 11:30:54 AM
Ah, entiendo, si se puede acceder a la string como un array en lectura, se puede obtener la substr() a partir de uno de los caracteres (El último) y "borrar".

Interesante, no sé si lo probaré muy a fondo porque de momento me preocupa más el visor en sí que su interfaz, pero gracias!

EDIT: Nueva versión, se puede cargar un fichero 3D de ejemplo con un triangulito, se llama objeto.ig. Todo el calculo matricial de transformaciones funciona correctamente, pero al mostrar el wireframe se me cuelga. He dejado el wireframe para el final porque es lo más complicado, hasta ahora todo el control de punteros funciona a la perfección (Tras miles de correcciones y pruebas), grande es Bennu.

DESCARGAR: http://www.mediafire.com/?ojjz1dawizj (http://www.mediafire.com/?ojjz1dawizj)

Lo cierto es que estoy probando toda la potencia de Bennu, hay cabeceras de función con este aspecto:

[code language="bennu" options="singleline"]FUNCTION tp_ObjectCell POINTER LoadObject ( string object_name , int no_of_objects , tp_ObjectCell POINTER object_head )[/code]

Y otras similares con matrices y cosas así todo el tiempo, un agobio :(
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on August 27, 2009, 02:49:08 AM
Primera ejecución correcta que muestra el triángulo almacenado en el fichero objeto.ig

Se puede rotar, escalar y trasladar, el menú no es ninguna maravilla, pero tenía prisa porque funcionase. El "maquillaje" para el final.

DESCARGA: http://www.mediafire.com/?intnlmmajgm

Ahora me resta construir un fichero con información poligonal más compleja que un simple triángulo, por ejemplo una pirámide, un cubo, y ver cómo reacciona la cosa. La estructura de datos que almacena todo es 100% dinámica, todo punteros, y para 1 objeto con 1 único polígono y 1 única superficie es lógico que funcione de maravilla, pero ahora veremos los nuevos problemas que dan las superficies con varios polígonos, los vértices que pertenecen a varios polígonos, etc :P

Si me animo saco un motor 3D propio ::) (Broma...)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on August 27, 2009, 04:11:27 AM
ja ja ja, iba a comentar lo que vi en el primero, pero mejor veo el segundo.
me encanta que las letras aparezcan poco a poco, le da muy buen aspecto

en la nueva versión, la he probado, pero no me salió un triángulo, me slió como una E girada 90º a la izq. es porque le dije que me dibujara normales?

el color es verde... je je je

ya quiero verlo con modelos más grandes amigo :) tiene muy buen aspecto, auqneu se ve que estamos debuggenado todavía, pues presenta mucha info en la pantalla... pero sirve que veo qué hace :)
saludos
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on August 31, 2009, 03:45:51 PM
Prg, es que el triángulo lo carga plano, si le aplicas rotación en el menú, por ejemplo 30 grados en cada eje, lo verás correctamente. Los palitos son las normales, sí :P

Ya tengo una versión que muestra objetos 3D, el archivo piramide.ig por ejemplo.

DESCARGAR: http://www.mediafire.com/?fiymj5uyyzd (http://www.mediafire.com/?fiymj5uyyzd)

En screenshots hay una muestra de la pirámide cargada normal en el centro de la pantalla y luego girada 30º en cada eje y escalada a x3 en todos los ejes.

Sudor me ha costado pero... ¡Vive!, ¡VIVE!, ¡¡¡VIVEEE!!!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 01, 2009, 09:59:54 AM
Bien, tras probarlo concienzudamente y comprobar que no hay errores en la estructura de datos 100% dinámica he limpiado BASTANTE el interfaz del programa y ahora ya no muestra información de punteros ni líneas trazadas ni cálculos matriciales, sólo los menús donde seleccionar las opciones.

Os dejo la descarga y una captura de la figura cilindro.ig (La extensión .ig se debe a que la asignatura para la que lo estoy programando se llama Informática Gráfica).

(http://4.bp.blogspot.com/__SNyA7iqBq0/Spzv5TEQ6YI/AAAAAAAAAXU/3ZZP8StqQO8/s400/Cilindro.png)

DESCARGAR: http://www.mediafire.com/?jzjztwtwgq1 (http://www.mediafire.com/?jzjztwtwgq1)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 02, 2009, 02:07:28 PM
¡¡¡ En el primer mes Windgate creó la estructura dinámica más gorda de su vida en Bennu... !!!
¡¡¡ En el segundo mes Windgate logró mostrar información de polígonos bidimensionales sin perspectiva... !!!
¡¡¡ En el tercer mes Windgate tuvo que reescribir casi todo el código... !!!
¡¡¡ En el cuarto Windgate obtuvo su primer wireframe bidimensional en perspectiva... !!!
¡¡¡ En el quinto  Windgate consiguió wireframes tridimensionales en perspectiva con información de objetos leídas desde fichero... !!!

¡Y al día siguiente implementó el render y los texturizó!

DESCARGA: http://www.mediafire.com/?xiyzqqh1nmm (http://www.mediafire.com/?xiyzqqh1nmm)

Ahora en serio, bugs conocidos que no son pocos:

1) Para cargar un objeto hay que introducir su nombre por teclado, por ejemplo "cilindro.ig", ojo porque NO se puede borrar, escribid bien el nombre del fichero a cargar...
2) La ocultación de polígonos no visibles me "cojea" un poco, por ejemplo al cargar "cilindro.ig" suele mostrar medio sólamente...
3) Antes de poder mostrar el render hay que mostrar el wireframe, para que se calculen las coordenadas de pantalla
4) El texturizado es monócromo (Azul por ahora) y sin sensibilidad al foco de luz.

Y ventajas de la versión actual:

1) Ya no muestra la infinita información de valores de puntero, trazado de líneas, etc.
2) Es muy sencillo abrir cualquier fichero .ig y editarlo con el bloc de notas (Están comentados incluso)

Estoy a punto de conseguir el texturizado en madera, generada a partir de código, con iluminación, pero tengo problemas porque calculaba el RGB considerando 32 bits de color, pero hace nada he conocido la función rgb(int,int,int) que me simplifica las cosas.

Disfrutad, disfrutad...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: josebita on September 02, 2009, 03:29:22 PM
El visor tiene muy buena pinta.

Para lo de no poder borrar al escribir el nombre del fichero, te podría sugerir el siguiente código para la función leer_cadena de modules/teclado.prg:
[code language="bennu"]FUNCTION string leer_cadena (int x,y)
PRIVATE
   string cadena = "";
   char tecla_anterior;
   int time=0, delay=10;
BEGIN
   tecla_anterior=ascii;
   LOOP
      IF ( key (_ENTER) )
         BREAK;
      END
      IF ( ascii != 0 && timer[0] > time+delay )
        IF ( ascii != 8 ) /* Backspace handling */
           tecla_anterior = ascii;
           cadena = cadena + tecla_anterior;
         ELSE
           IF ( len(cadena) != 0 )
             cadena = substr(cadena, 0, -1);
           END
         END
         
         time = timer[0];
      END
      write_var ( 0, x, y, 0, cadena );
      FRAME;
   END
   RETURN cadena;
END[/code]

Fíjate que he reemplazado el write del final y el delete_text por un write_var (que se va actualizando a medida que cambia la variable) y que he cambiado la condición de escritura por un retraso desde la pulsación de la última tecla. Entre otras cosas, antes no podrías haber cargado un fichero con un nombre con dos letras iguales seguidas (accesorio.ig, o algo así) y le he añadido una condición para manejar la tecla de "backspace".

Seguro que alguien puede mejorar la rutina, pero espero que te sea útil.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 02, 2009, 03:55:24 PM
Gracias josebita, procedo a copy+pastear directamente, y si funciona pues mano de santo, me quiero quitar el visor cuanto antes porque tengo muchísimo trabajo que hacer...

Ya estoy texturizando con madera y mármol, pero me baso en un pseudocódigo de los 80 que omite declaraciones de algunas variables, de algunos tipos, y está basado en radianes y/o grados, mientras que Bennu trabaja con milésimas de grado...

Y tras "calibrarlo" sí, me muestra texturas, pero parecen mojones >:(

EDIT: La función de lectura de cadena desde teclado ha sido mano de santo, pero si tecleo rápido no me lee algunos caracteres, estoy investigando ahora mismo...

También he mejorado el muestreo de texturas considerablemente, "casi" parece madera, pero sin iluminación aún xD
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 02, 2009, 05:39:25 PM
Una nueva alternativa a leer_cadena() que aunque escribas rápido, repitas teclas (p.ej. cOOrdenada), funciona fielmente a lo que se esperaría. También admite que mantengas pulsada una tecla durante key_delay frames para que se reinterprete hasta que la sueltes, también funciona con la tecla de borrado, me excita... ;D

Único defecto conocido: Si escribes un caracter acentuado reinterpreta la pulsación... Vamos, que si lo usáis NO metáis caracteres acentuados.

FUNCTION string leer_cadena (int x,y)
PRIVATE
string cadena = "";
char tecla_anterior;
int time=0, key_delay=40;
BEGIN
tecla_anterior=ascii;
LOOP
IF ( key (_ENTER) )
BREAK;
END
IF ( ascii != 0 ) //Si se pulsa una tecla
IF ( ascii != 8 ) //Si no es la tecla de borrado
IF ( ascii != tecla_anterior OR   //Si no era la anterior o bien
( ascii == tecla_anterior AND timer[0] > time+KEY_DELAY ) ) // si era la anterior pero pasó un tiempo
tecla_anterior = ascii;
cadena = cadena + tecla_anterior; //Añadimos a la cadena y memorizamos tecla
END
ELSE //Si se trata de la tecla de borrado
IF ( len(cadena) != 0 ) //Si hay caracteres en la cadena
IF ( ascii != tecla_anterior OR //Si no se había pulsado borrar en el FRAME anterior o bien
( ascii == tecla_anterior AND timer[0] > time+KEY_DELAY ) ) //Si se había pulsado pero pasó un tiempo
tecla_anterior = ascii;
cadena = substr(cadena, 0, -1); //Borramos de la cadena y memorizamos tecla
END
END
END
ELSE //Si no se pulsa ninguna tecla
tecla_anterior = ascii;
time = timer[0]; //Reiniciamos el contador y memorizamos tecla
END

write_var ( 0, x, y, 0, cadena );
FRAME;
END
RETURN cadena;
END


EDIT: Así viene quedando el texturizado... Aún le falta y la iluminación no sé ni por dónde cogerla...

(http://www.fileden.com/files/2008/9/22/2109820/cilindro_wood.02.09.09.png)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: SplinterGU on September 03, 2009, 01:29:00 AM
se ve cogonudo...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: FreeYourMind on September 03, 2009, 06:19:57 PM
No tarda nada y te montas un engine 3D por software utilizando Bennu ;)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: blostec on September 03, 2009, 07:14:49 PM
Impresionante Windgate, estas haciendo un gran trabajo. Saludos!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Drumpi on September 03, 2009, 07:19:21 PM
Al final, lo que te iba a comentar aquí te lo he dicho en el otro hilo ^^U
(El de cómo borrar un conjunto de pixels)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on September 04, 2009, 02:13:30 AM
cada vez se ve mejor, en la versión anterior no podía rotar, ahora ya se que no es poniendo el valor, sino presionar las flechas... ve muy bien, felicidades.
... y qué frase la del archivo prueba en  la carpeta extenciones eh... ja ja ja..
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 04, 2009, 08:34:40 AM
lol Prg tienes razon, me preocupe tanto por que funcionase que olvide al usuario, los valores numericos se establecen (modifican) pulsando las teclas direccionales, arriba-abajo modifica de 1 en 1 e izquierda-derecha de 100 en 100.

En teclado.prg tengo la funcion para lectura de enteros por teclado, que es basicamente la de lectura de strings pero con un atoi, lo unico que no la he usado aun.

Para el borrado del render creo que voy a terminar guardando los ID en una matriz de [RESOLUCION_x][RESOLUCION_Y], a nivel de memoria es un consumo excesivo, pero me prima terminarlo como sea, y siempre podre modificar la funcion en otro momento...

En cuanto al engine... Lo cierto es que consume una barbaridad, se nota que no usa hardware, y el texturizado a partir de codigo para marmol (Que lo acabo de terminar) tiene una cantidad de multiplicaciones de float impresionante... Se quedara en simple curiosidad.

La iluminacion me sigue teniendo preocupado, es el modelo de iluminacion de Gouraud, que es el mas antiguo y se basa en:

1) Desde el punto de luz se calculan las distancias a todos los vertices cuya normal "mire" hacia la luz.

2) En funcion de las distancias se impone un porcentaje del valor rgb de la luz a cada vertice, 0 para los no iluminados

3) Finalmente, para iluminar los poligonos, para cada uno de sus pixeles se le suma la interpolacion de los rgb de iluminacion de cada vertice.

El algoritmo es factible, pero me da una pereza ponerme otra vez a probar y probar...

Creo que antes voy a darle un retoque al interfaz a ver si lo dejo un poco mas agradable.

EDIT: Sí, la frase del archivo de la carpeta extensiones es peculiar ;D y también hay otro fichero de prueba por ahí del que se lee un entero, un float y una string y lo que pone en la string también tiene lo suyo ;D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 04, 2009, 01:10:15 PM
Nueva versión con texturizado en mármol y mejoras de interfaz. Si molesta la opacidad del menú, puede regularse con la rueda del ratón:

(http://www.fileden.com/files/2008/9/22/2109820/cilindrito.03.09.09.png)

DESCARGA: http://www.mediafire.com/?hu2myvzyt2j (http://www.mediafire.com/?hu2myvzyt2j)

Errores conocidos: Pues no sé qué pasa que algunos write del menú no se me muestran algunas veces... Es como si alguien les aplicase un delete_text pero... No tiene sentido... Sigo investigando.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: syous on September 04, 2009, 01:26:56 PM
karma +1 eres un crack ;D ;D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on September 04, 2009, 05:57:45 PM
wow, wow, wow!!!!
está increible.

porqué no usas put_pixel para poner las texturas, así no tienes que guardar en memoria los ids, y con clear screen borras lo puesto con put_pixel

[code language="bennu"]import "mod_text";
import "mod_grproc";
import "mod_video";
import "mod_map";
import "mod_screen";
import "mod_rand";
import "mod_say";
import "mod_mouse";
import "mod_dir";
import "mod_math";
import "mod_proc";
import "mod_string"
import "mod_key";
import "mod_draw";
import "mod_time";
import "mod_sound";
import "mod_wm";
import "mod_regex";
import "mod_file";
import "mod_sys";
import "mod_blendop";
import "mod_mem";
import "mod_debug";

private
val;
begin


set_mode(800,600,32);
from y=50 to 250;
  from z=50 to 150;
  put_pixel(z,y,rgb(50,50,z));
  end
end

while(!key(_esc))
  if (key(_enter))
     clear_screen();
  end
 
  if (key(_a))
    val=rand(50,250);
    from y=50 to 250;
      from z=50 to 150;
           put_pixel(z,y,rgb(val,50,z));
      end
    end
  end
frame;
end
end[/code]

Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 04, 2009, 09:02:49 PM
put_pixel()... Una de tantas que no conocía ni había usado nunca, ok, probaré!!!

Gracias
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Drumpi on September 04, 2009, 11:40:23 PM
Y qué estabas usando antes?
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: josebita on September 05, 2009, 03:55:01 AM
¡Vaya vuelco que ha dado el programa!

Felicidades!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 06, 2009, 03:48:55 PM
Drumpi, fallo mío, sí que uso put_pixel, tenía en la cabeza que era draw_pixel...

Gracias josebita xD

Y bueno, aquí os dejo en primicia la iluminación de Gouraud que acabo de implementar:

(http://www.fileden.com/files/2008/9/22/2109820/Gouraud.png)

DESCARGA: http://www.mediafire.com/?idummgmm2rm (http://www.mediafire.com/?idummgmm2rm)

Errores conocidos:

1) La iluminación está recién introducida, y no es combinable aún con el texturizado, esto significa que al iluminar se colorea en escala de grises. La luz es blanca rgb(255,255,255) aunque no me costará mucho mejorar todo esto.

2) Éste es grave... El algoritmo de interpolación de vértices para obtener la iluminación de un punto está basado en polígonos de 3 lados, sólo lee los 3 primeros vértices... Tengo el problema de que, para figuras de más de 3 vértices, la interpolación requiere una ordenación de los vértices por distancia y es algorítmicamente mucho más complejo, así que lo dejo para luego :P
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: FreeYourMind on September 06, 2009, 04:23:12 PM
Hola. Acabo de probar tu visor en 3 minutillos. Yo como tenia la r101 para windows (uso Vista), he tenido que volver a compilar.
No se muy bien trabajar con el, ya que no consigo que los objetos salgan texturizados como pones en tus pantallas, lo más visible que he conseguido ha sido la pantalla que te envio.

Aunque por lo poco que he visto al probarlo y por tus imagenes esta espectacular. Muchas gracias por tu trabajo.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 06, 2009, 05:35:16 PM
Hi FreeYourMind, la verdad es que con la integración de la iluminación he dejado el visor un poco "tocado", lo que he subido es una beta por así decirlo.

El texturizado lo he machacado por completo, aunque ya lo estoy integrando otra vez gracias a get_rgb() que me permite mezclar el color de la textura con el de la iluminación.

Lo que me muestras en pantalla probablemente sea porque has tocado el punto de vista, te explico un par de cosas a tener en cuenta para usar el visor correctamente tal y como está:

1) No toques el punto de vista por ahora, son aperturas de ángulo de visión y cosas así que no dan más que problemas al modificarlas :S

2) Antes de poder calcular la iluminación hay que hacer un wireframe.

3) Una vez hecho el render no se puede borrar la figura.

Vamos, que lo mejor que puedes hacer es mostrar wireframes hasta lograr una vista "agradable" y entonces ya renderizas. Ya he comentado que por ahora la iluminación de polígonos de más de 3 vértices está sin implementar, pero ya tengo en mente una forma de hacerla para polígonos de hasta 6 vértices (En la práctica no usaré polígonos de más vértices).

Ten en cuenta eso, que es una beta, durante esta semana la dejaré cerrada... No esperéis demasiado porque voy a contrarreloj con él y no podré meterle todo lo que quisiera... Pero para curiosos de "cómo se hizo el 3D" aquí quedará el visor xD

PD: Si me sobra tiempo dejaré una opción para mostrar por pantalla los cálculos matriciales que cambian la perspectiva o la rotación, como mínimo son curiosos de ver.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on September 07, 2009, 01:07:23 AM
hola, yo tampoco pude hacer que la verisón 1.0.3 funcionara  con el render... sin embargo he solucionado el problema de que no se borra lo que tienes...

he colocado el clear_screen en donde tienes un delete_draw en en for y me funcionó... je je je... te paso lo que moví de la 1.0.1 que es la que me ha funcionado el render

[code language="bennu"]FUNCTION borrar_wireframe()
BEGIN
   delete_text(all_text);
   FROM num_lineas=0 TO indice-1;

      delete_draw ( dibujo[num_lineas] );
   END
   clear_screen();
   indice=0;
END[/code]

después del primer render haces la rotación, le das a wireframe y luego a render y taran!!!...

te lo dejo aquí, espero te sirva :)

http://www.mediafire.com/download.php?mzonmzouydz

lo de los textos, no estoy muy seguro qué sea, quizá algun delete por ahí o alguna otra cosita... :)

la linea
[code language="bennu" options="singleline"]delete_draw ( dibujo[num_lineas] );[/code]
podrías cambiarla por:
[code language="bennu" options="singleline"]delete_draw ( 0 ); //borra todo lo que draw ha pintado[/code]
y sacarlo del bucle.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 07, 2009, 11:14:06 AM
delete_draw ( 0 ) !!!

Me da la impresión de que ahí tenemos la solución, gracias Prg!!!

Amigos, claro que no les funciona el render en la 1.0.3, les explico:

1) Hay que calcular el Wireframe
2) Hay que calcular la iluminación, puesto que es render con iluminación
3) Si intentamos hacer render no nos deja porque el dibujo no ha cambiado, así que hay que Transformar escena y por ejemplo escalar (1,1,1) que no cambia nada pero hace pensar al programa que sí :P
4) Ya podemos hacer el render

Como les dije, la iluminación está metida deprisa y corriendo, ahora estaba intentando solucionarlo.

El algoritmo de Gouraud para polígonos de N vértices es... es... Infernal...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on September 07, 2009, 11:37:58 AM
delete_draw(0) sólo borra lo que has puesto con draw
el clear_screen() borra el render. ya lo verás en el link que te pasé. en el modulo de video :)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: DCelso on September 07, 2009, 12:09:40 PM
windgate, te está quedando genial. Si le insertases lectura y escritura en algún formato estándar sería una muy buena utilidad
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 07, 2009, 12:35:20 PM
Lo tendré en cuenta DCelso, pero tras las decenas de docenas de horas que llevo programando... Cuando termine con esto me tomaré un descanso y luego ya veremos :P

El formato Md2 era sencillito de implementar por ejemplo...

Aún no he mirado tu link Prg, cuando saque un ratillo ::)

EDIT: Solucionado el tema de líneas de menú desaparecidas, he visto que tenía delete_text ( all_text ) forzados que se ejecutaban 2 veces... Ya sé que no debería tener mucho que ver, pero dejándolos sólo una vez funciona bien :P
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 07, 2009, 09:27:58 PM
Por fín conseguí integrar la textura con la iluminación, por ahora sólamente con la textura de mármol, ya que con la textura de madera tengo algún error pendiente de revisar...

(http://www.fileden.com/files/2008/9/22/2109820/cilindro_luz_marmol%2007.09.09.png)

DESCARGAR: http://www.mediafire.com/?mdhzn0h0m1h (http://www.mediafire.com/?mdhzn0h0m1h)

Ahora que ya tengo hecho lo que quería me falta simplemente mejorar interfaz, usabilidad, etc. Agradezco sugerencias, quejas, insultos e ideas, sobre todo insultos :P

EDIT: ¡¡¡IMPORTANTE!!! He tenido que retocar el tema de superficies/polígonos porque no, no son lo mismo :P
Esto implica que si queréis ver el cilindro así de bonito como en la captura anterior debéis cargar el archivo: cilindro_unisuperficie.ig

Con los demás veréis cosas raras... Estoy en ello :P

EDIT 2: Añado captura de la madera, ahora mejorada haciendo los anillos del tronco y esas cositas xD

(http://www.fileden.com/files/2008/9/22/2109820/cilindro_madera_luz%2007.09.09.png)

EDIT 3: Y he probado la carga de varios objetos, para componer escenas, esta captura me pone cachondo

(http://www.fileden.com/files/2008/9/22/2109820/escena%2008.09.09.png)

En la nueva versión estoy metiendo nuevos objetos .ig un poco más grandes para no tener que escalarlos cada vez que los cargas, viento en popa!!!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Drumpi on September 07, 2009, 11:51:04 PM
Ahora es cuando debes estar rozando el cielo con los dedos ;D ;D ;D
Enhorabuena.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Prg on September 08, 2009, 02:27:58 AM
se ve genial, increible... felicidades.

he encontrado algo. si cargas el objeto y luego le das a mostra wireframe ya no renderiza, si le das a renderizar sin mostrar wireframe si renderiza y se ve genial....
saludos
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Phoenix on September 08, 2009, 08:52:44 AM
Gran trabajo!
Felicidades :D
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 08, 2009, 12:13:16 PM
Quotehe encontrado algo. si cargas el objeto y luego le das a mostra wireframe ya no renderiza, si le das a renderizar sin mostrar wireframe si renderiza y se ve genial....
saludos

Es problema del algoritmo, que es "perezoso", sólo renderiza o wireframea si ha habido cambios en la escena, por eso si primero haces wireframe luego "no quiere" renderizar.

Acabo de añadir alguna opción nueva al menú, una de ellas es forzar redibujado para ese caso que dices, también he puesto un borrar lienzo y un mostrar ayuda basado en el Writer Deluxe de Dario, aunque para el texto de ayuda que es bastante largo me da algún que otro problema, ya se lo comentaré en persona :S

Oh, también he conseguido hacer que el render y el wireframe ignoren las caras no visibles, ganando bastante velocidad, y también usando PROCESS+FRAME en lugar de puras FUNCTION he conseguido que el render se haga polígono a polígono, "entreteniendo" al ojo un rato durante el lento proceso de render.

Con los exámenes que tengo estos días y teniendo en cuenta que los acabo el Viernes y empiezo a trabajar el Lunes... Tengo la sensación de que el visor quedará paralizado en breve... Ha sido bonito ver cómo es posible convertir las 2D en 3D :'(
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: josebita on September 08, 2009, 12:51:45 PM
Lo único que se me ocurre de mejora de interfaz (si quieres que siga siendo por teclado) es que admita tanto las pulsaciones de teclas mayúsculas como minúsculas para la misma opción.

Creo recordar que en la versión que probé había que pulsar la tecla minúscula para que el programa se enterara, a pesar de que en el interfaz estaba en mayúscula.

Pero vamos, por lo demás, el programa está genial. ¡Felicidades!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 08, 2009, 03:01:26 PM
Cierto Josebita, el menú principal lee los ascii, no las key, a diferencia del menú de transformaciones que lee las key... ¿Por qué los hice distintos? Pues uno de tantos errores de diseño que se cometen, si saco un rato lo cambio Josebita.

Por cierto, ¿Alguien lo ha conseguido correrlo en Linux? A mí me dice que le falta el mod_sound.so, no uso sonidos, pero la presentación inicial es capaz de reproducir un sonido y hace uso de play_song()

¿Reinstalo la .sh de Bennu más actualizada directamente o es recomendable desinstalar primero la anterior versión que tengo instalada?

Algún día dejaré de ser tan N44B de Linux supongo :-\
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: josebita on September 08, 2009, 03:09:33 PM
Yo lo probé en Linux, pero usando los paquetes de mi PPA, no con el bennu oficial.
Yo te sugeriría que primero desinstalaras y después reinstalaras la última versión.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 08, 2009, 04:10:21 PM
Maldita sea, no sé desinstalar la versión anterior que tengo en Ubuntu, de hecho no sé ni cuál es.

Ahora he ido a instalar la 1.00 RC8 y tras probar sudo install, sudo apt install y compañía me he acordado que lo que había que hacer era invocar el .sh como ejecutable sin más... No sé si seré el único que se lía para instalar los .sh en Linux, un LÉEME no vendría mal en el repositorio...

Bien, aquí dejo la última versión con las correcciones del menú (Mayúsculas/Minúsculas), las opciones nuevas comentadas y confirmación de salida del programa al pulsar E (Exit) ya que después de tener cargados 8 objetos me ha pasado alguna vez que he pulsado E sin querer y se me ha ido todo a la mieeerrrrda.

DESCARGAR: http://www.mediafire.com/?zmemdynfmzz (http://www.mediafire.com/?zmemdynfmzz)

También he eliminado muchos dialogos de debug que ya no invocaba y funciones que no se usaban.

PD: En el directorio objetos sólo cilindro.ig y cubo.ig funcionan bien. El resto son pruebas y experimentos, estoy intentando meter un diamante a partir de las coordenadas de un fichero de objeto 3D en otro formato, pero me vuelvo loco asociando vértices a polígonos y los he dejado a medias (corona.ig y pabellon.ig)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: SplinterGU on September 09, 2009, 02:33:58 AM
al fin lo probe... la verdad que muy bueno... no pense que iba a ser tan rapido... felicitaciones...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: syous on September 09, 2009, 08:40:22 AM
Quote from: Windgate on September 08, 2009, 04:10:21 PM
Maldita sea, no sé desinstalar la versión anterior que tengo en Ubuntu, de hecho no sé ni cuál es.

Ahora he ido a instalar la 1.00 RC8 y tras probar sudo install, sudo apt install y compañía me he acordado que lo que había que hacer era invocar el .sh como ejecutable sin más... No sé si seré el único que se lía para instalar los .sh en Linux, un LÉEME no vendría mal en el repositorio...


probastes apt-get remove nombre paquete  ;D ;D ;D para quitarlo y apt-get update para actualizar paquetes
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 12, 2009, 10:57:36 AM
Maldita sea, soy un noob. Vamos a ver:

1) No recuerdo la versión de BennuGD para Linux que tengo instalada... Pero mod_sound.so no me lo encuentra.

2) Intento instalar el .sh de la 1.0.0 RC9 y ni con sudo, ni con install ni con nada, no hay manera :S

¿Alguien me puede orientar? Tengo la .sh descargada en el Escritorio, y estoy desde la terminal en el directorio del Escritorio probando comandos.

He probado "apt-get upadte" y lo único que he conseguido es que actualice cosas de Ubuntu, pero de Bennu nada.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: josebita on September 12, 2009, 11:23:38 AM
Para instalar el script, prueba lo del wiki (http://wiki.bennugd.org/index.php?title=Tutorial:Setting_up_Bennu_on_Linux#Installing_with_the_official_script_.28for_most_Linux_systems.29)
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 12, 2009, 11:34:08 AM
Soy un mamón, creo que me faltaba tener el .sh en el directorio home... ¿No hay forma de cambiar el script para que no sea necesario instalar en home? O al menos que avise de ello un léeme... El .sh podría venir en un .zip como en el caso de Windows y tener asociado el léeme... Son sugerencias.

Gracias Josebita!!!
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: josebita on September 12, 2009, 01:57:18 PM
De nada; ayer le anduve metiendo caña a esa página y creo que ha quedado mejor.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: SplinterGU on September 12, 2009, 02:23:32 PM
no es necesario ponerlo en el directorio home... lo que es necesario es que tenga permisos de ejecucion y que lo ejecutes como script y desde el usuario root.

lo del wiki, es aconsejable solo por cuestion de orden...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 12, 2009, 03:15:02 PM
Sí que le puse permisos de ejecución y le puse un sudo delante (Estoy en Ubuntu), pero desde el Escritorio no me dejó correrlo... Ahora ando en Windows XP con el tutorial de Bennu, luego pruebo con el .sh en /home

¿Le metiste caña a cuál página Josebita? Yo siempre bajo las nuevas versiones desde el perfil de Splinter:
http://betatester.bennugd.org/snapshot/ (http://betatester.bennugd.org/snapshot/) y ahí lo he visto todo igual que antes.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: FreeYourMind on September 12, 2009, 04:13:03 PM
Lo has visto mal, porque esta vez si que estan (son los ultimos con r105 en el nombre). Yo ya actualice el que uso para Windows/Wiz.
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 12, 2009, 05:14:33 PM
Verlos los veo en el link del perfil de Splinter y he descargado la última versión para Linux, es lo que hago siempre, a ver, os dejo el error que me sale, he seguido el wiki para instalar:

windgate@windgate-laptop:/home$ sudo ./bgd-1.0.0RC9\(r105\)-linux.sh
Bennu Game Development Installer
(C) 2008 - SplinterGU

Use: ./bgd-1.0.0RC9(r105)-linux.sh --help for help text

Installing Bennu Game Development...
bgd/
bgd/module/
bgd/module/mod_crypt.so
bgd/module/mod_sys.so
bgd/module/mod_file.so
bgd/module/mod_draw.so
bgd/module/mod_map.so
bgd/module/mod_math.so
bgd/module/mod_mem.so
bgd/module/mod_regex.so
bgd/module/mod_time.so
bgd/module/mod_blendop.so
bgd/module/mod_mouse.so
bgd/module/mod_dir.so
bgd/module/mod_scroll.so
bgd/module/mod_wm.so
bgd/module/mod_effects.so
bgd/module/mod_flic.so
bgd/module/mod_m7.so
bgd/module/mod_sound.so
bgd/module/mod_string.so
bgd/module/mod_joy.so
bgd/module/mod_sort.so
bgd/module/mod_timers.so
bgd/module/mod_cd.so
bgd/module/mod_text.so
bgd/module/mod_video.so
bgd/module/mod_path.so
bgd/module/mod_proc.so
bgd/module/mod_key.so
bgd/module/mod_rand.so
bgd/module/mod_say.so
bgd/module/mod_screen.so
bgd/module/mod_grproc.so
bgd/module/mod_debug.so
bgd/lib/
bgd/lib/libjoy.so
bgd/lib/libvideo.so
bgd/lib/libmouse.so
bgd/lib/libbgdrtm.so
bgd/lib/libgrbase.so
bgd/lib/libfont.so
bgd/lib/libscroll.so
bgd/lib/libtext.so
bgd/lib/libsdlhandler.so
bgd/lib/libblit.so
bgd/lib/libdraw.so
bgd/lib/libwm.so
bgd/lib/librender.so
bgd/lib/libkey.so
bin/
bin/moddesc
bin/bgdc
bin/bgdi
ln: creando el enlace simbólico «libmod_blendop.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_cd.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_crypt.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_debug.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_dir.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_draw.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_effects.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_file.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_flic.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_grproc.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_joy.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_key.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_m7.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_map.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_math.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_mem.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_mouse.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_path.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_proc.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_rand.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_regex.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_say.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_screen.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_scroll.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_sort.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_sound.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_string.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_sys.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_text.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_timers.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_time.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_video.so»: El archivo ya existe
ln: creando el enlace simbólico «libmod_wm.so»: El archivo ya existe
done!


Al final me pone done! y eso es nuevo, pero me pongo a compilar mis juegos y me dice que hay error:

BGDC 1.0.0 (Sep 11 2009 21:34:11)
Copyright � 2006-2009 SplinterGU (Fenix/BennuGD)
Copyright � 2002-2006 Fenix Team (Fenix)
Copyright � 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)
Bennu Game Development comes with ABSOLUTELY NO WARRANTY;
see COPYING for details

/media/Windgate/Documents and Settings/Windgate/Escritorio/Universidad XP/Visor 3D/librender:2: warning: Variable redeclared ("ALPHA_STEPS")
/media/Windgate/Documents and Settings/Windgate/Escritorio/Universidad XP/Visor 3D/visor.imp:15: error: Library "mod_sound.so" not found (EOF)
Pulsa intro para continuar


Es el mismo error que tenía antes, mod_sound.so no se encuentra...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: FreeYourMind on September 12, 2009, 07:58:27 PM
Es lo que da Linux :) Pasate a Vista y no tendras problemas, yo compile sin problemas con la r105 (por fin Vista gana ;)).
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: SplinterGU on September 12, 2009, 08:08:31 PM
1) lo sugerible (aunque no es el caso) es que desinstales la version previa...

./bgd-1.0.0RC9(r105)-linux.sh --uninstall

2) tenes que tener instalado sdl, sdl_mixer, sdl_image y no recuerdo que otras mas... en tu caso falla por la mixer... quizas libogg, libpng tambien faltan...

hace ldd /usr/lib/bgd/module/mod_sound.so y te va a decir que librerias te faltan.

3) los warnings de link no son problemas... son warnings...

el punto 2 resolvera tu problema...
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on September 12, 2009, 08:50:18 PM
Ok, lo pruebo en cuanto vuelva a Ubuntu, llevo todo el día de un SO a otro... Gracias Splinter
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: FreeYourMind on March 07, 2010, 10:17:08 AM
Has puesto password a los archivos mediafire o te has quedado sin cuenta ?
Title: Re: Generador/visor de modelos 3D sencillos programado totalmente en 2D
Post by: Windgate on March 07, 2010, 03:27:38 PM
Las últimas versiones sí que me funcionan bien, de todas formas subiré lo que tengo a mi hosting antes de que se me borre la cuenta de Mediafire, ya hace un año que no la toco, gracias por avisar :P