How to put eyes for my npcs

hello guys how can put some eye for my npc where i can find it ?

be more specific,idk WTF youre asking for.

i have eyes texture but idk how to put them

I had the same problem earlier, except no one posted on my thread so I was forced to dig up some information through advanced Google’ing. :stuck_out_tongue:

Basically, what you’re going to want to do is make the eye textures on your model to ‘eyeball_r’ and ‘eyeball_l’. These stand for, you guessed it, ‘Eyeball Right’ and ‘Eyeball Left’. I uploaded a blue iris I created for use on player model, incase you don’t know where to find the eyeball/pupil textures: http://solidfiles.com/d/e9IU

Once you have textured the eyeballs on your model, you’re going to need to add the following additions to your .qc file:


$model "modelnamehere" "referencefilenamehere.smd" {
     flexfile "[mdldecompiler_expressions.vta](http://solidfiles.com/d/V8yZ)" {
          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
     }
     eyeball righteye ValveBiped.Bip01_Head1 -1.34 -3.336 67.735 "eyeball_r" 1.0 4.000 "pupil_r" 0.63
     eyeball lefteye ValveBiped.Bip01_Head1 1.34 -3.336 67.735 "eyeball_l" 1.0 -4.000 "pupil_l" 0.63
     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 + ( %AU16 *  0.400)))))))))))
}

Of course these lines of flex information aren’t going to work, but for some reason they helped prevent stretching of the iris on my model. The essential values of the above script is the following:


eyeball righteye ValveBiped.Bip01_Head1 -1.34 -3.336 67.735 "eyeball_r" 1.0 4.000 "pupil_r" 0.63
eyeball lefteye ValveBiped.Bip01_Head1 1.34 -3.336 67.735 "eyeball_l" 1.0 -4.000 "pupil_l" 0.63

The Valve Developers page URL should help you figure out what those values mean. You’re going to need to edit it to fit you’re model.

Additional Information:
A useful tutorial for texturing the eyes – The part that says you need to uv the eyes to fit the whole eyeball texture is a lie, don’t do that.

Official Valve Developers entry for Eyeballs