Ayuda con codigo

Iniciado por mc_deimon, 12 Febrero 2013, 22:20 PM

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

mc_deimon

Hola a todos. Soy un completo novato en todo esto pero quiero crear una aplicación y me han surgido varias dudas.

La cuestión es que quiero crear un plugin para After Effects que en realidad es la suma de varias partes de otros plugins. Quieros coger 5 trocitos de 4 plugins y hacer un único plugin. Para ello he pensado en la posibilidad de acceder al código de esos 4 plugins y seleccionar las partes necesarias.

¿Es posible realizar esto? Agradecería cualquier sugerencia o modo de empezar. Los plugins estan escritos en C++

Muchas gracias!!!

x64core

Si se puede, pero porque no programar tu propio plugin por ti mismo y todo incluido?
bueno de todos modos, la idea seria localizar el area de codigo que necesites obtener el offset a este, luego obtener la direccion base del plugin y sumarle ese offset luego solamente llamar a esa area de codigo, asegurarte que ese codigo tiene retorno, bueno de todos modos se puede hacer de cualquier manera no hay un impossible en nada sobre este asunto pero dependiendo de la situación esto podria llegar a ser tan rustico.

alister

Cita de: mc_deimon en 12 Febrero 2013, 22:20 PM
Hola a todos. Soy un completo novato en todo esto pero quiero crear una aplicación y me han surgido varias dudas.

La cuestión es que quiero crear un plugin para After Effects que en realidad es la suma de varias partes de otros plugins. Quieros coger 5 trocitos de 4 plugins y hacer un único plugin. Para ello he pensado en la posibilidad de acceder al código de esos 4 plugins y seleccionar las partes necesarias.

¿Es posible realizar esto? Agradecería cualquier sugerencia o modo de empezar. Los plugins estan escritos en C++

Muchas gracias!!!

mi duda es:

puede un novato desarrollar un plugin de after effects? así, directamente? pasando a lo especifico y avanzado sin haber pasado antes por lo basico y general?

y dado que no conocemos la api de plugins de after effects? como puede x64_core hablar con tanta seguridad? y si hay tres rutinas main, una por cada plugin? concatenas el codigo y ya esta? y que hay con las direcciones de memoria del espacio de plugins? no habra que reorgnizarlo todo? y que hay de las interfaces, cuadros de dialogo, opciones, etc? acaso es viable agarrar tres programas y juntarlos sin mas esperando que salga uno solo 100% funcional?

y en resumen...

no estais alucinando un poco?
Back 2 business!

x64core

Cita de: alist3r en 13 Febrero 2013, 05:57 AM
mi duda es:

puede un novato desarrollar un plugin de after effects? así, directamente? pasando a lo especifico y avanzado sin haber pasado antes por lo basico y general?

y dado que no conocemos la api de plugins de after effects? como puede x64_core hablar con tanta seguridad? y si hay tres rutinas main, una por cada plugin? concatenas el codigo y ya esta? y que hay con las direcciones de memoria del espacio de plugins? no habra que reorgnizarlo todo? y que hay de las interfaces, cuadros de dialogo, opciones, etc? acaso es viable agarrar tres programas y juntarlos sin mas esperando que salga uno solo 100% funcional?

y en resumen...

no estais alucinando un poco?

Luce como que nunca has hecho algo similar.


MCKSys Argentina

Coincido con alist3r: Teniendo en cuenta la infinidad de cosas que pueden hacerse en un plugin, es medio ilógico tratar de hacer algo así.

No digo que no se pueda sacar un poco de código de una DLL, pero hay que tener MUY en cuenta todo el funcionamiento: Lo que se inicializa al momento de cargar la DLL, lo que se inicializa al momento de cargar el plugin, la interface y las funciones usadas/exportadas.

La verdad, no he hecho un plugin para After Effects, pero calculo que es similiar a uno para, por ej.: Olly (quizás un poco más complejo  :P)

Cita de: x64Core en 13 Febrero 2013, 06:36 AM
Luce como que nunca has hecho algo similar.

Y tu si?  ::)

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


x64core

#5
Cita de: MCKSys Argentina en 13 Febrero 2013, 08:14 AM
Coincido con alist3r: Teniendo en cuenta la infinidad de cosas que pueden hacerse en un plugin, es medio ilógico tratar de hacer algo así.

No digo que no se pueda sacar un poco de código de una DLL, pero hay que tener MUY en cuenta todo el funcionamiento: Lo que se inicializa al momento de cargar la DLL, lo que se inicializa al momento de cargar el plugin, la interface y las funciones usadas/exportadas.

La verdad, no he hecho un plugin para After Effects, pero calculo que es similiar a uno para, por ej.: Olly (quizás un poco más complejo  :P)

Y tu si?  ::)

Saludos!


Crees que diria algo solo por espamear un hilo?
Hay que distinguir dos cosas: Dificil != Imposible

Cambiar el comportamiento de un programa ya compilado no es dificil como la gente piensa, tener un conocimiento bastante amplio de las funciones del SO, manejar bastante las herramientas a usar, más la experiencia.
Basandose en que el programa fue hecho por profesionales entonces debe ser de tipo modular y no sera tan dificil identificar que funcion(s) es la responsable
de tales acciones.


