Eye Posing works for GMOD but not for SFM?

I have several models, one example is Juliet from Lollipop Chainsaw, that has a fine and working eye posing in GMOD but none at all in SFM.

None meaning no LocalViewTargetFactor and fiddling with the eye settings doesn’t move the eye at all.

How does one go about fixing the eye posing for SFM for these models?

You’ll need to decompile and recompile the model, but underneath the other flexcontroller lines, you NEED to have this:


flexcontroller eyes range -45 45 eyes_updown
flexcontroller eyes range -45 45 eyes_rightleft

And make sure that there’s also attachments for the “eyes”, “lefteye” and “righteye”, and then eyeposing should work in SFM.

don’t forget to adds this too, if they not.

You don’t need attachments for “righteye” and “lefteye.”

At least, I never have, and I’ve made more than enough ragdolls be SFM-compatible. :v:

Alrighty then. Still, I always add them for my ports just in case something out there needs them for some reason.

That’s a good picece of knowledge, thanks.
Keepin’ the QCs clean and simple.

However, something to note is if you get a ragdoll’s eyes bugging the fuck out in SFM, even with the flexcontrollers and eyes attachment, you might need to add a mouth attachment.

I don’t know why.

Maybe the right/left attachments serve the same purpose as the mouth attachment. I’ve never seen those eye attachments before, so I don’t really know. I may actually experiment with this later - take a model whose eyes I know do not work without the mouth attachment, and replace it with the left/right eye attachments, see what comes of it.

Thanks a bunch for the help got it to work yesterday but I have another question.

Now I’m trying to do the same for a different model that has jigglebones in it. I can fix the eyes fine with the above help but the problem is, it removes the jigglebones.

How do I fix the eye problem AND still keep the jiggles?

There is supposedly some program that can retrieve the jigglebone controls from a model. A friend gave me the program, but I couldn’t get it to work.

Here is the file that I was given. Feel free to try it, and see if you can get it to work. https://dl.dropboxusercontent.com/u/8416055/Permanent/jiggle_qcgen.rar

Elsewise, you’re going to have to just remake the jigglebones yourself. They’re not terribly difficult, once you figure out the basics behind how they work. The valve dev wiki’s page on them can be very helpful, as can finding source QCs for some models with jigglebones, to see how to put it all together in practice.

https://developer.valvesoftware.com/wiki/$jigglebone

Thanks for the program, I’ll give it a shot.

This whole time I thought jigglebones could only be added through a 3D program like 3DSMAX or Maya. So basically jigglebones can be added just by adding lines to the compiler QC file or am I missing something?

Jigglebones are entirely QC-based. The only thing you have to do on the modeling end is have a bne to use as a basis.

Be aware that the orientation of the bone is important, however.

Here is an example of a hair jiggle I built myself for a model:


$jigglebone "jiggle.bang_1" {
	is_flexible {
		yaw_stiffness 100
		yaw_damping 2
		
		pitch_stiffness 100
		pitch_damping 2
		
		along_stiffness 100
		along_damping 2
		
		length 5
		tip_mass 5
		
		yaw_constraint -5 5
		pitch_constraint -10 10
	}
}

Again, thank you for the help and sorry for the ignorance: Where do I put that code in the QC file?

Do I replace the “jiggle.bang_1” in your with the bone that I want to be jiggly?

Here I’m trying to make a jigglebone from scratch from this QC file of the Cammy White model in garrysmod.org



