XSIforum.com

JavaScript ejercicio #2 (never die)

0 Usuarios y 1 Visitante están viendo este tema.

martindisenio

  • **
  • 672
  • Fabricante de lo Desconocido
JavaScript ejercicio #2 (never die)
« en: 05 Agosto 2004, 07:01:22 »
Finalmente lo logré!!!!

Este script sirve para copiar la animacion de un modelo al otro, sin hacer clips, ni exportar, ni templates.
Puede servir en el caso que esten trabajando en un modelo, y de pronto les piden muuuuchos cambios de animacion y de modelo,
entonces, traen el nuevo modelo (con los mismos nombres de huesos) a la misma escena, corren el script, y ya tá.

Código: [Seleccionar]
/* ---------------------------------------------------------
--- Script para copiar animacion de un modelo al otro --
--- JavaScript - DIS Martin E Iglesias - 2004 --
--- verson 1 --
------------------------------------------------------------
--- Modo de uso:
--- Poner un modelo al lado del otro
--- ambos modelos deben tener la misma estructura de nombres
--- correr el script
--- va a pedir que señales el modelo de origen y el de destino de la animacion.
--- listo.
------------------------------------------------------------ */

logmessage("--------- Pasando animación entre Modelos ---------");

//------- Definimos las variables ---------
var oRoot = Application.ActiveProject.ActiveScene.Root;
var lista, origen, destino, conclusion;
var actual;

//^^^^^^^^^^^^ FUNCIONES ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


function Finalizar(estado) //------ mensaje que saldra si algo sale mal o si termina.
{
logmessage("\n"+"======= Finalización del script: "+estado+" =======", siInfo);
}

//-------- Funcion de seleccion ---------------------------------------

function elejido(picado, modelo, boton)
{

picado=PickElement("MODEL", "Eleji un modelo", "Selecciona solo uno por favor", modelo, boton);

modelo=picado.value( "PickedElement" ); // ---- saca el nombre del objeto seleccionado.
boton=picado.value( "ButtonPressed" ); // ---- saco el boton que fue apretado.
if (boton==0) // ----- comprueva si seleccionamos algo o no.
{
logmessage("xxxxxxxxxx No elegiste un modelo xxxxxxxxxxxx", siWarning);
return( null );
}
else
return modelo;
}

//^^^^^^^^^^^^^^^^^FIN DE LA SECCION DE FUNCIONES ^^^^^^^^^^^^^^^^^


//------- Identificar el modelo de origen  ------------------------

logmessage("Seleccione un modelo de origen del cual COPIAR la animación");

origen=elejido(); //----- me da el objeto elejido en la variable origen

if (origen==null)
{
Finalizar("Abortada");
}
else
logmessage("Modelo para COPIAR animacion: "+origen);



//------- Identificar el modelo de destino ------------------------

logmessage("Seleccione un modelo de destino al cual PEGAR la animación");


destino=elejido(); //----- me da el objeto elejido en la variable destino.

if (destino==null)
{
Finalizar("Abortada");
}
else
logmessage("Modelo al cual PEGAR la animacion: "+destino);


// ------------- Copiar animacion de los elementos. -------------------

if ((origen==null) && (destino==null))
{
Finalizar("Abortada");
}
else

// Creamos una coleccion vacia para almacenar los objetos.
var oColl = new ActiveXObject( "XSI.Collection" );

// tomamos el seleccionado
var oSel = origen;

// ver los hijos del seleccionado
var oChildren = oSel.findchildren( "", "", null, true );

// Agregar los hijos a la coleccion.
// oColl.add( oSel );
oColl.additems( oChildren );

// Enumerar a lo largo de la coleccion.
for( var oCollEnum = new Enumerator( oColl ); !oCollEnum.atEnd(); oCollEnum.moveNext() )
{
logmessage( oCollEnum.item().IsNodeAnimated(siFCurveSource));

if (oCollEnum.item().IsNodeAnimated(siFCurveSource)==true)
{
logmessage( origen+"\t"+oCollEnum.item().name +"\t"+"<---------- nombre de origen" );

CopyAllAnimation2((origen+"."+oCollEnum.item().name), siAnySource, siAllParam, false);

logmessage( destino+"\t"+oCollEnum.item().name +"\t"+"<---------- nombre de destino" );
PasteAllAnimation((destino+"."+oCollEnum.item().name), null);
}
}







