HIT Forums

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: [MilkShape] SMD Adjust Key Tools  (Read 5847 times)

0 Members and 1 Guest are viewing this topic.

Blood Surfer

  • Gargantua
  • *******
  • Offline Offline
  • Posts: 716
    • View Profile
[MilkShape] SMD Adjust Key Tools
« on: February 04, 2007, 04:10:48 PM »

I'm back again for a new tuto
(Yea that's the second I’m making and that's enough to use «new» now stop reading things between brackets ... stop I said)

In this tuto I will use barney model with hgrunt's running animation for my examples but of course it works with all models.

You don't really need great skills about modelling and animating just some word that's enough

   This time I’m gonna explain the use of a Milkshape's tool that's nobody seems to know:
The SMD Adjust Key tool (what are you waiting for applaud? Louder! Louder I said!!)

“What the hell is this tool used for?” You’re gonna ask:
   Well first of all say it properly don't need to be rude (FFS), secondly this tool is used in animation to “move” a joint or the whole frame in a sequence on a part of a sequence. Why did I put quote? Because when I say move, you are probably thinking of a translation right? Well this tool can do much more, in fact it can:
   -Move (translation)
   -Rotate (rotation ^^)

First of all you need to know a few things. To locate all the element in his virtual space Milkshape use coordinates, for example the position of  the vertex A in the virtual space is located on 1 on X, 2 on Y and 0,5 on Z  which is mathematically wrote (1.2.0,5) (see fig1 to understand)


If you' are not stupid, you have notice the point 0, located on (0,0,0) this point is called the reference it's needed to give value to the coordinate of A, and needed to angle the graph.
In Milkshape you can see the reference, which is call world reference (see fig2)


Get it? Simple isn’t it? Now for something more complicated (BOOM! Those who understand this one get a cookie)
In our problem the vertex is a joint and penguin is in chocolate (hmmm chocolate penguin). And joints got a lot of difference with vertex. First of all they are organised in tree (yea like the green thing you can found in nature, you know outside ...), for those who don't know what is a tree organisation here is an example (the other should read too to be sure)


Here I’m gonna call A, B, C, D and E joints (this way you are going to understand in the easiest way that links with Milkshape).
So A is a joint as you can see he is link with B and C, is also linked to D and E cause of the link between C and D and C and E. A is the parent of B and C because of those two link, so C is the parent of D and E, and so D and E are child of A but A is not the parent of D and E. Why in this way will you told me? Why B can't the parent of A because of the representation, A is above B so it's his parent. So if A is the parent of B,B is the child of A. A joint that has no child is called a leaf. You should also know that a joint can have one and only one parent, but it could have multiple children.

Now for the link with Milkshape:


In the example you can notice the joints ID tag and Spine1, ID tag is the child of Spine1, as you can see half of the skeleton is green, that's the way Milkshape use to show children of the joint you have selected

Something you must know is that joints coordinates don't refer to the world reference but they refer to their respective parent' s location, this is why when you are moving a bone in Milkshape all the bones in green are following. So if every joint coordinate refers to his parent location so that do mean that each joint got his own reference in case is going to have a child (see fig 5)


What about the first joint that don't have a parent ? It's simple it refer to the world reference ^^

If you looked properly the screenshot i made (you didn't of course because you think you know everything about Milkshape hey? No of course you don't and me either, now look the picture!), so if you looked properly you may have notice that reference are different from joint reference to world reference besides the different colour for axis, it's also not oriented in the same way, why? Simply because the joint's reference refer to the locations of all is child to point itself (see fig6)

Here you can see that the joint Bip01 R Calf point Bip01 R Foot (easiest with a picture ^^)
What about childless joint will you ask? They are simply pointing like their parent

Get it? Great ^^ (if not: sorry but I couldn't help, you know I’m just a bunch of bites organised to form a text, it's not well paid job but i actually like it)

Now that you know how the skeleton is organised in Milkshape, let's get back on how the how to use SMD adjust key (remember you read all of this just for this part =P)

Before we start toying around with the tool you must know that you mustn’t be in animation mode (yea it's an animation tool that you can't use while animating) because when you are going to close the tool's windows the skeleton will get back into its original position (like when you are in modelling mode) but the mesh won't follow. This problem don't screw up the animation it-self but it's a bit hard to work with a so weird model (see fig7).


Other things to know about the smd adjust key tool are that you must have an animation loaded (even the smaller one) if you don't Milkshape will crash pathetically.

Now that you’ve got your model and your animation let's playing with the tool.

First move: the move (translation)
   Well I don't think I have to explain what a translation is, right? I do?? Ok let's do this fast:
Remember vertex A? (See fig1) now imagine that A's coordinates are no more (1.2.0, 5) but (2.1.0, 5) (see fig8)


Well to simplify A has been translate of (1.-1.0) (green arrow)

