I’ve been headhacking lately to gain some experiance in modeling, but I often bump into the problem that the head isn’t in the correct position, so instead of moving the head and fucking up the .vta’s, I moved the body, rigged it, modified the ragdoll ofcourse and the phymodel. When I spawn it as a ragdoll it works fine, but when I make it a NPC, something horrible exists…
Here he is all jolly and very homoseksually posed:
And here shit fucks up…
Anyone have a suggestion what to do?
QC:
$cd "E:\Users\Jasper\Modeling\RP\characters\utfmarine est"
$modelname "dakarun/testheadhack.mdl"
$model "studio" "test_reference.smd" {
flexfile "mdldecompiler_expressions.vta" {
flex "AU42" frame 5
flexpair "AU1" 1.0 frame 6
flexpair "AU2" 1.0 frame 7
flexpair "AU4" 1.0 frame 8
flexpair "AU1AU2" 1.0 frame 9
flexpair "AU12" 1.0 frame 10
flex "AU12AU25" frame 11
flexpair "AU15" 1.0 frame 12
flexpair "AU17" 1.0 frame 13
flexpair "AU10" 1.0 frame 14
flex "AU16" frame 15
flexpair "AU6" 1.0 frame 16
flexpair "AU9" 1.0 frame 17
flexpair "AU25" 1.0 frame 18
flexpair "AU18" 1.0 frame 19
flexpair "AU22" 1.0 frame 20
flexpair "AU20" 1.0 frame 21
flex "AU32" frame 22
flex "AU24" frame 23
flex "AU38" frame 24
flex "AU31" frame 25
flexpair "AU26" 1.0 frame 26
flexpair "AU27" 1.0 frame 27
flexpair "AU26Z" 1.0 frame 28
flexpair "AU27Z" 1.0 frame 29
}
eyeball righteye ValveBiped.Bip01_Head1 -1.360 -4.104 67.487 dark_eyeball_r 1.000 4.000 pupil_r 0.680
eyeball lefteye ValveBiped.Bip01_Head1 1.354 -4.104 67.479 dark_eyeball_l 1.000 -4.000 pupil_l 0.680
mouth 0 "mouth" ValveBiped.Bip01_Head1 0.000 1.000 0.000
flexcontroller eyelid right_lid_raiser "range" 0.000 1.000
flexcontroller eyelid left_lid_raiser "range" 0.000 1.000
flexcontroller eyelid right_lid_tightener "range" 0.000 1.000
flexcontroller eyelid left_lid_tightener "range" 0.000 1.000
flexcontroller eyelid right_lid_droop "range" 0.000 1.000
flexcontroller eyelid left_lid_droop "range" 0.000 1.000
flexcontroller eyelid right_lid_closer "range" 0.000 1.000
flexcontroller eyelid left_lid_closer "range" 0.000 1.000
flexcontroller eyelid half_closed "range" 0.000 1.000
flexcontroller eyelid blink "range" 0.000 1.000
flexcontroller brow right_inner_raiser "range" 0.000 1.000
flexcontroller brow left_inner_raiser "range" 0.000 1.000
flexcontroller brow right_outer_raiser "range" 0.000 1.000
flexcontroller brow left_outer_raiser "range" 0.000 1.000
flexcontroller brow right_lowerer "range" 0.000 1.000
flexcontroller brow left_lowerer "range" 0.000 1.000
flexcontroller nose right_cheek_raiser "range" 0.000 1.000
flexcontroller nose left_cheek_raiser "range" 0.000 1.000
flexcontroller nose wrinkler "range" 0.000 1.000
flexcontroller nose dilator "range" 0.000 1.000
flexcontroller mouth right_upper_raiser "range" 0.000 1.000
flexcontroller mouth left_upper_raiser "range" 0.000 1.000
flexcontroller mouth right_corner_puller "range" 0.000 1.000
flexcontroller mouth left_corner_puller "range" 0.000 1.000
flexcontroller mouth right_corner_depressor "range" 0.000 1.000
flexcontroller mouth left_corner_depressor "range" 0.000 1.000
flexcontroller mouth chin_raiser "range" 0.000 1.000
flexcontroller phoneme right_part "range" 0.000 1.000
flexcontroller phoneme left_part "range" 0.000 1.000
flexcontroller phoneme right_puckerer "range" 0.000 1.000
flexcontroller phoneme left_puckerer "range" 0.000 1.000
flexcontroller phoneme right_funneler "range" 0.000 1.000
flexcontroller phoneme left_funneler "range" 0.000 1.000
flexcontroller phoneme right_stretcher "range" 0.000 1.000
flexcontroller phoneme left_stretcher "range" 0.000 1.000
flexcontroller phoneme bite "range" 0.000 1.000
flexcontroller phoneme presser "range" 0.000 1.000
flexcontroller phoneme tightener "range" 0.000 1.000
flexcontroller phoneme jaw_clencher "range" 0.000 1.000
flexcontroller phoneme jaw_drop "range" 0.000 1.000
flexcontroller phoneme right_mouth_drop "range" 0.000 1.000
flexcontroller phoneme left_mouth_drop "range" 0.000 1.000
flexcontroller mouth smile "range" 0.000 1.000
flexcontroller mouth lower_lip "range" 0.000 1.000
flexcontroller head head_rightleft "range" -30.000 30.000
flexcontroller head head_updown "range" -15.000 15.000
flexcontroller head head_tilt "range" -15.000 15.000
flexcontroller eyes eyes_updown "range" -30.000 30.000
flexcontroller eyes eyes_rightleft "range" -30.000 30.000
flexcontroller body body_rightleft "range" -30.000 30.000
flexcontroller chest chest_rightleft "range" -30.000 30.000
flexcontroller head head_forwardback "range" -0.200 0.200
flexcontroller gesture gesture_updown "range" -1.000 1.000
flexcontroller gesture gesture_rightleft "range" -1.000 1.000
localvar upper_right_raiser
%upper_right_raiser = ( right_lid_raiser * (( 1.000 - ( right_lid_droop * 0.800)) * (( 1.000 - right_lid_closer) * ( 1.000 - blink))))
localvar upper_right_neutral
%upper_right_neutral = (( 1.000 - ( right_lid_droop * 0.800)) * (( 1.000 - right_lid_raiser) * (( 1.000 - right_lid_closer) * ( 1.000 - blink))))
localvar upper_right_lowerer
%upper_right_lowerer = ( right_lid_closer + ( blink * ( 1.000 - right_lid_closer)))
localvar upper_left_raiser
%upper_left_raiser = ( left_lid_raiser * (( 1.000 - ( left_lid_droop * 0.800)) * (( 1.000 - left_lid_closer) * ( 1.000 - blink))))
localvar upper_left_neutral
%upper_left_neutral = (( 1.000 - ( left_lid_droop * 0.800)) * (( 1.000 - left_lid_raiser) * (( 1.000 - left_lid_closer) * ( 1.000 - blink))))
localvar upper_left_lowerer
%upper_left_lowerer = ( left_lid_closer + ( blink * ( 1.000 - left_lid_closer)))
localvar lower_right_raiser
%lower_right_raiser = ( right_lid_closer + ( blink * ( 0.500 * ( 1.000 - right_lid_closer))))
localvar lower_right_neutral
%lower_right_neutral = (( 1.000 - right_lid_closer) * (( 1.000 - ( 0.500 * blink)) * (( 1.000 - ( right_lid_tightener * 0.500)) * ( 1.000 - ( right_cheek_raiser * 0.250)))))
localvar lower_right_lowerer
%lower_right_lowerer = 0.000
localvar lower_left_raiser
%lower_left_raiser = ( left_lid_closer + ( blink * ( 0.500 * ( 1.000 - left_lid_closer))))
localvar lower_left_neutral
%lower_left_neutral = (( 1.000 - left_lid_closer) * (( 1.000 - ( 0.500 * blink)) * (( 1.000 - ( left_lid_tightener * 0.500)) * ( 1.000 - ( left_cheek_raiser * 0.250)))))
localvar lower_left_lowerer
%lower_left_lowerer = 0.000
%AU1R = ( right_inner_raiser * (( 1.000 - right_outer_raiser) * ( 1.000 - right_lowerer)))
%AU1L = ( left_inner_raiser * (( 1.000 - left_outer_raiser) * ( 1.000 - left_lowerer)))
%AU2R = ( right_outer_raiser * (( 1.000 - right_inner_raiser) * ( 1.000 - right_lowerer)))
%AU2L = ( left_outer_raiser * (( 1.000 - left_inner_raiser) * ( 1.000 - left_lowerer)))
%AU1AU2R = ( right_inner_raiser * ( right_outer_raiser * ( 1.000 - right_lowerer)))
%AU1AU2L = ( left_inner_raiser * ( left_outer_raiser * ( 1.000 - left_lowerer)))
%AU4R = right_lowerer
%AU4L = left_lowerer
%AU6R = right_cheek_raiser
%AU6L = left_cheek_raiser
%AU9R = wrinkler
%AU9L = wrinkler
%AU38 = dilator
localvar right_open
%right_open = ( smile + (( right_part * ( 1.000 - smile)) + ( right_puckerer + ( right_funneler + (( right_upper_raiser * 0.500) + ( lower_lip * 0.500))))))
localvar left_open
%left_open = ( smile + (( left_part * ( 1.000 - smile)) + ( left_puckerer + ( left_funneler + (( left_upper_raiser * 0.500) + ( lower_lip * 0.500))))))
localvar right_lip_suppressor
%right_lip_suppressor = (( 1.000 / %right_open) * (( 1.000 - presser) * ( 1.000 - bite)))
localvar left_lip_suppressor
%left_lip_suppressor = (( 1.000 / %left_open) * (( 1.000 - presser) * ( 1.000 - bite)))
%AU10R = ( right_upper_raiser * ( right_upper_raiser * ( 0.500 * %right_lip_suppressor)))
%AU10L = ( left_upper_raiser * ( left_upper_raiser * ( 0.500 * %left_lip_suppressor)))
%AU25R = ( right_part * (( right_part * %right_lip_suppressor) * ( 1.000 - smile)))
%AU25L = ( left_part * (( left_part * %left_lip_suppressor) * ( 1.000 - smile)))
%AU12AU25 = ( smile * ( smile * ( 0.500 * ( %right_lip_suppressor + %left_lip_suppressor))))
%AU18R = ( right_puckerer * ( right_puckerer * %right_lip_suppressor))
%AU18L = ( left_puckerer * ( left_puckerer * %left_lip_suppressor))
%AU22R = ( right_funneler * ( right_funneler * %right_lip_suppressor))
%AU22L = ( left_funneler * ( left_funneler * %left_lip_suppressor))
%AU17R = ( chin_raiser * (( 1.000 - ( jaw_drop * 0.500)) * (( 1.000 - bite) * (( 1.000 - ( 0.600 * ( %AU25R + ( %AU18R + %AU22R)))) * ( 1.000 - smile)))))
%AU17L = ( chin_raiser * (( 1.000 - ( jaw_drop * 0.500)) * (( 1.000 - bite) * (( 1.000 - ( 0.600 * ( %AU25L + ( %AU18L + %AU22L)))) * ( 1.000 - smile)))))
localvar right_depressor_suppressor
%right_depressor_suppressor = (( 1.000 / (( %AU18R * 0.800) + (( %AU22R * 0.800) + ( %AU17R + ( bite + ( right_corner_puller + ( right_stretcher + right_corner_depressor))))))) * (( 1.000 - ( jaw_drop * 0.500)) * ( 1.000 - ( smile * 0.500))))
localvar left_depressor_suppressor
%left_depressor_suppressor = (( 1.000 / (( %AU18L * 0.800) + (( %AU22L * 0.800) + ( %AU17L + ( bite + ( left_corner_puller + ( left_stretcher + left_corner_depressor))))))) * (( 1.000 - ( jaw_drop * 0.500)) * ( 1.000 - ( smile * 0.500))))
%AU15R = ( right_corner_depressor * ( right_corner_depressor * %right_depressor_suppressor))
%AU15L = ( left_corner_depressor * ( left_corner_depressor * %left_depressor_suppressor))
localvar right_corner_suppressor
%right_corner_suppressor = (( 1.000 / (( %AU18R * 0.800) + (( %AU22R * 0.800) + ( %AU17R + ( bite + ( right_corner_puller + ( right_stretcher + right_corner_depressor))))))) * (( 1.000 - ( jaw_drop * 0.500)) * ( 1.000 - smile)))
localvar left_corner_suppressor
%left_corner_suppressor = (( 1.000 / (( %AU18L * 0.800) + (( %AU22L * 0.800) + ( %AU17L + ( bite + ( left_corner_puller + ( left_stretcher + left_corner_depressor))))))) * (( 1.000 - ( jaw_drop * 0.500)) * ( 1.000 - smile)))
%AU12R = ( right_corner_puller * ( right_corner_puller * %right_corner_suppressor))
%AU12L = ( left_corner_puller * ( left_corner_puller * %left_corner_suppressor))
%AU20R = ( right_stretcher * ( right_stretcher * %right_corner_suppressor))
%AU20L = ( left_stretcher * ( left_stretcher * %left_corner_suppressor))
%AU32 = bite
%AU24 = ( presser + (( 1.000 - presser) * tightener))
%AU31 = ( jaw_clencher * ( jaw_clencher / ( jaw_clencher + jaw_drop)))
localvar right_drop_suppressor
%right_drop_suppressor = (( 1.000 / (( 0.500 * %right_open) + right_mouth_drop)) * (( 1.000 - presser) * ( 1.000 - bite)))
localvar left_drop_suppressor
%left_drop_suppressor = (( 1.000 / (( 0.500 * %left_open) + left_mouth_drop)) * (( 1.000 - presser) * ( 1.000 - bite)))
localvar right_drop
%right_drop = ( right_mouth_drop * ( right_mouth_drop * %right_drop_suppressor))
localvar left_drop
%left_drop = ( left_mouth_drop * ( left_mouth_drop * %left_drop_suppressor))
%AU26R = ( jaw_drop * (( 1.000 - %right_drop) * ( jaw_drop / ( jaw_clencher + jaw_drop))))
%AU26L = ( jaw_drop * (( 1.000 - %left_drop) * ( jaw_drop / ( jaw_clencher + jaw_drop))))
%AU27R = ( jaw_drop * ( %right_drop * ( jaw_drop / ( jaw_clencher + jaw_drop))))
%AU27L = ( jaw_drop * ( %left_drop * ( jaw_drop / ( jaw_clencher + jaw_drop))))
%AU16 = ( lower_lip * (( lower_lip * ( 0.250 * ( %right_lip_suppressor + %left_lip_suppressor))) * ( 1.000 - ( 0.500 * ( %AU27R + %AU27L)))))
localvar mouth
%mouth = (( %AU27R * 0.500) + (( %AU27L * 0.500) + (( %AU22R * 0.350) + (( %AU22L * 0.350) + (( %AU18R * 0.250) + (( %AU18L * 0.250) + (( %AU25R * 0.350) + (( %AU25L * 0.350) + (( %AU32 * 0.500) + ( %AU12AU25 + ((( %AU27ZR + %AU27ZL) * ( 0.500 * 0.700)) + ( %AU16 * 0.400))))))))))))
}
$poseparameter move_yaw -180.00 180.00
$poseparameter body_pitch -90.00 90.00
$poseparameter body_yaw -90.00 90.00
$cdmaterials "models\player\utf_marine\"
$cdmaterials "models\Humans\Male\Group01\"
$cdmaterials "models\Humans\Male\"
$hboxset "default"
// Model uses material "utf_marine_diffuse.vmt"
// Model uses material "mouth.vmt"
// Model uses material "van_facemap.vmt"
// Model uses material "dark_eyeball_l.vmt"
// Model uses material "dark_eyeball_r.vmt"
// Model uses material "pupil_r.vmt"
// Model uses material "glint.vmt"
// Model uses material "pupil_l.vmt"
$attachment "grenade0" "ValveBiped.Bip01_Pelvis" 7.00 1.50 1.00 rotate -0.00 0.00 -80.00
$attachment "grenade1" "ValveBiped.Bip01_Pelvis" 7.50 1.50 -3.50 rotate -0.00 0.00 -80.00
$attachment "grenade2" "ValveBiped.Bip01_Pelvis" -7.00 1.50 1.00 rotate -0.00 0.00 -80.00
$attachment "grenade3" "ValveBiped.Bip01_Pelvis" -7.50 1.50 -3.50 rotate -0.00 0.00 -80.00
$attachment "pistol" "ValveBiped.Bip01_R_Thigh" 8.00 1.00 -3.50 rotate 0.00 -0.00 0.00
$attachment "primary" "ValveBiped.Bip01_Spine2" 0.00 -4.00 -2.00 rotate -0.00 -0.00 -0.00
$attachment "defusekit" "ValveBiped.Bip01_Pelvis" 0.00 1.50 -8.00 rotate -90.00 -90.00 0.00
$attachment "lfoot" "ValveBiped.Bip01_L_Foot" 0.00 5.00 -0.00 rotate -0.00 0.00 0.00
$attachment "rfoot" "ValveBiped.Bip01_R_Foot" -0.00 5.00 -0.00 rotate -0.00 -0.00 0.00
$attachment "muzzle_flash" "ValveBiped.Bip01_L_Hand" 0.00 0.00 0.00 rotate 0.00 -0.00 -0.00
$includemodel "humans/male_shared.mdl"
$includemodel "humans/male_ss.mdl"
$includemodel "humans/male_gestures.mdl"
$includemodel "humans/male_postures.mdl"
$includemodel "m_anm.mdl"
$includemodel "m_gst.mdl"
$includemodel "m_pst.mdl"
$includemodel "m_shd.mdl"
$includemodel "m_ss.mdl"
$includemodel "cs_fix.mdl"
$surfaceprop "flesh"
$eyeposition -0.000 0.000 73.000
$illumposition 4.248 -3.168 35.647
$sequence ragdoll "ragdoll" ACT_DIERAGDOLL 1 fps 30.00
$ikchain rhand ValveBiped.Bip01_R_Hand knee 0.707 0.707 0.000
$ikchain lhand ValveBiped.Bip01_L_Hand knee 0.707 0.707 0.000
$ikchain rfoot ValveBiped.Bip01_R_Foot knee 0.707 -0.707 0.000
$ikchain lfoot ValveBiped.Bip01_L_Foot knee 0.707 -0.707 0.000
$collisionjoints "phymodel.smd" {
$mass 94.0
$inertia 10.00
$damping 1.00
$rotdamping 10.00
$rootbone "valvebiped.bip01_pelvis"
$jointmassbias "valvebiped.bip01_pelvis" 2.60
$jointmassbias "valvebiped.bip01_spine1" 2.00
$jointconstrain "valvebiped.bip01_spine1" x limit -10.00 10.00 0.00
$jointconstrain "valvebiped.bip01_spine1" y limit -16.00 16.00 0.00
$jointconstrain "valvebiped.bip01_spine1" z limit -20.00 30.00 0.00
$jointmassbias "valvebiped.bip01_spine2" 2.40
$jointconstrain "valvebiped.bip01_spine2" x limit -15.00 15.00 0.00
$jointconstrain "valvebiped.bip01_spine2" y limit -12.00 12.00 0.00
$jointconstrain "valvebiped.bip01_spine2" z limit -20.00 20.00 0.00
$jointrotdamping "valvebiped.bip01_r_clavicle" 6.00
$jointconstrain "valvebiped.bip01_r_clavicle" x limit -15.00 15.00 0.00
$jointconstrain "valvebiped.bip01_r_clavicle" y limit -10.00 10.00 0.00
$jointconstrain "valvebiped.bip01_r_clavicle" z limit 0.00 45.00 0.00
$jointmassbias "valvebiped.bip01_l_clavicle" 2.00
$jointrotdamping "valvebiped.bip01_l_clavicle" 6.00
$jointconstrain "valvebiped.bip01_l_clavicle" x limit -15.00 15.00 0.00
$jointconstrain "valvebiped.bip01_l_clavicle" y limit -10.00 10.00 0.00
$jointconstrain "valvebiped.bip01_l_clavicle" z limit 0.00 45.00 0.00
$jointmassbias "valvebiped.bip01_l_upperarm" 0.80
$jointconstrain "valvebiped.bip01_l_upperarm" x limit -40.00 40.00 0.00
$jointconstrain "valvebiped.bip01_l_upperarm" y limit -20.00 91.00 0.00
$jointconstrain "valvebiped.bip01_l_upperarm" z limit -80.00 24.00 0.00
$jointmassbias "valvebiped.bip01_l_forearm" 0.60
$jointconstrain "valvebiped.bip01_l_forearm" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_forearm" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_forearm" z limit -123.00 -3.00 0.00
$jointrotdamping "valvebiped.bip01_l_hand" 1.00
$jointconstrain "valvebiped.bip01_l_hand" x limit -25.00 25.00 0.00
$jointconstrain "valvebiped.bip01_l_hand" y limit -35.00 35.00 0.00
$jointconstrain "valvebiped.bip01_l_hand" z limit -50.00 50.00 0.00
$jointmassbias "valvebiped.bip01_r_upperarm" 0.80
$jointconstrain "valvebiped.bip01_r_upperarm" x limit -40.00 40.00 0.00
$jointconstrain "valvebiped.bip01_r_upperarm" y limit -20.00 91.00 0.00
$jointconstrain "valvebiped.bip01_r_upperarm" z limit -80.00 24.00 0.00
$jointmassbias "valvebiped.bip01_r_forearm" 0.60
$jointconstrain "valvebiped.bip01_r_forearm" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_forearm" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_forearm" z limit -120.00 -3.00 0.00
$jointrotdamping "valvebiped.bip01_r_hand" 1.00
$jointconstrain "valvebiped.bip01_r_hand" x limit -25.00 25.00 0.00
$jointconstrain "valvebiped.bip01_r_hand" y limit -35.00 35.00 0.00
$jointconstrain "valvebiped.bip01_r_hand" z limit -50.00 50.00 0.00
$jointmassbias "valvebiped.bip01_r_thigh" 1.30
$jointconstrain "valvebiped.bip01_r_thigh" x limit -12.00 12.00 0.00
$jointconstrain "valvebiped.bip01_r_thigh" y limit -8.00 33.00 0.00
$jointconstrain "valvebiped.bip01_r_thigh" z limit -79.00 24.00 0.00
$jointmassbias "valvebiped.bip01_r_calf" 0.80
$jointconstrain "valvebiped.bip01_r_calf" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_calf" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_calf" z limit -6.00 116.00 0.00
$jointconstrain "valvebiped.bip01_r_foot" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_foot" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_foot" z limit -26.00 53.00 0.00
$jointmassbias "valvebiped.bip01_l_thigh" 1.30
$jointconstrain "valvebiped.bip01_l_thigh" x limit -12.00 12.00 0.00
$jointconstrain "valvebiped.bip01_l_thigh" y limit -8.00 33.00 0.00
$jointconstrain "valvebiped.bip01_l_thigh" z limit -79.00 24.00 0.00
$jointconstrain "valvebiped.bip01_l_calf" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_calf" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_calf" z limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_foot" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_foot" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_foot" z limit -32.00 59.00 0.00
$jointmassbias "valvebiped.bip01_head1" 4.00
$jointrotdamping "valvebiped.bip01_head1" 3.00
$jointconstrain "valvebiped.bip01_head1" x limit -50.00 50.00 0.00
$jointconstrain "valvebiped.bip01_head1" y limit -20.00 20.00 0.00
$jointconstrain "valvebiped.bip01_head1" z limit -26.00 30.00 0.00
}