"(does anybody use bone scaling?)"

BlitzMax Forums/MiniB3D Module/"(does anybody use bone scaling?)"

Sake906(Posted 2010) [#1]
I'd like to point out something about this particular quote in the minib3d readme, which formerly goes as the following:

* Bone scaling (does anybody use bone scaling?) not supported yet


What's within the brackets appears to be a sarcastic question or some sort of thing; let me tell you that minib3d is perhaps the best choice I see for beginning a new videogame project out of blitz3D and onto something better, but this remark, or at least the attitude about the lacking feature, needs to be corrected.

I know bone scaling, when coupled with hierarchy, is not a thing to do since bones parented to the one being scaled will have their scales altered and such will grow worse as the hierarchy that follows the altered bones gets more complex.

However, bone scaling for "floating" and single bones without any child structures is actually extremely useful for parts such as the elbows of characters (where you place a floating bone that rotates and scales up and down to prevent pinching as the arm bends) and with more creativity, you can use them for things like facial expressions (the cartoony type, stretch and squash anyone?)

I'd like to see more consideration put into this, since the quote from the readme that's subject of this thread makes it seem like it shouldn't be looked into, when it is actually something of importance to many of us.


Kryzon(Posted 2010) [#2]
I agree. It's very useful for making a "pumping"-kind of motion too, just oscillate the scale in two axes.
However, I do not have the time to implement that myself, and if it's a feature someone really demands, he might as well put it himself (or else, deal with the time he'll have to wait until a good soul does it).

Last edited 2010


SLotman(Posted 2010) [#3]
MiniB3D is open source and free. The author has the right to do or comment anyway he wants, and implement whatever he seems fit.

Saying something like "this comment is sarcastic and the attitude must be corrected" isn't helping in any way on a "feature request".


jhocking(Posted 2010) [#4]
Whenever you read something and assume it is being said sarcastically, try re-reading but without assuming sarcasm and see if it still makes sense. If it does still make sense, then the writer probably wasn't being sarcastic and you just need to lighten up.

In this case for example, it's a straightforward yes-or-no question and so my default assumption is that he genuinely doesn't know the answer and is wondering. Incidentally, I don't know the answer to this question either so I'm curious.

Last edited 2010


Sake906(Posted 2010) [#5]
Hey it wasn't my intention to mean it was negative sort of sarcasm (if given the case), since it is true bone scaling is not common and sometimes unadvised in certain programs for the reasons I stated.

The answer to his question is "yes, some people need bone scaling" and the whole reason for this topic.

Last edited 2010

Last edited 2010


Kryzon(Posted 2010) [#6]
Bone scaling is always an useful feature, please include it!

Last edited 2010


Sake906(Posted 2010) [#7]
Any clues where exactly on the code this could be looked? I would give it a try if I knew where and share it; I have been looking at many of the lib files (entity, pivot, bone, animation if I remember correctly).


Kryzon(Posted 2010) [#8]
Sure thing. Check the TAnimation.BMX file, line 36.
You'll see...
' position
Which processes the bone's position keys. Then, in line 101...
' rotation
Which processes the bone's rotation keys. A scale processing should be added - and I think that would have to be between the 'position and 'rotation blocks.

The good thing is that the B3D mesh loader located in the TModel.BMX file does read the scale keys information for each of the bones; it's just that TAnimation never actually uses it (as we have just seen above).
We need to add this 'scale part so the animated\interpolated scale information is stored in each bone's matrix for each individual frame.
I can't think of the equations necessary for this right now (my mind would melt) - I'm sure it's not more complex than interpolating keys based on the current time, and storing that in the sx, sy and sz fields of the TBone(bent) instance.

Last edited 2010


Kryzon(Posted 2010) [#9]
Double effing post.

Last edited 2010