Home Technical Talk

3ds Max constraint questions

Krisonrik
polycounter lvl 17
Offline / Send Message
Krisonrik polycounter lvl 17
I'm trying to animate a rotor of a helicoptor. What I want to achieve is a more close to realistic mechanics of how the rotor works. The blades need to be able to tilt individually effected by a control arm. I got as far as getting them all working with a lookat constraint on the tip of the control arm, but I can't get the whole rotor to tilt in the same director as the helicoper does because the lookat constraint locked down the rotation of the blade. So I slap a rotation constraint on there to let the blades follow the same angle of tilt that the main body does, but now the lookat constraint no longer works. Is there anyway to make them both work at the same time? Picture the scene where the helicoper is flying and it will yaw, pitch and roll in all directions, and while it's doing that, the each individual blades will have to be able to tilt on it's own to effect the lift and direction. So the constraints has to work together and not alternatively. I'm pulling my hair out trying to figure this out. Please give me some pointers. Thanks in advance.

Replies

  • MoP
    Offline / Send Message
    MoP polycounter lvl 18
    Surely a regular "Select and Link" will do this?
    You'd just need a proper hierarchy... like this:
    Main helicopter body -> Central rotor pillar -> Each rotor

    That way you can animate the helicopter body to control the overall motion, have a spinning animation on the rotor pillar (which automatically transfers down the hierarchy to the rotor blades) and then just do the individual axial tweaks on each rotor.

    Really doesn't seem that complicated to me?

    If that doesn't solve it, please post a screenshot or a paintover of what you're trying to achieve, because a wall of text like you posted here can easily be misinterpreted.
  • monster
    Offline / Send Message
    monster polycounter
    rotlist.png

    I don't totally understand what you are explaining, mainly because I have no idea how a helicopter actually works. But you can have 2 rotation controllers operating on the same object at once.

    First apply a Rotation List Controller in the motion panel or track view. Then change the 1st sub controller to LookAt. Then click available and pick the next type of controller you want.
  • Mark Dygert
    Pictures would help greatly...
  • crazyfingers
    Offline / Send Message
    crazyfingers polycounter lvl 10
    An FFD modifier might worfk if you parented it to the body of the helecopter and had it only affect only the blades.

    Example: Helicopter is straifing right, just lower the FFD box on the right side and raise it on the left, the blades should adjust accordingly as the rotate within the FFD box.
  • Krisonrik
    Offline / Send Message
    Krisonrik polycounter lvl 17
    Sorry about no screen shot... my job has certain rules and I can't do an original screen shot. But I came home and did a mock up with simple polygon blocks to present the concept.
    Rotor_Mock_up.jpg
    The Wobble plate will rotate in all axis. And the wobble plate drives the control arm to move up and down. The blade that can only rotate around y axis will be driven by that arm to have a small degree of rotation. Arm moves up, the blade rotate clockwise and while the arm moves down the blade rotate counter clockwise along y-axis. The center pillar will spin everything along z-axis. So my problem came when I use the lookat constraint to transfer the movement of the tip of the control arm into the rotation of blade. But that constraint stopped other rotation controller from working. So when the helicopter tilts in different direction, the blade stays horizontal and won't rotate along.
  • Mark Dygert
    How about use use Wire Parameters or Reaction Manager to rotate the blade on Y when the control arm moves on Z or the wobble rotates?
  • Krisonrik
    Offline / Send Message
    Krisonrik polycounter lvl 17
    Well the problem with the wire parameter is that wire parameter control local position and rotation. And the control arm is controlled by the wobble plate so it won't have any local value change and thus can not drive the blade rotation. The reason I can't manually manipulate is because the wobble plate will rotate in all directions and there are 5 control arms controlling 5 blades and each of them will constantly be changing and the whole ting will be spinning at 240 rpm. Just to clear up, the wobble plate is what the pilot uses to control where the copter goes, so the plate will stay tilt in certain direction and still spin on it's local z axis. That will make each arm constantly moving up and down. I guess right now it comes to whether I can find another way to drive the blade rotation without using lookat constraint. Are there any other ways to convert the control arm's vertical world z axis movement into the blade's local y rotation. Thank you everyone for replying so fast. Deeply appreciated.
  • Mark Dygert
    Yea that won't work I just started messing around with it. I'm to the point where you're stuck. The problem I'm having is that X and Y factor into the rotation of the blades Y.

    I've to stop for the night, but the next thing I'm going to try when I get some time is to create a path spline constrain it with a look at like the control arm. Then path constrain a dummy to the path spline. Then use the X/Y rotation of the wobble panel to drive the % along path. There has to be some kind of node that handles the math... have to research that later... Then use the % along path to drive the blades Y rotation.
  • Krisonrik
    Offline / Send Message
    Krisonrik polycounter lvl 17
    Thanks Vig, but your idea complete lost me >.<;; I'm a mediocre modeler... complete noob when it comes to rigging. Thanks for trying, you rule.
  • cw
    Offline / Send Message
    cw polycounter lvl 17
    wow that was quite gnarly. i will post my rig later today. scripted controller is the way forward!
  • Mark Dygert
    Yea that's a bit crazy, it still needs an expression or like wallasaurus said a scripted rotation controller, which I was trying to get around. If you're going that route it can be boiled down a lot simpler.

    Writing a scripted controller is where things get fuzzy for me and a little complex.

    I dug up a few things online and I know a few people I can ask questions and eventually get something that works, but it looks like wallasaurus has it covered.
  • cw
    Offline / Send Message
    cw polycounter lvl 17
    ok its a messy scene as i was tring out a bunch of things and havent tidied up. also its not 100% good yet as the arm thing slides through the attachment point on the rotor.

    I'm no rigging expert so this was a fumbling in the dark type of affair. It has piqued my interest though so I will try more tomorrow.

    hope it's useful!

    http://rapidshare.com/files/254719091/ROTOR04C.max.html

    [edit] yeah its more fiddly than i thought! damn! might be worth emailing paul neale or checking out some rigging forums elsewhere for some tips. I always seem to end up getting a circular link somewhere which flips things out.

    note to self - practise more rigging!
  • cw
    Offline / Send Message
    cw polycounter lvl 17
    ok so I hate when some thing like this gets my back up so I went and sorted it out properly. I blame too much wine and a fuzzy head yesterday for such a bumbled effort.

    Here's a properly working version! Still messy but at least it actually works!

    The crux is a few dummies per rotor which are driven by the waggle arm thingy and form a right angled triangle, the holy grail of inferring a rotation. then a simple scripted controller on the rotor's y axis makes it line up nicely. :) huzzaH!

    one day i will make pretty looking art again, but until then I will troubleshoot and schedule my way to victory and fat bonuses. :)

    Hope this helps you.
    http://rapidshare.com/files/254919709/ROTOR04E.max.html
  • Mark Dygert
    I haven't looked at the latest one only the previous. That's awesome, so extract rotation and plug it in wire parameters as a float, brilliant, nice work. I'll have to remember that, it probably gets used all over the place in rigging complex mechanical things.

    Pen was the first place I hit when I started researching it, his extract rotation using scripted controllers looked promising. Paul is a really great guy too, helped me out with a few noobish maxscript questions, very gracious.

    I'll check out this latest version sounds pretty solid, the test will be getting more rotors working with the same method, only do it on my own!

    Cool little challenge, I'm glad you nailed it so I can keep learning instead of hit a brick wall.
  • cw
    Offline / Send Message
    cw polycounter lvl 17
    if you get stuck again I can try to help more. I'm noobish though so don't expect miracles. :)
  • Krisonrik
    Offline / Send Message
    Krisonrik polycounter lvl 17
    I tried out the rig, but the rotor blades are not driven by the control arm. Are you sure it works? The rest was working as it should.
  • cw
    Offline / Send Message
    cw polycounter lvl 17
    did you try the second one?

    [edit] ah i think i might know what you mean - if you are wiggling it in the viewport it will appear not to work because its based on a scripted controller which seems to only evaluate on keyframed nodes - try scrubbing the time slider and you should see it going. I'm not sure if it can be made interactive without noodling with callbacks which is a bit beyond me - still hope this helps somehow. Lemme know if you can see it working when you move the time slider.

    cheers!

    cw
  • Krisonrik
    Offline / Send Message
    Krisonrik polycounter lvl 17
    Thanks Wllasaurus, the time slider works alright. But the script thing is beyond me and I do not know how to replicate that at work for the real rig. But no worries, I think I found out the interactive way which works in the view port. 2 words IK. I use bone and IK to replace the lookat constraint.
  • cw
    Offline / Send Message
    cw polycounter lvl 17
    nice! glad you got it working. :)
Sign In or Register to comment.