Gracias Gracias:  1
Resultados 1 al 4 de 4

Tema: Como hacer para que los bones sean flexibles

  1. #1
    Usuario completo Avatar de mundo 3d
    Fecha de ingreso
    Mar 2009
    Ubicación
    Colombia
    Mensajes
    757

    Como hacer para que los bones sean flexibles!!!!!!?

    Hola compañeros, estoy haciendo un rigg facial, y la verdad no sé cómo colocar los bones, para qué sean flexibles (estirar y contraer). Hasta ahora el rigg lo tengo hecho, pero con splines que hacen las veces de bones, pero no sé si esto sea correcto.
    Por favor si alguien sabe, se lo agradecería. Saludos

  2. #2
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,970

    Re: Como hacer para que los bones sean flexibles!!!!!!?

    Puse este código que hice en otro foro. A ver si te sirve.
    Código:
    .
    --select two points or more points and run the code below for creating a 'stretchy' bone or a 'stretchy' chain.
    Fn makeNubBone lastBone =.
    (.
    Local pues = lastBone, transform[4] -- get the position of the last bone.
    Local xDir = lastBone, transform[1] -- get the vector of the X point.
    Local startPoint = pues + xDir * lastBone, length.
    Local endPoint = startPoint + xDir * lastBone.width.
    Local nubBone = boneSys, createBone startPoint endPoint lastBone, transform[3] -- create the bone.
    NubBone.width = lastBone.width.
    NubBone, height = lastBone, height.
    NubBone.wireColor = lastBone.wireColor.
    NubBone, parent = lastBone.
    NubBone, name = lastBone, name + "_Nub".
    Return nubBone.
    ).
    Fn pointFilt o = (ClassOf o == Point).
    If selection, count == 2 do.
    (.
    If classof selection[1] == Point and classof selection[2] == Point then.
    (.
    ThePoints = selection as array;.
    TheBone = boneSys, createBone thePoints[1].pues thePoints[2].pues thePoints[1].transform[3].
    TheNub = makeNubBone theBone.
    TheBone, position, controller = Position_Constraint().
    TheBone, position, controller, appendTarget thePoints[1] 100.
    TheNub, position, controller = Position_Constraint().
    TheNub, position, controller, appendTarget thePoints[2] 100.
    TheBone, rotation, controller = LokAt_Constraint().
    TheBone, rotation, controller, appendTarget thePoints[2] 100.
    TheBone, rotation, controller, viewline_length_abs = false.
    TheBone, rotation, controller, upnode_world = false.
    TheBone, rotation, controller, pickUpnode = thePoints[1].
    TheBone, rotation, controller, upnodeAxis = 2.
    TheBone, rotation, controller, estoUpAxis = 2.
    ).
    Else messageBox "Selected objects must be points".
    ).
    If selection, count > 2 do.
    (.
    TheCnts = #().
    TheBones = #().
    For i = 1 to (selection, count-1) do.
    (.
    -- if classof selection[1] == Point and classof selection[2] == Point then.
    ThePoints = selection as array.
    TheCnt = point transform:thePoints[i].transform box:on cross:of axisTripod:of size:1.
    TheCnt, parent = thePoints[i].
    TheBone = boneSys, createBone thePoints[i].pues thePoints[i+1].pues thePoints[i].transform[3].
    Append theCnts theCnt.
    Append theBones theBone.
    ).
    TheNub = makeNubBone theBones[theBones, count].
    TheNubCnt = point transform:theNub, transform box:on cross:of axisTripod:of size:2.
    Append theBones theNub.
    Append theCnts theNubCnt.
    TheNub, position, controller = Position_Constraint().
    --theTarget = (pickObject prompt:"enter a point" filter:pointFilt).
    TheNub, position, controller, appendTarget theCnts[TheCnts, count] 100.
    For i = 1 to theBones, count-1 do.
    (.
    TheBones[i].position, controller = Position_Constraint().
    TheBones[i].position, controller, appendTarget theCnts[i] 100.
    TheBones[i].rotation, controller = LokAt_Constraint().
    TheBones[i].rotation, controller, appendTarget theCnts[i+1] 100.
    TheBones[i].rotation, controller, viewline_length_abs = false.
    TheBones[i].rotation, controller, upnode_world = false.
    TheBones[i].rotation, controller, pickUpnode = theCnts[i].
    TheBones[i].rotation, controller, upnodeAxis = 2.
    TheBones[i].rotation, controller, estoUpAxis = 2.
    ).
    For i = 2 to theBones, count do.
    (.
    TheBones[i].parent = theBones[i-1].
    ).
    ).
    Else messageBox "Pléase select two objects".
    .
    Selecciona dos o más puntos y ejecútalo.
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  3. #3
    Usuario completo Avatar de mundo 3d
    Fecha de ingreso
    Mar 2009
    Ubicación
    Colombia
    Mensajes
    757

    Re: Como hacer para que los bones sean flexibles!!!!!!?

    Muchas gracias IKER, voy aprobarlo a ver.

  4. #4
    Usuario completo Avatar de mundo 3d
    Fecha de ingreso
    Mar 2009
    Ubicación
    Colombia
    Mensajes
    757

    Re: Como hacer para que los bones sean flexibles!!!!!!?

    Iker ya lo probé, men muchsimas gracias, eres un teso, en el tema.
    Pero tengo una pregunta, el max no tiene esa opción? Yo no sé dónde vi eso, o no sé si lo soñe o que

Temas similares

  1. Como hacer escenarios para fs9
    Por rafaelreyes1988 en el foro Videojuegos
    Respuestas: 1
    : 07-03-2011, 18:14
  2. Respuestas: 10
    : 30-01-2010, 01:15
  3. Como hacer que max y XSI sean amigos
    Por Sloft en el foro Programación y Scripts
    Respuestas: 14
    : 14-12-2008, 19:40
  4. Como hacer una animacio para dvd
    Por isi en el foro Animación y Rigging
    Respuestas: 0
    : 13-09-2008, 00:03
  5. Como hacer piel a una estructura de bones en 3dmax
    Por leonardoflores1976 en el foro Animación y Rigging
    Respuestas: 1
    : 02-06-2006, 19:18

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •