INICIO Train Simulator Lua Script Cambio de textura mediante script

Se ha llevado a cabo la migración total de los datos al nuevo sistema del foro, durante los próximos días se realizarán diversos trabajos internos, por ello los nuevos registros están desactivados y algunas funciones pueden presentar problemas. Rogamos disculpéis las molestias. (October 04, 2024) x

Cambio de textura mediante script

Cambio de textura mediante script

 
  • 0 voto(s) - 0 Media
 
Páginas (2): 1 2 Siguiente
AEC
Posting Freak
1,008
06-14-2014, 04:53 PM
#1
Hola a todos.
Me interesaria saber si es posible mediante script configurar si un objeto lee una textura u otra, es decir, por ejemplo, tenemos dos texturas a mostrar y apretando un boton en cabina, cambie la textura de un objeto por medio de renombrar las texturas con LUA y que el simulador lo lea en el acto sin necesidad de reiniciar.
Si existe algun metodo efectivo, seria de gran utilidad, ya que no puedo hacer el clonar el objeto y con animacion lo oculto y muestro otro identico con la otra textura.

Gracias de antemano.
Un saludo,
Alberto

¡Un saludo! [Smile
AEC
06-14-2014, 04:53 PM #1

Hola a todos.
Me interesaria saber si es posible mediante script configurar si un objeto lee una textura u otra, es decir, por ejemplo, tenemos dos texturas a mostrar y apretando un boton en cabina, cambie la textura de un objeto por medio de renombrar las texturas con LUA y que el simulador lo lea en el acto sin necesidad de reiniciar.
Si existe algun metodo efectivo, seria de gran utilidad, ya que no puedo hacer el clonar el objeto y con animacion lo oculto y muestro otro identico con la otra textura.

Gracias de antemano.
Un saludo,
Alberto


¡Un saludo! [Smile

el_pinchos
Posting Freak
792
06-14-2014, 06:22 PM
#2
Por supuesto que se puede, aunque es necesario que en archivo de forma IGS (GeoPcDx una vez exportado), se hayan declarado todas las texturas del vehículo con las diferentes libreas. Después habría que hacer un control en la locomotora que apuntara a la librea que quisiéramos cambiar. Con ese control ya sólo deberíamos activar las libreas como nodos del modelo.

Una teórica función de script LUA para cambiar las libreas podría ser:

Código:

function ControlLibrea( Librea )

  engine_1 = 0
  engine_2 = 0
  engine_3 = 0

  if (Librea == 1) then
  engine_1 = 1
  end
  
  if (Librea == 2) then
  engine_2 = 1
  end

  if (Librea == 3) then
  engine_3 = 1
  end

  Call("*:ActivateNode", "engine_1", engine_1 )
  Call("*:ActivateNode", "engine_2", engine_2 )
  Call("*:ActivateNode", "engine_3", engine_3 )

  end

Cada librea debería ser un nodo del archivo de forma nombrado como "engine_x', que se activaría con la librea que hubiéramos seleccionado con el control 'Librea'.

Un saludo, J.

[img]http://steamsignature.com/status/spanish...635776.png[/img]

Pulsa 'F5' para actualizar. Mi perfil completo en STEAM
el_pinchos
06-14-2014, 06:22 PM #2

Por supuesto que se puede, aunque es necesario que en archivo de forma IGS (GeoPcDx una vez exportado), se hayan declarado todas las texturas del vehículo con las diferentes libreas. Después habría que hacer un control en la locomotora que apuntara a la librea que quisiéramos cambiar. Con ese control ya sólo deberíamos activar las libreas como nodos del modelo.

Una teórica función de script LUA para cambiar las libreas podría ser:

Código:

function ControlLibrea( Librea )

  engine_1 = 0
  engine_2 = 0
  engine_3 = 0

  if (Librea == 1) then
  engine_1 = 1
  end
  
  if (Librea == 2) then
  engine_2 = 1
  end

  if (Librea == 3) then
  engine_3 = 1
  end

  Call("*:ActivateNode", "engine_1", engine_1 )
  Call("*:ActivateNode", "engine_2", engine_2 )
  Call("*:ActivateNode", "engine_3", engine_3 )

  end

Cada librea debería ser un nodo del archivo de forma nombrado como "engine_x', que se activaría con la librea que hubiéramos seleccionado con el control 'Librea'.


Un saludo, J.

[img]http://steamsignature.com/status/spanish...635776.png[/img]

Pulsa 'F5' para actualizar. Mi perfil completo en STEAM

AEC
Posting Freak
1,008
06-14-2014, 09:42 PM
#3
el_pinchos Por supuesto que se puede, aunque es necesario que en archivo de forma IGS (GeoPcDx una vez exportado), se hayan declarado todas las texturas del vehículo con las diferentes libreas. Después habría que hacer un control en la locomotora que apuntara a la librea que quisiéramos cambiar. Con ese control ya sólo deberíamos activar las libreas como nodos del modelo.

Una teórica función de script LUA para cambiar las libreas podría ser:

Código:

function ControlLibrea( Librea )

  engine_1 = 0
  engine_2 = 0
  engine_3 = 0

  if (Librea == 1) then
  engine_1 = 1
  end
  
  if (Librea == 2) then
  engine_2 = 1
  end

  if (Librea == 3) then
  engine_3 = 1
  end

  Call("*:ActivateNode", "engine_1", engine_1 )
  Call("*:ActivateNode", "engine_2", engine_2 )
  Call("*:ActivateNode", "engine_3", engine_3 )

  end

Cada librea debería ser un nodo del archivo de forma nombrado como "engine_x', que se activaría con la librea que hubiéramos seleccionado con el control 'Librea'.
Muchiiisimas gracias el_pinchos :maestro: :maestro: En este caso, ¿el nodo sería el nombre del material o del map? por ejemplo engine_1 seria "Material #25" (de los nombres de materiales por defecto) :?:

Gracias de nuevo.
Un saludo,
Alberto

¡Un saludo! [Smile
AEC
06-14-2014, 09:42 PM #3

el_pinchos Por supuesto que se puede, aunque es necesario que en archivo de forma IGS (GeoPcDx una vez exportado), se hayan declarado todas las texturas del vehículo con las diferentes libreas. Después habría que hacer un control en la locomotora que apuntara a la librea que quisiéramos cambiar. Con ese control ya sólo deberíamos activar las libreas como nodos del modelo.

Una teórica función de script LUA para cambiar las libreas podría ser:

Código:

function ControlLibrea( Librea )

  engine_1 = 0
  engine_2 = 0
  engine_3 = 0

  if (Librea == 1) then
  engine_1 = 1
  end
  
  if (Librea == 2) then
  engine_2 = 1
  end

  if (Librea == 3) then
  engine_3 = 1
  end

  Call("*:ActivateNode", "engine_1", engine_1 )
  Call("*:ActivateNode", "engine_2", engine_2 )
  Call("*:ActivateNode", "engine_3", engine_3 )

  end

Cada librea debería ser un nodo del archivo de forma nombrado como "engine_x', que se activaría con la librea que hubiéramos seleccionado con el control 'Librea'.
Muchiiisimas gracias el_pinchos :maestro: :maestro: En este caso, ¿el nodo sería el nombre del material o del map? por ejemplo engine_1 seria "Material #25" (de los nombres de materiales por defecto) :?:

Gracias de nuevo.
Un saludo,
Alberto


¡Un saludo! [Smile

madroño
Member
239
06-14-2014, 10:06 PM
#4
Sería la malla con esa textura. El nombre que hayas dado a esa pieza. El sistema que te ha propuesto se basa en hacer varias piezas con distintas texturas, y mostrar/ocultarlas mediante script.

"La inteligencia es un proceso cíclico: cuando te pasas de listo vuelves a ser tonto"
madroño
06-14-2014, 10:06 PM #4

Sería la malla con esa textura. El nombre que hayas dado a esa pieza. El sistema que te ha propuesto se basa en hacer varias piezas con distintas texturas, y mostrar/ocultarlas mediante script.


"La inteligencia es un proceso cíclico: cuando te pasas de listo vuelves a ser tonto"

AEC
Posting Freak
1,008
06-15-2014, 07:21 PM
#5
madroño Sería la malla con esa textura. El nombre que hayas dado a esa pieza. El sistema que te ha propuesto se basa en hacer varias piezas con distintas texturas, y mostrar/ocultarlas mediante script.
Pues entonces no me sirve, porque es un velocimetro digital al que le tienen que cambiar de color los numeros (o sea cambiar la textura) y no vale el clonar porque entonces deja de funcionar el script. :oops:

¡Un saludo! [Smile
AEC
06-15-2014, 07:21 PM #5

madroño Sería la malla con esa textura. El nombre que hayas dado a esa pieza. El sistema que te ha propuesto se basa en hacer varias piezas con distintas texturas, y mostrar/ocultarlas mediante script.
Pues entonces no me sirve, porque es un velocimetro digital al que le tienen que cambiar de color los numeros (o sea cambiar la textura) y no vale el clonar porque entonces deja de funcionar el script. :oops:


¡Un saludo! [Smile

AEC
Posting Freak
1,008
06-17-2014, 09:57 PM
#6
Hola de nuevo.
Aprovecho el hilo para preguntaros sobre el "*:ActivateNode".
A mi esta funcion no me funciona asi que no se si lo hago bien. Agradeceria un explicacion.

Yo pensaba que simplemente dentro de tu archivo de Max tenias un objeto llamado por ejemplo "1_0500_nombre" (en el ejemplo que pongo es para hacer aparecer en la pantalla de ordenador de abordo de una cabina un icono) y al usar:
Call("*:ActivateNode", "nombre", 0) el objeto no desaparece y se sigue viendo en el simulador tal y como se ve en Max, asi que no puedo controlar la visualizacion de 1_0500_nombre mediante el script.

Gracias de antemano.

¡Un saludo! [Smile
AEC
06-17-2014, 09:57 PM #6

Hola de nuevo.
Aprovecho el hilo para preguntaros sobre el "*:ActivateNode".
A mi esta funcion no me funciona asi que no se si lo hago bien. Agradeceria un explicacion.

Yo pensaba que simplemente dentro de tu archivo de Max tenias un objeto llamado por ejemplo "1_0500_nombre" (en el ejemplo que pongo es para hacer aparecer en la pantalla de ordenador de abordo de una cabina un icono) y al usar:
Call("*:ActivateNode", "nombre", 0) el objeto no desaparece y se sigue viendo en el simulador tal y como se ve en Max, asi que no puedo controlar la visualizacion de 1_0500_nombre mediante el script.

Gracias de antemano.


¡Un saludo! [Smile

HANNIBAL SMITH
Posting Freak
2,155
06-18-2014, 12:06 AM
#7
ActivateNode lo que hace es mostra u ocultar el objeto en cuestión, habría que ver si ocultando el objeto los fotogramas aumentan, no sea que lo oculte pero siga estando ahí y se renderice.

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



NO PUEDO CONTIGO



ME ENCANTA QUE LOS PLANES SALGAN BIEN

BUENO, REALMENTE ME CONFORMO CON QUE SALGAN... -resent
HANNIBAL SMITH
06-18-2014, 12:06 AM #7

ActivateNode lo que hace es mostra u ocultar el objeto en cuestión, habría que ver si ocultando el objeto los fotogramas aumentan, no sea que lo oculte pero siga estando ahí y se renderice.


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



NO PUEDO CONTIGO



ME ENCANTA QUE LOS PLANES SALGAN BIEN

BUENO, REALMENTE ME CONFORMO CON QUE SALGAN... -resent

madroño
Member
239
06-18-2014, 12:13 AM
#8
El código está bien puesto

Call( "*:ActivateNode","nombre", 0) -- desactiva

Call( "*:ActivateNode","nombre", 1) -- activa

No se si tendrá algo que ver, pero si es para una cabina, las piezas se suelen llamar 1_0000_nombre. Ah y supongo que lo estás haciendo dentro de la función Update, ¿no?

¿Has probado a hacerlo de esta manera?

http://forums.uktrainsim.com/viewtopic.p...8&t=132520

"La inteligencia es un proceso cíclico: cuando te pasas de listo vuelves a ser tonto"
madroño
06-18-2014, 12:13 AM #8

El código está bien puesto

Call( "*:ActivateNode","nombre", 0) -- desactiva

Call( "*:ActivateNode","nombre", 1) -- activa

No se si tendrá algo que ver, pero si es para una cabina, las piezas se suelen llamar 1_0000_nombre. Ah y supongo que lo estás haciendo dentro de la función Update, ¿no?

¿Has probado a hacerlo de esta manera?

http://forums.uktrainsim.com/viewtopic.p...8&t=132520


"La inteligencia es un proceso cíclico: cuando te pasas de listo vuelves a ser tonto"

AEC
Posting Freak
1,008
06-18-2014, 12:22 AM
#9
madroño El código está bien puesto

Call( "*:ActivateNode","nombre", 0) -- desactiva

Call( "*:ActivateNode","nombre", 1) -- activa

No se si tendrá algo que ver, pero si es para una cabina, las piezas se suelen llamar 1_0000_nombre. Ah y supongo que lo estás haciendo dentro de la función Update, ¿no?

¿Has probado a hacerlo de esta manera?

http://forums.uktrainsim.com/viewtopic.p...8&t=132520
El velocimetro funciona genial, ya que va con el SetControlValue, y los otros objetos que deseo mostrar, me gustaria ahorarme lo de escribirlos en el .xml, ya que con el SetControlValue funciona genial, aparecen y desaparecen, pero con el ActiveNode no lo consigo. Probare con lo de 1_0000_nombre, pero no se si eso hara algo.

¿Es posible que en vez de el asterisco tenga q referenciar la cabina? Es decir, Call("Cabina:ActivateNode", "nombre", 0) :?:

Muchas gracias

¡Un saludo! [Smile
AEC
06-18-2014, 12:22 AM #9

madroño El código está bien puesto

Call( "*:ActivateNode","nombre", 0) -- desactiva

Call( "*:ActivateNode","nombre", 1) -- activa

No se si tendrá algo que ver, pero si es para una cabina, las piezas se suelen llamar 1_0000_nombre. Ah y supongo que lo estás haciendo dentro de la función Update, ¿no?

¿Has probado a hacerlo de esta manera?

http://forums.uktrainsim.com/viewtopic.p...8&t=132520
El velocimetro funciona genial, ya que va con el SetControlValue, y los otros objetos que deseo mostrar, me gustaria ahorarme lo de escribirlos en el .xml, ya que con el SetControlValue funciona genial, aparecen y desaparecen, pero con el ActiveNode no lo consigo. Probare con lo de 1_0000_nombre, pero no se si eso hara algo.

¿Es posible que en vez de el asterisco tenga q referenciar la cabina? Es decir, Call("Cabina:ActivateNode", "nombre", 0) :?:

Muchas gracias


¡Un saludo! [Smile

madroño
Member
239
06-18-2014, 12:59 AM
#10
No creo. A mi siempre me funciona como he puesto. ¿Has revisado el código anterior? A veces cuando hay fallos de sintaxis en líneas anteriores directamente se salta ese código, pese a no dar error.

No se si has visto la otra solución que plantean, que es crear un cilindro de 11 caras y controlar su rotación, aunque personalmente me gusta más la forma de hacerlo de Reppo, pese a ser más pesada. Creo que se basa en el principio de las texturas animadas si no recuerdo mal.


Que fácil sería con un blueprint tipo digital speedometer Sad

"La inteligencia es un proceso cíclico: cuando te pasas de listo vuelves a ser tonto"
madroño
06-18-2014, 12:59 AM #10

No creo. A mi siempre me funciona como he puesto. ¿Has revisado el código anterior? A veces cuando hay fallos de sintaxis en líneas anteriores directamente se salta ese código, pese a no dar error.

No se si has visto la otra solución que plantean, que es crear un cilindro de 11 caras y controlar su rotación, aunque personalmente me gusta más la forma de hacerlo de Reppo, pese a ser más pesada. Creo que se basa en el principio de las texturas animadas si no recuerdo mal.


Que fácil sería con un blueprint tipo digital speedometer Sad


"La inteligencia es un proceso cíclico: cuando te pasas de listo vuelves a ser tonto"

Páginas (2): 1 2 Siguiente
 
  • 0 voto(s) - 0 Media
Usuarios navegando en este tema:
 1 invitado(s)
Usuarios navegando en este tema:
 1 invitado(s)