PlayerModel on a different skeleton (Not VALVe skeleton)
15 replies, posted
Hello all, I would like to know how to make a playermodel with same animations and all but on a .mdl that isn't a VALVe skeleton. For instance, I tried making a playermodel out of a Zelda ragdoll, here's the result;
1st: it's not facing the good direction and is facing my right instead of in front of me
2nd: it stays like the "Jesus pose"
here's some images
So here's what I tried making
[img]http://gyazo.com/708428b3ebe24bd61e85a50f9b7701d6.png[/img]
Which comes up like that
[img]http://gyazo.com/6c64b0f9ffa53b7a95d046959e484ab6.png[/img]
And here it is on me, in gm_construct on the mirror
[img]http://gyazo.com/0b609e54ef1064fac904d94754b75b37.png[/img]
here's the .qc of the .mdl (This is the one I didn't edit/removed things)
[CODE]$cd "C:\Users\Anthony\Desktop\DM"
$modelname "Link/Link4.mdl"
$model "link" "link'09.smd" {
flexfile "mdldecompiler_expressions.vta" {
flex "open" frame 2
flex "wideopen" frame 3
flex "r_lowbrowraise" frame 4
flex "l_lowbrowraise" frame 5
flex "r_eyeclose" frame 6
flex "l_eyeclose" frame 7
flex "r_smile" frame 8
flex "l_frown" frame 9
flex "r_frown" frame 10
flex "l_smile" frame 11
flex "l_upperbrow" frame 12
flex "r_upperbrow" frame 13
flex "r_browup" frame 14
flex "l_browup" frame 15
flex "r_lipcurl" frame 16
flex "l_lipcurl" frame 17
flex "yell" frame 18
flex "r_browdown" frame 19
flex "l_browdown" frame 20
flex "upperlidraiser" frame 21
flex "l_lidraiser" frame 22
flex "r_lidraiser" frame 23
flex "r_sneer" frame 24
flex "l_sneer" frame 25
flex "lipspart" frame 26
flex "GK" frame 27
flex "AW" frame 28
flex "T" frame 29
flex "EE" frame 30
flex "UH" frame 31
flex "DS" frame 32
flex "N" frame 33
flex "ER" frame 34
flex "EH" frame 35
flex "OO" frame 36
flex "OH" frame 37
flex "PP" frame 38
flex "WQ" frame 39
flex "MB" frame 40
flex "AE" frame 41
flex "AH" frame 42
flex "FV" frame 43
flex "SH" frame 44
flex "Y" frame 45
}
eyeball righteye head -1.754 -4.893 62.404 eyeball_r 2.000 -1.000 r_eyeball 2.260
eyeball lefteye head 1.754 -4.893 62.404 eyeball_l 2.000 1.000 l_eyeball 2.260
// If you uncomment the following lines the eyes will be closed
// I'm including it anyway in case anyone wants to experiment
// eyelid upper_right "mdldecompiler_expressions.vta" lowerer 1 0.000000 neutral 1 0.000000 raiser 1 0.000000 split 0.1 eyeball righteye
// eyelid lower_right "mdldecompiler_expressions.vta" lowerer 48 0.000000 neutral 48 0.000000 raiser 48 0.000000 split 0.1 eyeball righteye
// If you uncomment the following lines the eyes will be closed
// I'm including it anyway in case anyone wants to experiment
// eyelid upper_left "mdldecompiler_expressions.vta" lowerer 46 0.000000 neutral 46 0.000000 raiser 46 0.000000 split -0.1 eyeball lefteye
// eyelid lower_left "mdldecompiler_expressions.vta" lowerer 48 0.000000 neutral 48 0.000000 raiser 48 0.000000 split -0.1 eyeball lefteye
flexcontroller phoneme blank "range" 0.000 1.000
flexcontroller phoneme open "range" 0.000 1.000
flexcontroller phoneme wideopen "range" 0.000 1.000
flexcontroller phoneme r_lowbrowraise "range" 0.000 1.000
flexcontroller phoneme l_lowbrowraise "range" 0.000 1.000
flexcontroller phoneme r_eyeclose "range" 0.000 1.000
flexcontroller phoneme l_eyeclose "range" 0.000 1.000
flexcontroller phoneme r_smile "range" 0.000 1.000
flexcontroller phoneme l_frown "range" 0.000 1.000
flexcontroller phoneme r_frown "range" 0.000 1.000
flexcontroller phoneme l_smile "range" 0.000 1.000
flexcontroller phoneme l_upperbrow "range" 0.000 1.000
flexcontroller phoneme r_upperbrow "range" 0.000 1.000
flexcontroller phoneme r_browup "range" 0.000 1.000
flexcontroller phoneme l_browup "range" 0.000 1.000
flexcontroller phoneme r_lipcurl "range" 0.000 1.000
flexcontroller phoneme l_lipcurl "range" 0.000 1.000
flexcontroller phoneme yell "range" 0.000 1.000
flexcontroller phoneme r_browdown "range" 0.000 1.000
flexcontroller phoneme l_browdown "range" 0.000 1.000
flexcontroller phoneme upperlidraiser "range" 0.000 1.000
flexcontroller phoneme l_lidraiser "range" 0.000 1.000
flexcontroller phoneme r_lidraiser "range" 0.000 1.000
flexcontroller phoneme r_sneer "range" 0.000 1.000
flexcontroller phoneme l_sneer "range" 0.000 1.000
flexcontroller phoneme lipspart "range" 0.000 1.000
flexcontroller phoneme GK "range" 0.000 1.000
flexcontroller phoneme AW "range" 0.000 1.000
flexcontroller phoneme T "range" 0.000 1.000
flexcontroller phoneme EE "range" 0.000 1.000
flexcontroller phoneme UH "range" 0.000 1.000
flexcontroller phoneme DS "range" 0.000 1.000
flexcontroller phoneme N "range" 0.000 1.000
flexcontroller phoneme ER "range" 0.000 1.000
flexcontroller phoneme EH "range" 0.000 1.000
flexcontroller phoneme OO "range" 0.000 1.000
flexcontroller phoneme OH "range" 0.000 1.000
flexcontroller phoneme PP "range" 0.000 1.000
flexcontroller phoneme WQ "range" 0.000 1.000
flexcontroller phoneme MB "range" 0.000 1.000
flexcontroller phoneme AE "range" 0.000 1.000
flexcontroller phoneme AH "range" 0.000 1.000
flexcontroller phoneme FV "range" 0.000 1.000
flexcontroller phoneme SH "range" 0.000 1.000
flexcontroller phoneme Y "range" 0.000 1.000
flexcontroller phoneme blank2 "range" 0.000 1.000
%blank = blank
%open = open
%wideopen = wideopen
%r_lowbrowraise = r_lowbrowraise
%l_lowbrowraise = l_lowbrowraise
%r_eyeclose = r_eyeclose
%l_eyeclose = l_eyeclose
%r_smile = r_smile
%l_frown = l_frown
%r_frown = r_frown
%l_smile = l_smile
%l_upperbrow = l_upperbrow
%r_upperbrow = r_upperbrow
%r_browup = r_browup
%l_browup = l_browup
%r_lipcurl = r_lipcurl
%l_lipcurl = l_lipcurl
%yell = yell
%r_browdown = r_browdown
%l_browdown = l_browdown
%upperlidraiser = upperlidraiser
%l_lidraiser = l_lidraiser
%r_lidraiser = r_lidraiser
%r_sneer = r_sneer
%l_sneer = l_sneer
%lipspart = lipspart
%GK = GK
%AW = AW
%T = T
%EE = EE
%UH = UH
%DS = DS
%N = N
%ER = ER
%EH = EH
%OO = OO
%OH = OH
%PP = PP
%WQ = WQ
%MB = MB
%AE = AE
%AH = AH
%FV = FV
%SH = SH
%Y = Y
%blank2 = blank2
}
$model "grip" "grip.smd"
$model "grip" "UnknownModelName.smd"
$model "sheath" "sheathgroup.smd"
$model "sheath" "UnknownModelName.smd"
$model "shield" "hylianshield.smd"
$model "shield" "UnknownModelName.smd"
$cdmaterials "models\link\shadow\"
$hboxset "default"
$hbox 0 "pelvis" -25.673 -7.923 -1.959 4.518 5.313 8.465
$hbox 0 "l_thigh" -0.815 -1.231 -7.312 2.185 1.169 0.217
$hbox 0 "l_knee" -7.672 -1.415 -2.411 0.149 1.503 1.091
$hbox 0 "l_foot" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "r_thigh" -0.790 -1.169 -7.312 2.209 1.231 0.217
$hbox 0 "r_knee" -0.149 -1.480 -1.067 7.672 1.438 2.436
$hbox 0 "r_foot" -3.474 -15.012 -1.770 5.511 5.306 10.152
$hbox 0 "l_arm" -6.000 -0.700 -0.637 0.000 0.699 0.732
$hbox 0 "l_elbow" -7.528 -1.101 -1.023 0.000 1.106 1.142
$hbox 0 "ValveBiped.Bip01_L_Hand" -8.500 -3.645 -3.265 2.215 3.345 3.430
$hbox 0 "r_arm" 0.000 -0.701 -0.637 6.000 0.699 0.732
$hbox 0 "ValveBiped.Bip01_R_Hand" 0.000 -1.102 -1.023 7.529 1.105 1.142
$hbox 0 "spine" -19.750 -23.241 -5.173 19.767 11.265 23.728
$hbox 0 "head" -19.750 -23.241 -5.173 19.767 11.265 23.728
$hbox 0 "hat" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "joint1" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "hat2" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "hat3" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "hat4" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "bag" -3.498 -15.012 -10.152 5.487 5.306 1.770
$hbox 0 "bag2" -3.498 -15.012 -10.152 5.487 5.306 1.770
// Model uses material "link2.vmt"
// Model uses material "blade.vmt"
// Model uses material "link1.vmt"
// Model uses material "inside.vmt"
// Model uses material "link3.vmt"
// Model uses material "face.vmt"
// Model uses material "r_eye.vmt"
// Model uses material "r_eyewhite.vmt"
// Model uses material "l_eye.vmt"
// Model uses material "l_eyewhite.vmt"
// Model uses material "r_eyeball.vmt"
// Model uses material "glint.vmt"
// Model uses material "l_eyeball.vmt"
// Model uses material "grip.vmt"
// Model uses material "sheath.vmt"
// Model uses material "shield.vmt"
$attachment "eyes" "head" -0.01 3.82 3.26 rotate -80.00 -90.00 -0.00
$attachment "mouth" "head" 0.80 -5.80 -0.15 rotate 0.00 -80.00 -90.00
$surfaceprop "flesh"
$eyeposition -0.000 0.000 73.000
$illumposition -0.043 -0.144 34.730
$sequence idle "idle" fps 1.00
$collisionjoints "phymodel.smd" {
$mass 200.0
$inertia 10.00
$damping 0.01
$rotdamping 1.50
$rootbone "pelvis"
$jointmerge "spine" "chest"
$jointconstrain "bag" x limit -8.00 17.00 0.00
$jointconstrain "bag" y limit 0.00 0.00 0.00
$jointconstrain "bag" z limit -12.00 12.00 0.00
$jointconstrain "spine" x limit -26.00 26.00 0.00
$jointconstrain "spine" y limit -32.00 32.00 0.00
$jointconstrain "spine" z limit -15.00 15.00 0.00
$jointconstrain "l_arm" x limit -48.00 57.00 0.00
$jointconstrain "l_arm" y limit -91.00 73.00 0.00
$jointconstrain "l_arm" z limit -93.00 57.00 0.00
$jointconstrain "l_elbow" x limit -40.00 40.00 0.00
$jointconstrain "l_elbow" y limit -125.00 0.00 0.00
$jointconstrain "l_elbow" z limit 0.00 0.00 0.00
$jointconstrain "head" x limit -30.00 12.00 0.00
$jointconstrain "head" y limit -45.00 45.00 0.00
$jointconstrain "head" z limit -30.00 30.00 0.00
$jointconstrain "hat" x limit -6.00 35.00 0.00
$jointconstrain "hat" y limit -26.00 26.00 0.00
$jointconstrain "hat" z limit -15.00 15.00 0.00
$jointconstrain "joint1" x limit -26.00 23.00 0.00
$jointconstrain "joint1" y limit -26.00 26.00 0.00
$jointconstrain "joint1" z limit -30.00 30.00 0.00
$jointconstrain "hat2" x limit -21.00 32.00 0.00
$jointconstrain "hat2" y limit -26.00 26.00 0.00
$jointconstrain "hat2" z limit -25.00 25.00 0.00
$jointconstrain "hat3" x limit -30.00 30.00 0.00
$jointconstrain "hat3" y limit -15.00 15.00 0.00
$jointconstrain "hat3" z limit -25.00 25.00 0.00
$jointconstrain "hat4" x limit -23.00 23.00 0.00
$jointconstrain "hat4" y limit -15.00 15.00 0.00
$jointconstrain "hat4" z limit -25.00 25.00 0.00
$jointconstrain "r_arm" x limit -48.00 57.00 0.00
$jointconstrain "r_arm" y limit -73.00 93.00 0.00
$jointconstrain "r_arm" z limit -57.00 88.00 0.00
$jointconstrain "r_elbow" x limit -40.00 40.00 0.00
$jointconstrain "r_elbow" y limit 0.00 125.00 0.00
$jointconstrain "r_elbow" z limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_hand" x limit -44.00 44.00 0.04
$jointconstrain "valvebiped.bip01_r_hand" y limit -25.00 25.00 0.04
$jointconstrain "valvebiped.bip01_r_hand" z limit -30.00 40.00 0.04
$jointconstrain "valvebiped.bip01_l_hand" x limit -44.00 44.00 0.04
$jointconstrain "valvebiped.bip01_l_hand" y limit -25.00 25.00 0.04
$jointconstrain "valvebiped.bip01_l_hand" z limit -30.00 40.00 0.04
$jointconstrain "l_thigh" x limit -50.00 48.00 0.04
$jointconstrain "l_thigh" y limit -15.00 30.00 0.04
$jointconstrain "l_thigh" z limit -48.00 79.00 0.04
$jointconstrain "l_knee" x limit 0.00 105.00 0.00
$jointconstrain "l_knee" y limit 0.00 0.00 0.00
$jointconstrain "l_knee" z limit 0.00 0.00 0.00
$jointconstrain "l_foot" x limit -23.00 23.00 0.00
$jointconstrain "l_foot" y limit -15.00 15.00 0.00
$jointconstrain "l_foot" z limit -28.00 28.00 0.00
$jointconstrain "r_thigh" x limit -50.00 48.00 0.04
$jointconstrain "r_thigh" y limit -30.00 15.00 0.04
$jointconstrain "r_thigh" z limit -79.00 48.00 0.04
$jointconstrain "r_knee" x limit 0.00 105.00 0.00
$jointconstrain "r_knee" y limit 0.00 0.00 0.00
$jointconstrain "r_knee" z limit 0.00 0.00 0.00
$jointconstrain "r_foot" x limit -23.00 23.00 0.00
$jointconstrain "r_foot" y limit -15.00 15.00 0.00
$jointconstrain "r_foot" z limit -28.00 28.00 0.00
$jointconstrain "bag2" x limit -8.00 17.00 0.00
$jointconstrain "bag2" y limit 0.00 0.00 0.00
$jointconstrain "bag2" z limit -12.00 12.00 0.00
}
[/CODE]
Thank you in advance =)
To make another playermodel that isn't on valve skeleton, you'd need to create a set of animations for that skeleton. Which is why all playermodels are on the valve biped. (because it has animations)
Oh thank you,
but erm... how do I create a set of animations for that skeleton exactly? :s
You animate all the bones, which is a lot more work than simply rerigging the skeleton to the valve biped.
[QUOTE=Divize;44152303]Oh thank you,
but erm... how do I create a set of animations for that skeleton exactly? :s[/QUOTE]
Long story short, you don't.
You'd have to load up the skeleton in animation software like max/maya/blender and manually recreate each and every animation in the playermodel library more or less frame by frame on the new set of bones. Given the size of valve's library, that'd take weeks to months even for someone that is quite competent in biped/skeletal animations.
Aw... okay well thanks a lot for the quick answers :)
Edit: I heard there was something about Pac3... should I know anything about that?
[QUOTE=Divize;44152415]Aw... okay well thanks a lot for the quick answers :)
Edit: I heard there was something about Pac3... should I know anything about that?[/QUOTE]
It merely parents models to bones. It's not gonna make that model work.
Oh alright, thanks again.
[QUOTE=Stiffy360;44152452]It merely parents models to bones. It's not gonna make that model work.[/QUOTE]
It's going to make it work using different events.
Adding that to the list that "sounds like something Stiffy would say."
You have a few options:
1. Rig it to the Valve Biped.
2.Create animations by hand (this would take a long time so be warned).
3. Get someone to do it for you (depending on the person, you can get charged for it).
You might be able to make the animations with mocap if you have the money, software and time. For now, your model will only work as a ragdoll and not a player model since it doesn't have the animations and skeleton required.
I wish you good luck! :smile:
Looks like the easiest method would be to "Rig it to the Valve Biped"
Now how does one simply rig it to valve biped, since I have no idea what this is could I have a link on something useful? If I need a 3D program or whatsoever like that then don't bother since my laptop would be too slow to even try.
Thanks again =)
Well if it's already rigged, you could theoretically just take the existing weights and rename them to Valve ones.
But no matter what you're going to need a 3D editing program. Blender is a popular choice for beginners since it's free and relatively easy to pick up.
[QUOTE=SergerantJoe;44156419]Well if it's already rigged, you could theoretically just take the existing weights and rename them to Valve ones.
But no matter what you're going to need a 3D editing program. Blender is a popular choice for beginners since it's free and relatively easy to pick up.[/QUOTE]
You also need to pivot the bones so that they match the pivots from the Valve Biped.
I guarantee you the easiest solution would be to rig it on Valve's skeleton.
But be warned skeletons are spooky
[QUOTE=Stiffy360;44152452]It merely parents models to bones. It's not gonna make that model work.[/QUOTE]
It's possible but it's a lot of manual work.
You add a "bone part" to each bone on the non valve skeleton, then you add dummy models to every bone on the valve skeleton model.
[img]http://dl.dropbox.com/u/244444/ShareX/2014-03/2014-03-15_11-31-26.png[/img]
a more real example:
[img]https://dl.dropbox.com/u/244444/ShareX/2014-03/2014-03-15_11-35-59.png[/img]
Is it a good way/clean/proper way? Not at all. It's gonna be more efficient if you do it in a 3d modelling program like the people have suggested here.
But if you're curious on what it may look like then maybe you could try this.
Sorry, you need to Log In to post a reply to this thread.