# Precise Mechanical Rigging (Intuitive method)

https://youtu.be/86DtgBiUDvI

Hi, I have done this using the y-rotation of the Blue rod to drive its z-location. The Top rod is driven by the z-location of the Blue rod.

As you can see, the animation looks imprecise, and the calculation behind it is also not intuitive (for one, the reverse control using asin(x) does not work). Sure I could tweak things to fit, but I'm instead looking for some method to precisely rig these bodies intuitively. So far I have known these methods for mechanical rigging: a) Constraints b) Drivers c) Armatures and d) Physics.

My questions:

a) Is there any way to actually rig (complexity does not matter) by simply constraining the bodies wrt each other without actually calculating any of the mechanics of motion that the setup will entail?

b) Are there other methods that I have not mentioned above.

Thanks.

Note: I do not need a complete solution, just some useful directions and/or resources will suffice.

After a lot of trial and error here's what I could come up with. It is not perfect and will glitch out at extreme cases, but otherwise works for the most part.

It relies on a system of three empties and relations between them.

• The $Start$ $Empty$ - Has a Location constraint to prevent it from going anywhere away from $-0.90$ to $0.90$ in the $X$ axis

• The $End$ $Empty$ - Has a Location constraint to prevent it from going anywhere away from $-0.90$ to $0.90$ in the $X$ axis and $0.2$ to $1.8$ in $Z$ direction. Additionally it as a Limit Distance constraint set to On Surface preventing it go further away than $1.8$ from $Start$ $Empty$

• Lastly $Tracking$ $Empty$ is parented to $Start$ $Empty$ and has a locked track to the $End$ $Empty$.

• The $Upper$ $Arm$ also has a Copy Location on $Z$ axis only from $End$ $Empty$so it keeps position correctly automatically

• Thanks. This was not exactly what I am trying to achieve, but it helped a lot. I think I'll be able to expand from here. – Log Apr 21 '17 at 6:44

This solution is actually kind of a hybrid of the other two answers.

The main Spherical empty drives the rotating bar's x position by a range via a driver.

The base point of the rotating bar is at the bottom of the bar (as seen when it is vertical.)

The other empty is set opposite to the basepoint, and parented to this bar.

The top horizontal bar is set to copy the "Y" location of the parented empty.

The rotating bar has a constraint to match that of the main spherical empty.

Lastly the spherical empty just has a Z-Rotation constraint to limit the min/max to -174.5°/-5.5° respectively.

This solution is not accurate, as it does not obey the cosine/sine ratios. It is strictly linear based on angular rotation of the empty.

Easy enough fix:

The overall bar dimensions in my case are 2.0 units overall.

So the radius (1.0 in my case) is super easy for me in the driver.

just replace the driver formula listed with this:

FOUND IT

The basics of it:

The empties of the scissor hinge were left in the same location, less the center one as it was no longer needed.

The top Left one was parented to the one on the bottom right of the scissor assembly.

The top bar's y location follows the top left empty's y location with the copy location constraint.

The bottom right one then gets two contraints to follow the rig below as follows:

it uses the copy rotation and copy location (x) contraints targeted to the empty directly below it.

The rig at the bottom is just three empties the Parent being the one the forms the 90° degree corner point amongst them.

• Actually, this is exactly the method I used to create my demo. I drove the z-location of the central rod (C) with the (length of C)*sin(y-rotation of C). I've mentioned this in the question. – Log Apr 21 '17 at 6:53
• I believe that there may be a constraint that could solve this and get rid of the driver in this solution. I need to experiment a little more though. I'll append the answer if I can find anything good. – Rick Riggs Apr 21 '17 at 13:44

This answer is (partially) a cheat!!

The relative movement is correct, but the bottom rod is moving and the above gif is done moving the camera.

Without the camera, here is the result:

How it is done:

• The top empty is parented to 3 of the top vertices of the white rod
• Same principle for the bottom empty with the bottom vertices of this rod

• Each horizontal bar (blue and green), have a driver constraint: their Z position is assigned to the corresponding empty Z position

This is all for the rod/bar movements...

Now the camera which is faking the vertical stability: its own vertical (Z) position is constrained by the bottom empty:

• I'm sorry, but this won't work for me. This mechanism is part of a bigger structure and I need mechanical fidelity. Anyway, the "3 vertices" idea was pretty helpful. Thanks. – Log Apr 21 '17 at 6:58