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
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.
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.
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.
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.
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.
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.
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!
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
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.
[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