Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 25

Tema: Maxscript simple spline manipulator

  1. #1
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    [maxscript] simple spline manipulator

    Bueno, aquí estamos de nuevo. A ver, background: En revisando los rigs faciales que se hace la peña con huesos, me planteé la cuestión: ¿no es una cagada tener que meter entre 8 y 12 huesos para hacerse el orbicular de la boca, por ejemplo? ¿y que hay de las cejas, otros 3 o 4 Bones para cada una?
    Pienso que es más práctico hacerse una Spline para estos menesteres, ya que tanto skin como Physique permiten meter Splines como huesos con la particularidad de que los envelopes en estos casos no son capsulas, si no más bien músculos (al estilo de los metamuscles de Metareyes).

    Pero, tienen un inconveniente: es un coñazo animar una Spline. Vete a modify, métete en subobjeto vértice, toquetea, sal, vuelve a entrar.

    Y comentándolo con un colega animador se me ocurrió la idea de hacer un manipulador para manejar las Splines sin tener que andarse con tanta historia.

    No lo he probado y seguro que tiene algunas pegas que no se me han ocurrido, pero es un primer intento. Tengo en mente meterle algunas cosas más, como, por ejemplo, que guarde posturas concretas para poder volver a ellas en cualquier punto. De ese modo, podría crearse una serie de posturas para los fonemas, expresiones, y reutilizarlos cuando se quisiera, pero con la particularidad de que los puedes modificar a tu gusto en cualquier momento. Como el Morpher, pero mejor y más flexible, pienso yo.

    En fin, lo probáis y me contáis, y en la medida de lo posible y si tiene aceptación se le irán metiendo más cosas.
    Archivos adjuntados Archivos adjuntados
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  2. #2
    Fecha de ingreso
    Sep 2004
    Mensajes
    849

    [maxscript] simple spline manipulator

    Ole y ole, ya sabes que yo no voy a probar tu script, pero me encanta que sigas haciendo cosas para tu currículum. Tío tú tienes talento y es un pecado que no lo aproveches. Loas y alabanzas aparte, creo que la lógica que hay detrás de la idea de tu script es valida y supongo que, puedes ser una herramienta muy útil para los meneadores de monigotes.

    Aprovechando el mensaje, perdona por el offtopic Nessito, dejo en el aire dos ideas para scrits, macros o cómo se llamen:
    Uno fácil de explicar, pero (imagino) bastante más difícil de programar: un hacedor de tejados. Con la fiebre constructora que no invade creo que hasta seria comercialmente viable un plugin que hiciese cubiertas de teja. Podría funcionar algo, así como: seleccionas el tipo de teja (árabe, francesa, romana, etc), indicas el plano a cubrir (indicando un polígono o sus vértices, como sea más factible), a base de mucho [] () / if do y demás conjuros el script calcula las filas y columnas necesarias, la inclinación, las coloca y recorta los sobrantes. Tendría su modulo para hacer cumbreras. Permitiría tener distintos niveles de detalle en visores y render. Y seria un plus un botón para transformar el resultado en un Vray proxy.

    El otro más fácil (creo) de programar, pero más complicado de explicar. La idea es un script que te permita conservar el área seleccionada en un render tipo crop. Me explico. Como sabéis la mayoría, el max tiene distintos tipos de render en función de cómo especificamos el área que se va a renderizar: view, region selected, crop, etc. El caso es que el render crop es muy útil en ciertos casos en los que no es posible utilizar el ajuste de perspectiva, permitiendo simular el funcionamiento de los objetivos fotográficos con el plano Focal desplazado (creo que se llaman así) que se utilizan para fotografía arquitectónica. El problema que se presenta cuando tienes que repetir una imagen que has obtenido mediante este sistema (porque la cuarcita naranja de leshoto tiene unas vetas distintas de la que tú has puesto, por ejemplo), es la dificultad para volver a ajustar exactamente el mismo recorte que seleccionaste en el visor. El script que os propongo es uno que permita conservar los valores de ese recorte para una vista de cámara determinada y ya de paso los valores del tamaño de render que se habían seleccionado. Si alguno que se plante el hacerlo necesita más información, que lo diga y buscaré la forma de explicarlo mejor (dibujos y todo eso).

    Volviendo al tema original del mensaje, a ver si alguno de los que os decís animadores probáis el script y le echáis una mano en el proceso de refinado, que luego la herramienta vais a poder utilizarla por la patilla (o no, glup).

    Lo dicho, que me alegro de que la desidia no haga mella y dile a tu colega animador (si es quien creo que es) que ha ver si se suma a la próxima quedada y nos tomamos una cervezas. Un saludo.
    "Tienes quince segundos para imaginar; si no se te ha ocurrido nada, a lo mejor deberías ver menos la tele" La Bola de Cristal

  3. #3
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    [maxscript] simple spline manipulator

    Bueno, bueno, mira a quien tenemos por aquí. Voy a ir en sentido inverso: El colega animador es quien tu crees, seguro. Cervezas? Solo es proponerselo, ya le conoces. La historia esta del manipulador es una pergeñada para su piarida versión 2.0. Parece que se lo quiere tomar en serio esta vez, y le he dicho que me encargo de las herramientas que le puedan hacer falta. Esto es un primer intento de colaboración en serio.

    Por la patilla? Pues claro, pero la primicia la tiene él, que me va a hacer de beta tester con un caso real (si de verdad se pone).

    En configuración de la vista (botón derecho sobre los botones de navegación), tienes una pestaña que se llama Regions. Tienes un Blowup region y un sub region. Sub region es la región para los modos de render región y crop.

    Lo que tú pides es guardar esos cuatro números? No sé, me parece muy simple, tanto que no sé si es útil. Siempre puedes coger lápiz y papel, y apuntartelos.

    Lo de los tejados, tendría que verte hacerlo a pedales, para entender exactamente que es lo que se podría automatizar con script, pero así, a priori, tampoco parece muy complicado, es una especie de Scatter, ¿no? Lo de los niveles de detalle distintos en visores y render tiene más miga, hay que sustituir geometría en un pre-render call-back, y me da que tendría que ser tirando de librerías (del estilo de los árboles del foliage que trae el max). Lo dicho, un Scatter, o si lo prefieres un facedor de arrays de tejas, con parámetros especializados en el tema. Vray-proxys? Ya sabes que yo del Vray solo sé que existe, pero si tiene soporte script, supongo que, sería sustituir un tipo por otro.

    Resumiendo, ambas dos de tus ideas me parecen factibles a primera vista, luego te metes en el fregado y aparecen problemas por todas partes, pero, así es esto.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  4. #4
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    [maxscript] simple spline manipulator

    Nessito, gracias por el script. Precisamente esta semana hemos estado desarrollando una solución similar en el trabajo (creo): crear una Spline, pero sin Spline, sólo con los puntos: vértices y handles de las tangentes. A través de la fórmula para las curvas Bézier, consigues tener una Spline, pero formada por una cadena de huesos. Puedes controlar los vértices y las tangentes, y es rápido como el diablo.

    Veo que declaras tu script como plugin, pero no veo cómo funciona. El Listener me devuelve la cadena Spline Manipulator, y no veo por ningún lado botones, menús, modificadores o nada parecido. Llámame cateto, pero también pruebo a ejecutar el script a secas, con una curva seleccionada, boca abajo, fumando en pipa, y no pasa nada. ¿Qué estoy haciendo mal, doctor?
    Por cierto, infinitas gracias por comentar el código. Te cae una cerveza, pero ya.

  5. #5
    Fecha de ingreso
    Mar 2004
    Mensajes
    855

    [maxscript] simple spline manipulator

    La verdad es que me acabo de enterar que se puede asignar un Spline en el modificador skin. A ver si le echo un vistazo al código, que nunca he creado un manipulador.

    Thanks for share.

  6. #6
    Fecha de ingreso
    Dec 2004
    Mensajes
    866

    [maxscript] simple spline manipulator

    Yo no es por ser tocapelotas, pero lo que hace el script (por lo que entendí de la explicación, todavía no he mirado el código) no es el mismo resultado que crear una Spline y asignarle un modificador Spline IK control, esto te crea ayudantes asociados a cada vértice de la Spline, de esa forma al mover los ayudantes deformas la Spline.

    Si no es eso me callo y santas pascuas.
    _________________________________________________
    Reloj de pulsera /\ Marine Starcraft 2 WIP /\ Motorola L6 /\ Canon Ixus II /\ La vigilante /\ Dragon WIP ________________________________________________

  7. #7
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    [maxscript] simple spline manipulator

    Con splineikcontrol no puedes controlar las tangentes de la curva en cada vértice. Creo que con el script de Nessito, sí.

  8. #8
    Fecha de ingreso
    May 2005
    Mensajes
    321

    [maxscript] simple spline manipulator

    Buenas. Por lo del splineikcontrol, de hecho, si puedes controlar las tangentes rotanto los puntos de control que genera ese modificador, pero lo malo es que no puedes alargarlas, aun así, existe otro método. A un Spline se le puede poner un modificador skin, con el cual se pueden controlar los vértices y los puntos de control de las tangentes, asignando pesos a huesos, helpers o cualquier objeto, de esa forma no solo se puede controlar la orientación de las tangentes sino también su tamaño.

    Es super la idea de controlar el rostro directamente con Splines, lo malo de eso, es que los Splines no son muy estables a la hora de deformar una malla con skin, pasa a veces que cuando un Spline alcanza cierto grado de doblez genera un flip sobre los vértices de la malla skineada, por eso generalmente se usan cadenas de huesos restringidas sobre Splines, ya que, con ellos puedes tener mucho más control y evitar que sucedan ese tipo de errores.

    Bueno, chao.

    Vaya, por cierto, tampoco supe como utilizar el script de Nessito, seria guay poder probarlo.
    Última edición por phoelix; 01-11-2006 a las 18:30
    Nuestro corto basado en Matrix - TRICKSTER - wip:
    thetricksterproject.blogspot.com

    website personal:
    www.joleanes.com

  9. #9
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    [maxscript] simple spline manipulator

    Nessito, gracias por el script. Precisamente esta semana hemos estado desarrollando una solución similar en el trabajo (creo): crear una Spline, pero sin Spline, sólo con los puntos: vértices y handles de las tangentes. A través de la fórmula para las curvas Bézier, consigues tener una Spline, pero formada por una cadena de huesos. Puedes controlar los vértices y las tangentes, y es rápido como el diablo.
    De nada, para eso estamos.

    Es buena idea lo de crear una cadena de huesos controlados por una Spline invisible, pero la única utilidad especial que le veo sobre el Spline IK del 3ds Max sería que hiciera los Bones stretchy al cambiar la longitud de la Spline, y si acaso, la rotación de esos Bones sobre el eje de Spline en cuestión, como un twist. Tendré que apuntarmelo, por si se me ocurre la manera de replicarlo.
    Veo que declaras tu script como plugin, pero no veo cómo funciona. El Listener me devuelve la cadena Spline Manipulator, y no veo por ningún lado botones, menús, modificadores o nada parecido. Llámame cateto, pero también pruebo a ejecutar el script a secas, con una curva seleccionada, boca abajo, fumando en pipa, y no pasa nada. ¿Qué estoy haciendo mal, doctor?
    Bueno, como le has echado un vistazo al código, te respondo con un par de preguntas (para que le des al coco): ¿si es un plugin dónde está el class id? El número que lo identifica. Y ¿Qué significa invisible:true (auto explicativo, ¿no?)? Ya? ¿no? Bueno, a ver.

    Lo de invisible:true es porque puedes crear plugins que no se vean en el panel de creación (o en otras partes, según el tipo de plugin). Por ejemplo, el controlador body del Biped, que no aparece en la lista de controladores asignables a mano. En principio esto está pensado para cosos que no pueden funcionar por sí solos, si no es en conjunto con otras cosas (como el controlador mencionado). Aunque en este caso es por otro motivo, que tiene relación con lo del class id.

    No tiene class id por que es un manipulador simple, en contraposición de los manipuladores stand in. Ejemplo: el slider manipulator o el bolean manipulator (otra de mis creaciones), son manipuladores stand-in, o sea plugins con todas las de la ley. Que se manipulan a sí mismos, y que tienes que wirear a otros cosos como quieras. En cambio, no tienes ninguna manera de crear un manipulador de radio, pero cuando creas una esfera aparece un círculo verde que es el manipulador en cuestión. Eso es un manipulador simple. Pues esto es lo mismo, el manipulador solo aparece cuando el tipo de objeto es el apropiado para ser manipulado.
    ¿Y cuando es eso? Cuando el objeto seleccionado es una editable Spline o una línea (que para el caso son lo mismo) y cuando el modo manipulate esta activo. No te llamo cateto porque no hace falta.

    Ejecuta el script (para que te salga lo de Spline Manipulator en el Listener), crea una línea o cualquier Spline y la conviertes en editable Spline, y dale al botón manipulate, y oh sorpresa, ahí esta.
    Con splineikcontrol no puedes controlar las tangentes de la curva en cada vértice. Creo que con el script de Nessito, sí.
    Ahí está el tema.
    Por lo del splineikcontrol, de hecho, si puedes controlar las tangentes rotanto los puntos de control que genera ese modificador, pero lo malo es que no puedes alargarlas, aun así, existe otro método. A un Spline se le puede poner un modificador skin, con el cual se pueden controlar los vértices y los puntos de control de las tangentes, asignando pesos a huesos, helpers o cualquier objeto, de esa forma no solo se puede controlar la orientación de las tangentes sino también su tamaño.
    Vaya macho. Meterle un skin a una Spline para usarla como hueso deformable en otro skin. Eso sí que es rizar el rizo. No dudo que sea posible, ni tampoco dudo los problemas que puede llegar a dar, pero la idea es hacer las cosas más fáciles, no más complicadas.

    Leme un poco más arriba y verás cómo probar el script.

    Por cierto, lo he hecho en el 3ds Max 9 - 32bit, y lo he probado en el 9 y en el 8 service pack 3, versiones anteriores, ni idea, aunque creo que también funcionaría, pero con distinto aspecto (de hecho, entre el 8 y el 9 han cambiado algunas cosas).

    En fin, a ver si lo podéis probar y me contáis.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  10. #10
    Fecha de ingreso
    May 2005
    Mensajes
    321

    [maxscript] simple spline manipulator

    Bueno la idea no era hacer las cosas más complicadas si no posibles, si no existiera un script como el tuyo sseria una forma de hacerlo, pero ya que existe.

    Por cierto, me funciono el script de la forma que mencionas, me sale el manipulador sobre el Spline monstrando unos controles para los vértices y las tangentes, pero podrías explicar cómo mover los controles, ya que intento con la herramienta move sobre los controles del manipulador y no logro.

    Thnx.
    Nuestro corto basado en Matrix - TRICKSTER - wip:
    thetricksterproject.blogspot.com

    website personal:
    www.joleanes.com

  11. #11
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    [maxscript] simple spline manipulator

    Si ves el manipulador, es que lo puedes manipular. No hay que mover, solo manipular. Te pones encima de un punto de control (veras que cambia de color) y arrastras. Y ya está.

    Bueno, ya está no. Aquí se precisa cierta aclaración. Los puntos manipulables son solo vértices y tangentes, teniendo en cuenta que:
    • el plano de manipulación es el plano de construcción de la vista activa. Por ejemplo, en una vista top mueves las cosas en X e Y, en una front mueves en x y z, etc.
    • los vértices son siempre manipulables.
    • las tangentes solo son manipulables si son manipulables (obvio). Me explico: un vértice puesto en corner no tiene tangentes que manipular, ya que las calcula el propio max. Mi manipulador dibuja siempre todas las tangentes, pero lo hace de forma distinta según el tipo de vértice. A saber:
      • los vértices Bézier o Bézier corner aparecen con tangentes (manipulables) como cuadrados pequeños (como en el 3ds Max 8 y anteriores).
      • los vértices corner aparecen con tangentes en x (como aparecían cuando ponías un segmento en linear), para mostrar que no se pueden tocar.
      • los vértices Smooth aparecen con tangentes en círculo, que tampoco se pueden tocar, pero que se mantienen tangentes a la curva.

    De ese modo, y de un vistazo puedes ver que vértices son manipulables y cuáles no, y de que modo cada uno.

    Tengo planeado meterle además colorines para distinguir las diferentes cosas, pero es un coñazo de programar y no he tenido ganas de hacerlo aún. En cualquier caso, el funcionamiento sería el mismo.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  12. #12
    Fecha de ingreso
    May 2005
    Mensajes
    321

    [maxscript] simple spline manipulator

    Debo estar haciendo algo mal, porque no logro moverlos (manipularlos), los vértices se ponen rojos y todo cuando les pongo el cursor encima, pero cuando hago click y arrastro no pasa nada.
    Nuestro corto basado en Matrix - TRICKSTER - wip:
    thetricksterproject.blogspot.com

    website personal:
    www.joleanes.com

  13. #13
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    [maxscript] simple spline manipulator

    Yo tampoco puedo manipularlos. Uso la versión 8 de 3ds Max. Tal vez sea por eso.

  14. #14
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    [maxscript] simple spline manipulator

    Vaya, probado aquí en el trabajo. En el 5 (flipa), en el 7, en el 8 y en el 9. Ningún problema, en ninguno de ellos. No sé qué puede ser, a menos.

    En que vista lo intentáis? Top, por ejemplo?
    Me despista el asunto de que si se pongan rojos los puntos. Eso significa que la cosa rula, pero si no podéis moverlos, es un problema del mousemove, y ahí sí que lo flipo.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  15. #15
    Fecha de ingreso
    Mar 2004
    Mensajes
    855

    [maxscript] simple spline manipulator

    El problema es que, sí, por ejemplo, creamos una Spline en la vista front e intentamos manipularla, esta línea del event handler onmousemove:
    Código:
    isok = pl, intersect viewray &projectedpoint
    Siempre devuelve false ya que la dirección del rayo y la normal del plano son perpendiculares. O sea que no hay intersección y por lo tanto no se entra en el case posterior, con lo que el vértice/tangente no se mueve.

    Lo mismo ocurre si después intentamos manipularla en la vista top (nuevamente los vectores son perpendiculares). No ocurre así en la vista left, pues ahí los vectores no son perpendiculares o paralelos (y en el mismo sentido). Lo mismo pasa en la vista en perspectiva, ahí también funciona.

    Incluso si en la vista front se rota la Spline, también funciona. Se ve que el plano cambia y por lo tanto los vectores dejan de ser perpendiculares. Saludos.

Página 1 de 2 12 ÚltimoÚltimo

Temas similares

  1. Spline Maxscript
    Por neobarry en el foro Modelado
    Respuestas: 14
    : 05-09-2015, 22:44
  2. Campo de batalla: simple simulación simple de masas
    Por lisux en el foro Partículas y Dinámicas
    Respuestas: 22
    : 24-01-2007, 19:50
  3. Maxscript: acceder al path de un loft como spline
    Por cluezz en el foro Programación y Scripts
    Respuestas: 1
    : 28-12-2006, 10:34
  4. Maxscript stand-in spline manipulator
    Por Nessito en el foro Programación y Scripts
    Respuestas: 5
    : 21-11-2006, 14:31
  5. Maxscript boolean manipulator
    Por Nessito en el foro Programación y Scripts
    Respuestas: 0
    : 02-11-2006, 09:22