Nintendo DS Programming on Ubuntu Linux

Julio 9, 2007

Programing for a console is known as Homebrew
http://en.wikipedia.org/wiki/Nintendo_ds_homebrew

Use a DS, and storage device, such as a R4.

Download all of these (for linux):
devkitarm, libNds, DSwifi::
http://sourceforge.net/project/showfiles.php?group_id=114505

and PAlib
http://www.palib.info/wiki/doku.php

Decompress them, each on on its own folder, in:
/user/local/devkitpro

It should looks something like this:

/
|--user
       |--local
	     |--devkitpro
		|-devkitARM
		|-libnds
		|-PAlib
		|-PAlibDoc Eng
		|-PAlibDoc Fr
		|-PAlibExamples
		|-PAlibTemplate

add these Path modifig the /etc/environment with a text editor
$ gksudo gedit /etc/environment

DEVKITPRO="/user/local/devkitpro"
DEVKITARM="/user/local/devkitpro/devkitARM"
PAPATH="/user/local/devkitpro/PAlib"

It is possible to use an emulator for tests
Desmume can be installed directly from Synaptic, and libgtkglext is needed as well.


Marching Cubes

Junio 27, 2007

Es el método más famoso para crear poligonos de superficies implicitas -isosurfaces- (y asi poderlas renderear).  Se presentó en SIGGRAPH 1987 por Lorensen:  http://www.cs.duke.edu/education/courses/fall01/cps124/resources/p163-lorensen.pdf
Aquí hay unas ligas con ayuda para implementarlo:

http://www.polytech.unice.fr/~lingrand/MarchingCubes/accueil.html

http://local.wasp.uwa.edu.au/~pbourke/geometry/polygonise/index.html 

http://www.wheatchex.com/projects/mcubes/


Importando geometría a Maya

Junio 25, 2007

Hay veces en las que queremos exportar vertices, normales y caras desde un programa en C o C++, por ejemplo poligonos de “isosurfaces” (isosuperficies?) generados con “marching cubes”, o también geometría generada con otro software, para que Maya las lea. De este modo podemos agregar shaders y renderear facilmente.  Creo que hay 3 formas de resolver el problema:

1-Crear un archivo obj (si es una animación, se necesitara una serie de archivos .obj).  En esta liga está explicado el formato del archivo.  Bastante sencillo. (solo que en macintosh hay que cuidar el formato del texto esté como windows)

2-Crear un mel script (archivo .ma). Bastante mas complicado.

3-Crear un plugin.  Sin duda esta seria la opción más practica para el usuario y no se estaria atado a ningun formato, pero puede causar inestabilidad.


HDRI High Dynamic Range Imaging (Alto Rango Dinámico)

Marzo 2, 2007

HDR es una tècnica de iluminaciòn que emula el funcionamiento del iris del ojo humano. El primer “paper” es de Paul Devec y se puede encontrar aqui (1998), y un paper de HDRTM (2001, texture Mapping) aqui. Tambien han escrito un libro (2005) aqui. Esta tecnica fue utilizada en Half Life 2 y es notable la mejora de realismo en las escenas. En fotografia se puede aplicar tomando 3 fotos con diferentes intensidades (una normal, una con menor y otra con mayor) y haciendo una combinacion.

Implementaciones: Maya, OpenGL/SDL


Geometry Shader

Febrero 7, 2007

Ahora es posible crear nueva geometria en el GPU.  He aqui una pagina de introduccion y un tutorial de como implementar marching cubes usando geometry shaders, basado en la implementacion de Paul Bourke.


Go

Enero 8, 2007

He conocido el juego Go (un antiguo juego de mesa y el mas jugado actualmente), gracias al blog de Kirai.  Para linux existe el “gnu go” pero la interfaz es de texto.  Para interfaz grafica existe el “cgoban” y el “qgo”, ademas de “uligo” para entrenamiento.

Lo que me llamo la atencion es que aun no existe un algoritmo de inteligencia artificial que sea capaz de vencer a los humanos .


First OpenGL progam in Linux

Diciembre 24, 2006

same as the last post (only taking care of the “”), and compile using

gcc hello.c -lglut -lGL -lGLU -lX11
-lX11 is not needed


First OpenGL program in Mac

Diciembre 22, 2006

#include <GL/glut.h>

void display()
{
glClear(GL_COLOR_BUFFER_BIT);

glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();

glFlush();
}

int main (int argc, char** argv) {
glutInit(&argc,argv);
glutCreateWindow(“simple”);
glutDisplayFunc(display);
glutMainLoop();
}

compilar con:

gcc -framework OpenGL -framework GLUT -framework Foundation hello.c

si aparece:

“GL/glut.h: No such file or directory”

desde la carpeta “/usr/local/include/” hay que crear un link simbolico:

%sudo ln -s /System/Library/Frameworks/GLUT.framework/Versions/Current/Headers/glut.h ./

%./a.out


Buscador para GameDev

Diciembre 15, 2006

RCAF proporciona una herramienta muy buena para buscar informacion en sitios de desarrollo de videojuegos.

http://rcafsoft.com/blogrcaf/gdse/


Poligonos en Maya MEL

Octubre 25, 2006

VERTICES

Se puede accesar a las coordenadas de los vertices de un mesh por medio de arreglos.
Para ver el numero de vertices, se selecciona el objeto y se usa el comando:

int $res[] = `polyEvaluate -vertex`;
es decir, regresa un arreglo y el numero de vertices se guarda en $res[0]

para adquirir un arreglo de X, Y y Z coordenadas (locales) de los vertices se usa el comado:
$pos = `getAttr miMesh.vrts[$i]`;
cuyo resultado de X, Y y Z es almacenado en $pos[0], $pos[1] y $pos[2], respectivamente.
Otra opcion es de un jalon
$coords[] = `getAttr miMesh.vrts["*"]`;
size($coords)/3; es el numero de vertices.

para adquirir las coordenadas globales se utiliza
print `pointPosition -world miMesh.vtx[0]`;

Ejemplo de translado de mesh
setAttr miMesh.translateY 3.0 ;

EDGES

Se representan con 2 enteros que es el indice a un vertice inicial y a un vertice final respectivaente.
Numero de edges:
int $res[] = `polyEvaluate -edge $node`;
(numero de vertices en $res[0])

string $pi[] = `polyInfo -edgeToVertex($node+”.e["+$j+"]“)`;
Este string hay que tokenize para adquirir el resultado en entero