I am currently trying my hand at rigging a virtual delta 3D printer in Blender.
In it, the position of the central sphere (the printer's "nozzle") should be determined by the z-position of the three surrounding cubes so that, whenever one of them moved, the nozzle would position itself accordingly, as if there actually were rigid rods (represented above by bones) connecting them.
To that end, I have tried using three limit distance constraints on the nozzle, each tied to one of the cubes.
This setup doesn't seem to behave properly, however, as
The constraints do not do that good a job at keeping the nozzle at a fixed lenght from all the cubes, even when only one of them is translated along z.
More alarmingly, if I select all the cubes and translate them upwards, the nozzle actually changes its position relative to them (see the nozzle's skewed motion path in the gif below). One would think that only the relative distances between the objects would matter, but it doesn't seem to be the case after transforms.
- Only when, after a translation, I try to move the misplaced nozzle "by hand" (that is, by pressing G myself), the nozzle snaps back to the position in which it was actually supposed to be. This seems to indicate Blender actually is capable of calculating its correct position but fails to update it properly.
I understand that the stacked nature of Blender's constraint system, coupled with numerical error, might be responsible for some of this, but is there a workaround? Am I doing something fundamentally wrong? Is there a better way to rig such a system (without resorting to scripting, preferably)?