//------------ Mensaje final,
//------------ si se llevo a cavo todas las operaciones, la variable "estado" de la funcion Finalizar debe llevar correcta

if ((origen!=null) && (destino!=null))
{
conclusion="correcta";
}
else
conclusion="No se realizo el transpaso";

Finalizar(conclusion);



 :o

Rashek

  • ***
  • 3056
  • www.goldpiece.net
Re: JavaScript ejercicio #2 (never die)
« Respuesta #1 en: 05 Agosto 2004, 13:07:52 »
wow, aver si entiendo, con eso, yo creo un modelo con el mismo setup k el k esta animado, y con los nombres iguales, aplico el script, y la animacion va perfecta
no?

lozo

  • **
  • 114
  • erase una vez TDI Explore!!!
Re: JavaScript ejercicio #2 (never die)
« Respuesta #2 en: 05 Agosto 2004, 18:13:13 »
MAESTROOOOOO......

No sabes como lo necesité cuando estuve animando los osos de coca!!!!.... es que habiamos hecho la animacion sobre osos sin pelo y depues hubo que copiar las animaciones a los osos con pelo!!!!.... A MANO!!!!

Yo me había hecho un scriptsitito que simplemente copia las animacione de lo que está selecionado.... (para luego asignarlo a un shotcut de teclado y poder hacer un copy-paste de las animaciones de objeto a objeto!).... pero sigue siendo uno po uno!!!!!

Acá está....


if selection.count = 1 then
   logmessage "seleccion-> " & selection.getastext
   CopyAllAnimation2 selection, siAnySource, siAllParam, False
else
   logmessage "O no hay nada selecionado"
   logmessage "O hay mas de un objeto selecionado!"
end if



eso es todo.... ya lo voy a probar y te diré si todo anda bien!
Saludos!


Mu_Malo

  • **
  • 959
  • Firma: La grulla parda de pecho aleonado
Re: JavaScript ejercicio #2 (never die)
« Respuesta #3 en: 06 Agosto 2004, 00:20:01 »
Me gustan los logmessage xDD

Recordar que nunca se sabe quien puede ver tu trabajo no pongais cosas como  " eres tonto del culo, has seleccionado varios objetos" en los logmessages. AH y tb cuidado con los nombres de las escenas. Nada de poner. putaniñademierda_texutas_mecagoendios_def.scn

:D

Adam Sullastres

  • *****
  • 2713
  • Mercenario del 3D
Re: JavaScript ejercicio #2 (never die)
« Respuesta #4 en: 06 Agosto 2004, 02:11:44 »
Porq no?
anda q no mola pillar un source con comentarios cachondos roollo
//Esto encierra a los usuarios en su puñetera home para q no token las bolas//  ;)
Pues no habre escrito yo d estos xDDDD

martindisenio

  • **
  • 672
  • Fabricante de lo Desconocido
Re: JavaScript ejercicio #2 (never die)
« Respuesta #5 en: 06 Agosto 2004, 17:36:05 »
Gracias a todos.

lo de los logmessages es una mania que tengo para ir comprobando todo lo que pasa. Igual , no recuerdo haber puesto nada muy cachondo, o si?
(lo terminé como a las dos de la matina, asi que es probable que estuviese dormido)

Y en todo caso: si alguien no tiene humor para soportar un comenario cachondo en un script, pos, no me preocupa. Esta profesion deberia ser todo divertirse y entretenimiento, asi que a tomarlo asi.

Lozo: no llores por el pasado! ya sabemos todos como se sufre en la tierra de Ross
seguramente una correcta planificacion/produccion te hubiera evitado tener que pasar la animacion incontables veces, no?

un abrazo a todos!

lozo

  • **
  • 114
  • erase una vez TDI Explore!!!
Re: JavaScript ejercicio #2 (never die)
« Respuesta #6 en: 06 Agosto 2004, 23:28:59 »
Martin... no te preocupes que la verdad es que estaba todo bastante bien pensado..... lo de los osos se planificó asi porque se implementó (y con eficacia) el uso de los animation clips!.

El tema es que a mi personalmente me molestan bastante si despues quiero retocar una animacions "encerrada" en un clip!
No hay rencor!
 ;D

martindisenio

  • **
  • 672
  • Fabricante de lo Desconocido
Re: JavaScript ejercicio #2 (never die)
« Respuesta #7 en: 07 Agosto 2004, 01:39:57 »
ups!