Well with the move on this tool it's the same idea, you will only have to give the translation's value, like this you don't need to know the coordinate of your joint!
How to proceed? Simple select the joint you want to translate, switch into modelling mode and then animate->SMD Adjust Key you should have this window (see fig9)


Now if you had understand all the things i said before you know that every value in space refer to something (a reference for example =P), our reference here is not the reference of the joint (see fig6) it's his parent's reference, i know it's seem pretty strange but in fact it's a marvellous idea
 As you can see there are many things on the window:
   -XYZ are values for the translation
   -Start and End define the part of the sequence when you want the move take effect

Be careful with the value you are going to use in Milkshape on Half-life proportion, a translation of (1.0.0) will throw the joint far away (try you will understand).

   Now for an example. We want to use the running animation of the Romka's hgrunt V6 on this poor barney who can't run with a rifle (T_T), so we have import the model and the anim and you have stop laughing about the way barney look with this anim, so we can clean this mess, let's start with extra joints, with importing a animation from hgrunt Milkshape had add extra-joints (because barney's skeleton don't have all the joints hgrunt has) they are useless you could simply delete them or let Milkshape do it by himself when compiling. Now for anim modification let's start on a simple joint Bip01 L Calf, it has a parent Bip01 L Thigh and a child Bip01 L Foot (see fig10).


Now you can see that the calf his too close from the thigh, so we need to push it away. Quit animation mode, select the joint and start the SMD Adjust Key, try many value until it looks something more human (you are too lazy? Try with those value X=0, 01 Y=0 Z=0, 04). As you can see the joint is in correct position on each frame (see fig11)


Better isn't it? ^^
Do this with all the bone and it should look like decent (see fig12)

The conversion you can see hasn't only been made with move (translation), you will have to rotate some joints too (yea hand are crossing :-/)

A little trick by the way, note all the values you founded, like this if you try to convert an other anim from the same model values won't changes (yea they won't =D), and no I won't give you the values I found for hgrunt->barney find them yourself, it's better for you.

Second option: Rotation
Now let's see how to use rotate. First how does a rotation works, let's be simple:


As you can see on fig13 we have a reference and a point A (which is near something like (3.1.0)). So we want to rotate A with an angle of 90° (in metric system =P) referred to world reference on Y. You didn't understand a thing? Normal, in fact we are going to rotate the point A around Y axis of an angle of 90° (see fig14)


New A's coordinates are (0.1.3), (You should notice that when you are rotating around an axis, part of the coordinate that refer to the axis don't change during the rotation, in our example Y value in coordinates don't change => (3.1.0) -> (0.1.3) see ? )
Now that you know what a rotation is, how is it working with the SMD Adjust Key, well it's working like the translation, reference is the joint's parent's reference (witch is a shame) and value are pretty (they said that it should be in degree but their degree are weird since when rotate of  1 you have something like 90° at the end O_o)

Third option: the copy one
Nothing much to say here, simply select a joint and the SMD Adjust Key will copy the animation of this joint (this joint and only this one !) to the frame you have set (see fig15)


Fourth option: the delete one
Pretty strange one since it deletes all the frames between the value Start and the value End

Fifth option: the insert one
Simple one too, it will copy all the frames between Start and End and put them at the end the animation, adding some frames (copy I said frames between Start and End will still be there)

Last one the reverse
My favourite one ^^ the tool will reverse the frames order between Start and End

To conclude:
   I know that I wrote lot of theory here but it was necessary to really understand the tool.

Things to remember

   -Don't forget to choose a joint
   -Don't forget to be in modelling mode
   -Ctrl+Z is your best friend (the only one for some people =P)
   -Note the values
   -Don't be afraid to try, you don't risk anything as long as you don't accidentally push Ctrl+S

   I hope you have learn something while reading this, please don't be afraid to send me creations/conversions you made with this tool ^^, and don't be afraid to criticize this tutorial (criticize I said to try to issue)

   A special thanks to Erosion84 who correct my English mistake and to Benky90 who don't do anything for this tutorial but who is great friend.
« Last Edit: February 24, 2007, 09:58:51 PM by The zxeno prophet »


  • Used fists to take down a
  • Alien Grunt
  • ******
  • Offline Offline
  • Posts: 232
  • Widdly Widdly Widdly
    • View Profile
Re: [MilkShape] SMD Adjust Key Tools
« Reply #1 on: February 21, 2007, 04:38:56 AM »

Nice Job, I'll need this in the future


  • Converter
  • Gonarch
  • ********
  • Offline Offline
  • Posts: 1164
  • Greed
    • View Profile
Re: [MilkShape] SMD Adjust Key Tools
« Reply #2 on: February 24, 2007, 03:49:11 PM »

Very useful :)

Honestly, I think this needs to be stickied.

Blood Surfer

  • Gargantua
  • *******
  • Offline Offline
  • Posts: 716
    • View Profile
Re: [MilkShape] SMD Adjust Key Tools
« Reply #3 on: February 24, 2007, 10:00:57 PM »

I had just correct a litle mistake with fig9  :P