Anuncios Google

[C] AMGLib, motor 3D para PSP

Buenas, en esta ocasión presento un proyecto que he iniciado yo mismo, y una alternativa de usar OSLib en vuestras PSP, usando lenguaje C/C++, y con las librerías PSPSDK, tras unas semanas de trabajo, traigo la primera versión de la librería: AMGLib (Andresmargar's Library). La cual incluye funciones de 3D, uso de controles, calculador de FPS, obtención del RTC, carga y muestra de texturas BMP, uso de Sprites 2D y 3D, manejo de luces y cámara, y mucho más...


Resumen de todas las características de la librería

Inicio y salida

Inicio decente de los sistemas 2D y 3D de la PSP, administración de VRAM para buffers de renderizado y para texturas, inicio de callbacks del botón HOME, muestro de errores y debug, manejo y mezcla entre los sistemas 2D y 3D.

Cámara

Administración decente de cámaras, puedes crear el número de veces que quieras, y administrar completamente sus variables (posición, ojo, enfoque), se admiten además aplicar transformaciones en el espacio, como rotar, escalar, mover, guardar y restaurar matrices y configurarlas a tu gusto.

Luces

Manejo de las 4 luces proporcionadas por la PSP, con posibilidades de cambiar la posición en el espacio, color, valor ambiental... Se pueden usar luces tanto direccionales como puntuales. Puedes hacer cel-shading con ellas.

Imágenes

Permite la carga de texturas 2D en formato BMP o TGA de 24 o de 32 bits, con posibilidades de escalado, repetición, obtención de datos... La textura puede ser modificada en tiempo real. También tiene un sistema de Sprites 2D y 3D, con posibilidades de movimiento, rotación y escalado. Puedes poner un color de fondo a la pantalla y cambiar su nivel de brillo con dicho color.

IO

Sistema de administración de teclas, calculador de FPS (frames por segundo), y obtención del RTC de la PSP. Puedes cambiar el GMT al de tu ciudad. También puedes usar hebras mediante hardware y sacar screenshots de la pantalla de la PSP.

Modelos 3D

Una de las más importantes características de un motor 3D es la carga de modelos, este no iba a ser menos, puedes cargar modelos 3D en formato OBJ y MTL, con los objetos que quieras, admite el color, las transparencias, texturas, normales, coordenadas de textura, vertices y caras (deben estar trianguladas con vertices, normales, y coordenadas de textura). Los objetos pueden moverse, rotarse y escalarse individualmente. También tiene un módulo de colisiones por Bounding Box.

Imágenes

Carga de un modelo 3D con iluminación

Mezcla del motor 3D y 2D

Cubo con una textura BMP

Modelos 3D, Entornos, Niebla y Cel-Shading todo junto


Instalación

Simplemente descarga el archivo RAR con la última versión de la librería, instala el PSPSDK de: www.devkitpro.org, y descomprime la librería en un lugar sin espacios, luego, ve a AMGlib/AMGlib, y dale al Compile.bat, si tienes el entorno bien instalado el programa compilará la librería y la colocará en la carpeta de las librerías. Asegúrate de probarlo compilando alguno de los ejemplos. Si te da un EBOOT.PBP, lo has instalado correctamente.

La librería incluye una documentación (simple, hecha en Word), con todas las funciones y estructuras de la librería. Además, en la carpeta Tools, tenemos varias herramientas así como un emulador.


Descarga

Las mejoras de la librería así como su licencia (Creative Commons) están incluidos en el archivo de descarga.

Versión 0.4 ESTABLE

- Corrección de fallos menores
- Añadido un pequeño motor de audio (carga de WAV PCM 16bits soportada)
- Añadidas funciones matemáticas (vectores)
- Añadidas funciones para calcular normales y suavizarlas mediante código (Cel-Shading mejorado)
- Añadidas matemáticas por VFPU (mayor velocidad de cálculo)
- Ahora puedes poner SkyBoxes (entornos)
- Modificada estructura AMG_Texture, añadido mayor control para activar MIPMAPS
- Añadidas funciones para controlar la niebla
- Añadidas funciones de control de batería y velocidad de CPU
- Documentación actualizada
- Revisados los ejemplos
- Añadido un completo ejemplo usando Cel-Shading, Audio, Niebla, Modelos 3D, VFPU y SkyBoxes todo en uno

Descarga: https://sourceforge.net/projects/amglib/files/AMGLib_V0.4_STABLE.zip/download 

Versión 0.3 ESTABLE

- Mejor carga de BMP de 24 y 32 bits (por no decir sin errores)
- Arreglados bugs con el uso de Sprites y modo 2D
- Añadida carga de textura TGA de 24 y 32 bits
- Carga de texturas englobada: AMG_LoadTexture();
- Añadidas funciones para hebras (crear subrutinas)
- Añadidas funciones de edición de texturas
- Ahora los Sprites pueden tener animaciones (frames)
- Añadidas funciones de números aleatorios
- Añadido motor de colisiones (Bounding Box)
- Añadida una prueba de concepto de Cel-Shading
- Se ha actualizado la documentación (nuevas funciones + corrección de fallos)
- Añadidos 3 ejemplos nuevos
 

https://sourceforge.net/projects/amglib/files/AMGLib_V0.3_STABLE.zip/download

Versión 0.2 ESTABLE

- Ahora las teclas controladas por KERNEL están soportadas
- Ahora podemos ver cuando una tecla se pulsa 1 vez
- Ahora puedes realizar capturas de pantalla y guardarlas en formato BMP
- Añadido un pequeño motor de texto en 2D (posiciones y colores aceptados)
- Ahora se distribuye una documentación en inglés
- Arreglo de fallos menores (las texturas se ven algo mejor en modelos)

http://sourceforge.net/projects/amglib/files/AMGLib_V0.2_STABLE.zip/download?_test=updater&utm_expid=65835818-0&utm_referrer=http%3A%2F%2Fsourceforge.net%2Fprojects%2Famglib%2Ffiles%2F

Versión 0.1 BETA

http://sourceforge.net/projects/amglib/files/AMGLib_V0.1_BETA.rar/download?_test=updater&utm_expid=65835818-0&utm_referrer=http%3A%2F%2Fsourceforge.net%2Fprojects%2Famglib%2Ffiles%2F


 


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de sting18

Se ve bueno ,habra que probar

Se ve bueno ,habra que probar ;)