$cd "C:\Users\---\Desktop\New folder"
$modelname "sf4_cmy_00.mdl"
$model "Cammy" "model2.smd" {
     flexfile "mdldecompiler_expressions.vta" {
          flex "toe_r" frame 1
          flex "toe_l" frame 2
          flex "face_happy" frame 3
          flex "face_sad" frame 4
          flex "blink_r" frame 5
          flex "blink_l" frame 6
          flex "eyes_shut" frame 7
          flex "eyes_wide" frame 8
          flex "eye_bulge_l" frame 9
          flex "brow_r" frame 10
          flex "brow_l" frame 11
          flex "brows_up" frame 12
          flex "brows_down" frame 13
          flex "brows_in" frame 14
          flex "brows_out" frame 15
          flex "brows_curved" frame 16
          flex "mouth_open" frame 17
          flex "mouth_widen" frame 18
          flex "mouth_lower" frame 19
          flex "mouth_raised" frame 20
          flex "mouth_exposed" frame 21
          flex "teeth_clenched" frame 22
          flex "teeth_up" frame 23
          flex "lip_down" frame 24
          flex "nose_up" frame 25
          flex "nose_down" frame 26
          flex "body_bust" frame 27
          flex "body_lean" frame 28
          flex "body_fat" frame 29
          flex "no_hat" frame 30
     }
     eyeball righteye Head -1.280 -2.190 61.750 eyeball_r 2.000  -1.000 CMY_02 1.380
     eyeball lefteye Head 1.280 -2.190 61.750 eyeball_l 2.000  1.000 CMY_02 1.380
      eyelid  upper_right "mdldecompiler_expressions.vta" lowerer 31 -1.000000 neutral 0 0.000000 raiser 31 1.000000 split 0.1 eyeball righteye
      eyelid  lower_right "mdldecompiler_expressions.vta" lowerer 32 -1.000000 neutral 0 0.000000 raiser 32 1.000000  split 0.1 eyeball righteye
      eyelid  upper_left "mdldecompiler_expressions.vta" lowerer 33 -1.000000 neutral 0 0.000000 raiser 33 1.000000 split -0.1 eyeball lefteye
      eyelid  lower_left "mdldecompiler_expressions.vta" lowerer 34 -1.000000 neutral 0 0.000000 raiser 34 1.000000  split -0.1 eyeball lefteye
     mouth 0 "mouth"  Head 0.000 1.000 0.000
     flexcontroller eyes eyes_updown "range" -45.000 45.000
     flexcontroller eyes eyes_rightleft "range" -45.000 45.000
     flexcontroller phoneme toe_r "range" 0.000 1.000
     flexcontroller phoneme toe_l "range" 0.000 1.000
     flexcontroller phoneme face_happy "range" 0.000 1.000
     flexcontroller phoneme face_sad "range" 0.000 1.000
     flexcontroller phoneme blink_r "range" 0.000 1.000
     flexcontroller phoneme blink_l "range" 0.000 1.000
     flexcontroller phoneme eyes_shut "range" 0.000 1.000
     flexcontroller phoneme eyes_wide "range" 0.000 1.000
     flexcontroller phoneme eye_bulge_l "range" 0.000 1.000
     flexcontroller phoneme brow_r "range" 0.000 1.000
     flexcontroller phoneme brow_l "range" 0.000 1.000
     flexcontroller phoneme brows_up "range" 0.000 1.000
     flexcontroller phoneme brows_down "range" 0.000 1.000
     flexcontroller phoneme brows_in "range" 0.000 1.000
     flexcontroller phoneme brows_out "range" 0.000 1.000
     flexcontroller phoneme brows_curved "range" 0.000 1.000
     flexcontroller phoneme mouth_open "range" 0.000 1.000
     flexcontroller phoneme mouth_widen "range" 0.000 1.000
     flexcontroller phoneme mouth_lower "range" 0.000 1.000
     flexcontroller phoneme mouth_raised "range" 0.000 1.000
     flexcontroller phoneme mouth_exposed "range" 0.000 1.000
     flexcontroller phoneme teeth_clenched "range" 0.000 1.000
     flexcontroller phoneme teeth_up "range" 0.000 1.000
     flexcontroller phoneme lip_down "range" 0.000 1.000
     flexcontroller phoneme nose_up "range" 0.000 1.000
     flexcontroller phoneme nose_down "range" 0.000 1.000
     flexcontroller phoneme body_bust "range" 0.000 1.000
     flexcontroller phoneme body_lean "range" 0.000 1.000
     flexcontroller phoneme body_fat "range" 0.000 1.000
     flexcontroller phoneme no_hat "range" 0.000 1.000
    %toe_r =  toe_r
    %toe_l =  toe_l
    %face_happy =  face_happy
    %face_sad =  face_sad
    %blink_r =  blink_r
    %blink_l =  blink_l
    %eyes_shut =  eyes_shut
    %eyes_wide =  eyes_wide
    %eye_bulge_l =  eye_bulge_l
    %brow_r =  brow_r
    %brow_l =  brow_l
    %brows_up =  brows_up
    %brows_down =  brows_down
    %brows_in =  brows_in
    %brows_out =  brows_out
    %brows_curved =  brows_curved
    %mouth_open =  mouth_open
    %mouth_widen =  mouth_widen
    %mouth_lower =  mouth_lower
    %mouth_raised =  mouth_raised
    %mouth_exposed =  mouth_exposed
    %teeth_clenched =  teeth_clenched
    %teeth_up =  teeth_up
    %lip_down =  lip_down
    %nose_up =  nose_up
    %nose_down =  nose_down
    %body_bust =  body_bust
    %body_lean =  body_lean
    %body_fat =  body_fat
    %no_hat =  no_hat
}

