Resultados 1 al 19 de 19

Física matemáticas y Maxscript

  1. #1
    Fecha de ingreso
    Dec 2004
    Mensajes
    3,387

    Fisica matemáticas y maxscript

    Bueno, tengo una duda muy grande llevo todo el santo día intentando hacerme un pequeño script sencillo, tengo la manera de ehacerlo peor no la manera de aplicarlo a Maxscript.

    Lo que quiero conseguir no es fácil de explicar, tengo dos objetos situados a diferentes alturas, quiero que el más alto se mueva hacia arriba cierta cantidad el otro le acompañe, pero que cuando baje no lo haga.

    Veréis tengo dos objetos(obj1 y obj2) en 3dsmax, obj2 esta colocado en z=0 por ejemplo, y obj1 en z=90, luego tengo una variable que es la distancia entre ellos inicial es decir v=90, luego tengo un dummie colocado en el 0,0,0, y dos variables más dist1 que es la distancia del obj1 a el dummie y luego tengo dist2 que es la distancia del obj2 al dummie.

    Mejor os dejo un esquema echo en papel y a ver si alguien me puede echar una mano con Maxscript.

    Iker, Larry help.

    -- IMÁGENES ADJUNTAS --
    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: formula.jpg 
Visitas: 4519 
Tamaño: 138.1 KB 
ID: 19135  
    PromineoStudios

    Sin riesgos en la lucha, no hay gloria en la victoria

  2. #2
    Fecha de ingreso
    Jul 2005
    Mensajes
    526

    Lightbulb Fisica matemáticas y maxscript

    Si lo que quieres lo he entendido bien solo tienes que hacer que al moverlo hacía arriba (alejarse del dummie, (la distancia al mismo será mayor)) obj1 y obj2 se muevan y obj2 conserve la distancia con obj1, y que al bajar obj1 sólo baje obj1, y obj2 no se mueva.

    Yo intentaría plantearlo de la forma que he dicho yo, al alejarse del dummie hacer que puedan moverse y que se guarde esta distancia (sólo se moverán los dos cuando la distancia al dummie aumente) y que en el momento en que disminuya la distancia (cuando lo bajes) este movimiento sólo afecte al obj1 y no al obj2 y que este se quede dónde estaba.

    No se la forma de hacerlo con Maxscript porque no he probado a hacer nada nunca yo solo se programar en c, basic y algo de Python, no he probado en Maxscript porque supongo que, será orientado a objetos y de eso no he dado nada por el momento así que, sólo puedo decir la forma en que lo plantearía yo.

    Espero que te sirva de algo y suerte.

  3. #3
    Fecha de ingreso
    Dec 2004
    Mensajes
    3,387

    Fisica matemáticas y maxscript

    Exavi muchas gracias, pero si no te he entendido mal, me parece que lo tenemos planteado de la misma manera, para eso he puesto el dummie. Así se la diferencia de distancia con este.

    Solo me queda aplicarlo a Maxscript, o quizá sea más fácil utilizar un float expression.
    PromineoStudios

    Sin riesgos en la lucha, no hay gloria en la victoria

  4. #4
    Fecha de ingreso
    Jul 2005
    Mensajes
    526

    Fisica matemáticas y maxscript

    Solo me queda aplicarlo a Maxscript, o quizá sea más fácil utilizar un float expression.
    Yo diría que eso debe ser mucho más fácil.

  5. #5
    Fecha de ingreso
    Apr 2004
    Mensajes
    3,115

    Fisica matemáticas y maxscript

    Yo en Maya hice una vez algo parecido, pero lo planteé de otra manera (te lo cuento por si te sirve, estoy recién formateado y no lo tengo instalado, mañana en el trabajo lo hago otra vez y te publico el código).

    Dos objetos, cubo1 y cubo2, queremos que cuando suba cubo1, cubo2 suba con él, y cuando baje cubo1, no afecte a cubo2.
    -$vertanterior: almacenando el valor de posición en y de cubo1 en el frame anterior al actual.
    -$vertactual: variable con el valor en y actual de cubo1.

    Parent constraint en el eje y de cubo2 a cubo1. Aquí hacemos una variable $vertconst, que sea el weight de la constraint (con 0 cubo2 queda libre, y con 1 queda atado a cubo1).

    If ($vertact > $vertant) {.
    $vertconst = 1.
    }.

    Else.
    {.
    $vertconst = 0.
    }.

    Esa es la idea, fijo que la expresión tiene algún error porque hace ya algo que no toco Mel, pero la idea se pilla. Son distintas formas de hacerlo, yo veo la mía más sencilla porque no hay que andar metiendo distancias, seguro que se puede hacer de muchas otras también, ahí está la gracia del scripting. Saludos.

  6. #6
    Fecha de ingreso
    Dec 2004
    Mensajes
    3,387

    Fisica matemáticas y maxscript

    Vale parece mucho más sencillo, intentaré pasarlo a Maxscript y te cuento. Gracias Stewie.
    PromineoStudios

    Sin riesgos en la lucha, no hay gloria en la victoria

  7. #7
    Fecha de ingreso
    Apr 2004
    Mensajes
    3,115

    Fisica matemáticas y maxscript

    Vale, olvídate de la solución anterior porque obviamente está mal (en el momento en que el constraint valga 0, el cubo volverá a su posición inicial, no mantendrá la que tiene, vamos que salta al origen cuando weight = 0).

    Otra solución, hacer que cuando cubo1 sube, la distancia que sube del frame anterior al frame actual, se le sume al cubo2, y cuando cubo1 baja, no pase nada. La pega: que no ves el resultado al mover el objeto, sólo al darle a play y al mover la barra de tiempos, y luego no puedes ponerlo a 0 porque está controlado por la expresión. Voy a ver si encuentro alguna manera, que tiene que ser sencillo, pero estoy algo oxidado, pero funcionar funciona.

    Ahí va el código:
    // variable con el número de frame anterior al actual.
    $timant = (`currenttime -q` -1).
    // posición vertical en el frame anterior de cubo1.
    $posant = `getattr -t $timant cubo1.ty`.
    // posición actual de cubo1.
    $posact = `getattr cubo1.ty`.
    // variación de posición del frame anterior al actual.
    $varpues = $posact - $posant.
    // expresión, si la posición vertical actual de cubo1 es mayor que la posición anterior.
    // sumamos a la posición y de cubo2, la variación de posición de cubo1.

    If ($posact > $posant).
    {.

    Cubo2.translatey = cubo2.translatey + $varpos.
    }. Saludos.

  8. #8
    Fecha de ingreso
    Dec 2004
    Mensajes
    3,387

    Fisica matemáticas y maxscript

    Hey Stewie muchas gracias por molestarte, la verdad es que estoy investigando bastante, alguien me dijo que se puede hacer, pero no como, de todas maneras, me cojo tu script. Muchas gracias.
    PromineoStudios

    Sin riesgos en la lucha, no hay gloria en la victoria

  9. #9
    Fecha de ingreso
    Nov 2003
    Mensajes
    89

    Fisica matemáticas y maxscript

    Stewie a ver sinos recomendáis algunos links.

  10. #10
    Fecha de ingreso
    Oct 2004
    Mensajes
    687

    Fisica matemáticas y maxscript

    También lo puedes hacer mirando el valor de la curva de animación en y en el fotograma anterior y comparándolo con el valor actual, no sé cuál será la instrucción en Maxscript, pero fijo que la tiene.

    Stewie, mejor que almacenar los valores en variables te recomiendo que crees un atributo nuevo en el transform del objeto y lo vayas almacenando allí, te da menos problemas, habría otros modos de hacerlo, como crear una curva de animación nueva e ir sumando valores que creo que podría dar mejores resultados ya que una expresión dependiente de valores temporales puede engañar muchas veces.
    Larry vizoso
    Pipeline developer/technical director
    el ranchito : mi blog

  11. #11
    Fecha de ingreso
    Apr 2004
    Mensajes
    3,115

    Fisica matemáticas y maxscript

    Gracias por los consejos Larry. Soy algo vago y si es para hacer alguna prueba rápida suelo utilizar variables, si es para algo más serio hago atributos, si no con 4 cosas te vuelves loco.

    A ver si luego tengo un rato y busco algún enlace sobre Maxscript, aunque seguro que Promineo conoce bastantes más, que yo soy mayero.

  12. #12
    Fecha de ingreso
    Oct 2002
    Mensajes
    8,617

    Fisica matemáticas y maxscript

    A mí se me ha ocurrido esto, soy un inexperto en esto del maxsript, pero bueno. If a < $box02.pos, z do ($box01.pos, z =$box02.pos, z).

    A = $box01.pos, z.

    Creo que no hace falta explicarlo, puesto que es simple con ganas.

    Es una tontería, solo funciona como script como es lógico da fallos si lo pones como expresión, sería cuestión de adaptarlo, y como no, si lo pones como wire te casca por todos los lados, ahora no tengo tiempo, pero esta noche si eso le echaré un ojo a ver qué se puede hacer. Saludos.

    Posdata: mira que es vicioso esto de los scripts ¿eh? ¿a ver si me pongo en serio con ellos.

  13. #13
    Fecha de ingreso
    Dec 2004
    Mensajes
    3,387

    Fisica matemáticas y maxscript

    Gracias, gracias, seguiré probando cosas a ver si doy con la solución, Fiz3d, esto se ajusta más a lo que buscaba. Gracias otra vez.
    PromineoStudios

    Sin riesgos en la lucha, no hay gloria en la victoria

  14. #14
    Fecha de ingreso
    Mar 2004
    Mensajes
    855

    Fisica matemáticas y maxscript

    Ya sé que han pasado casi 4 meses desde el último mensaje de este hilo, pero estaba revisando mensajes referentes a Maxscript y éste me ha llamado la atención. Así que he intentado hacer algo similar a lo que se pedía.

    En concreto he creado una utilidad que permite especificar dos nodos. Uno será el nodo maestro y el otro el esclavo. Entonces lo que hace el script es crear un script controller para la posición del nodo esclavo, de forma que si el nodo maestro sube, el esclavo le seguirá pasada una distancia máxima (que también se puede especificar en el cuadro de diálogo de la utilidad), mientras que si el nodo maestro baja, el esclavo no lo hará salvo que el nodo maestro llegue a su altura, en cuyo caso ambos nodos descenderán conjuntamente.

    Si os fijáis, también se crea un dummie que envuelve al nodo esclavo. Esto lo he hecho así porque necesitaba una forma de recoger la posición del nodo esclavo, pero como dentro del script del controlador no se puede hacer referencia al nodo que tiene aplicado dicho controlador, pues me he creado el dummie. Por si os estáis preguntando por que no he linkado el dummie al nodo esclavo, la razón es que en dicho caso, el script controller consideraría al dummie como si fuera el nodo mismo ya que dependen el uno del otro. Lo mismo ocurre si al dummie se le asigna un position constraint apuntando al nodo esclavo.

    En fin, he adjuntado un video para que veáis el funcionamiento. Es bastante simple. El código también va incluido. Espero que lo encontréis, al menos, interesante. A mí me ha servido para aprender cosas nuevas. Saludos.

    actualización: he actualizado una cosa del código.

    -- IMÁGENES ADJUNTAS --
    Archivos adjuntados Archivos adjuntados
    Última edición por HalfVector; 25-12-2005 a las 08:13

  15. #15
    Fecha de ingreso
    Jul 2004
    Mensajes
    344

    Fisica matemáticas y maxscript

    Bastante interesante el comportamiento, que bien se ve, muy buen trabajo. Saludos.
    ""Todo lo que existe, no existe más que en dependencia de causas""

  16. #16
    Fecha de ingreso
    Dec 2004
    Mensajes
    3,387

    Fisica matemáticas y maxscript

    Chacho que bueno half, de puta madre, muchas gracias tío, donde aprendiste maxscript?
    PromineoStudios

    Sin riesgos en la lucha, no hay gloria en la victoria

  17. #17
    Fecha de ingreso
    Mar 2004
    Mensajes
    855

    Fisica matemáticas y maxscript

    Chacho que bueno half, de puta madre, muchas gracias tío, donde aprendiste maxscript?
    Pues resulta que yo soy (aunque no profesionalmente) programador de motores gráficos 3d para juegos. Entonces para el último motor que estoy desarrollando, tenía que crear diferentes utilidades de exportación para poder pasar las escenas de 3ds Max al motor. El caso es que un día un compañero del foro de Stratos me aconsejó Maxscript para algunas utilidades (hasta entonces yo utilizaba el SDK en C++ de max) y desde entonces Maxscript y yo somos inseparables.

    En cuanto a cómo aprendí Maxscript, bueno, lo cierto es que fue con la documentación que viene con 3ds Max. Hay que tener en cuenta que yo ya sabía programar en c/C++ y eso ayuda mucho. Lo único que queda es aprender la sintaxis del lenguaje.

    Eso sí, no basta con saber programar Maxscript. Es muy importante conocer a fondo max (o la parcela a la que te dedicas) para hacer scripts útiles y ese es el problema que yo tengo, que hay muchas cosas de 3ds Max que desconozco. Saludos.

  18. #18
    Fecha de ingreso
    Aug 2005
    Mensajes
    25

    Fisica matemáticas y maxscript

    Casi 3 años dps, tengo que felicitarte, seguro habrás crecido muchísimo, eres un groso half Vector, y obviamente también Promineo.
    My Animation Blog - http://amariotto.blogspot.com/

  19. #19
    Fecha de ingreso
    Nov 2006
    Mensajes
    142

    3dsmax Fisica matemáticas y maxscript

    Hola gente. Logre desarrollar este ejemplo es recontra sencillo y espero que te sea útil, estoy trabajando con float expresión en el dummie por eso es que se mueve, pero creo que cumple el básico funcionamiento que pudiese ser del problema que tenias.

    Ahí te va es un archivo en 3dsmax de repente te sirva. Saludos.

    -- IMÁGENES ADJUNTAS --
    Archivos adjuntados Archivos adjuntados

Temas similares

  1. Matemáticas Unity
    Por Jhonatan00_00 en el foro Plugins y Scripts
    Respuestas: 4
    : 24-01-2020, 22:25
  2. 3ds Max Libro de matemáticas 3d
    Por MAYAMAN en el foro Videojuegos
    Respuestas: 3
    : 02-05-2010, 15:07
  3. De matemáticas a infografía
    Por fernando24691 en el foro Noticias 3D
    Respuestas: 3
    : 27-05-2009, 13:27
  4. Matemáticas VFX
    Por SUPER87 en el foro Partículas y Dinámicas
    Respuestas: 25
    : 06-06-2007, 19:59
  5. Hardware Las matemáticas existen
    Por Roberto en el foro Hardware
    Respuestas: 0
    : 30-11-2006, 10:47