trensim.comSimulación Ferroviaria
   

Conseguido: Movimiento de Cabina

Foro para la discusión de aspectos relacionados con la creación de material rodante para RailWorks.

Moderador: Moderadores

Conseguido: Movimiento de Cabina

Notapor Repo » Sab Abr 17, 2010 9:31 pm

Hola, hace un tiempo empecé a experimentar con el movimiento de los trenes para darle mayor realismo a la condución y a la estética en general.

Por estos días les puedo contar que he conseguido dicho movimiento o vaivén apreciable desde la vista cabina. Este era el gran desafío que tenía, por cuanto el movimiento o animación externa era algo que ya tenía más o menos claro.

El efecto se produce gracias a la animación plana de la cabina y mediante la creación dedicada de un control (en este caso llamado "Vaiven") mediante el cual se logra, dependiendo de la velocidad, el movimiento de un lado a otro gracias al código escrito en el fichero LUA de simulación que por medio de algunos cálculos y rutinas bastante simples da velocidad y dirección al vaiven de cabina. Un arreglo con la función random entrega también algo de azar al movimiento.

Este movimiento corresponde al uso de una sola animación, pero he descubierto que es posible usar varias animaciones para los distintos sentidos de movimiento y que pueden actuar simultáneamente creando un verdadero conjunto de movimiento combinado. Pronto agregaré a este efecto pequeños "saltitos" o movimientos verticales que aparecerán al azar variando en intensidad, duración y alcance. Un bonito efecto que también pudiera lograrse con código es la inclinacion hacia abajo de la cabina cuando el tren desacelera fuertemente. En fin, las posibilidades que da la programación de los scripst en lenguaje LUA permiten hacer lo que a uno se le ocurra, practicamente.

Por ahora, este sistema lo pienso aplicar en mi automotor AES y confío que aquello pueda darle un valor agregado al trabajo total. 8)


Acá les dejo un video para que puedan apreciar el efecto.



Y acá el código completo para que le echen un vistazo. Cada instrucción está con su respectivo comentario para que se logre entender mejor. En todo caso cualquier duda me dicen y yo les explico con más detalles.

Código: Seleccionar todo
------------------------------------------------------------
-- Setup
------------------------------------------------------------
-- Called when the engine script is initialised
------------------------------------------------------------

function Setup ()

-- Declara las variables.
gPos = 0
gCondi = true
gIncremento = 0
gSpeed = 0
gTopeIzq = 0
gTopeDer = 0

end

------------------------------------------------------------
-- Update
------------------------------------------------------------
-- Called every frame to update the simulation
------------------------------------------------------------
-- Parameters:
--   inteval = time since last update
------------------------------------------------------------

function Update (inteval)

-- Para fines de DEBUG: Entrega los datos de las variables en el archivo salida.txt
--io.output("salida.txt")
--io.write ( "velocidad = ", gSpeed )
--io.write ( "Incremento = ", gIncremento)
--io.write ( "Posicion = ", gPos)
--io.write ( "Condicion = ", gCondi)

-- Pone la velocidad actual en la variable "gSped"
gSpeed = Call( "*:GetControlValue", "SpeedometerKPH", 0)
--------------------------------------------------------

-- Trasforma el dato a enteros
gSpeed = math.floor(gSpeed)
---------------------------

-- Dividimos por 120 para adaptar al tamaño de datos necesarios
gIncremento = gSpeed / 120
--------------------------

-- Establece al azar los límites derecho e izquierdo del movimiento
gTopeIzq = math.random(10, 70)
gTopeDer = math.random(10, 70)

-- Establece la dirección del movimiento
if gPos < (gTopeIzq * (-1)) then
gCondi = false
end

if gPos > gTopeDer then
gCondi = true
end

-- Crea el incremento en la velocidad del movimiento, da valor a la variable "gPos"
---------------------------------
if gCondi == true then
gPos = gPos - gIncremento
end

if gCondi == false then
gPos = gPos + gIncremento
end

-- Establece el frame actual del movimiento dando el dato "gPos" al control "Vaiven"
Call( "*:SetControlValue", "Vaiven", 0, gPos )

end




