jueves, diciembre 22, 2005

Viejo Pascuero Raja

A pleno día, en el medio de la calle, en pleno centro de Quilpué !!!
XD

lunes, diciembre 19, 2005

Y llega el fuego...

Un cambio de textura y un cambio en la sformulas del modelo de particula y wala: el fuego vive Luego vendra: Explosiones , polvo y quizas lluvia

sábado, diciembre 17, 2005

Preparen, Apunten, FUEGO!!!

Con dos listas , una de proyectiles, otra de impactos y la caracteristica de ODE collide bits detecto los proyectiles cuando colisionan con algo y en ese punto creo un impacto , en la imagen se ven las columnas de humo donde llegaron los proyectiles. I'm happy.

miércoles, diciembre 14, 2005

Sistema de partículas

Ayer en la tarde despues de mucho masticar el tema y 200 lineas de codigo (sin contar el .h XD) logré mi primer sistema de particulas. Asi que parti con lo mas fácil (sin gravedad y sin colisión): El Humo... Primer intento... Sin fadding, sin rotación, sin alineación de cámara, sin dispersión, con velocidad en un solo cuadrante, sin volúmen mula...

Segundo intento...

con fadding, sin rotación, sin alineación , con dispersión de posición y velocidad por cuadrante, con volúmen mula

Tercer intento... Con faddig, con scaling inicial y progresivo, con rotación, con dispersion y volúmen mula

Cuando alínie cada particula con la dirección de visión de la cámara, chao volumen mula... Cámara Alineada!!!

ahora a arreglar la textura de la partícula...

y encontrar la intrucción mágica : glDisable(GL_DEPTH_TEST);

^_^

mas de lo mismo con otro puf y proyectiles volando

lunes, noviembre 21, 2005

CFM y ERP Unleashed

Según el profesor Vicho la definición de estos parámetros @#%&!! es:
  • cfm chico = superficie dura
  • cfm grande = interpenetracion segura
  • erp chico = correccion al peo e interpenetracion
  • erp medio = wea estable y rapida
  • erp grande = correccion wena pero mucha cpu

muy wena , na que decir XD

viernes, noviembre 18, 2005

Vuelco en la historia

Hasta ahora he dado puro jugo con ODE, lo que implica que el resto de las clases del sistema están en un estado estable (hasta que no me de por ROAM , LOD y esas cosas), asi que próxima tarea crearme un .a con mis clases que incluya un objeto aplicación opengl, para poder armar nuevos proyectos con un mínimo de esfuerzo. Suena de perogrullo, pero si no lo escribo se me olvida. La idea es solo sobreescribier el metodo que lee el teclado ( clase app), el que carga la escena (clase world ), el que renderiza (clase world) y el que actualiza. Sistema de partículas voy por ti...

miércoles, noviembre 16, 2005

Trimesh y ODE

0) Descomprimir el paquete de ODE que trae los fuentes. Todas lareferencias de directorios asumen que estás en lña raiz de ese árbol.
1) ODE viene para VC6, asi que si usas Dev Cpp debes importar el proyecto que se encuentra en el directorio vc6 y recompilar. 2) Si va a usar trimesh debes decidir si vas a soportar con double o single precision. 3) Para que el proyecto soporte trimesh debes ejecutar vc6/configure-xxx-trimesh.bat donde xxx es single o double.
Este paso simplemente ejecuta este comando :
copy _configs\config-xxx-trimesh.h ..\include\ode\config.h.
Ahora sólo debes hacer un rebuild y tu proyecto generara el dll y .a con el soporte deseado. 4) Codificar tus objetos para que usen trimesh: (el ejemplo lo pego despues) 5) Crear un space e insertar los objetos dentro. Existen varios tipos, para terrenos esta el quadtreespace, para cosas sectorizadas me imagino que seria bueno crear una jerarquia de simpleSpaces insertados dentro de otros como el hashSpace como se explica en la página 58, en la seccion 10.6 Space functions del manual de ODE 6) Detectar colisiones con la callback clásica: static void nearCallback (void *data, dGeomID o1, dGeomID o2) { int i,n; if (!(g1 ^ g2)) return; // si son el mismo retorna const int N = 10; dContact contact[N]; n = dCollide (o1,o2,N,&contact[0].geom,sizeof(dContact)); if (n > 0) { for (i=0; i { contact[i].surface.mode = dContactSlip1 dContactSlip2 dContactSoftERP dContactSoftCFM dContactApprox1; contact[i].surface.mu = dInfinity; contact[i].surface.slip1 = 0.1; contact[i].surface.slip2 = 0.1; contact[i].surface.soft_erp = 0.5; contact[i].surface.soft_cfm = 0.3; dJointID c = dJointCreateContact (world,contactgroup,&contact[i]); dJointAttach (c, dGeomGetBody(contact[i].geom.g1), dGeomGetBody(contact[i].geom.g2)); } } } llamando esta rutina con el space root como primer parámetro , alguna data para la rutina de deteccion de colisiones como segundo, (yo le paso mi objeto mundo (world) que encapsula el terreno, la camara , el player, etc, para no usar variables globales) y la dirección de la callback para que la llame cada vez que ODE crea que puede existir una colisión. dSpaceCollide (space,NULL,&nearCallback);
y luego avanzar la simulación con algún dt fijo o calculado.
dWorldStep (world,0.05);
y despues limpiar la lista de contactos en cada ciclo:
dJointGroupEmpty (contactgroup);
Ojo que este contacgroup debe ser creado al principio de la simulación.
En el directorio ode/test estan los códigos fuentes de todos los ejemplos, y el loop de simulación es similar en todos, varia un poco la rutina de deteccion de colision en el sentido de que algunos sólo colisionan objetos contra el suelo, otras evitan colisionar objetos conectados por un Joint, etc.

lunes, octubre 31, 2005

Terrenos virtuales

Hoy que tuve tiempo me puse a jugar con World Machine y con unos pocos click generé esto: y luego para probar lo cargué en mi motorcito y se ve así :) Ahora tengo que ajustar las texturas según la distribucion del terreno: quiero arena abajo y pasto encima. Y... Upz! resultó! :)

