Motor 3D - Nitro Engine V 0.6.0

1, 2, 3, 4, 5
Imagen





¡Buenas!

Esto es un motor 3D que tiene como objetivo facilitar la vida a aquel que quiera hacer un juego 3D en la DS. La versión actual es 0.6.0.

Sus principales características son:
-Carga de modelos y texturas desde FAT.
-3D Dual, se maneja igual que el 3D normal.
-Manejo sencillo, puedes dibujar una escena en 3D sin complicarte para nada la vida ^^.
-Puede cargar archivos bmp de 4,8,16 o 24 bit y convertirlos en texturas.
-Tiene funciones para activar efectos que la DS permite por hardware, como niebla o sombreado. También tiene funciones para activar efectos especiales en la pantalla como ondularla.
-Permite hacer capturas de pantalla de las 2 pantallas en modo 3D dual y de la pantalla con 3D en modo normal.
-Soporte para modelos animados, permite usar interpolación lineal para suavizar la animación.
-Sistema (aún bastante simple) de 2D sobre 3D.
-Motor de físicas básico (gravedad, colisiones entre cajas sin rotación, fricción...).
-Funciones de API.
-Sistema de texto en 2D sobre 3D.
-Otras muchas cosas que no voy a poner que no acabo...

Planeo incluir:
-Mejorar el motor de físicas (bounding spheres, por ejemplo).
-Las cosas que me sugiráis y considere adecuadas.

Descargar NitroEngine Installer






Un saludo.


PD: El logo grande es de judelco y el pequeño de Serede. Gracias. :)
Parece buena idea, un nombre..... homebrew revolution? nose xD, lo de los nombres nunca a sido lo mio
Pues yo te apoyo, aunque un nombre ahora mismo no me viene a la cabeza porque tengo aqui delante la psp completamente desarmada y mi mente está en otro lado. Ánimo y suerte!
3DS engine pro. Si ese no es un buen nombre, no sé XD.
alexpowerup escribió:3DS engine pro. Si ese no es un buen nombre, no sé XD.

3DS Engine, de mi estilo. XD De momento voy a usar ese, pero podéis dar ideas y tal...
3DS engine mega pro super alpha six prime turbo 2

Es coña,pero animo con el proye XD
Es muy posible que antes de que pase una semana saque una beta... XD Depende de si mi sistema de administración de texturas funciona o no. XD

EDIT: De momento el sistema de las paletas para las texturas (en teoría) está acabado. También está (casi) acabado (en teoría) el sistema para crear objetos estáticos a los que se les asigna una textura y un modelo. También están (supuestamente) las funciones para iniciar modo 3D y modo 3D dual.

Vamos, que (en teoría) pinta bien la cosa. XD
ANTONIOND escribió:Es muy posible que antes de que pase una semana saque una beta... XD Depende de si mi sistema de administración de texturas funciona o no. XD

EDIT: De momento el sistema de las paletas para las texturas (en teoría) está acabado. También está (casi) acabado (en teoría) el sistema para crear objetos estáticos a los que se les asigna una textura y un modelo. También están (supuestamente) las funciones para iniciar modo 3D y modo 3D dual.

Vamos, que (en teoría) pinta bien la cosa. XD


-----------------------------------
Conversación en el msn (yo y antonio):

Yo:
... y supuestamente se podría decir que en teoria es posible que casi esté planteado el sistema de texturas, y bla bla bla
ANTONIOND:
XD
ANTONIOND:
es q aun no lo e compilado xD
Yo:
muahaha xD
ANTONIOND:
y no se hasta que punto esta ok XD
-------------------------------------
En teoría esto pinta muy bien!, supongo que debes de saber mucho de esto para trabajarte un motor 3D dual screen tu solo [flipa]
jairolas escribió:En teoría esto pinta muy bien!, supongo que debes de saber mucho de esto para trabajarte un motor 3D dual screen tu solo [flipa]


Y dale con más "en teoria" o "supongo"..... T_T

EL tio es la leche, un maquina vaya.... el solito te reescribe las Palib entera si se le mete en la cabeza O.o

Viva AntonioND... [plas]

PD: O las libnds [poraki]
La cosa avanza... Pero por algún extraño motivo no se dibuja nada en la pantalla... Pero nada de nada, ni con funciones de libnds normales... :-? A ver si mañana más despejado lo consigo...

