Hola Sierra
Te expongo mis escasas experiencias respeto de la sombra. Puedes activar que ésta se "proyecte" sobre una parte de un objeto de la siguiente manera:
1- Descomprime el archivo .s generado.
2- Busca en el archivo las líneas PRIM_STATE. Encontrarás una por cada nodo de jerarquía y tipo de material que tenga tu objeto. Si sólo tienes un nodo de jerarquía (por ejemplo MAIN), y a éste le has aplicado dos materiales distintos en sus diferentes polígonos, encontrarás dos de estas líneas.
Tienen el siguiente formato
- Código: Seleccionar todo
PRIM_STATE Nodo_Material ( 00000000 i
TEX_IDXS ( 1 t ) 0 0 0 0 n )
El comando prim_state desconozco a que aplica en abstracto, pero es evidente que determina dentro de un modelo 3D para el nodo
Nodo en las caras con el material
Material varios aspectos, entre los cuales se hacen evidentes los siguientes:
i - admite los valores 0 y 1. El valor 0 indica que la textura no tiene asociado canal alpha, mientras que el valor 1 alerta de la presencia de canal alpha, ya sea de 1 bit o de 8 bits.
t - es un número que incida el índice de la(s) textura(s) a usar para el nodo Nodo. Estos índices se describen en el comando TEXTURES y se mapean con los archivos que las contienen en el comando IMAGES. No tiene mucho sentido su modificación "manual".
n - es un número que indica la prioridad con la cual se "dibujan" las texturas de este nodo en el mundo virtual. Una de las aplicaciones es corregir el efecto que comentas, es decir determinar la aplicación de sombra sobre el objeto, y paso a describir lo que he comprobado personalmente:
Se observa que admite los valores: 0, 1, 2 y 3. El valor "
normal" es
1. Una vez probados los diferentes valores, se deduce el siguiente comportamiento:
El motor de MSTS dibuja el "mundo" en el siguiente orden:
1. el terreno.
2. las sombras que proyectan los objetos, según se les haya definido, y que cubren el terreno.
3. los diferentes objetos, en orden de distancia (de lejos a cerca según el punto de vista de la cámara) que recubren lo anterior (sombras y terreno).
Los diferentes valores aplicados a un objeto alteran lo anterior en el siguiente sentido:
si n es 3, el objeto se dibuja después del terreno (cubriendolo) pero antes que las sombras. Por lo tanto las sombras "pasarán" sobre él. Por contra cualquier otro objeto se dibujará con posterioridad y lo cubrirá independientemente de la posición que ocupe (lejanía o cercanía). Esto se aprecia en los tramos de vías (que tienen activado este valor en la capa de balasto) pues las sombras se dibujan sobre ellos, y un objeto situado detrás (p.e. los puentes) cubre la textura del balasto, salvo que se defina como terrain object.
si n es 2, el objeto se dibuja después de las sombras (las tapa) pero antes que cualquier otro objeto, por lo que sus texturas serán "cubiertas" por cualquier otro objeto con independencia de su posición (lejanía o cercanía). Es decir, objetos más lejanos se dibujarán sobre él. Aplicación práctica de este valor la tenemos en los cristales cuando usamos alpha y no se dibujan correctamente a su "través" los objetos posteriores. (nota, el valor anterior también cumple con esta función para los cristales, y además permite visualizar a su través sombras, mientras que con el valor 2 éstas últimas desaparecerán).
si n es 1, el objeto se dibuja después de las sombras y en la posición que le corresponde por cercanía o lejanía. Valor "normal".
si n es 0, el objeto se dibuja después de qualquier otro objeto, y por tanto cubre a cualesquiera de ellos independientemente de la posición que le corresponde por cercanía o lejanía. Siempre será visible a través de cualquier otro objeto. No se me ocurre para qué pueda servir.
3- Por tanto una vez localizadas las líneas en cuestión en tus vías, yo aconsejaría cambiar este valor de 1 (defecto) a 3 en aquellas superficies que quieras que las sombras sean visibles. Si sólo en el balasto, pués eso. Si también en los railes, pues ya lo sabes
.
4- Y como colofón, vuelve a comprimir el archivo .s y listos.
Saludos y suerte.