Gracias Gracias:  1
Resultados 1 al 4 de 4

Tema: Como hacer para que los bones sean flexibles

  1. #1
    Senior Member 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 se como colocar los bones, para que sean flexibles (estirar y contraer). Hasta ahora el rigg lo tengo hecho pero con splines que hacen las veces de bones, pero no se 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,911

    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 pos = lastBone.transform[4] -- get the position of the last bone. 
     local xDir = lastBone.transform[1] -- get the vector of the X point.
     
     local startPoint = pos + 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].pos thePoints[2].pos 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 = LookAt_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.stoUpAxis = 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:off axisTripod:off size:1
     theCnt.parent = thePoints[i]
     theBone = boneSys.createBone thePoints[i].pos thePoints[i+1].pos thePoints[i].transform[3]
     append theCnts theCnt 
     append theBones theBone 
     )
     
     theNub = makeNubBone theBones[theBones.count]
     theNubCnt = point transform:theNub.transform box:on cross:off axisTripod:off 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 = LookAt_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.stoUpAxis = 2 
     )
     
     for i = 2 to theBones.count do
     (
     theBones[i].parent = theBones[i-1]
     ) 
    )
    
    else messageBox "Please 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
    Senior Member 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
    Senior Member 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 probe, men muchsimas gracias!!! eres un teso!! en el tema

    Pero tengo una pregunta, el max no tiene esa opcion? yo no se donde vi eso, ó no se si lo soñe o que jejeje

Temas similares

  1. como hacer escenarios para fs9
    Por rafaelreyes1988 en el foro Videojuegos
    Respuestas: 1
    Último mensaje: 07-03-2011, 18:14
  2. Respuestas: 10
    Último mensaje: 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
    Último mensaje: 14-12-2008, 19:40
  4. como hacer una animacio para dvd
    Por isi en el foro Animación y Rigging
    Respuestas: 0
    Último mensaje: 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
    Último mensaje: 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.
  •