How can you add fingerposing to custom models?

So lately, I’ve been working on a model I’ve been working on and deciding to import it on Garry’s mod, the model itself works just fine, but the problem I had with it is the fact that the fingers are not pose-able, I tried searching this up around google and I seem to get no solid answer to make this, if someone here could help me out, I would be thankful.

You need to give the relevant bones the correct names.

The base names are ValveBiped.Bip01_(L|R)_FingerX(Y). L|R is either L(eft) or R(ight), X is the finger number, and Y is the knuckle number, starting at 0 (but knuckle 0, or the first knuckle, is blank). Source fingers are numbered from 0 (thumb) to 4 (pinkie / little finger).

For example, the second knuckle of the left hand’s ring finger would be ValveBiped.Bip01_L_Finger21. The first knuckle of that same finger would be ValveBiped.Bip01_L_Finger2.

You also need to change the name of the hand bones.
ValveBiped.Bip01_L_Hand or ValveBiped.Bip01_R_Hand.

But where do I go in order to edit the relevant bones?

Use something like Blender or 3ds max, maybe even Maya. Goto fingers and hands and rename them.

On Vertex Groups. Correct?

On the bones

Ah, Alright. But does the name specifically need to be have Valvebiped at the beginning of every bone?

yes. The name needs to be the exact (I don’t know if Capitalized letters count)

And will this effect all the bones of the ragdoll? Considering that All the bones don’t have “ValveBiped” in the beginning of each bone?

No just the bones you rename

It worked! thanks.

[editline]11th November 2016[/editline]

Okay, now I have one problem with the ring finger bone now, in game It doesn’t pose, I checked the name, and it was correct, is there something wrong?

1st: is it rigged?
2nd: is it name 100% the right way?
3rd: could some other bone have the name the ring should?

1st: Yes, from what I’ve seen.
2nd: Exactly what I’ve named the other bones.
3rd: I’ve checked the bones and none of them seem to have the same name.

Could you post the .qc?


// Created by Crowbar 0.34.0.0

$ModelName "Frank_Horrigan.mdl"

$BodyGroup "studio"
{
	studio "frankhorrigan_reference.smd"
}
$BodyGroup "blades"
{
	blank
	studio "blades_reference.smd"
}


$SurfaceProp "alienflesh"

$Contents "solid"

$MaxEyeDeflection 90

$CDMaterials "models\horrigan"

$CBox 0 0 0 0 0 0

$BBox -78.632 -91.222 -2.453 145.376 92.19 256.471


$SectionFrames 30 120

$PoseParameter "move_yaw" -180 180 0

$Animation "a_WalkS" "frank_horrigan_anims\a_WalkS.smd" {
	fps 30
	loop
}

$Animation "a_WalkE" "frank_horrigan_anims\a_WalkE.smd" {
	fps 30
	loop
}

$Animation "a_WalkN" "frank_horrigan_anims\a_WalkN.smd" {
	fps 30
	loop
}

$Animation "a_WalkW" "frank_horrigan_anims\a_WalkW.smd" {
	fps 30
	loop
}

$Animation "a_WalkS_hurt" "frank_horrigan_anims\a_WalkS_hurt.smd" {
	fps 30
	loop
}

$Animation "a_WalkE_hurt" "frank_horrigan_anims\a_WalkE_hurt.smd" {
	fps 30
	loop
}

$Animation "a_WalkN_hurt" "frank_horrigan_anims\a_WalkN_hurt.smd" {
	fps 30
	loop
}

$Animation "a_WalkW_hurt" "frank_horrigan_anims\a_WalkW_hurt.smd" {
	fps 30
	loop
}

