2010/08/23

10-08-23 [video] Thesis: Augmented Reality MultiMarker (PoC)


Lista la aplicación de Realidad Expandida con múltiples marcadores. Dejo el video demostrativo.

Yo soy Alberto y ese ha sido mi post.Happy Codding!

2010/08/13

10-08-13 [YouTube] Thesis: Augmented Reality (PoC)



Esta es una Prueba de Poncepto de una aplicación que me encuentro desarrollando y que involucra Realidad Aumentada utilizando ARToolKit y mi propio cargador de objetos en dll.

Yo soy Alberto y ese ha sido mi post.Happy Codding!

2010/08/11

10-08-11 [YouTube] Mano Amiga 2.0 - Mexican Sign Languaje



En este video estoy presentando un programa que muestra cada caracter del lenguaje de señas mexicano al presionar una tecla en el teclado de una PC (Lo lamento no hay versión para Mac). Y es una actualización de mi primer programa "Mano Amiga". Este programa sera liberado como freeware a su tiempo.

Realice este programa como parte de un set de aplicaciones de mi dll cargador de modelos, que ayudara a una variedad de programadores (desde novatos hasta expertos) en la carga de modelos tridimensionales para sus propias aplicaciones.

Yo soy Alberto y ese ha sido mi post.Happy Codding!

2010/08/06

10-08-06 Un pequeño bug en la carga de mundos

Apareció un pequeño bug en la carga de mundos, y espero en estos días tener tiempo para revisarlo, el bug consiste en que al colocar los modelos y guardar el archivo al volverlo a abrir los modelos no están ni en la posición ni en el tamaño correcto, sin embargo carga todos y en el estado guardado. Faltara revisar ese detalle y corregir las rutinas necesarias, es un bug menor... pero ya es viernes :)

Yo soy Alberto y ese ha sido mi post. Happy Codding!

2010/08/02

10-08-01 Tutorial para utilizar el dll

Tutorial para utilizar el BTO.dll
En este post describo como crear un nuevo proyecto y configurar Visual Studio 2005 para poder utilizar el bto.dll en aplicaciones propias.

El tutorial describe dos partes, la primera es como crear un proyecto desde cero que incluya el dll, usuarios avanzados pueden brincar hasta la linea punteada, en donde se describen las condiciones y configuración particular del proyecto.

Lo primero que hay que hacer es crear un nuevo proyecto:
Después seleccionamos un proyecto en blanco, elegimos un nombre y damos click en aceptar:


Visual Studio creara automáticamente la carpeta del proyecto, en la cual hay que copiar el siguiente contenido:

Los dos pasos siguientes son opcionales pero ayudaran a la visualización de cabeceras del dll:
Agregamos una cabecera existente:

Agregamos BTODLL.h


Es importante que las cabeceras que vayan a hacer uso del dll incluyan la cabecera BTODLL.h:
#include "BTODLL.h"
--------------------------------------------------------------------------------------------------------
A continuación damos click en propiedades del proyecto:
Y configuramos lo siguiente para Debug:

1) En C++ / General, no debemos olvidar incluir la carpeta "include"

2) En C++ / Command Line, no olvidemos incluir las directivas /EHsc /MDd

3) En linker / input no olvidar incluir el BTOd.lib:
Configuramos lo siguiente para Release:
1) En C++ / General, no debemos olvidar incluir la carpeta "include"

2) En C++ / Command Line, no olvidemos incluir las directivas /EHsc /MD

3) En linker / input no olvidar incluir el BTO.lib:

No olvidemos que cuando compilamos generamos un ejecutable, y este buscara al momento de cargar el archivo BTO.dll o BTOd.dll (segun sea el caso de Release o Debug respectivamente) y este archivo debe estar presente en la misma carpeta que el ejecutable, así mismo en caso de no tener instalado Glut.dll y glut32.dll en la carpeta de system32 de windows.

El archivo esta siendo evaluado y en cuanto tenga opción de hacerlo lo liberare, por lo pronto, si tienen algún comentario por favor háganlo al correo que ya conocen.

Yo soy Alberto y ese ha sido mi post. Happy Codding!

2010/08/01

10-07-30 Thesis: World in a dll (PoC)



En este video demuestro la funcionalidad del dll en ejecutable, como se puede ver en el video el tamaño de los ejecutables se reduce dramáticamente.

Seguimos en etapa de beta y si alguien quiere ser beta tester es bienvenido :)

Yo soy Alberto y ese ha sido mi post.
Happy Codding!

2010/07/27

10-07-27 Dll Corriendo para Modelos




Y después de llorar lagrimas de sangre y desesperación... tenemos una dll que corre los modelos. :)


