trensim.comSimulación Ferroviaria
   

Trensimpedia :: Simulación Ferroviaria.
 
 

:: 18.227.46.202 :: Discusión para esta IP :: Entrar

D3D:Conversión de proyectos TSM a Canvas 3D

De TrenSimpedia

Icono de esbozo

Este artículo o sección es un miniesbozo en el que falta información esencial. Ampliándolo ayudarás a mejorar la TrenSimpedia.


Contenido

Importación de proyectos TSM en Canvas 3D

Intentaremos exponer, de la forma más sencilla posible, una de las posibles maneras de Convertir un proyecto TSM existente a Canvas 3D, con la finalidad de poder exportar a Rail Simulator el material que hayamos diseñado con TSM para MSTS.

Reglas para la correcta importación de proyectos TSM

Canvas 3D dispone de una herramienta para la importación directa de un proyecto TSM.

Dicha herramientas, en líneas generales:

  • funciona muy bien para la importación de los objetos y formas 3D
  • tiene unas pequeñas limitaciones en la importación de los mapeos de las texturas a dichos objetos
  • no importa en absoluto las animaciones existentes.

Este último punto no es muy relevante en cuanto las herramientas para crear animaciones en Canvas 3D son mucho más potentes que las existentes en TSM, y no únicamente podremos volver a crear dichas animaciones de forma rápida y sencilla, si no que posiblemente las podremos mejorar de forma sustancial.

Respecto a las limitaciones en el texturado de los objetos importados es conveniente tener en cuenta unas pocas reglas que, de seguir correctamente en el modelo TSM, producirán importaciones sin errores en Canvas. En caso contrario, el conocer estas limitaciones nos permitirá identificar los errores que podrían producirse en la importación y podremos, por tanto, valorar el repetir el texturado en Canvas de aquellas piezas problemáticas.

En general nos puede dar problemas aquellas operaciones "raras" o fuera de lo común que hayamos desarrollado con TSM.

Una pieza en TSM (part) debe estar texturada a partir de una sola hoja de texturas

Cada pieza en TSM puede tener hasta seis texturados (uno por cada eje y sentido) a partir de una misma hoja de texturas o de hojas diferentes.

Canvas 3D permite así mismo que cada polígono de una pieza pueda tener un texturado diferente de hojas de texturas diferentes, tantas como se desee.

A pesar de estas libertades tanto en TSM como en Canvas, lo normal suele ser que para el texturado de cada pieza de nuestro modelo concentremos sus texturas en una hoja, y parece ser que el desarrollador del plugin de importación desde TSM haya tenido únicamente en cuenta esta práctica habitual, pues en el proceso de migración a cada pieza de TSM le aplica los mapeos de texturado en referencia a una sola hoja de texturas. la última descrita en TSM.

Por tanto, en el proyecto TSM deberemos separar de una misma pieza los polígonos texturados a partir de hojas de textura diferentes para no encontrarnos con esta limitación de la importación.

Un texturado en mosaico en TSM no debe tener un factor de repetición superior a 4

Canvas 3D no permite texturar una superficie en mosaico, o por repetición de la misma textura a lo largo de un eje un número determinado de veces.

No obstante, el plugin de importación mantiene el mapeo en mosaico de un polígono incluso en el editor de Canvas, a condición de que el factor de repetición del mosaico no supere el valor de cuatro.

La pieza así importada en Canvas, no podrá ser remapeada en este editor sin la pérdida de dicho mapeo en mosaico.

Dos alternativas se nos presentan en este caso:

Imaginemos que deseamos exportar a Canvas un andén de 10 metros de ancho y 50 de largo. Para el texturado en su momento preparamos una hoja con la superficie del andén en un tramo de 10 x 10 metros, que repetimos a lo largo cinco veces.

Una primera opción sería crear una textura con el texturado del andén completo, lo cual, para grandes longitudes, puede representar una pérdida total de calidad en la textura por la excesiva compactación de la misma.

Una segunda opción puede ser reproducir el objeto andén con unas dimensiones de 10 x 10 metros, texturarlo con la textura original, y repetirlo cinco veces a lo largo concatenando los objetos.

Según la situación concreta deberemos elegir la alternativa más conveniente.

Los materiales de TSM son ignorados por Canvas 3D