mc_deimon

Hola.

Muchísimas gracias a todos por responder!!! Les cuento mi caso con más detalle.

Trabajo con After Effects, creando efectos y diseños animados desde hace muchos años. La cuestión es que el programa tiene ya instalados varios efectos "plugins" como corrección de brillo, aumento de color azul, etc...
Utilizo una combinación de estos efectos para lograr un resultado concreto y quisiera tener este resultado con un único efecto ya que creo que sería muy util.

No sé de programación, me he descargado el SDK de After Effects donde vienen incluidas las heads necesarias para incluir en el código, pero la verdad es que empezar de cero me parece algo imposible. Por ello quería acceder al código de esos efectos y coger trozos para montar mi propio efecto. Los efectos de after effects están creados de forma modular y la interfaz (sliders) tambien.

Ejemplo de Interfaz:

static PF_Err ParamsSetup (
    PF_InData *in_data,
    PF_OutData *out_data,
    PF_ParamDef *params[],
    PF_LayerDef *output)
{
    PF_Err err = PF_Err_NONE;
    PF_ParamDef def;   

    // Always clear out the PF_ParamDef
    // before adding your parameters.
    AEFX_CLR_STRUCT(def);

    // Create the LAYER parameter...
    def.param_type = PF_Param_LAYER;
    PF_STRCPY(def.name, "Displacement Layer:");
    def.u.ld.dephault = PF_LayerDefault_NONE;
    if (err = PF_ADD_PARAM(in_data, -1, &def))
       return err;
   
    // Create the ANGLE parameter...   
    def.param_type = PF_Param_ANGLE;
    PF_STRCPY(def.name, "Angle of Displacement");
    def.flags = 0;
    def.u.fd.value_str[0] =
       def.u.fd.value_desc[0] = '\0';
    def.u.fd.value = def.u.fd.dephault = 0;
    def.u.fd.valid_min =
       def.u.fd.slider_min = ANGLE_MIN;
    def.u.fd.valid_max =
       def.u.fd.slider_max = ANGLE_MAX;
    def.u.fd.precision = 0;
    def.u.fd.display_flags = 0;   
    if (err = PF_ADD_PARAM(in_data, -1, &def))
        return err;
   
    // Create the DISPLACEMENT SLIDER...   
    def.param_type = PF_Param_FIX_SLIDER;
    PF_STRCPY(def.name, "Amount of Displacement");
    def.flags = 0;
    def.u.fd.value_str[0] =
       def.u.fd.value_desc[0] = '\0';
    def.u.fd.value =
       def.u.fd.dephault = SHIFT_BLEND_DFLT;
    def.u.fd.valid_min =
       def.u.fd.slider_min = SHIFT_BLEND_MIN;
    def.u.fd.valid_max =
       def.u.fd.slider_max = SHIFT_BLEND_MAX;
    def.u.fd.precision = 1;
    def.u.fd.display_flags = 1; // display as percent
    if (err = PF_ADD_PARAM(in_data, -1, &def))
       return err;

    // GAMMA slider...
    AEFX_CLR_STRUCT(def);
    def.param_type = PF_Param_FIX_SLIDER;
    PF_STRCPY(def.name, "Source Gamma");
    def.u.fd.value_str[0] =
       def.u.fd.value_desc[0] = '\0';
    def.u.fd.value =
       def.u.fd.dephault = BIAS_DFLT;
    def.u.fd.valid_min =
       def.u.fd.slider_min = BIAS_MIN;
    def.u.fd.slider_max = BIAS_MAX;
    def.u.fd.valid_max = BIAS_BIG_MAX;
    def.u.fd.precision = 1;
    def.u.fd.display_flags = 0;
    if (err = PF_ADD_PARAM(in_data, -1, &def))
       return err;

    // Create the FIXED SLIDER parameter...   
    def.param_type = PF_Param_FIX_SLIDER;
    PF_STRCPY(def.name, "Blend With Original");
    def.flags = 0;
    def.u.fd.value_str[0] =
       def.u.fd.value_desc[0] = '\0';
    def.u.fd.value =
       def.u.fd.dephault = SHIFT_BLEND_DFLT;
    def.u.fd.valid_min =
       def.u.fd.slider_min = SHIFT_BLEND_MIN;
    def.u.fd.valid_max =
       def.u.fd.slider_max = SHIFT_BLEND_MAX;
    def.u.fd.precision = 1;
    def.u.fd.display_flags = 1; // display as percent
    if (err = PF_ADD_PARAM(in_data, -1, &def))
       return err;

    // Set number of parameters...
    out_data->num_params = SHIFT_NUM_PARAMS;

    return err;
}

Agradecería que me pudieseis explicar como acceder al codigo de los plugins. Un saludo y muchas gracias!!!

alister

x64Core:

todo tuyo! ilústranos!

yo mantengo mi postura junto a MCKSys
Back 2 business!

x64core

CitarNo sé de programación
Sí, y como se espera que podas lograrlo?
Codigo Fuente? Esto es ingeniería inversa no?



mc_deimon

Hola.

Solo quiero cual es el método a seguir para acceder al código de los efectos.
¿Se usa algun programa específico?

Un saludo y muchas gracias.