Imagen de Mills

Salida TV

Bueno pegaría aquí el código pero ahora mismo no lo tengo en este ordenador, (buscaré el link si es que aún existe)

Me refería a conectar la psp slim a la tv, algunos hombrews como el emulador de n64 lo utilizan para sacar la imagen a pantalla completa en una tv, la verdad es que lo estaba intentando compilar con amglib porque solamente eran 10 o 12 lineas de código que reconocen si conectas el cable o no, después había que cambiar el nombre de una función y se supone que funcionaba.. supongo que irá algo mas lento al ser mayor resolución.

 


Pobre PSP

Imagen de Andresmargar

Supongo que lo que hará será

Supongo que lo que hará será enviar la imagen escalada a la tv por usb, de todas formas estuve mirando en "pspusb.h" y en "pspusbbus.h" y al parecer puedes "intentar" registrar a la psp como un driver a otro aparato, y creo que si eso saldría bien se podría enviar la imagen.


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Imagen de Mills

No

Lo que hace es usar el cable de tv y usar 720x480p.

Si alguien lo quiere o lo puede compilar, casi todos los links murieron, pero aún está en esta dirección el ejemplo con el codigo:

http://dl.qj.net/psp/homebrew-applications/fullscreen-tv-out...


Pobre PSP

Imagen de Mills

:)