Cosas que creo que ya están:
-Texturas (falta alguna cosilla para simplificar las cosas).
-Paletas para las texturas.
-Modelos (solo una parte, falta la otra mitad)
-Modo 3D y 3D dual.

Pero no he podido comprobar nada...
Espero que llegue a buen puerto, como colaboracion, que les parece el nombre "Nitro engine" notri como se conocia antes a la DS
Latas escribió:Espero que llegue a buen puerto, como colaboracion, que les parece el nombre "Nitro engine" notri como se conocia antes a la DS

Si, estaba pensando en ese nombre al principio... XD
ANTONIOND escribió:
Latas escribió:Espero que llegue a buen puerto, como colaboracion, que les parece el nombre "Nitro engine" notri como se conocia antes a la DS

Si, estaba pensando en ese nombre al principio... XD


Jummm... y porqué no lo llamamos "motor 3d - pollo de goma rosado" ?










































XD
Solo digo: Para el fin de semana está la primera beta. [chulito]
Genio es lo unico que te describe...Como puedes hacer una libreria en 3 diasO.o es flipante jeje


Saluds
En teoria te doy animos ya que teoricamente sera util para teoricos juegos que teoricamente usaran las 2 pantallas.
Supuestamente Salu2 y supuesta suerte
xDDDDDDDDDDDDDDDD...supuestamente
Hero Of Time escribió:En teoria te doy animos ya que teoricamente sera util para teoricos juegos que teoricamente usaran las 2 pantallas.
Supuestamente Salu2 y supuesta suerte
xDDDDDDDDDDDDDDDD...supuestamente

No, ya no es supuestamente, ya está comprobado. [qmparto]
Creo que sé por qué se le ha metido en la cabeza el hacer ésta librería... Te lo digo por PM, seguro que tiene algo que ver con Plata, ¿Verdad?
alexpowerup escribió:Creo que sé por qué se le ha metido en la cabeza el hacer ésta librería... Te lo digo por PM, seguro que tiene algo que ver con Plata, ¿Verdad?

Pues no precisamente...
Genial, estoy deseando ver como avanza esto, AntonioND es un maquina, estoy seguro de que sera un gran proyecto.
Por cierto, me gusta el nombre de Nitro-Engine. Animo ;)
technik escribió:Genial, estoy deseando ver como avanza esto, AntonioND es un maquina, estoy seguro de que sera un gran proyecto.
Por cierto, me gusta el nombre de Nitro-Engine. Animo ;)


Hey, y no te gusta lo de pollo de goma rosado? V_v

PD: Ánimo antonio, que ya lo tienes!!! Ahora solo le metes mano a las texturas y ALELUYA!!!
Un ejemplo sencillito de usar el engine:
#include <nds.h>
#include <fat.h>
#include "NitroEngine/NEMain.h" //Include para el engine

NE_Camera * Camara;  //Declaramos punteros a lo que vamos a usar
NE_StaticModel * Modelo;
NE_Material * Material;

void Draw3DScene(void)  //Funcion para dibujar la escena
{
NE_CameraUse(Camara);
NE_StaticModelDraw(Modelo);
}


int main()
{
irqInit();
irqSet(IRQ_VBLANK, 0);

fatInitDefault();    //Inits...
NE_Init3D();

Modelo = NE_StaticModelCreate();  //Creamos sitio para las cosas...
Camara = NE_CameraCreate();
Material = NE_TextureCreate();

NE_CameraSet(Camara, 3,2,3, 0,0,0, 0,1,0); //Coordenadas de la camara

NE_StaticModelLoadMeshFAT(Modelo,"model.bin"); //Cargar modelo de FAT (también se podrá EFS).
NE_TextureLoadFAT(Material, GL_RGB, TEXTURE_SIZE_32, TEXTURE_SIZE_32,  TEXGEN_TEXCOORD, "tex.bin");//Cargamos textura de FAT

NE_StaticModelSetTexture(Modelo,Material); //Asignamos la textura a el modelo

while(1)
{
NE_Process(Draw3DScene); //Prepara el 3D y llama a la función indicada para dibujar lo que sea.

swiWaitForVBlank();
}

return 0;
}


Lo de "static model" es porque también haré modelos animados y tal. El 3D dual es casi lo mismo... XD

