Category: General


Bueno después de algunas horas atrancado con esto me hago a mi mismo un resumen para intentar afianzarlo. De hecho no debería hacerlo por ser bastante sencillo. La complejidad, para mi, ha venido por mal entender un concepto y partiendo de esa falsa premisa no me entraba en la sesera el resto.

He comenzado este artículo haciendo referencia a LIBGDX que es un framework capaz de permitirnos crear una aplicación que se ejecute tanto en escritorio, como en el navegador, como en dispositivos Android (que es por lo que yo la estoy usando). Este framework contiene una “adaptación” de OPENGL ES en su interior y para desenvolverme con las funciones que hacen uso y referencia a OPENGL he tenido que ponerme a aprender algunas cosas.

En fin, OPENGL ES es …. puedes verlo aquí o aquí, una API variante de OPENGL y orientada a dispositivos integrados. A partir de ahora los conceptos que se describen son relacionados con mi experiencia con LIBGDX, que no con OPENGL que nunca lo he usado.

Entre las muchas funcionalidades de LIBGDX tenemos la de poder crear un entorno 3D y llenarlo con objetos que se representaran como si los miráramos a través de una cámara. Esta cámara tendrá su posición en el espacio, o lo que es lo mismo, sus coordenadas en el sistema de coordenadas (en adelante SC) del entorno 3D que nos crea.

El entorno 3D estará, suponemos,repleto de multitud de objetos y estos serán observados desde la posición de la cámara. Además del lugar donde se encuentra la cámara, en LIBGDX podemos definir hacia donde mira la cámara y las distancias mínima y máxima dentro de las cuales cualquier objeto sería visible y por último la relación de aspecto, es decir, el ancho y el alto de la imagen que será capturada por la cámara. Esto define lo que se denomina frustrum, que no es sino la pirámide truncada que se muestra en la figura.

Frustrum OPENGL ES

Y se puede definir con las siguientes funciones:

		PerspectiveCamera camera = new PerspectiveCamera(60, 800, 480);
		camera.position.set(0, 2, 4);
		camera.direction.set(0, -2, -4);
		camera.near = 1;
		camera.far = 1000;

 
En esas lineas de ejemplo estamos creando un objeto de tipo cámara perspectiva con una resolución de 800×480(típica de muchos dispositivos móviles), la estamos situando en las coordenadas (0,2,4) y la hacemos mirar hacia el origen de coordenadas lo que equivale al vector indicado por (0,-2,-4). Además y por último definimos la altura del frustrum indicando a que distancias cercana y lejana puede ver la cámara.

Eso en lo concerniente a la creación de la cámara. Pero lo que realmente me traía de cabeza era el tema de las matrices para incrustar otros elementos en la escena 3D. Yo por algún motivo había comprendido mal siempre que estas transformaciones gráficas partían, o mejor dicho se hacían, desde el punto de vista de la cámara. Y no es cierto. En realidad, por defecto todos los objetos que agregásemos a una escena aparecerían ocupando todos la coordenada origen (0,0,0)

La mecánica para agregar cualquier objeto PODRÍA ser la siguiente (dependiendo de las necesidades de diseño del espacio 3D concreto podrían usarse en otros orden o bien usarse unas o no otras). En fin, para describir el proceso supongamos que todo objeto 3D llega a la escena a través de un portal espaciotemporal.

Lo primero que hemos de hacer es ESTABLECER la matriz gráfica, o lo que es lo mismo asegurarnos que nuestro portal está en el origen de coordenadas.
A continuación GIRAREMOS nuestro portal los grados que sean necesarios para que el objeto aparezca con las inclinaciones adecuadas.
Después MOVEREMOS el portal a las coordenadas donde queremos que el objeto 3D aparezca.
Y, por último, ELIMINAREMOS la matriz gráfica, es decir, eliminaremos el portal.

Esto traducido a lineas de código es:

		gl.glPushMatrix();		//SITUAMOS EL PORTAL
		gl.glRotatef(30, 0, 1, 0);	//GIRAMOS EL PORTAL 30º EJE Y
		gl.glTranslatef( 1, 3, -2);	//MOVEMOS EL PORTAL A LAS COORDENADAS

		//OPERACIONES DE RENDERIZADO  Y TEXTURIZADO DEL OBJETO

		gl.glPopMatrix();		//ELIMINAMOS EL PORTAL

 
Esas operaciones se repetirían para cada objeto 3D y en última instancia algunos otros métodos asociados a la cámara serían los encargados de mostrar el resultado, pero eso da para algún futuro post.