Es nefasto el sistema de encapsulado de la dll que no te permite observar la sección de memoria en la que estas trabajando... honestamente creo que prefiero trabajar directamente con lineas y lineas y lineas y lineas (bueno ya entendieron la idea) de código, que la "simplicidad" que ofrece una dll. Ya hace todo lo que tiene que hacer. el Problema consiste en que si no puedo acceder a todo lo que esta en vectores fuera de la dll y en código, es muy difícil hacer funciones que utilicen esa información no creen?


Este primer dll permite cargar modelos y dibujarlos en pantalla, con toda la funcionalidad que el cargador de modelos tiene, cambiar materiales, frames, animaciones, estados, etc. Y con la mayoría de la información disponible para el programador.


Así mismo hace todo lo que esta programada para hacer para Mundos... sin embargo el problema con los mundos es que básicamente la clase mundos utiliza un vector de modelos y métodos... es todo... y si no puedo ver información de vectores... pues no puedo ver el contenido de la clase, creo que mi única salida es realmente entender como puedo ver el contenido de esa sección de memoria y si alguien lo sabe por favor haganmelo saber o cambiar la manera de trabajar con los modelos mediante operadores new y delete... y manejar mis propios tipos de datos sin depender del STD Vector en lo absoluto (ya me siento desnudo, es eso natural?).


Por lo pronto dejo una imagen de la ya conocida YF19 corriendo desde la dll :)

Yo soy Alberto y ese ha sido mi Post.
Happy Codding!


2010/07/23

10-07-23 Maldiciendo la accesibilidad en un vector dentro de una clase en un dll



Hace mas de un mes estoy atorado metiendo el código en una dll y llegamos a la conclusion logica... No se como!!!

El problema radica en que no puedo accesar por fuera de la dll al contenido de una clase si este esta en forma de vector mediante la libreria la mayoría de mis estructuras almacenan la informacion en vectores para facilidad de la vida del programador (mi  facilidad), pero resulta que empaquetar vectores no es tan trivial como empaquetar estrucutras de datos sencillas. 

Aun meter apuntadores es mucho mas sencillo que vectores.

Abra que buscarle solución al problema o dejar la dll distribuible con funcionalidad limitada, lo lamento, pero cambiar mis vectores por apuntadores no es tarea sencilla o mas aun, cambiar mis clases por estructuras (segunda solución  que se me ocurre) tomaría mucho tiempo, del que no dispongo :(

Yo soy Alberto y ese ha sido mi post.

Not so "Happy Codding!" for my self this time ='(

2010/07/22

10-07-22 Reanudando las entradas

Muchas cosas han pasado, muchas muchas cosas...
Quien haya entendido la linea anterior mas allá de la razón obvia... ES UN FREAK! y tiene mi respeto :)

No había tenido tiempo de publicar... o mas bien no había publicado en el blog, porque en Facebook ya habrán visto los avances.

Para todos los que no me tienen en Facebook... y aun así siguen las publicaciones esporádicas de este blog... Déjenme comentarles que el código de "Cargador BTO" esta casi completo. Y hay una serie de grandes cambios, el primero,  el proyecto "Cargador BTO" y "Visor BTO" se han modificado, "Visor BTO" sigue en pie pero ahora sera una aplicación mas del nuevo proyecto "BTO DLL" formalmente conocido como "Cargador BTO", pienso dejarlo como libre distribución, empaquetado en un dll para que el programador pueda utilizarlo sin complicaciones de código, la dll esta en un 60% de realización, el código ya esta listo en su totalidad pero me sigo peleando con el empaquetamiento, hace una serie de cosas raras... o debo decir NO HACE UNA SERIE DE COSAS? jaja en fin, los mantendré al tanto de nuevo con lo que ocurra, pero no puedo subir fotos nuevas al blog dado que estamos estancados en código... quieren que suba fotos de código??? Eso pensé....

En este punto de la vida ya se acabaron los Chuck Norries Facts que tanto nos gustaban, si... hay muuuuchos, pero ya no quedan muchos que sean buenos... por lo que los omitiré de las publicaciones, aparecerán esporadicamente cuando haya alguno que merezca la pena ser leído.

Yo soy Alberto y ese ha sido mi post.
Happy Codding!


2010/02/18

10-02-18 2 Menús listos.

Hace un rato que no publico aquí los avances. pero por lo pronto ya tengo dos menús listos, el de edición de materiales:

y el de Grupos:


También van avanzados los de Frames y Secuencias pero estos aun no modifican nada, el de Frames solamente avanza frame por frame para verlos. El de secuencias selecciona la animación a mostrar y da la opción de repetirla.

Estaré trabajando en estos días en los menúes de Jerarquía, y mejorando los de Frames y Secuencias.

