Es/Livery over MP
En esta página se describe cómo hacer uso de un script para obtener un diálogo de selección de librea para una aeronave o un vehículo de FlightGear. Para ver nuevas libreas, necesitas hacerlas disponibles con este script.
Si quieres añadir una nueva librea en una aeronave que ya haga uso del sistema de selección de libreas, sólo tendrás que seguir los pasos en Models/Liveries.
Una nota para aquellos que desean hacer una librea
Si es probable que tu librea sea editada por otros usuarios, considera hacer un paintkit o kit de pintura, además de tu librea.
Un paintkit es donde se crea una librea en blanco, que sólo muestra los elementos estructurales como tornillos, remaches, ventanas, puertas y paneles. Esto se hace para que los demás usuarios que buscan crear sus propios colores distintivos con estos elementos de construcción, sin tener que volver a dibujar o tratar de evitar pintar sobre ellos. Esto hace del proceso de creación de una librea una tarea más divertida y menos estresante.
Los Paintkits o kit de pintura son provistos por lo general dentro de la aeronave en el directorio Models/ y/o en la base de datos de libreas.
Archivos a editar
Hay algunos archivos que tenemos que crear (o editar), llamados:
- ...-set.xml
- Models/....xml
- Nasal/liveries.nas
También tenemos que crear un nuevo directorio para guardar nuestras libreas en Aircraft/.../Models/Liveries. Hagamoslo.
Models/Liveries
Tenemos que crear un archivo para cada librea. Digamos que tenemos una librea de KLM, entonces necesitamos crear un archivo llamadoKLM.xml en nuestro directorio Models/Liveries. Cuando una librea en particular es seleccionada, su archivo XML es copiado en el árbol de propiedades de la aeronave. Que para el piloto es el árbol de propiedades principal /, y que en todos los equipos remotos de la red MP es una de las ramas multijugador en /ai/models/multiplayer[]. La estructura de los archivos XML de librea es totalmente libre. Tan sólo tiene que ser una propiedad que contenga un nombre para el diálogo de selección, y aircraft.livery.init() que se le diga qué es. Por defecto es sim/model/livery/name.
<?xml version="1.0"?>
<PropertyList>
<sim>
<model>
<livery>
<name type="string">KLM Royal Dutch Airlines</name>
<747-texture>Liveries/KLM.png</747-texture>
</livery>
</model>
</sim>
</PropertyList>
En el ejemplo anterior, los archivos de texturas también se almacenan en el directorio /Liveries/ de la aeronave, la ruta de de la textura es relativa al xml del modelo en el que se utiliza.
Models/....xml
La primera parte tiene que ver con el código nasal. ("Aircraft/747/Models/Liveries"); Apuntando a FlightGear hacia el directorio donde guardamos nuestras libreas. Este es un directorio diferente para cada avión, pero debe de haber solo una carpeta por avión, que contiene todas las libreas de ese avión. Agrega el siguiente código a tu archivo models .xml:
<nasal>
<load>
var livery_update = aircraft.livery_update.new("Aircraft/747/Models/Liveries");
</load>
<unload>
livery_update.stop();
</unload>
</nasal>
La segunda parte es muy importante y probablemente la más dura de todas. Tenemos que establecer qué partes del modelo deben cambiar cuando se selecciona una nueva librea. Para encontrar los nombres de objeto, puedes hacer uso de software de modelado 3D como Blender o AC3D. La parte de código <texture>Liveries/KLM.png</texture> apunta a FlightGear hacia la librea que debe mostrada inicialmente.
Atención: asegurate de no tener una barra (/) en la parte delantera de sim/model/livery en la etiqueta <property-base>! De lo contrario, todos los aviones tendrán la misma librea!
<animation>
<type>material</type>
<object-name>Fuselage</object-name>
<object-name>Hstab</object-name>
<object-name>Vstab</object-name>
<property-base>sim/model/livery</property-base>
<texture-prop>747-texture</texture-prop>
<texture>Liveries/KLM.png</texture>
</animation>
Nasal/liveries.nas
La única cosa que podrías cambiar en el archivo nasal es el directorio de las libreas. Si no tienes el nombre de librea en sim/model/livery/name, entonces tienes que añadir esto como segundo argumento de la función.
aircraft.livery.init("Aircraft/.../Models/Liveries");
...-set.xml
La parte que sigue es muy importante. Si esto no está incluido, los cambios de librea no serán visibles en MP!
<model>
<path>Aircraft/.../models/....xml</path>
<livery>
<file type="string"/>
</livery>
</model>
Si deseas hacer la librea por defecto en lugar de que aparezca simplemente como la primera de la lista, reemplaza la parte de tipo de archivo con lo siguiente, de tal manera que contenga Models/Liveries/....xml y el nombre del archivo de la librea en cuestión .
<file type="string">KLM</file>
Para crear un agradable botón en el menubar tenemos que añadir el siguiente código, justo encima de la etiqueta </sim>.
<menubar>
<default>
<menu n="100">
<label>...</label>
<enabled type="bool">true</enabled>
<item>
<label>Select Livery</label>
<binding>
<command>nasal</command>
<script>aircraft.livery.dialog.open()</script>
</binding>
</item>
</menu>
</default>
</menubar>
Múltiples archivos de textura por librea
Algunos modelos utilizan archivos múltiples texturas (por ejemplo, archivos separados para el fuselaje y las alas). Cada textura necesita su propia y única propiedad. Puedes agregar tantas texturas como desees.
Nasal/liveries.nas
Aquí se hace lo mismo que con los aviones "ordinarios" de una sola textura. Encontrarás el contenido de este archivo al principio de este artículo.
Models/Liveries
En lugar de sólo una ahora tenemos que lidiar con múltiples texturas.
<?xml version="1.0"?>
<PropertyList>
<sim>
<model>
<livery>
<name type="string">KLM Royal Dutch Airlines</name>
<texture-fuselage>KLM-Livery-fuselage.png</texture-fuselage>
<texture-wings>KLM-Livery-wings.png</texture-wings>
</livery>
</model>
</sim>
</PropertyList>
Models/....xml
<animation>
<type>material</type>
<object-name>hull</object-name>
<object-name>nosecone</object-name>
<property-base>sim/model/livery</property-base>
<texture-prop>texture-fuselage</texture-prop>
<texture>KLM-Livery-fuselage.png</texture>
</animation>
<animation>
<type>material</type>
<object-name>left-flap</object-name>
<object-name>left-aileron</object-name>
<property-base>sim/model/livery</property-base>
<texture-prop>texture-wings</texture-prop>
<texture>KLM-Livery-wings.png</texture>
</animation>
Ten en cuenta que en ambas animaciones las texture-prop son diferentes. Estas deben coincidir con las etiquetas de las texturas de tus archivos Models/Liveries/.
...-set.xml
Aquí se hace lo mismo que con los aviones "ordinarios" de una sola textura. Encontrarás el contenido de este archivo al principio de este artículo.
Mejoras en el rendimiento
Para cambiar la librea parece ser importante emparentar todos los objetos con la misma textura. En Blender selecciona todos los objetos y pulsa "ctr-p" para emparentarlos a la selección. Por ejemplo: el fuselaje y las puertas con la misma textura: selecciona en un primer momento las puertas y por útimo el fuselaje y de pulsa "ctr-p".
Al evitar las transparencias en la medida de lo posible, se evitarán también retrasos durante el cambio de las vistas. Véase también el f14b como un ejemplo muy bueno!
Comprobación
Para asegurarte de que la configuración de tu librea funciona correctamente en MP, inicia dos instancias de FlightGear a nivel local, una con
fgfs --multiplay=out,10,localhost,5702 --multiplay=in,10,localhost,5701
y otra con
fgfs --multiplay=out,10,localhost,5701 --multiplay=in,10,localhost,5702
Compartir tus libreas
Por supuesto que quieres que otras personas usen y disfruten tus libreas tanto como tu lo haces. Y por lo tanto, que otros usuarios puedan ser capaces de descargarlas.
Tenemos algunos servidores de FlightGear, en donde puedes subir tus libreas:
- Libreas de FlightGear el mayor repositorio FG con (casi) todas las libreas disponibles, basadas en aviones reales.
- UnitedFreeWorld repositorio con un montón de libreas (escenarios/aviónes), tanto realistas como de ficción.