La exportación no conserva los tipos de materiales que usa TSM para MSTS, pues son específicos de este simulador, y Canvas 3D tiene por filosofía ser una herramienta multiplataforma (MSTS, Trainz, RS, BVE y Rail3D) en el mundo de la simulación ferroviaria.

No obstante, esto no debería afectarnos en la mayoría de las situaciones, pues Canvas soporta transparencias a partir del canal alpha de la textura base. Simplemente por el hecho de que la textura posea un canal alpha, Canvas generará un material adecuado en la exportación. Así mismo, en Canvas podemos controlar de un modo más detallado el material a usar por el simulador a partir de las opciones de texturado.

Todo ello no es un problema en el momento de la importación salvo que en TSM hubiéramos realizado alguna operación "rara" o fuera de lo normal. Por ejemplo, usar una textura con canal alpha transparente en un objeto con tipo de material "SolidNorm" (sin transparencias). Esto generará un objeto para MSTS sin transparencias en el simulador, pero la importación, que ignorará el material "SolidNorm" observará una textura con transparencias y las aplicará en el resultado final generando un objeto con material transparente.

En este caso deberemos confirmar que las texturas con transparencias y los materiales usados en TSM están en concordancia para evitar problemas en el resultado de la importación a Canvas 3D.

Ejemplo de importación de un edificio sencillo

Descripción del modelo

Para empezar una primera exportación he escogido la caseta de enclavamientos de Mora la Nova.

Es un edificio ferroviario simple de tres plantas.

El enclavamiento de Mora la Nova era electromecánico de la compañía GRS (General Railway Signal). El piso inferior estaba destinado a almacén. En la planta intermedia residían los conjuntos de relés que componían el enclavamiento. En el superior, con cristalera, estaba situada la mesa de enclavamientos desde donde se operaban las señales y agujas de la estación.

Una escalera exterior, con descansillo, permite el acceso a los dos pisos superiores. El edificio está cubierto por un tejado a cuatro aguas.

Preparación de la migración

Comenzaremos por crear una estructura de directorios de trabajo en la carpeta Source del directorio donde tengamos instalado el simulador, habitualmente C:\Archivos de Programa\Rail Simulator.

En la carpeta Source debemos crear un directorio que determine el código de Provider bajo el cual actuaremos. Podemos tener tantos Providers como queramos, pero es una buena práctica identificar nuestras creaciones bajo un único Provider. Para determinar el código de Provider, si bien éste es totalmente libre, pudiera darse el caso de colisión entre dos creadores que hayan escogido el mismo código. Por tanto, como recomendación y buena práctica, desde Trensim solicitamos que el código de provider de un autor coincida con el código de usuario con el cual se ha debido dar de alta en el foro de la web Rail Simulator para poder proceder a descargarse el paquete de las Developers Tools, paquete sin el cual no tienen sentido los pasos que vamos a dar a continuación.

En la imagen asociada se puede comprobar que el Provider escogido en este caso ha sido Pere.

A continuación, en el directorio designado para el Provider que acabamos de mencionar deberemos crear un subdirectorio que determine el código de Product en el que vamos a encuadrar nuestra creación. Un Product es un conjunto de elementos, ya sean elementos estáticos, vehículos, vegetación, etc, que tienen una relación entre ellos. Este concepto se puede orientar al conjunto de elementos necesarios para una ruta completa, como en las originales que vienen con el juego, o cualquier otro concepto o agrupación que deseemos para nuestras creaciones. De esta forma podemos crear Products para las diferentes compañías de ferrocarril de las cuales vayamos a crear vehículos, o para el conjunto de elementos que elaboremos para una ruta concreta, o para todos los vehículos de una composición o tren concreto que deseemos publicar, etc. Cierto es que a la hora de generar un paquete de distribución de nuestras creaciones éste puede ser un elemento que determine la agrupación a crear, pero también se pueden crear paquetes distribuibles con objetos de diferentes Products, o incluso de diferentes Providers, si es necesario.

En la imagen asociada se puede comprobar que el Product definido en este caso ha sido RenfeIII.

