Custom Bone Object Size Problem

Hello,

Hope everyone is well. This is my first post on here so I wanted to say hello before I start.

I’m new to Blender and I have run into a problem with using a custom object to represent a bone. I have put the name of my object into the bone properties and the bone changes to the object I have selected but it is far too big. Its much bigger than the bone and the original model by about 50 times I would say.

Any help would be appreciated.

Thanks
Dan

Hey DanMarionette,

To change the scale/orientation of a bone shape object, you can scale/rotate the vertices of the shape object in edit mode.

Hi,
Thanks for your reply. I’m affraid I don’t understand what you mean. In edit mode it just resizes the bone itself.
Just to make it clear its not the bone i want to resize but just the,
“Object that defines custom draw type for this Bone”(tool tip)

Many Thanks
Dan

I meant resize the object itself… the one you created intially to define the shape. Not in the armature, separate from it. Select the object, tab into edit mode, and manipulate the verts to get the shape you want :slight_smile:

Yes I see what you mean now. I cleared the scale then scaled the verts in edit mode like you said. What puzzled me was that this is the second object I’ve used for a bone. The first seemed to adopt the size of the bone itself. I assume it doesn’t do this though.
Also I tried resizing the object in object mode with no luck. Edit mode did the trick though.

Thanks for your help

Dan

Yeah, the size of the bone itself will also effect the display size of the widget for that bone. You can think of the bone as being the local space for the display widget. The scale of the bone is determined by the distance between the head and the tail.

Correct, transforming the shape in object mode doesn’t change the display in any way. To understand why this is, you can think of the mesh node (verts/edges/faces) as being a child of the object node. The object represents the location and scale of that mesh - it is a placeholder… but in the case of widgets, the shape information is being obtained from the mesh node. So the object information is entirely separate (except when you apply transforms, since the changes will then propagate down to the mesh node).

An unrelated interesting thing about this is that you can even switch out one mesh for another, by connecting a different mesh data block to another object node. In fact, this is what happens when you create a ‘linked duplicate’, multiple object nodes are created which all use the same mesh node. So any changes made to the mesh of one, are reflected in all of them. The objects simply allow you to scale/translate/rotate them differently.

Just wanted to elaborate, because I find it is very useful to understand these things. :slight_smile:

I couldn’t agree with you more. I am very much someone who likes to understand how things work. “It works because it does” just isn’t enough for me. Which unfortunatly is why puzzles me slightly. It still feels slightly unpredicatble which at the end of the day you can’t completely trust.

Basically the stage I’m at now is I selected the object to represent the bone then in the original object edit mode, selected all the verts and scaled it down. I could see the bones “version” resizing in realtime. I have now scaled it to match the size of the bone. Now if I add it to other bones in the armature or create new bones in new armatures if I use that same object now it scales to match the bone size perfectly no matter how big or small I make the bones. Its almost as if it required the object to be a certain size to begin with and now it can be scaled to match any bone i choose. This is the bit that puzzles me? Why did it need resizing to begin with? Is it something I did during the creation of the object? Is their a size the objects have to begin with? Its this initial size adjustment that still seems without an answer. Granted I could just accept that it works now but I tried creating another object and the same thing happens. I feel I need to get to the bottom of this.

Well, if the distance between the head and the tail of the bone is exactly 1 unit, then the scale of the object and the widget will be exactly the same (try creating a new armature, and applying the shape to the default bone). Depending on the scale of your bone relative to the size of a default object, you’ll usually have to scale the widget up or down. Since the sizes of the bones in a character will almost always be widely varied, it is almost always necessary to scale atleast some of the widgets if not all.

Remember the bone is referring to the mesh node for the widget, in the same way an object node does - that is, it is used as the local space for the mesh data of the widget. In the same way that linked duplicates have 2 object nodes referring to the same mesh node, in this case the bone and the object both refer to the same mesh node. Scaling the bone will effect the local size of the mesh in the same way scaling the object will.

Also, the shape will often need to be rotated 90 degrees… atleast every time the bone is aligned vertically. When the bone is running in Z or up/down, the local Z axis of the bone is pointing horizontal (which is 90 degrees from global Z). So that is why you need to rotate the object 90 degrees for those bones.

I didn’t expect such in depth discussion to stem from this question, this is fun :smiley:

Thanks for you help. I appreciate your detailed answers.
After a bit more experimenting I have the answer. And its now really simple.
Create an object along the world Y axis of exactly 1 unit in length. (reset the scale just to make sure)
And thats it. From my tests that will resize to any bone of any size and orientation.

Thanks again Feel Good for helping me to the answer.