Mientras lo he redactado me he hecho cargo de que puede parecer un autentico pegote para quien ya lo conoce, pero después de haberlo malentendido durante un buen tiempo no quería dejar pasar la oportunidad de explicarlo, principalmente para mi mismo, y que así pueda ser de utilidad en el futuro.

Un saludo

Anuncios

Anémona

Hola. ¿que tal estáis?

Debido a que las hombreras del Ironman no terminan de gustarme y la falta de referencias para modelar otros trozos de la armadura me tienen un poco parado he cambiado de tercio y me he puesto a modelar por modelar una anémona.

La he puesto sobre una imagen tomada de haciendofotos.com

Anemona 3d
Anémona sobre imagen de fondo marino

Quizás la añada luego un pez payaso, que creo que le hace falta. 🙂

EDITO: Al final, me he puesto a modelar los peces y ya que estaba he optado por crear una imagen completa con BLENDER para el modelado y el render y GIMP para las texturas de los materiales y la postproducción.

Anemona y peces 3d
Anémona y peces payaso

Buenas de nuevo, continuación del modelo de IRONMAN.

Me he entretenido unos cuantos días en conseguir que los materiales fueran lo más correctos posibles. Seguramente no tendría que haberlo hecho hasta haber acabado el modelo pero ya esta hecho.

Voy a ver si acabo las jodidas hombreras.
Hasta pronto. Si algo no os gusta os agradeceré cualquier comentario.

IRONMAN wip09
IRONMAN (wip09)

Travelling ciudad (WIP)

Ando intentando montar una toma de una ciudad y la verdad tiene trabajo para rato y eso que no me he ni planteado como voy a texturizar los edificios. Pero lo que más me preocupaba era que la ruta de la cámara fuera cutre… o lo que es lo mismo que los movimientos no fueran fluidos. Total, que como no sabia hacerlo me he puesto a intentarlo y esto es lo que me ha salido.

Edito: puesto un vídeo con un poco mas de detalle.

Avance sable completo

Aspecto del sable ya acabado

sable de luz
Sable de luz
sable de luz
Efecto de la iluminación indirecta.

En estos próximos días a ver si soy capaz de hacer que el personaje de la anterior entrada lo coja con la mano y lo mueva con el consiguiente sonido característico… para mi sería todo un logro.

Creo que lo suyo ademas sería poner un tutorial de como se hace por que hay varias versiones diferentes rulando por ahí y la verdad que al final he usado un método propio.

Ciclo de paseo

Hola de nuevo.
Lamento la cantidad de tiempo enorme que hace que no escribo, pero me es del todo imposible compaginar esto con mi trabajo y mi vida. Pero ahora que parece que estamos un poco mas desahogados, me he tomado la libertad como comentaba el otro día en un grupo de conversación de Whatsapp, de intentar echar a andar algunos de los personajes que hice ya hace mas de dos años…. copón! como pasa el tiempo.

Espero que os guste.

Lo cierto es que he usado el modelo que hice hace muchísimo tiempo y veo fallos garrafales. Pero estaba mas interesado en aprender a manejar la linea de tiempo y la animación de forma básica que a ponerme a modelar de nuevo.. si veo que puedo añadirle texturas en los próximos días, lo haré. Edito: texturas y video asociado añadido. Y el siguiente paso para este personaje sería desenvainar y encender un sable láser…. que se que todos lo estáis deseando.

Un saludo.

2 Anécdotas de Campus Universitario

Este martes 19 por la mañana, como os comenté por twitter, tenía necesidad de realizar unas gestiones en la administración de la UCO de la que, al parecer, me he desprendido definitivamente.

Increíblemente la peor parte de esta visita al campus no me la ha proporcionado el conjunto de trabajadores asalariados por el gobierno que trabajan en la secretaria. La peor parte me la han proporcionado tres energúmenos, tres retrógrados y salvajes espécimenes de mi especie que comparten mi especie y lamentablemente mi mismo sexo y que yo pensaba que por tener 15 años menos que yo no tendrían semejante oclusión de mollera.

Pero no vayamos aun a eso.

ANÉCDOTA UNO

En la secretaria del campus universitario de rabanales, para quien no haya estado allí, hay un sistema muy novedoso (de risa) de sacar números para que te atiendan en la correspondiente mesa de la secretaria que corresponda a tu facultad, ya que allí se congregan todas las secretarias en una misma sala. Parece todo muy bien montado a priori.

Llego a las 8:40 y no parece que la máquina funcione (empezamos bien). Me informa una amable chica que me tengo que apuntar en una lista en una mesa que está un poco mas alejada. Esto de la lista ya me suena más… pero hacía años que no lo veía, como desde la última que yo me matriculé hace seis años.

