Estoy en un proceso paralelo en este tema. Conseguí implementar la numeración dinámica sin problemas desde Canvas, y ahora más o menos lo he hecho en 3DS, usando de momento la numeración de la tolva TT para el J para probar. Luego lo haré como es debido.
Unos apuntes preliminares:
- No dices nada de los blueprint, aunque me supongo que has puesto en el del vagón la referencia el csv o no te saldrían las numeraciones en el editor de RW.
- Es crítico que el número de dígitos máximo que sea esté establecido en el nombre del objeto, según la convención: 1_0128_primarydigits_NN, siendo NN el número máximo de dígitos. En la tolva TT, por ejemplo, he usado 13.
- Es muy importante que el shader que se use para los mapas sea TrainBasicObjectDifusse.fx o no aparecen las texturas por defecto.
Por describir, más o menos el proceso, lo que he hecho, resumidamente, es lo siguiente:
- Creo un plano con 13 poligonos, del tamaño del conjunto de dígitos, al que denomino 1_0128_primarydigits_13. Obviamente sigo la convención 0NNN, siendo NNN la distancia LOD (como en cualquier otro objeto), y en este caso, se afirma que hay que añadir necesariamente lo de “primarydigits_XX, siendo XX el número de dígitos máximo a usar. No obstante se puede luego hacer más objetos para poner en otros sitios, variarlos de tamaño, de forma y hasta de número de polígonos. Para sus sucesivos objetos he usado los nombres 1_0128_primarydigits_13b, 1_0128_primarydigits_13c, etc. sin problemas. Esto me hace pensar que en realidad se deben de poder llamar como se quiera.
- Creo 13 aces, denominados primarynumber_0.ace a primarynumber_12.ace, con los números a 12 que coloco en la carpeta Textures del modelo. Son para referencia y merece la pena poner texturas de números para no liarse luego. Creo que aquí la denominación primarynumber_o, etc... sí que es crítica. Son como se muestra en la imagen adjunta, y se basan en los que existían en RailSimulator para esta función que en RW no encuentro, aunque han de estar por algún sitio supongo. Estos mapas son texturas de 32x32, RGB, de 32 bits, es decir con canal alpha, éste en blanco. Ya digo que son necesarios pero sólo como referencias para crear el plano y mapearlo.
- Creo un material Multi/Sub-object con 13 submateriales, en cada uno de los cuales pongo cada uno de los ace anteriormente indicados, todos con el nombre de material primaydigits (no sé si esto es importante pero funciona) y Shader TranBasicObjectDifusse.fx (que sí que es importante). No me extiendo ahora en como se aplican submateriales, ya que es el mismo sistema que para cualquier otra aplicación de esto (con Edit Mesh, seleccionando poligono, set ID etc).
- Aplico a cada uno de los polígonos del plano que antes habíamos creado, cada uno de los ace como submateriales, empezando por la derecha con el 0 y acabando en la izquierda con el 12 (es decir que se verá 12, 11 10, 9,.... , 2, 1, 0). Observese que como el 0 corresponde a la ID 1 y el 11 a la ID 12, el 5 corresponde a la ID 6... Es un poco lío esto pero así lo hicieron los de Kuju por alguna razón (o sin ella) y lo he dejado para no experimentar más. Ver captura.
- Creo las texturas ace correspondientes a los número, letras, simbolos que quiera poner y las pongo en la carpeta Textures del modelo. En este caso, los números del 0 al 9 y el guión medio -. Tienen tamaño de 32x64 con un alpha como se ve en la captura. El tamaño, coloR y forma, puede ser cualquiera en principio. Los nombro number_0.ace a number_9.ace y number_guion.ace, pero el nombre puede ser cualquiera. A estas hojas hará llamada el blueprint específico de la numeración.
- En el blueprint del vagón incluiyo en Numbering List el fichero CSV, cuya estructura se ve en la otra captura, que es 0,0,y los trece dígitos (que incluyen un guion en este caso pero podrían incluir letras). Lo que se incluya puede ser números, letras o lo que sea que se quiera que luego aparezca asociado a una textura.
- Creo el blueprint específico para las texturas de la numeración dinámica, que es uno del tipo "Named texture set blueprint", en el que hay que ir refiriendo por un lado en "Texture name" el dígito, letra o simbolo que aparece en el csv y en "Texture IC" el ace de la textura que corresponda a aquél. Así, si se pone el guión por ejemplo, cada vez que en el CSV aparezca un guión se llamará a la textura asociada con él, en este caso number_guion.ace.
- Este blueprint "Named texture..." se referencia en el blueprint de vagón en el apartado "Primary named texture set".
- Se exporta todo y creo que ya está. Desde luego en RW sale. Obviamente el J no debe llevar los números de una tolva TT
, pero ya digo que es sólo la prueba inicial. Ahora cambiarlo es muy fácil.
Quizás se me ha olvidado algún paso, y desde luego no me parece que haya sido muy didáctico, pero confío que estas líneas al menos sirvan para algo. No dudes en consultar cualquier duda.
Saludos:
Javier.-