Bajo las carpetas Provider i Product deberemos crear una carpeta Scenery, que contendrá todos los elementos escénicos que vayamos a construir, y bajo esta carpeta crearemos otra denominada Buildings para los proyectos de todo tipo de edificios. Hasta aquí la estructura es la estándar que determina Rail Simulator, y que podemos observar en el Provider Developer que se crea por defecto y que contiene ejemplos de diferentes tipos de Assets.

Por último, y bajo esta jerarquía predefinida, crearemos un directorio para los archivos de nuestro proyecto, con un subdirectorio denominado Textures que contendrá las texturas del proyecto.

En este caso se ha denominado Torre_Enclav, pero puede llamarse como consideremos más oportuno.

Preparación de la malla

Al directorio del proyecto copiaremos el archivo del proyecto TSM en fromato .dst, para tenerlo listo para la migración.

Preparación de las texturas

En el directorio Textures copiaremos todos los archivos de texturas que sean necesarios para el proyecto, en los formatos originales, ya sean .bmp o .tga.

Una vez copiadas las texturas procederemos, en este mismo directorio, a convertirlas en archivos .ace con el mismo nombre de archivo que el original, operación que podemos realizar con la herramienta ToAce.exe, o con el plugin para Photoshop que se encuentra disponible en la web de Rail Simulator. Obtendremos para cada textura dos archivos: el original que usará el programa 3D Canvas, y su imagen en formato .ace que usará el Blueprint para su exportación a Rail Simulator.

Importación en Canvas

Abrimos el programa 3D Canvas v7.1.2.0 (o superior), con los Trainworks activados, e importamos el archivo ya existente, del proyecto de la torre de enclavamientos en TSM, mediante File > Import > Trainworks > Trainsim Modeler (.dst).

Tras seleccionar el archivo .dst a abrir, aparecerá una ventana de opciones de la importación.

Los valores que se proponen son los habituales para una migración normal, por lo que procederemos a aceptar las sugerencias sin alterar ninguno de los campos o valores que se muestran en dicha ventana.

El resultado será una malla en 3D Canvas idéntica al original en TSM que puede presentar algún fallo o problema de texturado, tal como se ha comentado más arriba al señalar las tres reglas de la migración.

En este caso el modelo presenta un evidente problema de texturas (ver imagen adjunta).

Corrección de problemas

En el presente caso el problema queda reflejado por haber incumplido la primera de las reglas: Una pieza en TSM (part) debe estar texturada a partir de una sola hoja de texturas.

Esto lo podemos comprobar al volver al TSM y observar el archivo. Ciertamente, tras haber construido la torre de enclavamientos, y por ser ésta un componente de un conjunto de edificios en un sólo objeto, se procedió a seleccionar todas las partes de que estaba constituida y realizar una operación de join. El resultado fue que toda la torre pasó a ser una única pieza, pero conservando el texturado original a partir de tres hojas de textura diferentes:

  • una para las cuatro paredes del edificio
  • otra para el tejado
  • una última, con transparencias, para la escalera exterior.

La importación ha tomado ésta última textura como única para la pieza, ignorando las demás, con el resultado que se ha observado en el punto anterior.

La corrección en este caso ha sido simple. Con gran previsión, en su momento, conservé una copia del archivo .dst del proyecto con todas las piezas separadas antes de la operación de join. Se ha procedido a importar este último archivo, repitiendo los pasos anteriores, y el resultado ha sido satisfactorio al primer intento.

Caso de no haber conservado dicho archivo, el procedimiento de corrección hubiese consistido en, desde el editor de TSM, en modo polígono ir seleccionando los polígonos que compartan una misma hoja de textura e ir separándoles de la pieza base mediante split part, procedimiento que tampoco hubiera sido demasiado dificultoso. Una vez modificado en TSM el archivo original podríamos proceder a su importación sin problemas.

La escena generada en 3D Canvas se verá seguramente oscura, pues la iluminación es una propiedad de la misma y por defecto ésta es mínima. Alterar esto es sencillo:

Localicemos en el árbol de jerarquías de la escena el grupo Point Light. Al desplegarlo aparecerá un único elemento denominado también Point Light. Este elemento determina la iluminación proyectada desde un determinado punto de luz. Su posición suele ser suficiente para nuestras necesidades.

Apuntemos con el ratón sobre el Point Light clicando con el botón derecho para desplegar el menú contextual, y seleccionemos de dicho menú la opción Properties.