jueves, octubre 27, 2005

Horcón y los amigos

Este es el Nestor escuchando mis argumentos

Acá salgo con mi amigo Edgardo Smartcom Boy y mi chaqueta regalona conocida como "La Foca".

Esos puntitos... ¿ Será el aura ? ¿ serán ovnis ? ¿ serán estrellas ? o ¿ sólo es espuma de cerveza en la cámara ?...

XD

domingo, octubre 02, 2005

ODEando....

Por fin pude hacer que ODE colaborara XD, esto es un videito del primer resultado, no es para nada lo deseado, pero es una muestra de lo que viene.

sábado, octubre 01, 2005

Aviso Económico

Vendo mi auto Hyundai Excel glsi 1.5 color azul índigo de 1994 con 80 mil kms en 2 palos cien conversables.

jueves, septiembre 29, 2005

Tank3D Historia en Fotos

Antes del tiempo estaba Shub Nigurath

Luego, en el inicio de los tiempos

y Chaskas dijo: háganse las texturas... Luego pensé, ¿ Que pasa si lo hago jerárquico y lo controlo con el mouse ? Luego vino el descubrimiento de la textura con alpha channel...la invención de los árboles y rápidamente del skybox

En un mundo paralelo (otro directorio XD) corría otro engendro conocido como Terreno3d que buscaba afanosamente los secretos del Quadtree , el frustum Culling, Multitexturing y otras leches...

Iquique 3D en versión fuerza bruta

Llega el agua...

Por ejemplo esto es lo que pasa cuando haces un frustum culling y no usas la inversa de la matriz de visión

y llegan las sombras....

El descubrimiento de la multitextura y el SkyPlane producen finalmente esto:

Esto fue un tímido intento con Frame Buffer Object para producir reflejos.

y por fin el camino de Tank3D y Terreno3D se cruzan y producen el híbrido deseado.

de alli a seguir el terreno se ha dicho

Después de eso llegaron los shaders, n objetos , mapas en xml, el SkyDome y ahora ODE...

ODE Starting Up...Neofit Mode

Bueno , el asunto es que funcionó después de recompilar ODE, agregar la contribución de Terreno y volver a recompilar, el asunto esta tomando forma, aunque el tanke se comporta como un verdadero resorte XD. Entremedio incluí triMesh en el QuadTree, pero resultó en que ODE intenta detectar colisiones entre los nodos asi que obtube un maravilloso performance de 1 FPS ¬¬ , es por esto que es código está postulando a tumor asi que será prontamente extirpado. Aqui se puede ver un M1A2 en pleno rebote

miércoles, agosto 24, 2005

Mi primera impresión

Tank3D empieza a integrarse con ODE Pasos a seguir:
  • Ajustar el RigidBody para que tenga y use todas las propiedades de ODE.
  • Usar el space Quadtree de ODE con una resolucion menor que la de mi quadtree para que cada nodo abarque varios leaf.
  • Generar un trimesh por cada leaf y agregar al space quadtree. pasr el puntero a vértices y armar uno de indices con los 8 triángulos que componen cada leaf. Actualmente uso un triangle fun con lo que sólo necesito 8 indices, para ODE requiero 24 ya que el no sabe de fun o strip, solo conoce triángulos.
  • Crear mi StepSimulation (ODE trae el suyo) ¿ solo deberé calcular el tiempo (time step) ?.
  • Implementar la deteccion de colisiones.