EDIT: Son libnds, si, pero con PAlib es igual. Eso si, en 3D dual no useis palib para mostrar imágenes, NUNCA. Sencillamente corrompera durante un frame lo que se muestre en pantalla y no se verá lo que queréis (en el mejor de los casos). En 3D normal si podéis usar PAlib en la pantalla libre.
En PAlib sería de ésta forma:
#include <PA9.h>       // Include de PAlib
#include <fat.h>        // Include del sistema FAT
#include "NitroEngine/NEMain.h" //Include del engine

NE_Camera * Camara;  //Declaramos punteros a lo que vamos a usar
NE_StaticModel * Modelo;
NE_Material * Material;

void Draw3DScene(void)  //Funcion para dibujar la escena
{
NE_CameraUse(Camara);
NE_StaticModelDraw(Modelo);
}


int main()
{
PA_Init();    // Iniciar PAlib
PA_InitVBL(); // Iniciar VBL

fatInitDefault();    //Inits...
NE_Init3D();        //Init del engine

Modelo = NE_StaticModelCreate();  //Creamos sitio para las cosas...
Camara = NE_CameraCreate();
Material = NE_TextureCreate();

NE_CameraSet(Camara, 3,2,3, 0,0,0, 0,1,0); //Coordenadas de la camara

NE_StaticModelLoadMeshFAT(Modelo,"model.bin"); //Cargar modelo de FAT (también se podrá EFS).
NE_TextureLoadFAT(Material, GL_RGB, TEXTURE_SIZE_32, TEXTURE_SIZE_32,  TEXGEN_TEXCOORD, "tex.bin");//Cargamos textura de FAT

NE_StaticModelSetTexture(Modelo,Material); //Asignamos la textura a el modelo

while(1)
{
NE_Process(Draw3DScene); //Prepara el 3D y llama a la función indicada para dibujar lo que sea.

PA_WaitForVBL();
}

return 0;
}


Si hay algún error en algo avisar.

PD: No lo he podido comprobar porque sencillamente yo no tengo el engine XD
alexpowerup escribió:...


Si, sería así. Ha sido difícil cambiar 3 funciones y un include, ¿eh?

EDIT: Solucionado (¿por ahora?).
Ahora tengo un problema al cargar cosas de FAT...
char* NE_FATLoadData(char* filename)
{
char* buffer;
FILE* datafile;
u32 tamano;

datafile = fopen (filename, "rb");
if(datafile != NULL)
{
fseek (datafile , 0 , SEEK_END);
tamano = ftell (datafile);
rewind (datafile);
buffer = malloc (tamano);
if(buffer != NULL)
{
fread (buffer,1,tamano,datafile); //AQUI ESTÁ EL PROBLEMA
fclose (datafile);// ESTO NO SE LLEGA A EJECUTAR
}
else
{
char string[128];
sprintf(string, "Not enough memory to load data!\n%s", filename);
NE_FATAL_ERROR(string);
}
}
else
{
fclose (datafile);
char string[128];
sprintf(string, "%s not found!", filename);
NE_FATAL_ERROR(string);
}

return buffer;
}
Sólo lo he puesto así para que los noobs del foro sepan diferenciar libnds de PAlib. Punto.
¡Animo Antonio!

Últimamente estas hecho un crack con las aplicaciones que te estas currando!.

Gracias y felicitaciones.
genial iniciativa, suerte con el proyecto

PD: podrias agregar a las libreria el speudo bump mapping que traia un juego 3D hombrew que no recuerdo el nombre, y se veia muy genial para una DS
lestar escribió:genial iniciativa, suerte con el proyecto

PD: podrias agregar a las libreria el speudo bump mapping que traia un juego 3D hombrew que no recuerdo el nombre, y se veia muy genial para una DS

Todavía tengo que añadir cosas más importantes... Para empezar tests de posición, modelos animados, mover/rotar la cámara... ARREGLAR EL FAT (ver post anterior XD)...

Ya cogeré el source y veré que puedo hacer.

EDIT: Y arreglar otras cosas... [buuuaaaa] Alucino, cargo una textura desde la RAM y me cargo todo, cargo desde FAT (me deja cargar un par de archivos y despues se bloquea) y se ve bien...
Buenas, ya estoy por los madriles....

