trensim.comSimulación Ferroviaria
   

La sombra en los objetos

Objetos para incorporar en rutas MSTS

Moderador: Moderadores

La sombra en los objetos

Notapor Sierra » Lun May 16, 2005 12:24 pm

Hola a todos

He observado que, en las secciones de via que estoy haciendo, me desaparece la sombra de los objetos que pasan por encima. En general en cualquier captura con las vias estandar se observa sombra sobre el balasto pero no sobre el rail, pero en mi caso no aparece sobre ninguno de los dos.

Parece como si la sombra solo apareciera en la parte mas baja del objeto, y al tener relieve el terraplen no la muestra excepto ligeramente en la parte mas baja.

¿Alguien sabe a que se debe esto?

Saludos
Sierra Menera
----------------------------------
www.todoscontraelcanon.com
Avatar de Usuario
Sierra
 
Mensajes: 1195
Registrado: Mar Mar 23, 2004 5:17 pm
Ubicación: valencia

Notapor Antuan » Vie Sep 09, 2005 11:25 am

Hola.

Bien, no tengo ni idea, pero sí dejaré constancia aquí de que ocurre lo mismo con las secciones cremallera ZTracks, excepto (por lo que he visto hasta ahora) en el desvío en Y, ahí sí se vé bien la sombra.

Esperemos que en futuras versiones solucionen el bug.

Saludos.
Visita de vez en cuando mi site: http://vapor3d.punchinout.net
Imagen
Avatar de Usuario
Antuan
 
Mensajes: 2638
Registrado: Lun Ene 31, 2005 6:22 pm
Ubicación: Siberia

Notapor Pere » Vie Sep 09, 2005 4:45 pm

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.
Avatar de Usuario
Pere
grupo TrenSim
 
Mensajes: 5026
Registrado: Jue Ago 28, 2003 11:44 pm
Ubicación: Barcelona

Notapor Sierra » Lun Sep 12, 2005 9:26 am

Muchas gracias

Pere.¿ esta operacion la tendre que hacer tantas veces como objetos haya dentro del .s? o sea, una vez al balasto, otra a los railes y tambien al contrarailes, corazon de desvios etc.

Saludos
Sierra Menera
----------------------------------
www.todoscontraelcanon.com
Avatar de Usuario
Sierra
 
Mensajes: 1195
Registrado: Mar Mar 23, 2004 5:17 pm
Ubicación: valencia

Notapor Pere » Lun Sep 12, 2005 11:00 pm

Hola Sierra

Abre el .s y busca estas líneas. No se cuantas te encontrarás. Seguro que como mínimo dos, pues el balasto tendrá un tipo de material Trans y el resto no. Fíjate que hay una de estas líneas por cada NODO + MATERIAL usado en el nodo.

Si puedes descomprimir el .s y poner aquí las líneas que te encuentres, te comento con más precisión.

Un saludo
Avatar de Usuario
Pere
grupo TrenSim
 
Mensajes: 5026
Registrado: Jue Ago 28, 2003 11:44 pm
Ubicación: Barcelona

Notapor Sierra » Mié Sep 14, 2005 12:07 am

Hola Pere

Pues ya he modificado el valor de n y aparece la sombra, aunque realmente parece que la sonbra se proyecta sobre el suelo pero se ve a traves del objeto (la via)


El archivo s descomprimido es este:

( le he suprimido lineas repetitivas para no alargarlo)

SIMISA@@@@@@@@@@JINX0s1t______

shape (
shape_header ( 00000000 00000000 )
volumes ( 2
vol_sphere (
vector ( 0.00047112 0.09250027 24.99929 ) 26.3147
)
vol_sphere (
vector ( 0.00047112 0.09250027 24.99929 ) 25.06162
)
)
shader_names ( 1
named_shader ( TexDiff )
)
texture_filter_names ( 1
named_filter_mode ( MipLinear )
)
points ( 264
point ( 1.750019 -0.1150001 4.999992 )
......
point ( -19.76753 0.27 -12.96269 )
)
uv_points ( 92
uv_point ( -0.03054687 -0.2382697 )
......
uv_point ( 1.238081 0.601547 )
)
normals ( 287
vector ( -0.9940605 0.1088291 0.00022925 )
.........
vector ( 0.5110362 0.8517199 1.52889e-005 )
)
sort_vectors ( 1
vector ( 0.00047112 0.09250027 24.99929 )
)
colours ( 0 )
matrices ( 2
matrix MAIN ( 1 0 0 0 1 0 0 0 1 0 0 0 )
matrix RAILRECTO ( 1 0 0 0 1 0 0 0 1 19.20547 0 17.96268 )
)
images ( 2
image ( VMCleartrack1.ACE )
image ( VMCleartrack2.ACE )
)
textures ( 2
texture ( 0 0 0 ff000000 )
texture ( 1 0 0 ff000000 )
)
light_materials ( 0 )
light_model_cfgs ( 1
light_model_cfg ( 00000000
uv_ops ( 1
uv_op_copy ( 1 0 )
)
)
)
vtx_states ( 2
vtx_state ( 00000000 0 -5 0 00000002 )
vtx_state ( 00000000 1 -5 0 00000002 )
)
prim_states ( 2
prim_state MATERIAL ( 00000000 0
tex_idxs ( 1 0 ) 0 0 0 0 1
)
prim_state materialrail ( 00000000 0
tex_idxs ( 1 1 ) 0 1 0 0 1
)
)
lod_controls ( 1
lod_control (
distance_levels_header ( 0 )
distance_levels ( 1
distance_level (
distance_level_header (
dlevel_selection ( 500 )
hierarchy ( 2 -1 0 )
)
sub_objects ( 1
sub_object (
sub_object_header ( 00000400 -1 -1 000001d2 000001c4
geometry_info ( 352 2 0 1056 0 0 2 0 0 0
geometry_nodes ( 2
geometry_node ( 1 0 0 0 0
cullable_prims ( 1 60 180 )
)
geometry_node ( 1 0 0 0 0
cullable_prims ( 1 292 876 )
)
)
geometry_node_map ( 2 0 1 )
)
subobject_shaders ( 1 0 )
subobject_light_cfgs ( 1 0 ) 0
)
vertices ( 366
vertex ( 00000000 0 285 ff969696 ff808080
vertex_uvs ( 1 0 )
)
............
vertex ( 00000000 154 0 ff969696 ff808080
vertex_uvs ( 1 50 )
)
)
vertex_sets ( 2
vertex_set ( 0 0 45 )
vertex_set ( 1 45 321 )
)
primitives ( 4
prim_state_idx ( 0 )
indexed_trilist (
vertex_idxs ( 180 0 2 1 3 1 2 1 3 4 5 4 3 4 5 6 7 6 5 8 0 9 1 9 0 9 1 10 4 10 1 10 4 11 6 11 4 12 8 13 9 13 8 13 9 14 10 14 9 14 10 15 11 15 10 16 12 17 13 17 12 17 13 18 14 18 13 18 14 19 15 19 14 20 16 21 17 21 16 21 17 22 18 22 17 22 18 23 19 23 18 24 20 25 21 25 20 25 21 26 22 26 21 26 22 27 23 27 22 28 24 29 30 29 24 29 30 31 26 31 30 31 26 32 27 32 26 33 28 34 29 34 28 34 29 35 31 35 29 35 31 36 32 36 31 37 33 38 34 38 33 38 34 39 35 39 34 39 35 40 36 40 35 41 37 42 38 42 37 42 38 43 39 43 38 43 39 44 40 44 39 )
normal_idxs ( 60 286 3 282 3 280 3 280 3 277 3 275 3 273 3 273 3 271 3 271 3 269 3 267 3 266 3 273 3 271 3 271 3 264 3 269 3 263 3 261 3 271 3 271 3 264 3 264 3 273 3 263 3 271 3 271 3 269 3 264 3 273 3 273 3 271 3 271 3 269 3 269 3 263 3 273 3 271 3 271 3 256 3 269 3 254 3 263 3 271 3 271 3 264 3 256 3 250 3 247 3 246 3 246 3 244 3 242 3 241 3 238 3 237 3 237 3 235 3 233 3 )
flags ( 60 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 )
)
prim_state_idx ( 1 )
indexed_trilist (
vertex_idxs ( 876 45 47 etc etc )
normal_idxs ( 292 232 3 232 3 232 etc etc )
flags ( 292 00000000 00000000 etc etc )
y cierra parentesis
)

En mis tramos de via no uso canal alfa. en lugar de balasto plano lo he modelado en forma de terraplen que se hunde en la tierra. Al poder poner sombra me estoy volviendo a animar con el proyecto de la via metrica. La pena es tener que editar a mano cada archivo de forma, pues son unos 200.

Saludos y gracias.

¡ eres un autentico maestro, no solo por lo que haces sino tambien por lo que enseñas !
Adjuntos
sombra en via3.jpg
tramo recto modificado (n=3) y desvio sin modificar (n=1)
sombra en via3.jpg (72.35 KiB) Visto 900 veces
Sierra Menera
----------------------------------
www.todoscontraelcanon.com
Avatar de Usuario
Sierra
 
Mensajes: 1195
Registrado: Mar Mar 23, 2004 5:17 pm
Ubicación: valencia


Volver a Objetos para rutas MSTS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados