New Member
★ Black Lounger ★
💻 Oldtimer
kk, i was recently asked by the BTL team to assign a few of their models. skiwan was worried that the tail on his ssj4 goku would be stuck in a static position due to the fact that under normal conditions you cannot add new bones to an existing skeleton without it messing with some other part of it, (within milkshape anyways) and screwing up all the animations associated with said skeleton.
there are many released models now that would benefit from new bones (cloth movement, facial movement etc, with minor editting to the animations of course for said movemet but the base animation will still be there)
so i had to find a way to modify a skeleton whilst keeping it compatible with all of the animations it originaly had, i had to use an old trick that is sometimes more trouble than its worth,... TEXT EDITTING. ive only had to do this once before, and i cheaped out on it way back then and not until recently did i master it ^^.
doing this you literally open the model up in notepad, (you can either open the reference smd or a ms3d ASCII file) and add the bones manually. while doing this you cannot see where the bones are being placed. so you have to save and import the model after every change
first step,
A) if its an SMD file you dont need to do anything else, just import it for reference for when you add your bones
B)if its an ms3d or other, export it to .smd or MS3D ASCII
second,
scroll down you will see some lines like this, (note im using an smd file for this, the ascii layout is different but the numbers are the same IIRC)
next you will see some lines like this
are we good? if not you messed something up, (if your working from ASCII you have to make sure the # of bones matches up, theres a value for it somewhere)
now is the fun part, (im only gonna show the values from the new bones from now on). your going to need to modify each one of those bones until they are in the proper position, (this could take you up to an hour)
ya know what im just gonna cheap out on this part cuz im not 100% sure which values control what, i just changed a number saved and imported each time to verify that it was going in the right direction ^^.
(i should note that you should give each extension off of the main skeleton its own parent bone, and leave the parent bone where it is, makes animating from it alot easier)
change one of the main numbers, (leave the numbers behing the decimal alone until you know what your doing)
if the bone is not in the proper position DO NOT try to move it there within milkshape, this will adjust the rest of the skeleton and screw up its compatibility with all the existing animations
now just assign the model to the skeleton just as you normally would, (it still keeps the assignments as well but only for the old bone setup)
if you did everything properly, you should have a model in milkshape that has all of its required bones and is 100% compatible with all of its original animations, (short of the animations applied for the new bones, but anybody that can understand even half of this tutorial probabaly knows how to edit animations to include said movement)
a few things you should know before calling it finished
when you compile a half life model it deletes ALL bones that do not have any verts assigned to them, unless its child bone (a bone that came from it) has something assigned to it as well. keep that in mind if you NEED that extra bone for anything else
example, if you have a 3 section tail, and you only have stuff assigned to the first 2 sections it will delete the third automatically. and though this wont effect the model's animations, if you should decide you want that bone back later your gonna wish you had it else you will have to go through all this craop again ^^.
there are ways to keep a bone there without seemingly assigning anything to it, (well you will, you just wont see it)
create a cube, delete all but 1 side of it. and assign that side to the bone you want to keep, then collapse it, assign a material to it so it will export and compile, the bone will still be there and the faces assigned to that bone will be so small you cant see them ^^.
(i may have forgotten a few things so pop me some questions if you have any),
there are many released models now that would benefit from new bones (cloth movement, facial movement etc, with minor editting to the animations of course for said movemet but the base animation will still be there)
so i had to find a way to modify a skeleton whilst keeping it compatible with all of the animations it originaly had, i had to use an old trick that is sometimes more trouble than its worth,... TEXT EDITTING. ive only had to do this once before, and i cheaped out on it way back then and not until recently did i master it ^^.
doing this you literally open the model up in notepad, (you can either open the reference smd or a ms3d ASCII file) and add the bones manually. while doing this you cannot see where the bones are being placed. so you have to save and import the model after every change
first step,
A) if its an SMD file you dont need to do anything else, just import it for reference for when you add your bones
B)if its an ms3d or other, export it to .smd or MS3D ASCII
second,
scroll down you will see some lines like this, (note im using an smd file for this, the ascii layout is different but the numbers are the same IIRC)
obviously this is the list of the bones in the model, (note the bottom 8 which were added by me for skiwans goku, this is how you should add them) the # in front is what determines where the bone is on the list, the 2nd # at the end determines its parent bone, (where the new bone comes from, like the head bones parent bone is the neck bone, etc) BUT this is only half the battle, you still have to tell milkshape where to put the bones0 "Bip01" -1
1 "Bip01 Pelvis" 0
2 "Bip01 L Leg" 1
3 "Bip01 L Leg1" 2
4 "Bip01 L Foot" 3
5 "Bip01 R Leg" 1
6 "Bip01 R Leg1" 5
7 "Bip01 R Foot" 6
8 "Bip01 Spine" 1
9 "Bip01 Spine1" 8
10 "Bip01 Spine2" 9
11 "Bip01 Spine3" 10
12 "Bip01 Neck" 11
13 "Bip01 Head" 12
14 "Bip01 L Arm" 12
15 "Bip01 L Arm1" 14
16 "Bip01 L Arm2" 15
17 "Bip01 L Hand" 16
18 "Bip01 R Arm" 12
19 "Bip01 R Arm1" 18
20 "Bip01 R Arm2" 19
21 "Bip01 R Hand" 20
22 "Bip01 Tail 0" 1
23 "Bip01 Tail 1" 22
24 "Bip01 Tail 2" 23
25 "Bip01 Tail 3" 24
26 "Bip01 Hair0" 13
27 "Bip01 Hair1" 26
28 "Bip01 Hair2" 27
29 "Bip01 Hair3" 28
end
next you will see some lines like this
this is what tells milkshape where to put the bones, note that the bottom 8 (the new bones) are all zeros. this will result in all 8 of those bones being in the exact same position, clearly this isnt your goal but save the file and reimport it to verify that the bones actually exist on the model.0 0.058462 0.092041 9.881530 1.570796 0.000000 0.000000
1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2 0.928314 -0.000001 0.000000 -1.537008 0.882286 3.141592
3 0.000000 0.000000 4.511430 -0.077307 0.093828 0.000000
4 0.000000 0.000000 4.399392 -0.598513 1.036417 3.141592
5 -0.928314 0.000001 0.000002 1.540815 0.617424 0.000000
6 0.000000 0.000000 4.511431 0.104110 0.073825 0.000000
7 0.000000 0.000000 4.399399 0.823419 0.908307 3.141592
8 0.000000 0.323418 0.171119 -1.457333 0.000114 0.000000
9 0.000000 0.000000 1.327421 -0.070007 0.000000 0.000000
10 0.000000 0.000000 1.206698 -0.095908 0.000199 0.000000
11 0.000000 0.000000 1.448192 0.018141 0.000000 0.000000
12 0.000000 0.000000 1.665579 0.000000 0.000000 0.000000
13 -0.000117 -0.232318 0.455974 0.058126 0.000539 0.000000
14 1.085646 0.015078 -0.865206 -3.141353 1.370989 3.141592
15 0.000000 0.000000 1.206808 -0.034167 1.262015 0.000000
16 0.000000 0.000000 2.784940 0.199998 0.000714 0.000000
17 0.000000 0.000000 2.578650 0.000000 0.000000 0.000000
18 -1.034948 0.014067 -0.798331 -3.141583 1.370604 0.000000
19 0.000000 0.000000 1.243013 0.034149 1.270743 0.000000
20 0.000000 0.000000 2.896338 -0.199999 0.000687 0.000000
21 0.000000 0.000000 2.531763 0.000000 0.000000 0.000000
22 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
23 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
24 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
25 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
26 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
27 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
28 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
29 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
are we good? if not you messed something up, (if your working from ASCII you have to make sure the # of bones matches up, theres a value for it somewhere)
now is the fun part, (im only gonna show the values from the new bones from now on). your going to need to modify each one of those bones until they are in the proper position, (this could take you up to an hour)
ya know what im just gonna cheap out on this part cuz im not 100% sure which values control what, i just changed a number saved and imported each time to verify that it was going in the right direction ^^.
(i should note that you should give each extension off of the main skeleton its own parent bone, and leave the parent bone where it is, makes animating from it alot easier)
change one of the main numbers, (leave the numbers behing the decimal alone until you know what your doing)
try this29 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
and see which way it moves it. and keep doing that to every bone til it everything is in its proper place.29 4.000000 0.000000 0.000000 0.000000 0.000000 0.000000
if the bone is not in the proper position DO NOT try to move it there within milkshape, this will adjust the rest of the skeleton and screw up its compatibility with all the existing animations
now just assign the model to the skeleton just as you normally would, (it still keeps the assignments as well but only for the old bone setup)
if you did everything properly, you should have a model in milkshape that has all of its required bones and is 100% compatible with all of its original animations, (short of the animations applied for the new bones, but anybody that can understand even half of this tutorial probabaly knows how to edit animations to include said movement)
a few things you should know before calling it finished
when you compile a half life model it deletes ALL bones that do not have any verts assigned to them, unless its child bone (a bone that came from it) has something assigned to it as well. keep that in mind if you NEED that extra bone for anything else
example, if you have a 3 section tail, and you only have stuff assigned to the first 2 sections it will delete the third automatically. and though this wont effect the model's animations, if you should decide you want that bone back later your gonna wish you had it else you will have to go through all this craop again ^^.
there are ways to keep a bone there without seemingly assigning anything to it, (well you will, you just wont see it)
create a cube, delete all but 1 side of it. and assign that side to the bone you want to keep, then collapse it, assign a material to it so it will export and compile, the bone will still be there and the faces assigned to that bone will be so small you cant see them ^^.
(i may have forgotten a few things so pop me some questions if you have any),