$Sequence "mtidle" {
	"frank_horrigan_anims\mtidle.smd"
	activity "ACT_IDLE" -1
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "specialidle_bash" {
	"frank_horrigan_anims\specialidle_bash.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_getupfacedown" {
	"frank_horrigan_anims\specialidle_getupfacedown.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_getupfaceup" {
	"frank_horrigan_anims\specialidle_getupfaceup.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_hitarmleft" {
	"frank_horrigan_anims\specialidle_hitarmleft.smd"
	activity "ACT_FLINCH_LEFTARM" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_hitarmright" {
	"frank_horrigan_anims\specialidle_hitarmright.smd"
	activity "ACT_FLINCH_RIGHTARM" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_hithead" {
	"frank_horrigan_anims\specialidle_hithead.smd"
	activity "ACT_FLINCH_HEAD" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_hitlegleft" {
	"frank_horrigan_anims\specialidle_hitlegleft.smd"
	activity "ACT_FLINCH_LEFTLEG" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_hitlegright" {
	"frank_horrigan_anims\specialidle_hitlegright.smd"
	activity "ACT_FLINCH_RIGHTLEG" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_hittorso" {
	"frank_horrigan_anims\specialidle_hittorso.smd"
	activity "ACT_FLINCH_CHEST" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_mtstretch" {
	"frank_horrigan_anims\specialidle_mtstretch.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_ponder" {
	"frank_horrigan_anims\specialidle_ponder.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_scanleft" {
	"frank_horrigan_anims\specialidle_scanleft.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "specialidle_scanright" {
	"frank_horrigan_anims\specialidle_scanright.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hunequip" {
	"frank_horrigan_anims\h2hunequip.smd"
	activity "ACT_DISARM" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hrecoil" {
	"frank_horrigan_anims\h2hrecoil.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hequip" {
	"frank_horrigan_anims\h2hequip.smd"
	activity "ACT_ARM" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackrightup_b" {
	"frank_horrigan_anims\h2hattackrightup_b.smd"
	activity "ACT_RANGE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackrightup_a" {
	"frank_horrigan_anims\h2hattackrightup_a.smd"
	activity "ACT_RANGE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackrightdown_b" {
	"frank_horrigan_anims\h2hattackrightdown_b.smd"
	activity "ACT_MELEE_ATTACK2" 1
	{ event 1100 1 "event_play Attack" }
	{ event 1100 13 "event_mattack rightdown_b" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackrightdown_a" {
	"frank_horrigan_anims\h2hattackrightdown_a.smd"
	activity "ACT_MELEE_ATTACK2" 1
	{ event 1100 1 "event_play Attack" }
	{ event 1100 13 "event_mattack rightdown_a" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackright_b" {
	"frank_horrigan_anims\h2hattackright_b.smd"
	activity "ACT_MELEE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackright_a" {
	"frank_horrigan_anims\h2hattackright_a.smd"
	activity "ACT_MELEE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackleftup_b" {
	"frank_horrigan_anims\h2hattackleftup_b.smd"
	activity "ACT_RANGE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackleftup_a" {
	"frank_horrigan_anims\h2hattackleftup_a.smd"
	activity "ACT_RANGE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackleftdown_b" {
	"frank_horrigan_anims\h2hattackleftdown_b.smd"
	activity "ACT_MELEE_ATTACK2" 1
	{ event 1100 1 "event_play Attack" }
	{ event 1100 14 "event_mattack leftdown_b" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackleftdown_a" {
	"frank_horrigan_anims\h2hattackleftdown_a.smd"
	activity "ACT_MELEE_ATTACK2" 1
	{ event 1100 1 "event_play Attack" }
	{ event 1100 13 "event_mattack leftdown_a" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackleft_b" {
	"frank_horrigan_anims\h2hattackleft_b.smd"
	activity "ACT_MELEE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2hattackleft_a" {
	"frank_horrigan_anims\h2hattackleft_a.smd"
	activity "ACT_MELEE_ATTACK1" 1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2haimup" {
	"frank_horrigan_anims\h2haimup.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2haimdown" {
	"frank_horrigan_anims\h2haimdown.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "h2haim" {
	"frank_horrigan_anims\h2haim.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmunequip" {
	"frank_horrigan_anims\2hmunequip.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmrecoil" {
	"frank_horrigan_anims\2hmrecoil.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmequip" {
	"frank_horrigan_anims\2hmequip.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackrightup_b" {
	"frank_horrigan_anims\2hmattackrightup_b.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackrightup_a" {
	"frank_horrigan_anims\2hmattackrightup_a.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackrightdown_b" {
	"frank_horrigan_anims\2hmattackrightdown_b.smd"
	activity "ACT_RANGE_ATTACK2" 1
	{ event 1100 1 "event_play Melee" }
	{ event 1100 13 "event_mattack rightdown_b" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackrightdown_a" {
	"frank_horrigan_anims\2hmattackrightdown_a.smd"
	activity "ACT_RANGE_ATTACK2" 1
	{ event 1100 1 "event_play Melee" }
	{ event 1100 13 "event_mattack rightdown_a" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackright_b" {
	"frank_horrigan_anims\2hmattackright_b.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackright_a" {
	"frank_horrigan_anims\2hmattackright_a.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackpower" {
	"frank_horrigan_anims\2hmattackpower.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackleftup_a" {
	"frank_horrigan_anims\2hmattackleftup_a.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackleftdown_a" {
	"frank_horrigan_anims\2hmattackleftdown_a.smd"
	activity "ACT_RANGE_ATTACK2" 1
	{ event 1100 1 "event_play Melee" }
	{ event 1100 21 "event_mattack leftdown_a" }
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackleft_a" {
	"frank_horrigan_anims\2hmattackleft_a.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmattackforwardpower" {
	"frank_horrigan_anims\2hmattackforwardpower.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmaimup" {
	"frank_horrigan_anims\2hmaimup.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "2hmaim" {
	"frank_horrigan_anims\2hmaim.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
}

$Sequence "walk" {
	"a_WalkS"
	"a_WalkE"
	"a_WalkN"
	"a_WalkW"
	"a_WalkS"
	activity "ACT_WALK" -1
	blend "move_yaw" -180 180
	blendwidth 5
	{ event 1100 14 "event_emit FootRight" }
	{ event 1100 38 "event_emit FootLeft" }
	fadein 0.2
	fadeout 0.2
	node "walking"
	fps 30
	loop
}

$Sequence "mtfastforward" {
	"frank_horrigan_anims\mtfastforward.smd"
	activity "ACT_RUN" -1
	{ event 1100 13 "event_emit FootRight" }
	{ event 1100 27 "event_emit FootLeft" }
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "mtturnleft" {
	"frank_horrigan_anims\mtturnleft.smd"
	activity "ACT_TURN_LEFT" -1
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "mtturnright" {
	"frank_horrigan_anims\mtturnright.smd"
	activity "ACT_TURN_RIGHT" -1
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "walk_hurt" {
	"a_WalkS_hurt"
	"a_WalkE_hurt"
	"a_WalkN_hurt"
	"a_WalkW_hurt"
	"a_WalkS_hurt"
	activity "ACT_WALK_HURT" -1
	blend "move_yaw" -180 180
	blendwidth 5
	{ event 1100 13 "event_emit FootRight" }
	{ event 1100 49 "event_emit FootLeft" }
	fadein 0.2
	fadeout 0.2
	node "walking"
	fps 30
	loop
}

$Sequence "mtfastforward_hurt" {
	"frank_horrigan_anims\mtfastforward_hurt.smd"
	activity "ACT_RUN_HURT" -1
	{ event 1100 8 "event_emit FootRight" }
	{ event 1100 32 "event_emit FootLeft" }
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "mtturnleft_hurt" {
	"frank_horrigan_anims\mtturnleft_hurt.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "mtturnright_hurt" {
	"frank_horrigan_anims\mtturnright_hurt.smd"
	fadein 0.2
	fadeout 0.2
	fps 30
	loop
}

$Sequence "ragdoll" {
	"frank_horrigan_anims\ragdoll.smd"
	activity "ACT_DIERAGDOLL" -1
	fadein 0.2
	fadeout 0.2
	fps 30
}

$CollisionJoints "frankhorrigan_physics.smd"
{
	$mass 0
	$inertia 10
	$damping 0.01
	$rotdamping 1.5
	$rootbone "bip01"

	$jointconstrain "bip01 spine1" x limit -37.00 37.00 0.00
	$jointconstrain "bip01 spine1" y limit -16.00 16.00 0.00
	$jointconstrain "bip01 spine1" z limit -55.00 70.00 0.00

	$jointconstrain "bip01 r upperarm" x limit -68.00 77.00 0.00
	$jointconstrain "bip01 r upperarm" y limit -35.00 70.00 0.00
	$jointconstrain "bip01 r upperarm" z limit -77.00 50.00 0.00

	$jointconstrain "bip01 r forearm" x limit -55.00 82.00 0.00
	$jointconstrain "bip01 r forearm" y limit -30.00 70.00 0.00
	$jointconstrain "bip01 r forearm" z limit -77.00 23.00 0.00

	$jointconstrain "bip01 l upperarm" x limit -77.00 68.00 0.00
	$jointconstrain "bip01 l upperarm" y limit -70.00 35.00 0.00
	$jointconstrain "bip01 l upperarm" z limit -77.00 50.00 0.00

	$jointconstrain "bip01 l forearm" x limit -82.00 55.00 0.00
	$jointconstrain "bip01 l forearm" y limit -70.00 30.00 0.00
	$jointconstrain "bip01 l forearm" z limit -77.00 23.00 0.00

	$jointconstrain "valvebiped.bip01_l_hand" x limit -77.00 46.00 0.00
	$jointconstrain "valvebiped.bip01_l_hand" y limit -17.00 21.00 0.00
	$jointconstrain "valvebiped.bip01_l_hand" z limit -39.00 46.00 0.00

	$jointconstrain "valvebiped.bip01_r_hand" x limit -46.00 77.00 0.00
	$jointconstrain "valvebiped.bip01_r_hand" y limit -21.00 17.00 0.00
	$jointconstrain "valvebiped.bip01_r_hand" z limit -39.00 46.00 0.00

	$jointconstrain "bip01 r thigh" x limit -16.00 23.00 0.00
	$jointconstrain "bip01 r thigh" y limit -30.00 19.00 0.00
	$jointconstrain "bip01 r thigh" z limit -70.00 77.00 0.00

	$jointconstrain "bip01 r calf" x limit -21.00 26.00 0.00
	$jointconstrain "bip01 r calf" y limit 0.00 0.00 0.00
	$jointconstrain "bip01 r calf" z limit -88.00 0.00 0.00

	$jointconstrain "bip01 head" x limit -30.00 30.00 0.00
	$jointconstrain "bip01 head" y limit -61.00 61.00 0.00
	$jointconstrain "bip01 head" z limit -32.00 39.00 0.00

	$jointconstrain "bip01 l thigh" x limit -23.00 16.00 0.00
	$jointconstrain "bip01 l thigh" y limit -19.00 30.00 0.00
	$jointconstrain "bip01 l thigh" z limit -70.00 77.00 0.00

	$jointconstrain "bip01 l calf" x limit -26.00 21.00 0.00
	$jointconstrain "bip01 l calf" y limit 0.00 0.00 0.00
	$jointconstrain "bip01 l calf" z limit -88.00 0.00 0.00

	$jointconstrain "bip01 l foot" x limit -28.00 17.00 0.00
	$jointconstrain "bip01 l foot" y limit 0.00 0.00 0.00
	$jointconstrain "bip01 l foot" z limit -39.00 39.00 0.00

	$jointconstrain "bip01 r foot" x limit -17.00 28.00 0.00
	$jointconstrain "bip01 r foot" y limit 0.00 0.00 0.00
	$jointconstrain "bip01 r foot" z limit -39.00 39.00 0.00
}