Me apunto, no recuerdo el número, por encima del 60. Se que había apuntados alumnos de 5 ó 6 carreras, así que no podía luego tocarme que me llamaran muy tarde.

Miro un rato twitter, me dispongo a leer hasta las 10:00, hora de apertura de la secretaria al público, cuando de repente veo que alguien coge la lista y empieza a leerla en voz alta y la gente se va poniendo en orden al lado de la máquina (yo os juro que me ponía que estaba fuera de servicio cuando llegué).

-Esto… ¿Pero que mierda?, oye, ¿que pasa?- le pregunto a un yogurín que veo mu concentrao y que parecía que estaba más despistado que yo.
-Ahora la encienden y ya podemos sacar número.- me contesta tan pancho, lo llaman y se va.

Me Pareció ver la escena desde fuera. Menos mal que estaba el 60 y pico que si no me saltan. ni me enteré de la mayoría de los nombres… ¿Para que mierda me dejan apagada la máquina?

El hecho de apuntar los nombres para que no haya muertes ni atropellos lo entiendo. Que la gente los últimos días de matriculaciones se pone atacadísima.
Lo que no llego a entender es porque no se puede poner en funcionamiento la maquina a las 7:30 y que la gente que va llegando pueda sacar numero y no tener que apuntarse y hacer luego semejante coreografía estúpida. Supongo que habrá una buena razón para todo esto, pero los amables trabajadores de secretariado la mantendrán en secreto y podría ser una de esas cosas de las que debatir infinitamente si delante hubiera cerveza.

ANÉCDOTA DOS

Aunque me molesta un poco catalogarlo como anécdota, este segundo pequeño relato como os decía tiene que ver con tres cenutrios de no muy avanzada edad. Los llamaré Zenutrio, Zimple y Zopenco y los tres han interpretado un acto en una obra de teatro homofóbica de lo más desagradable la cual procedo a relatar como protesta. En realidad la expongo como ejemplo de algo que esta sociedad debería aprender a superar. Me ha dolido sobremanera ver a gente a la que casi doblo en la edad decir semejantes barbaridades.

Esta conversación ha ocurrido en una mesa de 6 sillas de la sala de espera de la secretaria. Yo estaba sentado en un lado de la mesa y ellos enfrente mía, a menos de metro y medio, mientras yo intentaba leer de mi kindle.

Cuando se pusieron en modo cuchicheo atrajeron mi atención:

Zenutrio: Oye, ¿sabéis el chaval ese de las gafas que lleva esas sudaderas tan llamativas de delante nuestra?
Zimple y Zopenco: no, cual?

Zenutrio: El que hizo la pregunta chorra en física ayer…
Zimple: Ah! si.
Zopenco: ¿que pasa con el?

Zenutrio: Cuando sali anoche de practicas estaba al lado de la biblioteca con otro hablando, pegado pero pegado, casi morro con morro.
Zimple: Y?

Zenutrio: que quieres que te lo traduzca? (Ruidito de succión)
Zimple y Zopenco: venga ya!

Zenutrio: Si es que ya no sabes quien es y quien no.
Zopenco: y que lo digas. ¿Sabes quien es el otro? para estar al loro.

Zenutrio: Pues ahora que lo dices, no me fije.

Zimple: ¿sabéis el lado bueno?
Zopenco: no, no hay lado bueno.
Zimple: si … si lo hay. Que al enterarnos ahora nos libramos de enterarnos, por ejemplo, después de que se haya apuntado con nosotros al equipo de futbito y se haya duchado con nosotros.

(Gestos de aprobación)

Bueno. Hasta aquí aguanté yo. Yo creo que ya era bastante; me estaba a punto de reventar la vena de la frente y entonces solté un bufido muy sonoro… me miraron… me olfatee los sobacos… y dije…

-No… pues no soy no.. algo huele asquerosamente mal en esta mesa y no soy yo.

Tras un momento de incomodidad y las risitas de una chica que esta tras de mi se arremolinaron y se quedaron callados. Me he puesto rojo de la vergüenza, normalmente no salto si no me incumbe. Además se podían haber defendido de cualquier forma y eran tres… aunque fueran 3 yogures.

Llevaba todo el día sin saber como escribir esto. La verdad es que al final lo he escrito a lo bestia. En la actualidad, tres universitarios cualesquiera manteniendo esa conversación me parece de un nivel de trogloditis muy severa. Quizás incurable para este sistema. Unos me diréis que tres no son el total, y otros que con esa muestra aleatoria es más que suficiente para tener una muestra general. Yo por mi parte ando dispuesto a hacer otros muestreos pero muy desilusionado con los resultados obtenidos hasta el momento.

FIN