¡Oh no! ¿Dónde está el JavaScript? El navegador Web no tiene JavaScript activado o no es compatible con JavaScript. Active JavaScript en su explorador Web para ver correctamente este sitio Web o actualizar a un navegador Web que admita JavaScript.

DreamCrawler, pequeña tech demo 3D

DreamCrawler, pequeña tech demo 3D
Dentro de la DCJAM 2016, hay una segunda entrada que se corresponde a un trabajo del grupo español Jumble! Devs , llamado DreamCrawler!!

Es una demo técnica en 3D en que controlamos a un robot en una especie de laberinto 3D. Según nos comentan, es su primer desarrollo Dreamcastero y querían probar las capacidades de la consola. Están muy satisfechos, y seguro que nos sorprenderán en un futuro cercano!!



Más información y descargas (CDI y código fuente)
https://jumbledevs.itch.io/dreamcrawler
http://www.jumbledevs.net/

4 comentarios

Deja un comentario

Debes iniciar sesión para publicar un comentario.
  • Ryo Suzuki
    Está muy bien.

    Me pregunto como importarán los modelos poligonales a la Dreamcast...
    - January 12 2017 19:15:02
    • jumbledevs
      ¡Muchas gracias! dance

      La forma de trabajar con los modelos en la demo es muy simple, funciona de la siguiente manera:

      1. El diseñador modela en Blender y hace las texturas en Gimp. Exporta un fichero OBJ con la malla y un PNG con la textura.

      2. Usando el conversor de recursos convierte los ficheros OBJ y PNG a los que soporta el motor de la demo. Como es una demo muy simple, los formatos también lo son.

      Para las texturas, guardamos el ancho, alto y la información de color (como un fichero TGA). Para las mallas, guardamos el número de vértices, sus posiciones, sus coordenadas de textura, sus vectores normales y los índices de cada triangulo.

      El código del conversor de recursos está aquí:
      https://github.com/cegonse/dcjam2016/...nverter.cs

      Y los métodos que implementan la conversión son MeshToStaticModel() para los modelos y ImageToRaw() para las texturas.

      3. Una vez ya en el motor, cargamos los modelos y texturas desde el sistema de archivos. El método de carga es el mismo que el de exportación pero a la inversa: leemos desde el sistema de archivos (CD-ROM, o si usasemos dc-load podríamos cargar directamente por LAN o serie!) en lugar de escribir.

      Para las texturas, leemos su ancho y alto y reservamos espacio en memoria para cargar los datos de color, y espacio en la memoria del PVR para cargar la textura. Cargamos la textura en RAM y la copiamos a la VRAM.

      Para las mallas, leemos el número de elementos y reservamos memoria para almacenar cada uno de sus componentes: triángulos, coordenadas de textura, vectores normales e índices. Leemos los bloques que corresponden a cada uno, y ya estamos listos para mandar los datos al PVR para que los dibuje.

      El código de la carga de recursos está aquí, y las funciones que se encargan son resources_load_texture() y resources_load_mesh():

      https://github.com/cegonse/dcjam2016/...esources.c

      Aunque tal y como está no tiene prácticamente nada, es una base para ir añadiendo mejoras como:

      · Cargar animaciones de escala, posición y rotación.
      · Cargar huesos para hacer animación esqueletal.
      · Optimizar las estructuras de datos para reducir el espacio a costa de la precisión y acelerar la carga desde el CD.
      · Guardar las texturas comprimidas en PVRTC para utilizar la mínima VRAM posible.
      · Y muchas más cosas que pueden ir surgiendo durante el desarrollo cool

      Espero que te haya sido útil, si tienes cualquier duda no dudes en preguntar!!
      - January 13 2017 10:33:12
      • Ryo Suzuki
        Impresionante! Qué bien explicado!

        Tenemos que hablar!
        - January 15 2017 18:31:58
        • Hasami Age
          Me has dejado impresionado, me has dejado sin habla de como lo estais haciendo.
          - February 04 2017 03:26:27
          La valoración sólo está disponible para miembros. Por favor Iniciar sesión o Registro para votar.
          ¡Excelente! (0)0 %
          Muy Bien (0)0 %
          Bien (0)0 %
          Normal (0)0 %
          Pobre (0)0 %