Material stretching issue

I’m currently trying to detach heads of citizen models and make them a model of their own, but the material winds up becoming very odd-looking and stretched. Like so:

I’m not sure what I could have done in the “modeling” process considering I haven’t had this problem with Combine.

The mdldecompiler.qc:


$cd "C:\Users\Jake\Documents\decompiles\citizenfemalehead"
$modelname "headspack\female_01_head.mdl"
$model "male_06" "female_01_reference.smd" {
     flexfile "mdldecompiler_expressions.vta" {
          flex "upper_right" frame 2
          flex "lower_right" frame 4
          flex "AU42" frame 7
          flexpair "AU1" 1.0 frame 8
          flexpair "AU2" 1.0 frame 9
          flexpair "AU4" 1.0 frame 10
          flexpair "AU1AU2" 1.0 frame 11
          flexpair "AU12" 1.0 frame 12
          flex "AU12AU25" frame 13
          flexpair "AU15" 1.0 frame 14
          flexpair "AU17" 1.0 frame 15
          flexpair "AU10" 1.0 frame 16
          flex "AU10SL" frame 17
          flex "AU10SR" frame 18
          flex "AU16" frame 19
          flexpair "AU6" 1.0 frame 20
          flexpair "AU9" 1.0 frame 21
          flexpair "AU25" 1.0 frame 22
          flexpair "AU18" 1.0 frame 23
          flexpair "AU22" 1.0 frame 24
          flexpair "AU20" 1.0 frame 25
          flex "AU32" frame 26
          flex "AU24" frame 27
          flex "AU31" frame 28
          flexpair "AU26" 1.0 frame 29
          flexpair "AU27" 1.0 frame 30
          flexpair "AU26Z" 1.0 frame 31
     }
     eyeball righteye ValveBiped.Bip01_Head1 -1.271 -4.220 67.559 eyeball_r 1.000  4.000 pupil_r 0.630
     eyeball lefteye ValveBiped.Bip01_Head1 1.357 -4.220 67.551 eyeball_l 1.000  -4.000 pupil_l 0.630
       eyelid  upper_right "mdldecompiler_expressions.vta" lowerer 2 -0.262100  neutral 0 -0.000000 raiser 1070568413 0.000000 split 0.1 eyeball  righteye
      eyelid  lower_right "mdldecompiler_expressions.vta"  lowerer 4 -0.340900 neutral 0 0.000000 raiser -1078798477 0.000000   split 0.1 eyeball righteye
      eyelid  upper_left  "mdldecompiler_expressions.vta" lowerer 5 -0.262100 neutral 0 -0.000000  raiser 1070568413 0.000000 split -0.1 eyeball lefteye
      eyelid   lower_left "mdldecompiler_expressions.vta" lowerer 6 -0.340900 neutral 0  0.000000 raiser -1078798477 0.000000  split -0.1 eyeball lefteye
     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
    localvar AU38
    %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 + ( %AU16 *  0.400)))))))))))
}
$cdmaterials "models\Humans\female\Group01\"
$cdmaterials "models\Humans\female\"
$cdmaterials "models\Zombie_Classic\"
$hboxset "default"
$hbox 0 "ValveBiped.Bip01_Head1" -2.324  -6.769  -3.659  8.476  3.605  3.851
// Model uses material "eyeball_r.vmt"
// Model uses material "eyeball_l.vmt"
// Model uses material "mouth.vmt"
// Model uses material "sandro_facemap.vmt"
// Model uses material "Zombie_Classic_sheet.vmt"
// Model uses material "pupil_r.vmt"
// Model uses material "glint.vmt"
// Model uses material "pupil_l.vmt"
$attachment "eyes" "ValveBiped.Bip01_Head1" 3.76 -4.42 -0.04 rotate 0.00 -80.10 -90.00
$attachment "mouth" "ValveBiped.Bip01_Head1" 1.00 -6.30 -0.00 rotate 0.00 -80.00 -90.00
$surfaceprop "flesh"
$eyeposition -0.000 0.000 70.000
$illumposition 1.307 -0.096 56.075
$sequence ragdoll "ragdoll" ACT_DIERAGDOLL 1 fps 30.00
$collisionjoints "phymodel.smd" {

    $mass 20.0
    $inertia 10.00
    $damping 0.01
    $rotdamping 1.50
    $rootbone "valvebiped.bip01_head1"

    $jointconstrain "pind" x limit -20.00 20.00 0.20
    $jointconstrain "pind" y limit -25.00 25.00 0.20
    $jointconstrain "pind" z limit -13.00 30.00 0.20
}



Anyone ever come across this problem or might have an idea of what to do? Thanks!

Someone else had this issue last week.

If I recall the problem is due to decompiler placing the uvs outside the 0,1 UV space and the fix was to untick the clamp flags in the head sheet material files.

-snip-

You mean I should go into the GCF and manually do that? Would that affect anything else?

Pardon me for reviving an old thread like this, but does anyone know if this can be fixed without editing the materials? Like in 3ds max or something.

I also apologise for eviving this thread, but yes typedef it is possible if the decompiler is simply offsetting the UVs, if you knew how so the UVs were being offset by you ‘could’ offset the UVs yourself so that once the offset of the decompiler has taken effect the UVs will be in the correct place.

But surely it would be easier just to change some flags, the above method would be A LOT of messing about and would surely cause more problems than worth.

I’m using CannonFodder’s Studiocompiler. Is there usually an issue with this program concerning offsetting UVs?

For some reason this is pretty common in decompiled models. To fix this, all you need to do is re-align the UV-map.

  1. Add an Unwrap UVW modifier to the model. If there’s a skin modifier, drag it under so it’s above the Editable Poly (or Editable Mesh).

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step1.jpg

  1. You’ll probably notice your UVs are all pulled down like so:

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step2.jpg

  1. Use the face selection located at the bottom (habit) and select everything using Ctrl+A.

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step3.jpg

  1. Select the absolute/relative type-ins button at the bottom of the UV window.

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step4.jpg

  1. Enter “1” in the V panel and press enter. This should slide everything back into place nice and neat for you.

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step5.jpg

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step6.jpg

  1. Now you can just collapse the Unwrap UVW modifier if you no longer need it and it should apply the fixed UVs to it. Exporting and compiling should fix the wooden faces.

https://dl.dropboxusercontent.com/u/25812766/facepunch/wood-face/step7.jpg