Después de esto quiero probar meterle al formato una implementación para hacer maquinas de estados.

Y seguiría con escribir la versión 2.0 del editor de mundos. Aunque posiblemente junte ambos programas en una sola aplicación.








  • Happy Codding!

    2010/01/28

    10-01-28 Editor de Mundos terminado

    El editor de mundos esta terminado en cuanto a GUI se refiere, aun hay algunos tweaks que se pueden incluir. como seleccion de objetos en pantalla por clicks de mouse o cosas similares, sin embargo por el momento me enfocare a reescribir el traductor de modelos OBJ a BTO.

    Hay un par de videos del editor de mundos en mi cuenta en youtube:
    Video Pt 1
    Video Pt 2

    Happy Codding!

    2010/01/22

    10-01-22 Sobre los avances

    He estado publicando mis avances ya en video por medio de mi canal de Youtube:
    El cargador de Mundos ya esta listo, ahora solo hay que implementarle una Interfaz grafica.


    Happy Codding!

    2010/01/12

    10-01-12a Cargando multiples Objetos con Animacion

    Los avances del dia de ayer no fueron publicados pero los publico en conjunto con los de hoy.

    Ya quedo el cambiar de frame con objetos en la posicion que establece el archivo BTO para cada frame. Lo que falta para dejar una animacion clave es poco y solo bastara con hacer un metodo que diga de que frame a que frame se va a pintar y el orden. De este modo se puede mandar pintar una animacion en particular.

    Los cambios del dia incluyen el poder cargar mas de un modelo y ponerlos a animar juntos.

    No tengo Camtasia instalado en este momento asi que no puedo grabar pantalla, pero en cuanto lo instale subire un video demostrativo.

    Happy Codding!

    2010/01/08

    10-01-08 Cargador al 80% Nuevo Entorno


    Por el momeno no hay avances.

    Solamente he cambiado el Entorno de OGRE para incluir entradas de teclado y mouse, sinembargo por el momento no he podido hacer que las entradas afecten la posicion de los grupos y asi lograr la animacion.

    Revisare un par de tutoriales que encontre en la red a ver que logro averiguar al respecto.

    Chuck Norris once lost the remote, but maintained control of the TV by yelling at it in between bites of his "Filet of Child" sandwich.

    Happy Codding!

    10-01-08 Cargador al 80%


    Como pueden ver el cargador ya funciona al 80%. Para solucionar mi problema del dia de ayer tube que rehacer lo que hice el dia de antier, deje de usar mi propoio formato de Jerarquias y utilize el formato nativo de OGRE de jerarquias.

    El problema de las rotaciones sigue siendo el mismo no puedo orientar y luego trasladar, al menos no en el mismo ciclo, lo cual es una patada en las bolas para mi trabajo futuro, pero para el trabajo inmediato esta funcionando el posicionamiento de mis grupos.

    Problemas inmediatos:
    +Mis modelos deben medir menos de 100 grupos... puedo hacer que sean de mas pero necesito un numero fijo al momento pues el apuntador no me deja hacerlo un numero variable.
    +Necesito encontrar la manera para que cada ciclo pinte un modelo diferente.

    Chuck Norris once rode a nine foot grizzly bear through an automatic car wash, instead of taking a shower.

    Happy Codding!

    2010/01/07

    10-01-07 Hoy no fue un gran dia para la ciencia


    Bueno aclaro que este texto lo escribo hasta hoy porque ayer estaba tan harto que nisiquiera tenia ganas de explicar... ahora lo hago. Lo que yo queiro obtener es A y lo que obtengo de diferentes maneras es B. El A que obtube para esta foto lo hice a ojo de buen cubero... y todos sabemos que la computacion grafica es una ciencia exacta... o que alguien que juegue xbox tiene a un programador sentado junto a el para cada frame acomodarle las graficas para que se vea bien? no verdad?

    Resulta que OpenGL Rotrar y Trasladar es diferente a Trasladar y Rotar, pero para OGRE no. No se explicarlo a ciencia cierta, pero la matriz de proyeccion parece solo ser afectada al final del ciclo... lo que hace mi vida una pesadilla... O bueno... al menos la vida de mi cargador.

    Afortunadamente para cuando escribo esto (el dia 8 a las 10:00AM) logre solucionar mi problema y lo explico en la siguiente entrada.

    The word 'Kill' was invented by Chuck Norris. Other words were 'Die', 'Beer', and 'What'.

    Happy Codding!

    2010/01/06

    10-01-06b Cargador de objetos al 70%


    Pues el cargador ya promete. Ya maneja jerarquias y acomoda en sus posiciones correctas a los grupos, ahora se presenta un nuevo problema.

    El manejo de las rotaciones en ogre se hace por medio de Quaterniones, lo cual quiero aclarar, es muy bueno, el problema es que las animaciones las tengo por rotaciones normales como las de OpenGL, por lo que al momento te aplicarlas, se hacen diferente. En OpenGL salen directo, aqui tendre que hacer una serie de artilugios pues si las rotaciones estan en partes compuetas... los resultados son como el de abajo:



    No puedo pintar como en OpenGL los vertices donde a mi se me de la gana por cada ciclo, en OGRE se cargan los objetos una vez y de ahi se utilizan como recursos, por lo que mis funciones BTORotatef, BTO Translatef, BTOScalef tambien son inutiles despues de cargado el modelo y traducido a OGRE. Y descargar los objetos y volverlos a crear cada ciclo no tiene sentido.

    Como ya pinta tambien por frames solamente falta acomodar las rotaciones para que se vean bien y redisenar las funciones de Animacion para que pinten con OGRE.

    Despues de eso lo que sigue es el cargador de mundos.

    If Chuck Norris wants your opinion, he'll beat it into you.

    Happy Codding!

    10-01-06a Cargador de objetos al 60%


    Ok creo que soy algo subjetivo con esto de los porcentajes... pero hay un nuevo avance asi que supongo del 50 tendria que subir mas no?

    Ya puedo cargar mas de un material por modelo. Sigo sin cargar animaciones y ese sera el siguiente paso.

    Debido a la manera de cargar de OGRE es algo complicado hacer que cada poligono tenga un material diferente (Como en el caso de OpenGL) y tendria que hacer un modelo para cada poligono... lo cual no hare, es demaciado desperdicio de memoria, la manera en la que trabaja este cargador, hace que cada grupo sea un modelo dentro de OGRE y si bien es desperdicio no lo es tanto como que fuera un modelo para cada poligono.

    En cuanto pueda cargar animaciones voy a trabajar en un convertidor de OBJ/ANIM a BTO y a diferencia de los anteriores este sera un convertidor exclusivo, ademas dara la opcion de convertir a BTO e incluir un .material para utilizar en OGRE, si bien este archivo .material no sirve de nada en OpenGL, daria la facilidad de utilizar el archivo resultante en OGRE tambien.

    La comunicacion con el wiiMote esta lista y el control no es malo, dependera del tipo de la aplicacion el uso que se le de.

    Who let the dogs out? Chuck Norris did... any commplains?

    Happy Codding!

    2010/01/05

    10-01-05 Cargador de objetos al 50%


    Que alguien, en el nombre de todo lo que es puro y santo, me explique porque para OGRE arriba es abajo y abajo es arriba? lo programaron en el casillero de David Jhones???

    Bien despues de liberada mi frustracion debo decir que perdi n horas en descubrir porque no estaba mapeada la textura correctamente, pero despues de muchos debugs y juegos con el archivo que todos los datos se pasaban correctamente, y se pintaban mal, por ultimo probe pintar un solo triangulo y luego 2 para formar un cuadrado y resulto que las imagenes solo estan invertidas en V.... lo cual es trizte pero solo hubo que agregar una linea de codigo para corregir eso:
    v = 1 - v;
    No es triste? Horas de trabajo resumidos a 1 linea de codigo, a una variable, a 6 caracteres, ok tienen una idea de lo que pienso....

    El cargador ya carga por grupos, y una textura por modelo, no carga animaciones y en resumen va como a la mitad, pero hey! ya es la mitad en dos dias... esto esperaba tenerlo para el fin.

    Pues a seguirle!

    Two wrongs don't make a right. Unless you're Chuck Norris. Then two wrongs make a roundhouse kick to the face.

    Happy Coding!

    2010/01/04

    10-01-04 Cargador de objetos al 20%


    Esta es una imagen de lo que hace actualmente el cargador, falta corregir las texturas y agregar animaciones, pero voy bien, voy muy bien. Esperaba este tipo de avance para mediados de semana. :D


    Chuck Norris is a vegetarian. Meaning, he does not eat animals until first he puts them into vegetative state with his fists.

    Happy Codding!

    10/01/04 Primera entrada del año




    Bueno, tiene un monton que no escribo nada, supongo que me tome un tiempo sabatico... shame on me...

    Pero listos para arrancar el 2010 no me detendre hasta tener la tesis concluida.

    Estube pensando en un par de ideas nuevas para añadir a la misma, ahora solo falta trabajarlas.

    Para comenzar me gustaria terminar ya el cargador de objetos .bto en OGRE. Y justo por eso voy a comenzar, la meta:

    Tener listo el cargador de OGRE para el viernes.

    The word 'Kill' was invented by Chuck Norris. Other words were 'Die', 'Beer', and 'What'.

    Happy Codding!