RS:Numeración dinámica de vehÃculos en RS
De TrenSimpedia
En Rail Simulator se contempla la posibilidad de que una misma malla de un vehÃculo, ya sea locomotora, coche o vagón, presente diferentes matrÃculas de forma individualizada. No es esta una técnica meramente estética, pues la matrÃcula personalizada de un vehÃculo también da nombre a éste en la simulación, lo cual se refleja en las marcas flotantes que se muestran sobre el material y se utiliza en las actividades llevadas a cabo en los escenarios.
Veamos como implementar esta técnica en nuestras creaciones:
Este artÃculo o sección se encuentra en fase de desarrollo por parte de un contribuidor. Es posible que la información suministrada aquà no sea completa. Ampliándolo ayudarás a mejorar la TrenSimpedia, pero recuerda que alguien posiblemente ya tiene en mente completarlo.
|
Contenido |
Generación de las texturas de los números
Antes de nada debemos proveernos de un juego de texturas para los elementos de la matrÃcula, tÃpicamente los dÃgitos del 0 al 9. Cada número utilizará una, y sólo una, hoja de textura del estilo a la mostrada. El tamaño de los números suele ser de 32 x 64 pÃxeles, con el número en el color deseado sobre un fondo lo más parecido posible a la superficie sobre la que irá impreso el número, o sobre un color lo más neutro posible si el juego de números será reutilizado para varias superficies. En cualquier caso, la textura portará un canal alpha con la silueta del número lo más contrastado posible en blanco y negro.El archivo ha de ser con formato ace y puede tener cualquier nombre, pero por convención se suele nombrar de la forma number_##.ace, donde ## indica el número o carácter representado en la textura. De esta forma, el archivo de la textura mostrada, que corresponde al número ocho, se denominarÃa number_8.ace.
Cabe señalar, como se verá más adelante, que además de poder reproducir números para las matrÃculas también cabe la posibilidad de reproducir letras y caracteres especiales.
Creación del blueprint de los números
Junto con el conjunto de texturas de números deberemos crear un archivo xml para el blueprint del juego de caracteres, que luego referenciaremos desde el blueprint del vehÃculo que incorpore matrÃculas.El blueprint ha de ser del tipo Named texture set blueprint y puede tener cualquier nombre, pero por convención se suele nombrar con el sufijo _Digits, es decir en la forma XXXX_Digits.xml.
Este blueprint es muy simple y se compone básicamente de un conjunto de entradas S texture entry con únicamente dos parámetros en cada una de ellas:
- Texture name - Carácter de la matrÃcula. TÃpicamente se tratará de un dÃgito numérico del 0 al 9, pero admite también caracteres alfabéticos o especiales.
- Texture ID - ruta del archivo de textura asociado, dentro del Provider y del Product donde reside el blueprint.
El conjunto de Blueprint y texturas asociadas podemos tenerlo en un subdirectorio o incluso Provider cualesquieras, y de esta forma un mismo conjunto de dÃgitos podrá ser usado en varios vehÃculos.
Generación de las texturas de las ubicaciones de los números
Necesitaremos también un juego de texturas denominadas primarynumber_##.bmp donde ## indica un número de orden de un dÃgito de la matrÃcula.Estos archivos se usarán para texturar los polÃgonos que recibirán los números dinámicos de la matrÃcula, y su contenido es intrascendente, pero su nombre determina cual de los caracteres de la matrÃcula se ubicará en cada uno de dichos polÃgonos.
Necesitaremos tantas de estas texturas como la longitud máxima de dÃgitos de la matrÃcula. Para una matrÃcula de cuatro dÃgitos (p.e. 1615) necesitaremos cuatro texturas: primarynumber_0.bmp, primarynumber_1.bmp, primarynumber_2.bmp y primarynumber_3.bmp. La longitud máxima de caracteres de una matrÃcula no está indicada en la documentación del simulador, pero personalmente he ensayado con 15 dÃgitos sin problemas.
La textura primarynumber_0.bmp se utilizará para texturar el polÃgono que deberá contener el último dÃgito de la matrÃcula (unidades). La textura primarynumber_1.bmp se utilizará para el polÃgono que contendrá el penúltimo dÃgito de la matrÃcula (decenas). La textura primarynumber_2.bmp referenciará el antepenúltimo dÃgito de la matrÃcula (centenas) y asà seguiremos con el resto.
El contenido de las texturas es irrelevante. Se recomienda usar texturas de 32x 32 pixels de un gris medio uniforme (128, 128, 128). No obstante, mi recomendación es que usemos una textura con un dÃgito impreso (el orden de primarynumber), lo cual nos permitirá, como veremos más adelante, identificar fácilmente la textura que hemos usado en cada polÃgono de la matrÃcula.
Si disponemos de la utilidad KRS Bin Convert podemos importar las texturas que al respecto encontraremos en la ruta "Rail Simulator\Assets\Kuju\RailSimulator\System\Textures".
Generación del archivo de esquema de numeración
Este es un archivo en formato csv (fichero de texto con los campos separados por comas) que contendrá la colección de matrÃculas válidas para el material en cuestión.
Podemos crearlo y editarlo con cualquier editor de texto como Notepad, o con más comodidad con alguna de las múltiples utilidades freeware disponibles como Notepad++.
El contenido se estructura en registros con dos primeros campos numéricos, que necesariamente deben ser cero, y un campo alfanumérico que contendrá una a una todas las matrÃculas posibles:
0,0,1601 0,0,1602 0,0,1603 0,0,1604 0,0,1605 0,0,1606 0,0,1607 etc...
El orden en que las matrÃculas aparecen en este archivo no es significativo en relación al orden como el simulador asigna las matrÃculas al material que se incorpora en un escenario, puesto que el simulador escoge las matrÃculas de forma aleatoria de entre las que se especifican en este archivo. La asignación aleatoria comentada es no repetitiva hasta agotar las matrÃculas posibles, pasado este punto, la adición de más material al escenario provocará el reinicio del proceso de asignación de matrÃculas, repitiendo éstas respecto a las ya asignadas.
Un vehÃculo de un escenario mantendrá la matrÃcula asignada con independencia de que podamos alterar posteriormente el contenido de este archivo eliminando, por ejemplo, la matricula en cuestión. Si hemos efectuado cambios en el archivo csv y queremos que éstos se reflejen en el material ya existente deberemos eliminar dicho material y volverlo a incluir en el escenario.
Las matrÃculas reseñadas en este archivo pueden contener caracteres no numéricos, y ser de diferente longitud. Por ejemplo, El Santander Mediterráneo tuvo 15 coches de primera clase encuadrados en la serie AA-1 a AA-15. Parte del archivo csv correspondiente serÃa:
... 0,0,AA-8 0,0,AA-9 0,0,AA-10 0,0,AA-11 ...
Obsérvese que las dos primeras matrÃculas mostradas tienen una longitud de cuatro caracteres, mientras que las dos últimas tienen una longitud de cinco caracteres. Esto no es ahora relevante (salvo por conocer que podemos hacerlo) pero más adelante deberemos tenerlo en cuanta al implementar la matrÃcula en la malla del coche.
Composición de la matrÃcula
A la hora de diseñar el contenido del archivo csv pudiera ser que decidiéramos incluir en él únicamente la parte variable y numérica de la matrÃcula, dejando la parte invariable fijada en la textura del vehÃculo. De esta forma, para la subserie de "Mikados" Renfe 141-2101 a 141-2125 podrÃamos incluir en el archivo csv tan sólo los dos últimos caracteres (01 a 25) dado que el resto de la misma no se altera. Esto, aunque es perfectamente factible, nos puede reportar dos problemas a la hora de usar el modelo en el simulador:
- Por un lado la identificación de estas locomotoras en el simulador puede no ser reconocible para el jugador. De esta forma la 141-2109 el juego la reconocerÃa tan sólo como 09.
- Por otro lado, si otro autor modelase la Confederación e hiciera lo mismo un jugador que instalase ambas obtendrÃa para la 242-2009 la identificación 09 también, con lo que no podrÃa distinguir en las instrucciones si se trata de una o de otra locomotora.
Incluso la existencia del guión está plenamente justificada, y no tan sólo por costumbre, pues podemos de esta forma incluir en las matrÃculas la indicación de locomotora fuelizada: 242F2009 para la Confederación, pudiendo tener el carácter "F" asociada una textura con la letra efe sobre el guión.
Modificación de la malla del vehÃculo
Comentaremos la creación de una matrÃcula, entendiendo que si deseamos más de una par el vehÃculo tan sólo debemos repetir los mismos pasos para cada una de ellas.Crearemos un polÃgono dividido en tantas celdas como dÃgitos deba tener la matrÃcula, a semejanza de la imagen adjunta, o bien crearemos los polÃgonos por separado, y los situaremos y fusionaremos un una única pieza a efectos de manejabilidad, aunque cada dÃgito puede ser un polÃgono separado.
Al grupo de esta pieza lo denominaremos primarydigits_##, donde ## será el número de dÃgitos que componen la matrÃcula, en el presente caso serÃa primarydigits_8. Se da por entendido que al nombre del grupo se antepondrá el prefijo de número de LOD y distáncia de visión para la matrÃcula, por ejemplo, 1_0050_primarydigits_8.
A continuación pasaremos a texturar cada polÃgono de la matrÃcula con las texturas de ubicaciones de números generadas anteriormente. Para el último dÃgito de la matrÃcula (primero por la derecha) usaremos la textura primarynumber_0.bmp, para el penúltimo dÃgito usaremos la textura primarynumber_1.bmp, para el antepenúltimo la textura primarynumber_2.bmp, y asà sucesivamente. Podemos texturar el polÃgono completamente con la textura, o seleccionar una parte de dicha textura, en el caso que los archivos de las texturas de los números contengan más de una tipografÃa del dÃgito de la matrÃcula.De estos conjuntos de dÃgitos para la matrÃcula podemos tener tantos como queramos en el mismo grupo, pues necesitaremos uno para cada ubicación de la matrÃcula del vehÃculo:
- lado derecho, lado izquierdo
- en la caja, en el bastidor
- en los laterales, en los testeros
- etc.
Para todos estos elementos de matrÃcula en que los dÃgitos representa que están pintados sobre el chasis del vehÃculo es recomendable usar el shader TrainBasicObjectDiffuse.fx.
Por contra, en el caso de que estemos componiendo números que deban iluminarse por la noche, como en los indicadores luninosos de matrÃcula de las locomotoras, usaremos el shader Tex.
Modificación del blueprint del vehÃculo
En el blueprint del vehÃculo al que le hemos incorporado la numeración dinámica de las matrÃculas debemos introducir dos modificaciones para informar de:
- Archivo csv a usar con los valores de las matrÃculas válidas para este vehÃculo.
- Ruta del Blueprint de las texturas de los dÃgitos de la matrÃcula a usar.
Numbering list - Este apartado se encuentra en la sección Rail vehicle component, y aquà deberemos informar de la ruta y el nombre del archivo csv con la lista de matrÃculas válidas.
Primary named texture set - Este apartado se encuentra en la sección Render component, y aquà deberemos informar el Provider, Product y ruta del blueprint que contiene la definición de las texturas con las tiografÃas para los dÃgitos de la matrÃcula. Como se puede observar, en este caso podemos hacer referencia a un Provider y Product diferente de los de nuestro vehÃculo, lo cual permite tener un juego de caracteres para matrÃculas compartido entre varios vehÃculos, cosa común para diferentes vehÃculos de una misma compañÃa en una época determinada.
Consideraciones de diseño
MatrÃculas no numéricas
Nada nos impide que la matrÃcula esté compuesta tanto por caracteres numéricos como por caracteres alfabéticos o especiales.Por otro lado a un carácter de la matrÃcula le podemos asociar una textura también "especial", a tÃtulo de ejemplo se muestra una textura que he usado asociada al carácter guión "-" para un vagón Renfe.
Por tanto, no debemos limitarnos a las partes numéricas en el momento de definir las matriculas de un vehÃculo, y sà tener presente que el texto que se define en el archivo csv "tal cual" lo usará el simulador para identificar frente al jugador el vehÃculo en cuestión. Por tanto seamos lo más claros posible para evitar incertidumbre en las matrÃculas.
MatrÃculas de diferentes longitudes para un mismo vehÃculo
Podemos eso sà tener tantos grupos de matrÃcula como deseemos con diferentes longitudes. Recordemos que cada grupo se denominará primarydigits_##, donde ## será el número de dÃgitos que componen la matrÃcula.
Supongamos que tenemos entre manos un vehÃculo que tiene las siguientes matrÃculas definidas en su archivo csv:
0,0,AA-8 0,0,AA-9 0,0,AA-10 0,0,AA-11
Podemos crear dos grupos de matrÃculas que denominaremos primarydigits_4 y primarydigits_5. Solamente uno de ellos será visible en un momento dado en la simulación. El grupo primarydigits_4 se visualizará cuando el vehÃculo tenga asociada una de las dos primeras matrÃculas, y el grupo primarydigits_5 se visualizará cuando el vehÃculo tenga asociada una de las dos últimas matrÃculas.
De esta forma podemos diseñar unos conjuntos de matrÃcula con la distribución de dÃgitos que precise cada una de ellas.