No se que me pasó pero ya no puedo compilar nada para psp.. por eso me había olvidado un poco de esto, pero tiene muy buena pinta, buenisima, a ver si vuelvo a intentar arreglarlo..

Por cierto, creo que sería buenísima idea añadir la salida de tv a 720x480, yo lo puedo probar con mi psp pero no sabía muy bien como integrar el código.

Otra cosa, con la versión anterior, y antes de que me dejase de compilar... conseguí modificar el color de cada pixel por separado, en una textura, eso puede servir para hacer "bump map" o texturas 3d que cambian según estén orientadas. La verdad es que lo hice sobre una textura de 64x64, y para hacer texturas de agua o tierra se ven decentes.


Pobre PSP

Imagen de Andresmargar

Hola!

¿Qué quieres decir con salida a tv? ¿A que veas la psp desde la TV? Que yo sepa no hay nada en el sdk para hacer eso...

Por cierto, tiene buena pinta eso del "bump map" (estuve mirando en google y al parecer da buenos resultados). ¡Ánimo!


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Imagen de markef

Que

Que buena pinta tiene la librería :D Te animo a que sigas desarrollandola. Un saludo.

Imagen de Andresmargar

Muchas gracias ^^

Muchas gracias ^^

Imagen de Andresmargar

Nueva versión!

Pues sí, he subido otra versión más, la 0.4, aquí están las mejoras (son muchas):

 

- Corrección de fallos menores
- Añadido un pequeño motor de audio (carga de WAV PCM 16bits soportada)
- Añadidas funciones matemáticas (vectores)
- Añadidas funciones para calcular normales y suavizarlas mediante código (Cel-Shading mejorado)
- Añadidas matemáticas por VFPU (mayor velocidad de cálculo)
- Ahora puedes poner SkyBoxes (entornos)
- Modificada estructura AMG_Texture, añadido mayor control para activar MIPMAPS
- Añadidas funciones para controlar la niebla
- Añadidas funciones de control de batería y velocidad de CPU
- Documentación actualizada
- Revisados los ejemplos
- Añadido un completo ejemplo usando Cel-Shading, Audio, Niebla, Modelos 3D, VFPU y SkyBoxes todo en uno

Os dejo una imagen del último ejemplo (Cel-Shading, modelos 3D, VFPU, entorno y niebla, todo junto):

 

Descarga: https://sourceforge.net/projects/amglib/files/AMGLib_V0.4_STABLE.zip/download

 


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Imagen de Andresmargar

Versión 0.3 ESTABLE

Acabo de subir una nueva versión (la 0.3). Cambios:

- Mejor carga de BMP de 24 y 32 bits (por no decir sin errores)
- Arreglados bugs con el uso de Sprites y modo 2D
- Añadida carga de textura TGA de 24 y 32 bits
- Carga de texturas englobada: AMG_LoadTexture();
- Añadidas funciones para hebras (crear subrutinas)
- Añadidas funciones de edición de texturas
- Ahora los Sprites pueden tener animaciones (frames)
- Añadidas funciones de números aleatorios
- Añadido motor de colisiones (Bounding Box)
- Añadida una prueba de concepto de Cel-Shading
- Se ha actualizado la documentación (nuevas funciones + corrección de fallos)
- Añadidos 3 ejemplos nuevos

 

El link está en el post. Saludos!


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

He estado mirando el source y

He estado mirando el source y se ve muy limpio, se nota que eres bueno Guiño

Por cierto si quieres cualquier cosa ya sabes, mándame un MP y yo encantado de ayudarte.

Imagen de Andresmargar

Gracias :D

Gracias :D creo que dentro de poco necesitaré algo de ayuda xD Te avisaré por MP

Saludos!

Imagen de zerozelta

muy interesante, veere qeu

muy interesante, veere qeu tal esta, gracias por el aporte¡¡

Imagen de Andresmargar

Gracias :)

Me alegra que te guste ^^

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.