I've got this fairly complex setup of a tom-tom drum here. My goal is to be able to scale the drum to different sizes and have the models around it scale and move into position as required, so that a simple scale operation gives me different sizes of drum that don't look out of proportion.
Here is the main body of the drum (called a drum shell in real life). It is parented to an empty plain axes which is positioned at the centre of the drum itself. The body of the drum and the plain axes have their origin points at the centre of the drum too.
And the following is one of the drum lugs on the outside of the drum shell.
There is just one object here, but it is duplicated using an array and a mirror modifier. The array modifier creates the duplicates around the body of the drum, and the mirror modifier creates a duplicate set of those for the bottom of the drum. This way I can model a single lug and place it around the drum multiple times.
The lug is parented to a plain axes object (called the lug multiplier point in my scene), which is at the centre of the drum with a origin that is also at the centre of the drum. The array modifier for the lug also uses this as an object offset. This way, I can rotate this plain axes object in order to better position the lug duplicates around the drum - by dividing their count by 360 to get the Z-axis rotation value.
All of those elements are here:
The same thing happens with the lug tension rod, and the lug holes on the drum hoop, as in the following image:
Finally, I have the drum shell, drum skin, and drum hoop all parented. The hoop and skins are mirrored also, to create their relevant counterparts on the bottom of the drum.
So all of this works pretty well. I can change the number of lugs, tension rods, and hoop lug holes easily enough. I can also scale the drum and change the size of the hoop and skins along with the shell.
What I now want to do is be able to change the positions of the outer elements when scaling the drum, so that everything maintains it's proportion - the outer elements should not scale their size, they should just change position. I can't quite get this to work.
I've tried parenting the lug to the drum shell using object parenting but that just links position and scale. I've also tried parenting the lug to a vertex on the drum body. But I get a very odd result where the lug positions are completely out of whack. I think that's to do with the array modifier. I just can't figure this out.
Anyone got any advice on how to essentially shift the original lug elements across the X axis, away from it's origin point so that it maintains its distance from the outer shell? I'd like to do this based on scaling the shell if possible.
If I edit the lug in edit mode and shift the vertices manually across the X axis, then I get the repositioning behaviour I want.