.comment-link {margin-left:.6em;}

PROYECTO UTOPIA

jueves, mayo 04, 2006

oFusion

Ogre dispone de una de las mejores herramientas de exportación que he visto en años: oFusion. Únicamente he encontrado un pequeño problema, y es que el compilador octree de ogre funciona con ficheros en formato scene y oFusion exporta los archivos en formato osm. Pero por suerte tiene fácil solución ya que ambos archivos, que no son mas que una descripción bastante general de la escena, están en formato XML. Gracias a cygwin me preparé un pequeño script en perl para hacer la conversión:


#!/usr/bin/env perl

# The author(s) have made the contents of this file
# available under a CC-GNU-GPL license:
#
# http://creativecommons.org/licenses/GPL/2.0/
#
# A copy of the full license can be found as part of this
# distribution in the file COPYING.
#
# You may use this software in accordance with the
# terms of this license. You agree that you are solely
# responsible for your use of this software and you
# represent and warrant to the author(s) that your use
# of this software will comply with the CC-GNU-GPL.
#
# Copyright 2006, Victor Marzo (samsaga2@gmail.com)
#

# USE: osm2scene.pl < demo.osm > demo.scene

use XML::Simple;
use XML::Writer;
use Data::Dumper;

my $xml_osm = XMLin('-');
my $xml_scene = new XML::Writer(DATA_MODE => true, DATA_INDENT => 4);

$xml_scene->startTag('scene', 'formatVersion' => '0.0');

my $id = 0;

for my $entities ($xml_osm->{entities}) {
$xml_scene->startTag('nodes');

for my $entity_name (keys %{$entities->{entity}}) {
my $entity = $entities->{entity}->{$entity_name};

$id++;

$xml_scene->startTag('node',
'name' => $entity_name,
'id' => $id);

$xml_scene->emptyTag('position',
'x' => $entity->{position}->{x},
'y' => $entity->{position}->{y},
'z' => $entity->{position}->{z});

$xml_scene->emptyTag('rotation',
'qx' => $entity->{rotation}->{x},
'qy' => $entity->{rotation}->{y},
'qz' => $entity->{rotation}->{z},
'qw' => $entity->{rotation}->{w});

$xml_scene->emptyTag('scale',
'x' => $entity->{scale}->{x},
'y' => $entity->{scale}->{y},
'z' => $entity->{scale}->{z});

$xml_scene->emptyTag('entity',
'name' => $entity_name,
'id' => $id,
'meshFile' => $entity->{filename},
'castShadows' => $entity->{CastShadows});

$xml_scene->endTag('node');
}

$xml_scene->endTag('nodes');
}

$xml_scene->endTag('scene');


Tendréis que instalaros los modules XML::Simple y XML::Writer pero usando el CPAN del perl no deberíais tener ningún problema.

martes, mayo 02, 2006

Abril. Resumen del mes. Mes de infarto.

Mes de infarto.

El mes de abril ha sido un mes de cambios ‘brutales’ en nuestro proyecto. Después de diversas pruebas con la primera demo, nos dimos cuenta de la gran perdida de rendimiento que nos causaba la librería Cal3D. Otros factores añadidos que afectaban al rendimiento nos hicieron retomar una idea que en tiempos ya habíamos barajado en el proyecto, usar un motor de render ya desarrollado. Necesitabamos que fuera fiable y se le viese continuidad a su desarrollo. Al final nos decidimos por Ogre. No será el mejor, pero se adapta a las necesidades que tenemos.

En un tiempo record para nosotros, se ha montado la primera demo sobre la que se estaba trabajando con todas las características que ya estaban incorporadas, como el motor de sonido y físicas. Samsaga2 se lo ha currado, si señor. Además, ya estamos añadiendo lo que será parte del control de IA.

No hemos tenido suficiente con estos cambios, y nos hemos reorganizado a nivel de coordinación de proyectos. Nuestro amigo Manolin se encargará a partir de este mes de la coordinación de gráficos permitiendo a Nwanda centrarse en guión.

Porque esa es otra. También estamos de reforma en guión. Pero sobre esto mejor no contaré nada. Que luego me regañan.

Saludos.