Se abrirá la ventana de Propiedades del punto de luz, de las cuales bastará seleccionar el color del mismo. Por defecto estará establecido en el color negro, con lo que el punto de luz no emite luz alguna. Al pinchar sobre él se desplegará la ventana de selección de color de la cual bastará con elegir un gris medio (50%) para una suave iluminación. Evidentemente podemos seleccionar una luz más intensa o de un color determinado, aunque para los propósitos de migración a Rail Simulator el tono de la luz es totalmente intrascendente.

La escena resultante la deberemos guardar en formato 3D Canvas para futuros usos. El mismo directorio del proyecto creado puede ser una buena opción para guardarlo.

Creación de LODs

La jerarquía de elementos importada a 3D Canvas se muestra en la siguiente imagen:

(Pulsar para ampliar)

Se observa que se ha generado un grupo denominado Import, del cual depende un segundo grupo con el nombre de la primera pieza en la jerarquía de TSM (el MAIN tradicional) del cual dependen tantos grupos como piezas componían el proyecto original, cada uno con un elemento y con el nombre que tenían en TSM. Que los nombres de las piezas se conserven es una ventaja, sobre todo en elementos con gran número de piezas.

Tanto grupo no suele ser beneficioso para Rail Simulator, por lo que, en la medida de lo posible, deberemos ir moviendo los elementos de la escena para agruparlos en menos grupos:

(Pulsar para ampliar)

La imagen anterior muestra una nueva jerarquía en la que el Tejado (cubo marrón) se ha desplazado (basta con un drag and drop con el ratón) al grupo (cubo amarillo) Caseta, donde ya residía el elemento Caseta (las cuatro paredes del edificio), y el resto de elementos se han movido a un solo grupo que se ha renombrado como Escalera, pues constituyen todos los elementos de dicho componente.

Además, el nuevo grupo Escalera se ha movido a su vez fuera del grupo Caseta para hacerlo depender directamente del grupo raiz Import.

Esta nueva jerarquía tiene muchos menos grupos (son los elementos que más comen recursos en el Rail Simulator), y estos están agrupados segun nuestra conveniencia para establecer los LODs del objeto.

Los LODs nos permitirán definir la carga gráfica del objeto en virtud de la distancia a la que se encuentre respecto del observador en el juego.

Así, si deseamos que el edificio sea visible a unos 1000 metros, bastará con anteponer al nombre del grupo que contiene la caseta y el tejado el orden del LOD y el valor de la distancia: 1_1000_Caseta. El orden del LOD en el presente caso será siempre 1. Podríamos crear un elemento de geometría más simple en un grupo 2_2000_Caseta. El orden del LOD determinará que este grupo estará visible cuando el anterior ya no se vea (son excluyentes los LODs 1 y 2 del grupo Caseta). El valor que sigue al orden de LOD es la distancia hasta la cual será visible este grupo:

(Pulsar para ampliar)

Como podemos observar, la caseta será visible hasta los 1000 metros, pero la escalera tan sólo lo será hasta los 100 metros, a partir de dicha distancia únicamente se representará el edificio y el tejado pero no la escalera.

Al grupo original Import podemos cambiar también el nombre por uno que identifique el objeto, indicando los valores de visión del conjunto.

Exportación a Rail Simulator

El modelo así preparado lo podemos exportar al formato intermedio de Rail Simulator .IGS.

Primero deberemos seleccionar el elemento de la escena que deseamos exportar. Bastará con que seleccionemos con el botón derecho del ratón el nodo raíz de la caseta: el denominado Import inicialmente, o bien 1_1000_Torre una vez recompuesta la jerarquía.

Aunque se despliega el menú contextual en la anterior operación, ignoraremos éste y nos dirigiremos al menú principal para seleccionar: File > Export > Trainworks > Rail Simulator Intermediary Geometry Format (.igs).

Una ventana nos preguntará por la ubicación y el nombre del archivo resultante. Deberemos guardar la exportación en el directorio del proyecto que hemos creado al principio y podemos darle el nombre que deseemos.

Una nueva ventana nos preguntará si deseamos crear LODs (Levels Of Detail) para el modelo. Aunque podemos obviar estos elementos, lo deseable es que el plugin de exportación cree LODs para la Torre de enclavamientos, por lo que contestaremos que sí.