$cdmaterials "models\streetfighter4\cmy00\"
$hboxset "default"
$hbox 0 "Pelvis" -3.710  -5.733  -9.054  11.279  4.184  9.052
$hbox 0 "Stomach" -3.341  -3.786  -6.036  8.552  4.666  6.034
$hbox 0 "Chest" -3.030  -5.046  -8.240  10.823  3.782  8.251
$hbox 0 "Neck" -0.485  -2.443  -2.226  3.868  2.791  2.223
$hbox 0 "Head" -6.613  -4.605  -4.131  7.536  6.231  3.903
$hbox 0 "L_Braid3" -2.598  -0.561  -0.841  11.562  0.739  0.887
$hbox 0 "R_Braid3" -11.562  -0.738  -0.888  2.598  0.562  0.841
$hbox 0 "L_Braid2" -2.287  -0.407  -0.832  14.361  0.699  0.884
$hbox 0 "R_Braid2" -14.361  -0.699  -0.885  2.287  0.408  0.831
$hbox 0 "R_Braid1" -11.332  -0.666  -1.235  1.234  0.491  0.819
$hbox 0 "L_Braid1" -1.232  -0.524  -0.820  11.332  0.830  1.501
$hbox 0 "R_Shoulder" -7.301  -2.287  -3.723  0.000  4.329  3.368
$hbox 0 "R_UpperArm" -10.394  -1.886  -2.510  2.038  2.620  2.553
$hbox 0 "R_ForeArm" -13.413  -2.470  -2.473  2.963  2.924  2.948
$hbox 0 "ValveBiped.Bip01_R_Hand" 0.000  -2.687  -2.942  5.047  1.401  2.805
$hbox 0 "ValveBiped.Bip01_R_Finger3" -0.107  -0.751  -0.592  2.040  0.679  0.549
$hbox 0 "ValveBiped.Bip01_R_Finger31" -0.407  -0.588  -0.527  1.561  0.586  0.495
$hbox 0 "ValveBiped.Bip01_R_Finger2" -0.209  -0.667  -0.577  2.459  0.662  0.550
$hbox 0 "ValveBiped.Bip01_R_Finger1" -0.175  -0.684  -0.638  2.217  0.577  0.577
$hbox 0 "ValveBiped.Bip01_R_Finger11" -0.402  -0.525  -0.508  1.254  0.523  0.532
$hbox 0 "ValveBiped.Bip01_R_Finger4" -0.169  -0.595  -0.586  1.717  0.620  0.559
$hbox 0 "ValveBiped.Bip01_R_Finger41" -0.384  -0.462  -0.496  1.328  0.562  0.520
$hbox 0 "ValveBiped.Bip01_R_Finger0" 0.000  -0.752  -1.177  2.756  1.134  0.948
$hbox 0 "ValveBiped.Bip01_R_Finger01" -0.571  -0.667  -0.664  1.681  0.543  0.688
$hbox 0 "ValveBiped.Bip01_R_Finger02" -0.559  -0.514  -0.666  1.646  0.581  0.687
$hbox 0 "L_Shoulder" 0.000  -4.329  -3.368  7.290  2.287  3.723
$hbox 0 "L_UpperArm" -2.034  -2.620  -2.554  10.389  1.886  2.510
$hbox 0 "L_ForeArm" -2.980  -2.924  -2.948  13.416  2.470  2.474
$hbox 0 "ValveBiped.Bip01_L_Hand" 0.000  -2.684  -2.805  5.052  1.393  2.948
$hbox 0 "ValveBiped.Bip01_L_Finger2" -0.208  -0.647  -0.547  2.463  0.665  0.580
$hbox 0 "ValveBiped.Bip01_L_Finger1" -0.173  -0.687  -0.581  2.221  0.580  0.640
$hbox 0 "ValveBiped.Bip01_L_Finger11" -0.402  -0.518  -0.535  1.252  0.524  0.506
$hbox 0 "ValveBiped.Bip01_L_Finger4" -0.164  -0.597  -0.557  1.722  0.622  0.588
$hbox 0 "ValveBiped.Bip01_L_Finger41" -0.379  -0.465  -0.523  1.328  0.560  0.492
$hbox 0 "ValveBiped.Bip01_L_Finger3" -0.105  -0.752  -0.546  2.040  0.675  0.598
$hbox 0 "ValveBiped.Bip01_L_Finger31" -0.398  -0.593  -0.491  1.562  0.582  0.529
$hbox 0 "ValveBiped.Bip01_L_Finger0" 0.000  -0.751  -0.942  2.762  1.128  1.184
$hbox 0 "ValveBiped.Bip01_L_Finger01" -0.569  -0.675  -0.666  1.676  0.534  0.684
$hbox 0 "ValveBiped.Bip01_L_Finger02" -0.550  -0.527  -0.669  1.649  0.566  0.683
$hbox 0 "R_Boob" -3.872  -1.996  -2.361  0.048  2.039  2.622
$hbox 0 "L_Boob" -0.047  -2.039  -2.624  3.873  1.996  2.358
$hbox 0 "L_Thigh" -2.236  -5.052  -5.513  18.526  3.534  4.069
$hbox 0 "L_LowerLeg" -5.259  -3.313  -3.732  20.982  3.831  3.823
$hbox 0 "L_Foot" -8.667  -3.217  -2.977  1.398  6.043  2.369
$hbox 0 "L_Toe" -6.188  -2.454  -3.048  1.329  1.886  2.291
$hbox 0 "R_Thigh" -18.524  -3.532  -4.069  2.210  5.074  5.513
$hbox 0 "R_LowerLeg" -20.980  -3.828  -3.824  5.260  3.325  3.732
$hbox 0 "R_Foot" -1.400  -6.042  -2.382  8.666  3.219  2.970
$hbox 0 "R_Toe" -1.329  -1.884  -2.304  6.189  2.457  3.041
$attachment "eyes" "Head" 5.53 3.05 0.26 rotate 0.00 -45.00 -90.00
$attachment "mouth" "Head" 0.80 -5.80 -0.15 rotate 0.00 -80.00 -90.00
$surfaceprop "flesh"
$eyeposition -0.000 -0.000 70.000
$illumposition 0.144 -0.043 34.730
$sequence ragdoll "ragdoll" ACT_DIERAGDOLL 1 fps 30.00


I’m tring to make R_Braid 3, L_Braid 3, L_Boob and R_Boob jiggly.

Yes, the “jiggle.bang_1” is the name of the bone.

Shove the code at the very bottom of the file.