Twisty Stretchy IK Spline - Rigging a subway train handle

Поділитися
Вставка
  • Опубліковано 23 лис 2024

КОМЕНТАРІ • 17

  • @Metarig
    @Metarig 9 днів тому +1

    When a rigger says they're lazy, it actually means they're an expert.

  • @nikapavlova3598
    @nikapavlova3598 2 роки тому

    daaaaaaaang this is good
    I love how you explain what the nodes do as well, it finally makes more sense to me

    • @animationpandemic
      @animationpandemic  2 роки тому +1

      Thanks, I am really glad you have found the explanation clear!

  • @MANIAKRA
    @MANIAKRA 7 місяців тому

    Fantastic walkthrough, thank you

  • @davidhallows2389
    @davidhallows2389 2 роки тому

    Very cool! Managed to set up a lovely hot air balloon rig with my students, thankyou! The link to Daniel Franco's Curve to joints MAYA vid (with the details of how to get the script to load) goes to Bob's vid, thought I'd mention.

  • @brandonjacksoon
    @brandonjacksoon 3 роки тому +2

    Thanks dude!

  • @workingme8368
    @workingme8368 3 роки тому +1

    Thanks for this tutorial!!!!!!!🤠

  • @Firelordoli
    @Firelordoli 2 роки тому

    very good tutorial, thanks

    • @animationpandemic
      @animationpandemic  2 роки тому

      Thanks for taking the time to let me know you liked it!

  • @ULvE
    @ULvE Рік тому

    How to bake this animation to joints that i can export it for game later? I tried usual way but, my skinned mesh gets unbind in the process.

  • @davidhallows2389
    @davidhallows2389 2 роки тому

    Hey Amedeo. Bit of a noob question, but my curve stays as a straight line when I manipulate it, after the joints are created. I can't seem to get it to bend as yours does at 3.50. Thanks.

    • @davidhallows2389
      @davidhallows2389 2 роки тому

      I got it, all good :)

    • @animationpandemic
      @animationpandemic  2 роки тому

      Hi David, sorry, I am just now coming out of a super busy time.

    • @ashleyknehans4442
      @ashleyknehans4442 Рік тому

      How did you get this to work? Struggling to figure it out now

    • @davidhallows2389
      @davidhallows2389 Рік тому

      @@ashleyknehans4442 Sorry, it was a while ago now and I've switched to Blender. Best of luck.

  • @justicemkumba8139
    @justicemkumba8139 Рік тому

    i was too lazy as well, and look at what chatgpt did to your Python snippet to connect multiply divide to joints. no need to type in the script editor, just drop down options, Very smart 😀😀😀 thank you very much for the tutorial
    import maya.cmds as cmds
    import maya.mel as mel
    driven_attributes = ['translateX', 'translateY', 'translateZ', 'rotateX', 'rotateY', 'rotateZ', 'scaleX', 'scaleY', 'scaleZ']
    output_options = ['outputX', 'outputY', 'outputZ']
    def get_multiply_divide_nodes():
    multiply_divide_nodes = cmds.ls(type='multiplyDivide')
    return multiply_divide_nodes
    def populate_driving_nodes_menu():
    multiply_divide_nodes = get_multiply_divide_nodes()
    cmds.optionMenu(driving_node_menu, edit=True, deleteAllItems=True)
    for node in multiply_divide_nodes:
    cmds.menuItem(parent=driving_node_menu, label=node)
    def refresh_ui(*args):
    global driving_node_menu
    populate_driving_nodes_menu()
    cmds.optionMenu(driving_node_menu, edit=True, select=1) # Set the default selection to the first item
    def connect_attributes(dummy=None):
    global driving_node_menu, driving_attr_menu, driven_attr_menu
    driving_node = cmds.optionMenu(driving_node_menu, q=True, value=True)
    driving_attr = cmds.optionMenu(driving_attr_menu, q=True, value=True)
    driven_attr = cmds.optionMenu(driven_attr_menu, q=True, value=True)

    sel = cmds.ls(sl=True)
    for each in sel:
    cmds.connectAttr(driving_node + '.' + driving_attr, each + '.' + driven_attr)
    def create_ui_window():
    if cmds.window("attributeConnectionWindow", exists=True):
    cmds.deleteUI("attributeConnectionWindow", window=True)
    cmds.window("attributeConnectionWindow", title="Attribute Connection", widthHeight=(400, 150))
    cmds.columnLayout(adjustableColumn=True)

    global driving_node_menu, driven_attr_menu, driving_attr_menu
    cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 100), (2, 300)])

    cmds.text(label="Driving Node", align="right")
    driving_node_menu = cmds.optionMenu(width=280, annotation="Select Multiply Divide Node")
    populate_driving_nodes_menu()

    cmds.text(label="Driving Attribute", align="right")
    driving_attr_menu = cmds.optionMenu(width=280, annotation="Select Driving Attribute")
    for option in output_options:
    cmds.menuItem(label=option)

    cmds.text(label="Driven Attribute", align="right")
    driven_attr_menu = cmds.optionMenu(width=280)
    for attr in driven_attributes:
    cmds.menuItem(label=attr)

    cmds.setParent("..")

    cmds.button(label="Connect Attributes", command=connect_attributes)
    cmds.button(label="Refresh", command=refresh_ui)

    cmds.setParent("..")
    cmds.showWindow("attributeConnectionWindow")
    # Run the UI creation function
    create_ui_window()