Finalmente una nueva ventana nos solicita si los LODs los queremos generar a partir de los niveles que hayamos introducido en los nombres de las piezas. En el presente caso, en que hemos llevado a cabo dicha creación de nombres, contestaremos que sí. Pero si no lo hubiéramos realizado, podemos contestar que no tenemos definidos LODs en el modelo, en cuyo caso la creación de los mismos la llevará a cabo el propio plugin basándose en unas sencillas reglas:

  • se creará un LOD hasta los 100 metros con todos los elementos del modelo.
  • se creará un segundo LOD entre los 100 y los 400 metros en el que se eliminarán todas aquellas piezas que tengan por lo menos dos de sus dimensiones inferiores a 0,5 metros.
  • se creará un último LOD a partir de los 400 metros en el que se eliminarán todas aquellas piezas que tengan por lo menos dos de sus dimensiones inferiores a 2 metros.

Esta generación automática puede ser suficiente para una primera aproximación al concepto de LODs, y es tan sencilla como no hacer nada, dejando al exportador que realice el trabajo de forma automática.

El procedimiento que hemos descrito para definir los LODs es muy simple, pero es sólo válido para modelos que se exportarán a Rail Simulator, puesto que dicha manera de indicar las distancias es exclusiva de dicho simulador. Existe otra forma de realizar esta operación, algo más costosa, pero válida para exportaciones a MSTS, Trainz y RS, pero creo que es mejor explicarla en otro momento.

Creación del Blueprint

Una vez creado el archivo IGS ya podemos dejar el Canvas por el momento y pasar al Blueprint Editor de Rail Simulator que a partir de unas definiciones (los ficheros blueprint) generará los archivos necesarios para el simulador.

Aunque para la generación de los blueprint RS recomienda el Asset Editor, creo que el uso de éste debe reducirse al mínimo imprescindible o incluso olvidarse de él. Se ha generalizado entre los usuarios la recomendación de usar el Blueprint Editor, que puede encontrarse en la ruta: Archivos de Programa\Rail Simulator\BlueprintEditor.exe. Esta utilidad es mucho más estable que el Asset Editor, y permite tener abierto el juego simultáneamente si lo deseamos.

Una vez arrancado el Blueprint Editor, observaremos que nos muestra un arbol jerárquico con los diferentes Providers que tengamos definidos, desplegaremos la jerarquía de nuestro código de Provider hasta llegar al directorio del proyecto, donde con el botón derecho del ratón desplegaremos el menú contextual para seleccionar la opción New Blueprint. Se nos preguntará por el tipo de blueprint que deseamos generar, y deberemos elegir Scenery blueprint dado que vamos a crear un elemento estático del escenario. Daremos nombre al blueprint creado y procederemos a cumplimentar aquellos campos que sean relevantes para nuestro proyecto (que no serán todos ni mucho menos).

Una vez terminada esta operación salvaremos el blueprint. Los valores más relevantes del blueprint para elementos escénicos son los siguientes:

Display Name
En esta sección podemos informar el nombre del objeto y su descripción en un conjunto amplio y variado de idiomas.

El dominio de las diferentes lenguas será imprescindible si queremos personalizar la presentación del objeto, tal como se muestra en la imagen. En caso contrario, podemos repetir la misma descripción para todos los idiomas, preferiblemente en inglés, personalizando en castellano el campo dedicado al Español.

Cabe observar que si no se introduce ninguna descripción en un idioma determinado el objeto no estará disponible en el editor si el juego se inicia para ese idioma, por lo que es recomendable introducir algún texto en todos ellos caso de querer la publicación internacional del mismo. Desconozco si este error se corrige mediante algún parche de los existentes, o será corregido en un futuro.

Category

Esta es la categoría bajo la cual aparecerá el objeto en el editor del RS. Para el presente caso escogeremos Component stations. Si no sabemos localizar una categoría adecuada para nuestro elemento escénico siempre podemos elegir Misc (Miscelánea).

Valid in scenarios

Este campo tendrá siempre el valor False excepto para el material móvil que deseemos hacer accesible en los escenarios.

Geometry ID

Aquí deberemos indicar la ruta, bajo Provider y Product donde se encuentra el archivo IGS de nuestro modelo que va a ser convertido a archivo accesible en el juego.

En este caso: Scenery\Buildings\Torre_Enclav\Torre_Enclav.IGS

Shadow Type

Sólo hay dos valores posibles:

  • Blobby, si queremos que el juego genere una sombra circular difusa bajo nuestro objeto.
  • None, si no queremos la sombra anterior (p.e. porque el objeto ya posee sombras propias).
Detail level generation range

Este apartado incluye dos campos: Highest level 1 is highest, y Lowest level 10 is lowest. Ambos, en conjunción, indican los límites entre los cuales el juego generará un número de Detail level que se asociará al objeto al incorporarlo a una ruta. Siendo Highest level 1 is highest el valor inferior y Lowest level 10 is lowest el valor superior (si, está bien indicado aunque pueda parecer que no).

Una vez asociado el nivel de detalle al elemento, cuando el usuario del juego seleccione su nivel de detalle (según sea su ordenador) verá únicamente aquellos objetos que superen dicho nivel. Es decir, en lenguaje llano, que si el objeto tiene por límites 10 y 10 siempre se le generará el valor 10 como nivel de detalle y siempre será visible, o si por contra tiene por límites 1 y 5 se le generará un valor entre 1 y 5 como nivel de detalle y únicamente será visible cuando el usuario elija un valor de detalle entre medio y máximo.

Personalmente considero que los edificios que forman parte de las estructuras ferroviarias siempre han de ser visibles y les asigno los valores 10 y 10, mientras que a edificios de viviendas les suelo asignar los valores 1 y 10.

Visualización en el RS

Desde el Blueprint Editor procederemos a exportar el objeto, observando que no se produzcan errores (no deberían producirse).

Para ver el resultado de la exportación, iniciaremos el Rail Simulator y nos dirigiremos a editar una ruta, o en su defecto crearemos una para nuestras pruebas.

Una vez estemos en la edición de la ruta, en la ventana superior de Caja de herramientas seleccionar Herramientas de objetos. Luego en la ventana de Explorador de objetos seleccionar Estaciones, y en la lista de elementos deberá aparecer nuestra Torre de enclavamientos. Una vez seleccionado, el objeto lo podremos situar sobre el terreno mediante el cursor.

En el caso de que no apareciese en la lista, deberemos asegurarnos, mediante el botón Filtro de conjunto de datos que nos desplegará la ventana del mismo nombre a la derecha, de que el Provider y el Product donde se encuadra nustro objeto están seleccionados, con el fin de permitir su uso.

Creación de sombra

Hasta aquí el proceso mostrado es bastante simple y sencillo, y nos permite migrar con facilidad un objeto creado en TSM a RS. Pero para aprovechar mejor las capacidades del nuevo simulador podemos llevar a cabo unas sencillas operaciones que mejorarán en conjunto nuestro proyecto, como la creación de una sombra propia proyectable para la caseta de enclavamientos.

Creación de texturas de invierno

Creación de texturas nocturnas

Ejemplo de importación de un vehículo ferroviario

Descripción del modelo

Para empezar con un vehículo ferroviario he escogido un vagón de mercancías cerrado. Tiene alguna de las complejidades de un vehículo, pero no necesita todavía interiores, cabinas, ni especificaciones del aparato motor. Todo llegará.

El elemento elegido es un vagón frigorífico particular de la compañía Beristain.

En el año 1947, Herederos de Ramón Múgica S.L. construyó, para la compañía BERISTAIN de San Sebastián, una serie muy corta de tres vagones frigoríficos sobre bastidor unificado. El revestimiento exterior de la caja era con friso de madera. Este tipo de vehículos mantenían a temperaturas bajo cero los pescados mediante bandejas, en las cuales se depositaban grandes bloques de hielo, aunque también estaban preparados para transportar carne colgada de ganchos de los que disponían. El aislamiento de las cajas se conseguía mediante corcho prensado y papel parafinado.

Tras su andadura a lo largo de más de 20 años todos ellos fueron desguazados en los años 70.

Importación en Canvas

Corrección de problemas

Exportación a Rail Simulator

Creación del Blueprint

Creación de Wheels

Creación de sombra

Creación del Gancho

Numeración dinámica