|
|
|
Tell us what you think of the site.
|
Autodesk Media & Entertainment User Community
|
Autodesk® 3ds Max®
|
|
Autodesk® Maya®
|
|
Autodesk® Softimage®
|
|
Autodesk® MotionBuilder®
|
|
Autodesk® Mudbox™
|
|
Autodesk® ImageModeler™
|
|
Autodesk® Sketchbook® Pro
|
|
Autodesk® Smoke on Mac®
|
|
hey guys,
we had a little rigging problem and found no solution for it.
we have to animate a part of a really complex clock mechanism, and there are all kinds of gears inside the mechanism.we got all working beside this one.we really need thats all is working like in reality and we have alot of such sector gears thats only covering some degree with teeths.
please have a look at the attached pic…

so if the big one rotates 360 degree the little runs 360 also but only when the big ones hits the little one of course, if not it is still and wainting for the new round...;)
have anybody a idea or did a similar rig in past projects?
many thanks
cu
jens
__________________
Jens Hedrich
CEO | 3deutig
animation | visual effects
http://www.3deutig.com
|
|
|
|
Use a link constraint...on when the teeth are engaged...off when they are not.
And don’t “imbed” the image attach it…you will get a better response because people can “see” your post.
3ds Max 9 thru 2013
Windows 7 Enterprise 64-bit OS SP1
Dual Intel® Xeon® 6 core X5650 @ 2.67GHz CPU 36GB RAM
NVIDIA Quadro 4000
450GB HDD (x3) and 2TB HDD
3ds Max 2012 Certified Professional Models to Motion
|
|
|
|
I have an idea, but I’m a Maya guy, so I don’t know how to do it in Max.
Basically, use the Reaction controller to let the big gear drive the little gear.
(Here’s the Max part that I don’t know how to set up)
Let each 345 degrees of rotation of the big gear rotate the little gear 315 degrees. But make sure that all of the 315 degrees of rotation of the small gear happen in the first 105 degrees of the big gear’s rotation.
So, you’ll want them started aligned like in image 1.
Then you’ll want them aligned like in image 2.
The big gear has rotated 105 degrees. The small gear -315 degrees.
Then you’ll want to align the gears like in images 1 again, but with the big gear rotated 360 degrees, but the small gear not rotated any further than in image 2 (-315 degrees).
Then cycle this relationship. That way, you can key the big gear, and it will drive the small gear appropriately. (see video)
|
|
|
|
I’m having difficulty attaching the images.
“Image 1” is the initial point where the first big gear starts driving teeth on the little gear
“Image 2” is the point where the last big gear tooth stops driving the little gear teeth.
|
|
|
|
I have an idea.
Create Point01. Create Point02 and link it to Point01. The goal here is to establish a rotation reference to the rotation of Point02. Link your master gear to Point02.
Now create a ExposeTM (Create > Helpers) and set “Expose Node” and “Local Reference Node” attributes to Point01 and Point02 respectively.
Now you can read the value of the Local Euler Angles between this two points. Note that it goes from -180 to 180 independent of “absolute” rotation values that you may see in the main gear rotation controllers.
If you build a float script controller in the axis rotation of the slave gear, you could write something like this:
if(Local Euler Angles < -90) then
(
- Local Euler Angles * 3; // inverts the rotation and apply the diameter ratio of the 2 gears (assuming 3:1)
)
else
(
Maintain Rotation; //this is the tricky one. I’m now investigating some method to increment and maintain a certain value in a script controller.
)
The logic is that the slave gear will only change values when the ExposeTM reads from -180 to -90 standing still between -90 to 180. (assuming 1/4 of the master gear has teeth).
The real challenge here is to accumulate the slave gear rotation and maintaining it along the master gear rotation.
|
|
|
-----------
An if statement will be needed but it will not be that easy. If you are driving it with Euler angles they will not be the same on each rotation. A bit of math could be used to solve that. Script controllers will be needed for this sort I setup. The next issue will be the small gear. With an if statement the small will pop each time it comes around to start again. Again you are going to have to calculate a little more you can’t just use the rotation value of the large one.
I have not tried any of this so I don’t have the full answer for you. I don’t know if it helps at all as it is just a simple gear tutorial and doesn’t cover your problem but it might give you some ideas.
Paul Neale
-----------
thanks to the tips, we already used paul´s setup and formula for the normal gears and all is working really good, we also used for that sector gear a exposetransform that give us values thats we could used in a reaction float controler, this works also great, but like paul said, the little gear is jumping from eg. 360 to zero and for theese little setup of 2 gears all would be fine, but in our case we have a huge amount of gear and controlled object after that 2 gears so all is flipping after one round...any idea to get rid of it?
thanks!
|
|
|
|
|
Yes go to 359 not 360...360=0 but from the other side...?
Author: Doughboy12
|
| Replied: 12 January 2012 07:56 AM
|
|
|
|
|
Did you finally get this working?
Problem with popping the gear back to zero each time it rotates you will get problems with motion blur each time it happens.
Using ad additive process where you store the last value and add it in can cause the problem that skipping to a frame instead of going through each frame will cause an incorrect result as well. It would work well if you didn’t mind baking the solution.
Without trying it I would think that there is math that would do the trick. We have a know rotation amount for both so we should be able to solve when and at what value the small gear needs to be at any given rotation of the large one. We know that we can get the value of each rotation as we can divide by 360 to get the divisor and then work out what the amount of rotation should be for the small gear am where it should rotate.
Can you send me that model?
Paul Neale
PEN Productions Inc.
penproductions.ca / paulneale.com
Master Classes for Max, Mudbox and Composite
DotNet Tutorials
MX Driver Car and Trailer Rig On Sale!
|
|
|
|
Here is the solution.
I placed a script controller on the small gears Z_Rotation track and properly froze transforms on the objects that are being animated.
Script Controller:
--Driver = input from the master gear as angles --Multi = Number of rotations the master has made --endRange = Max rotation of Master gear that affects driven gear
Angle = mod Driver 360
Multi = Driver as integer/360
endRange = 120 if Angle>=0 and Angle<=endRange then (
--When engaged with teeth
((degToRad -Angle)*24.0/8)+((degToRad -360)*24.0/8*Multi)
)else
(
--When NOT engaged with teeth
((degToRad -endRange)*24.0/8)*(Multi+1)
)
The idea is that on each rotation the small gear will hold a value that is the max value of the angle (endRange) multiplied by the number of rotations.
It could all be simplified but I wanted to leave it as the full math as it might be easier to pick apart if you see exactly what is going on.
EDIT:
I just noticed it is still not quite right. As it keeps getting extra rotation added each time it starts rotating but it is exactly the right amount to keep it engaged as it is a full rotation.
Paul Neale
PEN Productions Inc.
penproductions.ca / paulneale.com
Master Classes for Max, Mudbox and Composite
DotNet Tutorials
MX Driver Car and Trailer Rig On Sale!
|
|
|
|
I think this is right.
Angle = mod Driver 360
Multi = Driver as integer/360
endRange = 120
offSet = ((degToRad -endRange)*24.0/8)*(Multi)
if Angle>=0 and Angle<=endRange then (
((degToRad -Angle)*24.0/8)+offSet )else
(
offSet )
Only issue I see with what I have so far is that it doesn’t work in negative values.
Paul Neale
PEN Productions Inc.
penproductions.ca / paulneale.com
Master Classes for Max, Mudbox and Composite
DotNet Tutorials
MX Driver Car and Trailer Rig On Sale!
|
|
|
|
Many Thanks Paul, works like a charm!
such little lines of code make people soo happy..;)
have a nice day.
cu,
Jens
|
|
|
|
|
|