Tutorial archivos ambiente (env files)
Posibilidades meteorológicas y astronómicas en Train Simulator

Objetos del cielo

Los llamados satellites son objetos que aparecen en el cielo, y se usan sobretodo para crear y regular el aspecto y comportamiento del sol y de la luna (aunque es posible añadir otros, que explicaremos después). La otra particularidad importante de éstos objetos es que son los que generan la luz (y en consecuencia su color) para iluminar el terreno y todos los objetos de la escena, vehículos incluídos.

A continuación vamos a ver un ejemplo de código para un satellite que define un sol en la escena. Antes de definir los satellites propiamente dichos, hace falta el código que los define y su número:

world_sky_satellitesDefinición capas de satellites
(Paréntesis de inicio
     2Número de satellites

Tras definir el número de satellites en la escena, pasamos al código de un satellite propiamente dicho, en este caso el sol:

world_sky_satelliteDefinición del satellite
(Paréntesis de inicio
   world_sky_satellite_low_scale ( 200 )Tamaño del satellite en el horizonte
   world_sky_satellite_high_scale ( 150 )Tamaño del satellite en el cénit
   world_sky_satellite_rise_position ( 95 )Posición de salida (en grados)
   world_sky_satellite_rise_time ( 07:00:00 )Hora de salida
   world_sky_satellite_set_time ( 19:00:00 )Hora de puesta
   world_sky_satellite_dir_rise_colour ( ffffee8b )Color directo en la salida
   world_sky_satellite_dir_high_colour ( ffffffff )Color directo en el cénit
   world_sky_satellite_dir_set_colour ( ffffb573 )Color directo en la puesta
   world_sky_satellite_amb_rise_colour ( ff202020 )Color ambiental en la salida
   world_sky_satellite_amb_high_colour ( ff808080 )Color ambiental en el cénit
   world_sky_satellite_amb_set_colour ( ff202020 )Color ambiental en la puesta
   world_sky_satellite_light ( 1 )Luz del satellite
   world_sky_satellite_fog ( 0 )Transparencia del satellite
   world_anim_shaderDefinición animación del satellite
   (Paréntesis de inicio
      world_anim_shader_framesCuadros de la animación
      (Paréntesis de inicio
         1Número de cuadros
         world_anim_shader_frame ( )Definición cuadro animación
      )Paréntesis de cierre
      world_shader ( AddATexDiffTipo de Shader
         terrain_texslots ( 1?
             terrain_texslot ( sun.ace 1 0 )Textura y parámetros
         )Paréntesis de cierre
         terrain_uvcalcs ( 1?
             terrain_uvcalc ( 1 0 0 0 )?
         )Paréntesis de cierre
      )Paréntesis de cierre
   )Paréntesis de cierre
)Paréntesis de cierre

Veamos una explicación más detallada de los parámetros junto con algunos ejemplos gráficos de su utilización. Al igual que con las capas, están estrechamente relacionados entre sí y las variaciones pueden causar, en ciertos casos, efectos indeseados:

world_sky_satellite_low_scale ( 200 )
Define el tamaño del satellite en el horizonte (en la realidad, la atmósfera actúa como una lente que aumenta los objetos celestes en el horizonte). Hay que tener en cuenta que dependerá del tamaño que tenga el objeto en la textura. Para que tenga más resolución, conviene que sea grande, para luego reducirlo con éste parámetro.
world_sky_satellite_high_scale ( 150 )
Tamaño del satellite en el cénit (en la realidad, la atmósfera no aumenta los objetos celestes que están en su cénit). Combinando éste parámetro con el anterior se puede recrear el aspecto de un objeto astronómico con realismo.
world_sky_satellite_rise_position ( 95 )
Define el punto del horizonte por donde aparecerá el objeto celeste (y en consecuencia, por dónde se esconderá). 0 es Norte, 180 Sur, 90 Este y 270 Oeste.
world_sky_satellite_rise_time ( 07:00:00 )
Hora de aparición en el horizonte del objeto celeste. Funciona en colaboración con el parámetro siguiente.
world_sky_satellite_set_time ( 19:00:00 )
Hora de desaparición en el horizonte del objeto celeste. Funciona en colaboración con el parámetro anterior. Tanto la salida como la puesta de un satellite afectarán a la coloración de la escena.
world_sky_satellite_dir_rise_colour ( ffffee8b )
Color de la luz en el momento de la aparición del objeto celeste. Estos parámetros dir actúan tanto en el color del propio objeto como en el del cielo, no en el terreno ni sobre los objetos.
world_sky_satellite_dir_high_colour ( ffffffff )
Color de la luz en el cénit del objeto. Igual que el anterior, afecta tanto al propio objeto como al color del cielo, no al del terreno ni a los objetos.
world_sky_satellite_dir_set_colour ( ffffb573 )
Color de la luz en la ocultación tras el horizonte del objeto celeste. Igual que los anteriores, afecta al tinte del objeto y del cielo, pero no al del terreno ni los objetos.
world_sky_satellite_amb_rise_colour ( ff202020 )
Color del ambiente en el momento de la aparición del objeto. Estos parámetros amb afectan al color del terreno y los objetos (excepto a los que utilizan texturas nocturnas), no al del satellite ni al del cielo.
world_sky_satellite_amb_high_colour ( ff808080 )
Color del ambiente en el cénit del objeto celeste. Igual que el anterior, no afecta ni al propio objeto celeste ni al cielo y sí al terreno y los objetos que están en él (excepto a los que utilizan texturas nocturnas).
world_sky_satellite_amb_set_colour ( ff202020 )
Color del ambiente en la ocultación del objeto tras el horizonte. Igual que los anteriores, no afecta ni al propio objeto celeste ni al cielo y sí al terreno y a los objetos que están sobre él (excepto a los que utilizan texturas nocturnas).
world_sky_satellite_light ( 1 )
Activación ( 1 ) y desactivación ( ) de la luz que emite el satellite. Sirve para, activar y desactivar las sombras dinámicas producidas por el satélite. En el caso de tener una luna llena, es adecuado activarla para que produzcan sombras, tal como sucede en la realidad. Sin embargo, puede ser complicado controlar el color de las sombras.
world_sky_satellite_fog ( 0 )
Controla la transparencia del objeto celeste. Valores entre 0 (opaco) y 100 (totalmente transparente). Sirve para difuminar el objeto celeste en situaciones nubosas ó neblinosas. Por lo que parece, no le afecta al sol.
world_shader ( AddATexDiff
Hay tres parámetros posibles para el shader: AddATexDiff, BlendATex y BlendATexxDiff. Se dice que debería ser para hacer algo visible sólo durante el día, sólo durante la noche ó en ambos casos, pero en la práctica (al menos con el sol) parece provocar sólo ligeras diferencias en el canal alpha de la textura y en el color:

AddATexDiffBlendATexBlendATexDiff

La definición para la capa que contiene la luna es similar pero diferente que la del sol. Para esto definiremos un nuevo satellite que corresponde a la luna:

world_sky_satelliteDefinición del satellite
(Paréntesis de inicio
   world_sky_satellite_low_scale ( 50 )Tamaño del satellite en el horizonte
   world_sky_satellite_high_scale ( 40 )Tamaño del satellite en el cénit
   world_sky_satellite_rise_position ( 90 )Posición de salida
   world_sky_satellite_rise_time ( 19:00:00 )Hora de salida
   world_sky_satellite_set_time ( 7:00:00 )Hora de puesta
   world_sky_satellite_dir_rise_colour ( ff000000 )Color directo en la salida
   world_sky_satellite_dir_high_colour ( ff050510 )Color directo en el cénit
   world_sky_satellite_dir_set_colour ( ff101020 )Color directo en la puesta
   world_sky_satellite_amb_rise_colour ( ff101020 )Color ambiental en la salida
   world_sky_satellite_amb_high_colour ( ff101020 )Color ambiental en el cénit
   world_sky_satellite_amb_set_colour ( ff101020 )Color ambiental en la puesta
   world_sky_satellite_light ( 0 )Luz del satellite
   world_sky_satellite_fog ( 100 )Transparencia del satellite
   world_anim_shaderDefinición animación del satellite
   (Paréntesis de inicio
      world_anim_shader_framesCuadros de la animación
      (Paréntesis de inicio
         1Número de cuadros
         world_anim_shader_frame ( )Definición cuadro animación
      )Paréntesis de cierre
      world_shader ( BlendATexTipo de Shader
         terrain_texslots ( 1?
             terrain_texslot ( luna.ace 2 0 )Textura y parámetros
         )Paréntesis de cierre
         terrain_uvcalcs ( 1?
             terrain_uvcalc ( 1 0 0 0 )?
         )Paréntesis de cierre
      )Paréntesis de cierre
   )Paréntesis de cierre
)Paréntesis de cierre

Además de los diferentes parámetros respecto al sol, la mayor diferencia es el aspecto de la hoja de textura que utilizaremos. Además, en el caso de la luna, puede ser muy interesante utilizar diferentes texturas según la estación del año, lo que proporcionará más variedad a su aspecto. A continuación podemos ver un par de ejemplos:

Luna llena. Adecuada por ejemplo, para SummerClear
Luna creciente. Adecuada, por ejemplo, para AutumnClear

Una vez colocada contra el cielo estrellado, el aspecto en la simulación de la luna creciente es el siguiente:

Una fina línea brillante revela la posición de la luna

Capas de agua

El sistema que utiliza MSTS para representar el agua requiere primero definir, en el Editor de Rutas la baldosa ó baldosas que queremos inundar, y la altura que tendrá el agua en esas baldosas. Una vez hecho esto, la apariencia real del agua estará controlada por una serie de líneas de código en el apartado correspondiente dentro del archivo *.env.

world_waterDefinición de la capa de agua
(Paréntesis de inicio
   world_water_terrain_patch_map ( 256 Wsib-W.raw )Archivo .raw de los colores
   world_water_wave_height ( 0 )Altura de las ondas del agua
   world_water_wave_speed ( 0 )Velocidad del movimiento de las ondas
   world_water_layersCapas de agua
   (Paréntesis de inicio
    1Número de capas
    world_water_layerPrimera capa de agua
    (Paréntesis de inicio
    world_water_layer_height ( -1 )Altura de la primera capa
    world_anim_shaderDefinición animación de la capa
   (Paréntesis de inicio
    world_anim_shader_framesDefinición cuadros animación de la capa
    (Paréntesis de inicio
         1Número de cuadros
   world_anim_shader_frameDefinición cuadro animación capa
   (Paréntesis de inicio
    world_anim_shader_frame_uvscroll ( 0 0 )Velocidad moviviento capa
    world_anim_shader_frame_uvtiles ( 8 8 )Tiles de la capa
      )Paréntesis de cierre
    )Paréntesis de cierre
    world_shader ( TexDiffTipo textura de la capa
     terrain_texslots ( 1Número texturas en la capa
    terrain_texslot ( waterbot.ace 1 0 )Textura de la capa
      )Paréntesis de cierre
    terrain_uvcalcs ( 1Número uvcalcs de la capa
    terrain_uvcalc ( 1 0 0 0 )Movimiento uvcalc de la capa
      )Paréntesis de cierre
     )Paréntesis de cierre
    )Paréntesis de cierre
   )Paréntesis de cierre
  )Paréntesis de cierre
 )Paréntesis de cierre

Capas de viento

MSTS, como todo software, es un producto inacabado. Inicialmente los parámetros relativos al "viento" deberían haber servido para direccionar, entre otras cosas, el humo de las locomotoras, pero finamente no se implementó. Ponemos aquí una representación de la definición de las capas de viento con fines únicamente ilustrativos, ya que no produciá el más mínimo efecto la modificación de sus parámetros.

world_windDefinición de la capa de viento
(Paréntesis de inicio
   world_wind_layersCapas de viento
  1Número de capas
   world_wind_layerCapa de viento
   (Paréntesis de inicio
    world_wind_layer_maxheight ( 100000 )Altura máxima del viento
    world_wind_layer_direction ( 1 0 0 )Dirección del viento
    world_wind_layer_speed ( 3 )Velocidad del viento
    world_wind_layer_turbulencep ( 0.2 )Turbulencias del aire
    )Paréntesis de cierre
   )Paréntesis de cierre
  )Paréntesis de cierre
 )Paréntesis de cierre

Hasta aquí el Tutorial. Espero haber aportado algo y que lo expuesto aquí sea de alguna utilidad para alguien.

Indice
El archivo *.trk
Ubicación de los archivos env (y sus texturas)
Colores hexadecimales
Estructura de los archivos de ambiente
Niebla
Estructura del cielo
Una capa de cielo
Astronomía (objetos en el cielo)
Capas de agua
Capas de viento


Anterior <

Copyright © Antonio Asensio Yzquierdo 2005-2020. Derechos reservados.