Primero dar animos para llevar a cabo este proyecto. Puede estar muy curioso.

Y lo segundo, intentar ayudar un pelin dando ideas cuando la ley que hace que lo obvio falle.

El fallo del fread creo que puede ser las siguientes cosas:

la definición de la función es:
size_t fread(void *puntero, size_t tamanyo, size_t nmemb, FILE *stream);

siendo tamanyo el numero de bytes leídos, y nmemb el numero de veces que quieres leer ese numero de bytes.

De todas formas, todo el mundo sabe que 100*1 = 1*100 a si que no debería ser el fallo.... pero por si las moscas lo cambiaría porque la función estará posiblemente optimizada para recibir los parámetros al revés.

Otra cosa que se me ocurre.... prueba a abrir el fichero con "r" aunque sea para leer ficheros de texto no debería pasar nada, tengo entendido que no difiere en su comportamiento. (Pero cuando mirando el código no se ve fallo :P queda probar cosas así)
ZarkGhost escribió:...


He probado con "rb", "r", "rb+", wb+", cambiando el orden de tamaño de bloque y numero de bloques...

El único avance que he tenido es que al poner "wb+" no se pillaba, pero tampoco se veía la imagen que se ve en los otros modos...

Probaré de todos modos... Gracias por la ayuda.

EDIT: Estoy probando con EFS v2, a ver que tal...

EDIT2: Ahora code dumps y cosas por el estilo. [+risas]

EDIT3: Que le den al EFS... Ya veré como lo añado más adelante...

EDIT4: Ahora con "rb+" funciona. [buuuaaaa] [buuuaaaa] [buuuaaaa]  La DS me está tomando el pelo...

EDIT5: En realidad nada, pero me hacía ilusión poner otro edit. XD

EDIT6: Modelo + textura (Sin paleta) de ram = OK. Cargar datos de fat = OK!! Vamos avanzando XD. A ver si en un par de días termino de arreglarlo todo... Ya decía yo al principio que esto iba demasiado bien... También he arreglado un problemilla en la administración de VRAM para las texturas.
Hahaha irá a buen puerto.
Celduques está baneado por "utilizar clon para saltarse baneo de subforo y querer tomar el pelo a la administración"
Animo crack que seguro que lo llevas a buen puerto!
¡¡¡¡Nitro Engine en funcionamiento!!!!

Por fin he conseguido mis objetivos:
-Carga de modelos y texturas desde FAT y RAM.
-Almacenamiento dinámico de texturas y paletas. Puedes hasta defragmentar la memoria que éstas usan, pero en la primera versión solo se podrá defragmentar la memoria usada por las paletas (pereza y tal... lo de las paletas está tirao, lo de las texturas hay que hacer un par de cosillas más... igual hasta lo hago...).
-3D DUAL, tan sencillo de usar como el normal (de nada ;) ).

Tengo varias cosas pensadas para la siguiente versión, pero con esto me parece suficiente para ser la primera.

Un saludo!! [chulito]

PD: Mañana por la noche lo publicaré, tengo que añadir un par de funciones, probar y documentar.
ANTONIOND escribió:¡¡¡¡Nitro Engine en funcionamiento!!!!

Por fin he conseguido mis objetivos:
-Carga de modelos y texturas desde FAT y RAM.
-Almacenamiento dinámico de texturas y paletas. Puedes hasta defragmentar la memoria que éstas usan, pero en la primera versión solo se podrá defragmentar la memoria usada por las paletas (pereza y tal... lo de las paletas está tirao, lo de las texturas hay que hacer un par de cosillas más... igual hasta lo hago...).
-3D DUAL, tan sencillo de usar como el normal (de nada ;) ).

Tengo varias cosas pensadas para la siguiente versión, pero con esto me parece suficiente para ser la primera.

Un saludo!! [chulito]

PD: Mañana por la noche lo publicaré, tengo que añadir un par de funciones, probar y documentar.


Ya estoy deseando hacer mi demo :D

Un Saludo ;)
ANTONIO, llegaste a hacer rular las funciones standar de C en cuanto a ficheros se refiere? fopen/fread/fwrite/fclose/fseek, etc...¿?

celduques y yo estuvimos intentandolo pero nada, y el mismo código copiado/pegado en un compilador de PC, cojonudo...

la verdad es que parece que tiene mucho curro tu motor 3d, ya veremos que tal el funcionamiento. yo de momento, con ir aprendiendo poquito a poquito a usar el tema...ya habrá tiempo de hacer librerías cojonudas jejejeje.

un saludito!
Si, llegaron a funcionar... No se como, pero lo conseguí. Ahora mismo estoy documentandolo todo (dios, que coñazo). Después haré algún ejemplo y cuando esté todo listo lo liberaré.

Decir que faltan muchas cosas, pero tampoco es plan hacerlo todo de golpe, eso solo da problemas.

EDIT: Busco un logo para el engine... [360º]
Como siempre digo, esto si es scene XDD. Antonio si necesitas algun modelo dimelo e intentare hacertelo lo antes posible, ya k ando algo liao y ademas toy con el wii-revengine.

Suerte con el proyecto XD.
pero, funcionar, funcionan exactamente igual que las de pc? (me refiero, al tema de ficheros). Hay que añadir alguna librería especial...alguna función...o algo?. No lo entiendo, codigo copiado que funciona en PC a NDS, nada...probaré yo también de alguna forma.

ya tamos deseosos de ver el motor jejeje.

un saludo!.
periko_palote escribió:pero, funcionar, funcionan exactamente igual que las de pc? (me refiero, al tema de ficheros). Hay que añadir alguna librería especial...alguna función...o algo?. No lo entiendo, codigo copiado que funciona en PC a NDS, nada...probaré yo también de alguna forma.

ya tamos deseosos de ver el motor jejeje.

un saludo!.

Al final poniendo modo "rb+" funcionó... Nada especial.

Y tranquilos, esta noche lo tendréis. XD

EDIT: Documentación lista.
Me parece genial la idea.

De nombre pues "3DNoid engine" o algo así xD los nombres tampoco son lo mio xDD

EDIT: Ya tiene nombre xD
Fusion_X escribió:De nombre pues "3DNoid engine" o algo así xD los nombres tampoco son lo mio xDD


Creo que ya tiene nombre: "Nitro Engine".

PD: Antonio ya me ha pasado el NE para hacer la demo, y que decir, la verdad que es una maravilla xD, lastima que esta tarde la tenga ocupada y hasta mañana no podré hacer susodicha demo. Aunque para entonces ya estará colgado el NE...

Un Saludo ;)
El único inconveniente de éste motor es que usando una pantalla con 3D la NDS irá a 60 fps, pero si usamos las dos para 3D irá a unos 30 fps...
alexpowerup escribió:El único inconveniente de éste motor es que usando una pantalla con 3D la NDS irá a 60 fps, pero si usamos las dos para 3D irá a unos 30 fps...

Que se tenga la posibilidad no quiere decir que se deba de usar las dos pantallas, no?
Pero me refiero que con las dos pantallas uasndo 3D, sale a unos 30 fps me imagino. Si la NDS tuviera dos módulos de OpelGL ya esque sería la hostia. Siempre iría a 60 fps =D.
jairolas escribió:
alexpowerup escribió:El único inconveniente de éste motor es que usando una pantalla con 3D la NDS irá a 60 fps, pero si usamos las dos para 3D irá a unos 30 fps...

Que se tenga la posibilidad no quiere decir que se deba de usar las dos pantallas, no?

Macho, ¿qué mas dará que sea 30 fps o 60? El hecho de ver 3D en las 2 pantallas supera el problema por mucho. Además, es opcional.

PD: Versión 0.1 liberada. :P

Edit: Resubido con los ejemplos arreglados (dadle las gracias a Celduques por el aviso). Motivo: Mi vagancia. XD Se me olvidaron 2 chorradas.
Que máquina [flipa] , debo de confesar que al principio no creí que fuera capaz de hacer un motor dual en una semana pero ya que tiene la primera versión pues no queda más de otra que alentarte para que sigas con tu progeso [toctoc]
para cuando un video de proof of concept? jiji

dew! [ayay]
AfriPoWeR escribió:para cuando un video de proof of concept? jiji

dew! [ayay]

Puedo hacer un video, pero solo ibas a ver una bola girando... XD Cuando añada más funciones al engine haré una demo en condiciones, bastante hice ayer con documentar toda la lib (un coñazo), hacer los 2 ejemplos y demas... XD
201 respuestas
1, 2, 3, 4, 5