Saludos.
Última edición por Repo el Sab Abr 17, 2010 10:14 pm, editado 1 vez en total
Imagen
Avatar de Usuario
Repo
 
Mensajes: 1198
Registrado: Mar Oct 11, 2005 4:27 pm
Ubicación: Santiago de Chile

Re: Conseguido: Movimiento de Cabina

Notapor Bermúdez » Sab Abr 17, 2010 9:56 pm

:shock: :shock:
Increíble!!
El efecto está muy conseguido.

Eres un fenómeno, Repo.
Enhorabuena. :app: :app:
Un saludo. :wink:

https://ferrosim.es - Foro y descargas para TS2020
Avatar de Usuario
Bermúdez
 
Mensajes: 4064
Registrado: Sab Nov 03, 2007 1:22 pm
Ubicación: Teruel, Aragón, España

Re: Conseguido: Movimiento de Cabina

Notapor javierfl » Dom Abr 18, 2010 12:06 am

¡Enhorabuena por el avance! Realmente estás consiguiendo cosas interesantísimas. :app: :app: :app: :app:

También ratificas con esos hallazgos y con las mejoras que se han hecho en humos y otras cosas con Lua, que para sacar partido de verdad al RW hay que dominar los scripst en ese lenguaje. Otra cosa más a aprender... 8)

Saludos:

Javier.-
Avatar de Usuario
javierfl
grupo TrenSim
 
Mensajes: 9620
Registrado: Sab Ago 30, 2003 11:23 pm
Ubicación: Ciudad Astur

Re: Conseguido: Movimiento de Cabina

Notapor LordMannu » Dom Abr 18, 2010 12:49 am

Increible Repo! Lo hiciste de nuevo! :mrgreen:
:app: :app: :app: :app: :app: :app: :app:
Avatar de Usuario
LordMannu
 
Mensajes: 485
Registrado: Mar May 09, 2006 8:53 pm
Ubicación: Capital Federal, Buenos Aires, Argentinisima

Re: Conseguido: Movimiento de Cabina

Notapor LBA » Dom Abr 18, 2010 6:41 pm

Realmente sorprendente!! :app:
Saludos,LBA
Avatar de Usuario
LBA
 
Mensajes: 1414
Registrado: Mar Sep 09, 2003 10:20 am
Ubicación: Almería

Re: Conseguido: Movimiento de Cabina

Notapor enanin » Lun Abr 19, 2010 12:07 am

Excelente Repo! Por fin algo más de realismo.

Ahora, me asalta una pequeña duda: el movimiento es aleatorio o es repetitivo como se ve en el video? Sin duda es un gran paso para darle más realismo al simulador!
Avatar de Usuario
enanin
 
Mensajes: 85
Registrado: Mar Sep 08, 2009 9:18 pm
Ubicación: Santiago, Chile

Re: Conseguido: Movimiento de Cabina

Notapor locomoto » Lun Abr 19, 2010 7:44 am

Bravo, Repo!!! :app:
locomoto
 
Mensajes: 527
Registrado: Mié Ene 28, 2009 8:50 pm

Re: Conseguido: Movimiento de Cabina

Notapor Bermúdez » Lun Abr 19, 2010 10:06 am

enanin escribió:Ahora, me asalta una pequeña duda: el movimiento es aleatorio o es repetitivo como se ve en el video?

Creo que lo que resalto en la siguiente cita responde a tu pregunta:
Repo escribió:El efecto se produce gracias a la animación plana de la cabina y mediante la creación dedicada de un control (en este caso llamado "Vaiven") mediante el cual se logra, dependiendo de la velocidad, el movimiento de un lado a otro gracias al código escrito en el fichero LUA de simulación que por medio de algunos cálculos y rutinas bastante simples da velocidad y dirección al vaiven de cabina. Un arreglo con la función random entrega también algo de azar al movimiento.
Un saludo. :wink:

https://ferrosim.es - Foro y descargas para TS2020
Avatar de Usuario
Bermúdez
 
Mensajes: 4064
Registrado: Sab Nov 03, 2007 1:22 pm
Ubicación: Teruel, Aragón, España

Re: Conseguido: Movimiento de Cabina

Notapor HANNIBAL SMITH » Lun Abr 19, 2010 5:35 pm

Perfecto y sorprendente :D :D :app:
43 6F 6D 69 64 61 20 70 61 72 61 20 67 61 74 6F 73 20 57 69 73 2E 20 6B 61 73

ME ENCANTA QUE LOS PLANES SALGAN BIEN
Avatar de Usuario
HANNIBAL SMITH
 
Mensajes: 571
Registrado: Vie Feb 13, 2009 8:45 pm
Ubicación: LOS ANGELES (CALIFORNIA)

Re: Conseguido: Movimiento de Cabina

Notapor enanin » Lun Abr 19, 2010 7:41 pm

Bermúdez escribió:
enanin escribió:Ahora, me asalta una pequeña duda: el movimiento es aleatorio o es repetitivo como se ve en el video?

Creo que lo que resalto en la siguiente cita responde a tu pregunta:
Repo escribió:El efecto se produce gracias a la animación plana de la cabina y mediante la creación dedicada de un control (en este caso llamado "Vaiven") mediante el cual se logra, dependiendo de la velocidad, el movimiento de un lado a otro gracias al código escrito en el fichero LUA de simulación que por medio de algunos cálculos y rutinas bastante simples da velocidad y dirección al vaiven de cabina. Un arreglo con la función random entrega también algo de azar al movimiento.



Si, mi error al leer tan rápido. Ahora si creo que mi duda corresponde: Será posible, de igual forma que el sonido del tracketeo de alguna forma se "sincroniza" cuando el tren pasa sobre un cambio de vía o bien cuando se va en alguna curva a mucha velocidad, será posible que el movimiento pueda también seguir esos mismos patrones? Digo, con lo que nos ha mostrado Repo ya es increíble, pero como bien dice, hay maravillas que se pueden hacer con el famoso LUA.

Saludos!
Avatar de Usuario
enanin
 
Mensajes: 85
Registrado: Mar Sep 08, 2009 9:18 pm
Ubicación: Santiago, Chile

Re: Conseguido: Movimiento de Cabina

Notapor Repo » Lun Abr 19, 2010 9:50 pm

enanin escribió:....Será posible, de igual forma que el sonido del tracketeo de alguna forma se "sincroniza" cuando el tren pasa sobre un cambio de vía...


qué comes que adivinas.... :D

Precisamente estoy trabajando para ver la posibilidad de implementar una reacción en el movimiento de la cabina al pasar sobre los desvíos.
Existe un control llamado "JointCount" que creo podría ser útil. 8)

Por otro lado les contaré que anoche estuve experimentando con el control "Curvature" y según veo solo es cosa de tiempo (un par de semanas) para que pueda darle inclinación al tren durante su paso por las curvas, algo así como un movimiento pendular o quizá para "simular" la presencia de peraltes. La diferencia entre ambas cosas está en si la velocidad influye o no en el efecto de inclinación. Mientras en los peraltes la inclinación debiera darse de modo permanente (aun en el tren detenido en una curva) en la pendulación el efecto solo debiera aparecer al tomar curvas por sobre una cierta velocidad.

Seguiremos con esto.

Saludos.
Imagen
Avatar de Usuario
Repo
 
Mensajes: 1198
Registrado: Mar Oct 11, 2005 4:27 pm
Ubicación: Santiago de Chile

Re: Conseguido: Movimiento de Cabina

Notapor ^XaRTiX^ » Mar Abr 20, 2010 12:07 am

Un par de preguntas:

¿ El código que has publicado va metido en un fichero "EngineScript" ?
¿Este código es aplicable a todas las cabinas ya publicadas o hay que crear una animación en 3d para dicho movimiento?

Lo mismo lo que estoy preguntando es una tonteria.. pero lo pregunto desde la más infinita ignorancia en el 3D.

Aún así que pedazo de trabajo estas realizando repro, además veo que hay bastantes cosas implementadas gracias a LUA.

Como dice Javier, toca aprender otra cosa nueva :D .

Enhorabuena.

Un saludo.
Comunidad Railworks en Español en Steam
Http://steamcommunity.com/groups/RW-ES
Avatar de Usuario
^XaRTiX^
 
Mensajes: 369
Registrado: Sab Mar 06, 2004 5:30 pm

Re: Conseguido: Movimiento de Cabina

Notapor Repo » Mar Abr 20, 2010 12:37 am

^XaRTiX^ escribió:¿ El código que has publicado va metido en un fichero "EngineScript" ?


Hola, no, este código así como la mayoría del código destinado a la conducción y a las físicas va en el fichero LUA que encuentras dentro del directorio "Simulation"

^XaRTiX^ escribió:¿Este código es aplicable a todas las cabinas ya publicadas o hay que crear una animación en 3d para dicho movimiento?


Se debe crear una animación especial para cada sentido de movimiento o eje, una animación para el movimiento horizontal, otra para el vertical y una tercera para las inclinaciones. Para cada animación se debe crer un Control que va puesto y configurado en el Engine Blueprint. Como verás este sistema se ha de pensar e implementar en los estadios más tempranos de la creación de un vehículo. De cualquier modo siempre será posible agregarlo a máquinas ya terminadas, siempre y cuando se cuente con las mallas 3D, por supuesto.

Saludos.
Imagen
Avatar de Usuario
Repo
 
Mensajes: 1198
Registrado: Mar Oct 11, 2005 4:27 pm
Ubicación: Santiago de Chile

Re: Conseguido: Movimiento de Cabina

Notapor enanin » Mar Abr 20, 2010 4:53 am

No había podido contestar antes, pero Repo, deberías estar en el RS Team, innovando y no reciclando addons para contentar a los usuarios como lo están haciendo por ahora :D, lo que estás haciendo es fantástico. Imagínense todas estas mejoras que muchos usuarios están haciendo por su cuenta y que quizás el RS Team nunca pensó considerar; tendríamos un simulador con todas sus letras (de a poco claro se avanza).

Saludos impresionados XD
Avatar de Usuario
enanin
 
Mensajes: 85
Registrado: Mar Sep 08, 2009 9:18 pm
Ubicación: Santiago, Chile

Re: Conseguido: Movimiento de Cabina

Notapor javierfl » Mar Abr 20, 2010 3:08 pm

Repo escribió:Precisamente estoy trabajando para ver la posibilidad de implementar una reacción en el movimiento de la cabina al pasar sobre los desvíos.
Existe un control llamado "JointCount" que creo podría ser útil. 8)

Por otro lado les contaré que anoche estuve experimentando con el control "Curvature" y según veo solo es cosa de tiempo (un par de semanas) para que pueda darle inclinación al tren durante su paso por las curvas, algo así como un movimiento pendular o quizá para "simular" la presencia de peraltes. La diferencia entre ambas cosas está en si la velocidad influye o no en el efecto de inclinación. Mientras en los peraltes la inclinación debiera darse de modo permanente (aun en el tren detenido en una curva) en la pendulación el efecto solo debiera aparecer al tomar curvas por sobre una cierta velocidad.


Trabajando sobre sonidos de bogies editando blueprints y no scripts, pero creo que los control son los mismos, usé tres variables:

Joincount: cuenta las juntas que se hayan marcado en la vía o desvíos que sean a la hora de crearlos. La reacción del vehículo depende de la vía.
Curvature: tiene en cuenta el radio de curva. Es interesante recalcar que RW usa un valor que es el del 1 dividido por el radio. Por ejemplo, un radio de 300 metros es 1/300= 0.0033, uno de 250 metros 0.004 y así.
AbsoluteSpeed: La velocidad del vehículo en millas por hora.

Sobre los nombres reservados para control, aunque posiblemente ya la conozcas, viene muy bien esta página: http://www.gtraxsims.com/tut/reservedwords.htm Creo que no están todos los que son (por ejemplo no se cita Curvature), pero si que son todos los que están...

Saludos:

Javier.-
Avatar de Usuario
javierfl
grupo TrenSim
 
Mensajes: 9620
Registrado: Sab Ago 30, 2003 11:23 pm
Ubicación: Ciudad Astur

Siguiente

Volver a Material rodante RW

¿Quién está conectado?

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