CfgMoves Config Reference

From Bohemia Interactive Community
Revision as of 16:28, 5 December 2012 by Teacup (talk | contribs) (rightHandIKCurve)
Jump to navigation Jump to search

Template:Stub

Introduction

CfgMoves is the nerve center of all skeletal character animation. The animation of human characters that is - not the simple, procedural animation of objects (e.g. raising/lowering a barrier, opening/closing of an aircraft canopy). CfgMoves has two major sections: Actions and States.

Actions

It is where the character animation state machine is set up. It's a bit confusing that BIS called the animation state handler "Actions", and the actions are called "States", but this is what it is. What this thing does, is configure all the possible animation states (e.g. standing upright with a rifle, kneeling with a pistol, parachuting), and define for each of them which animations can be played in and from that given state. For instance, from the kneeling with a pistol state (PistolKneelActions), you cannot directly go into crawling forward on your stomach with a rifle (even if you have a rifle). First you would have to holster the pistol and grab your rifle, then lie down, or viceversa. Similarly, if you're prone (whether unarmed, or armed with a pistol or rifle), you cannot salute - first you'd have to stand up. What animation can or cannot be played, in what situation, is set up here in Actions. Player input (key presses, clicks) are then directed to this state machine, which interprets them and decides what action/animation the avatar will perform next, according to these rules. Same rules apply to AI players.

States

In this section, each animation file (RTM) has a corresponding entry. Animation properties, such as playback speed, interpolation rules, blending times, collision shapes to use during animation, etc.., are configured here. These animations are the ones referenced in the Actions section above. While Actions represents a complex graph, States is more like a list of items, even though some rules are also set up here (see the ConnectTo[] and InterpolateTo[] properties).

CfgGestures is similar to States, it holds the bone-masked or layered animations introduced in ArmAII. Welcome to reloading-while-running.

A

access

Integer
Description: See CfgVehicles_Config_Reference#access

access = 3;

actions

String
Description:

actions = "SitActions";

aiming

String
Description:

aiming = "aimingPistol";

aimingDefault[]

Array
Description:

aimingDefault[] = {};

aimingNo[]

Array
Description:

aimingNo[] = {};

aimPrecision

Float
Description:

aimPrecision = 0.3;

B

binocOff

String
Description:

binocOff = "AmovPpneMstpSrasWrflDnon";

binocOn

String
Description:

binocOn = "AwopPpneMstpSoptWbinDnon_rfl";

boundingSphere

Float
Description:

boundingSphere = 1.5;

C

CanNotMove

String
Description:

CanNotMove = "AmovPpneMstpSrasWrflDnon";

canPullTrigger

Boolean
Description:

canPullTrigger = 1;

Civil

String
Description:

Civil = "AmovPercMstpSnonWnonDnon";

CivilLying

String
Description:

CivilLying = "AmovPpneMstpSnonWnonDnon";

collisionGeomCompPattern[]

Array
Description:

collisionGeomCompPattern[] = {1,3,6};

collisionShape

String
Description:

collisionShape = "ca\Anims\Characters\data\Geom\Sdr\Sstanistat_safe_geom.p3d";

collisionShapeSafe

String
Description:

collisionShapeSafe = "ca\Anims\Characters\data\Geom\Sdr\sbeh45l_safe_geom.p3d";

collisionVertexPattern[]

Array
Description:

collisionVertexPattern[] = {"1a","2a","3a","4a","5a","6a","7a","8a","1c","2c"};

Combat

String
Description:

Combat = "AmovPknlMstpSrasWrflDnon";

connectAs

Float
Description:

connectAs = "";

connectFrom[]

Array
Description:

connectFrom[] = {"TestSurrender",0.9,"AdthPercMstpSlowWrflDnon_1",0.9};

connectTo[]

Array
Description:

connectTo[] = {"TestSurrender",0.9,"AdthPercMstpSlowWrflDnon_1",0.9};

Crouch

String
Description:

Crouch = "AmovPknlMstpSnonWnonDnon";

D

default

String
Description:

default = "LadderRifleStatic";

die

String
Description:

die = "DeadState";

disableWeapons

Boolean
Description:

disableWeapons = 1;

disableWeaponsLong

Boolean
Description:

disableWeaponsLong = 1;

down

String
Description:

down = "LadderRifleDownLoop";

duty

Float
Description:

duty = -1;

E

enableAutoActions

Boolean
Description:

enableAutoActions = 1;

enableBinocular

Boolean
Description:

enableBinocular = 1;

enableMissile

Boolean
Description:

enableMissile = 1;

enableOptics

Boolean
Description:

enableOptics = 1;

equivalentTo

String
Description:

equivalentTo = "AmovPsitMstpSlowWrflDnon";

EvasiveBack

String
Description:

EvasiveBack = "AmovPercMrunSlowWrflDf_AmovPercMevaSrasWrflDb";

EvasiveForward

String
Description:

EvasiveForward = "AmovPercMevaSlowWlnrDf";

EvasiveLeft

String
Description:

EvasiveLeft = "AmovPercMrunSlowWrflDf_AmovPercMevaSrasWrflDl";

EvasiveRight

String
Description:

EvasiveRight = "AmovPpneMstpSrasWrflDnon_AmovPpneMevaSlowWrflDr";

F

fastB

String
Description:

fastB = "AswmPercMstpSnonWnonDnon";

fastF

String
Description:

fastF = "AswmPercMsprSnonWnonDf";

fastL

String
Description:

fastL = "AswmPercMstpSnonWnonDnon";

fastLB

String
Description:

fastLB = "AswmPercMstpSnonWnonDnon";

fastLF

String
Description:

fastLF = "AswmPercMsprSnonWnonDf";

fastR

String
Description:

fastR = "AswmPercMstpSnonWnonDnon";

fastRB

String
Description:

fastRB = "AswmPercMstpSnonWnonDnon";

fastRF

String
Description:

fastRF = "AswmPercMsprSnonWnonDf";

file

String
Description:

file = "\ca\Anims\Characters\data\Anim\Wmn\cts\erc\stp\non\non\ActsPercMstpSnonWnonDnon_MarianQ_shot5.rtm";

FireNotPossible

String
Description:

FireNotPossible = "AmovPpneMstpSrasWrflDnon";

G

getInCar

String
Description:

getInCar = "AmovPknlMstpSrasWrflDnon";

GetInHigh

String
Description:

GetInHigh = "AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInHigh";

GetInLow

String
Description:

GetInLow = "AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInLow";

GetInMedium

String
Description:

GetInMedium = "AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInMedium";

getInTank

String
Description:

getInTank = "AmovPknlMstpSrasWrflDnon";

getOutCar

String
Description:

getOutCar = "AmovPknlMstpSrasWrflDnon";

GetOutHigh

String
Description:

GetOutHigh = "AcrgPknlMstpSnonWnonDnon_AmovPercMstpSrasWrflDnon_getOutHigh";

GetOutLow

String
Description:

GetOutLow = "AcrgPknlMstpSnonWnonDnon_AmovPercMstpSrasWrflDnon_getOutLow";

GetOutMedium

String
Description:

GetOutMedium = "AcrgPknlMstpSnonWnonDnon_AmovPercMstpSrasWrflDnon_getOutMedium";

getOutTank

String
Description:

getOutTank = "AmovPknlMstpSrasWrflDnon";

H

handGunOn

String
Description:

handGunOn = "AmovPpneMstpSrasWrflDnon";

hasCollShapeSafe

Boolean
Description:

hasCollShapeSafe = 0;

head

String
Description:

head = "headNo";

headDefault[]

Array
Description:

headDefault[] = {};

headNo[]

Array
Description:

headNo[] = {};

I

interpolateFrom[]

Array
Description:

interpolateFrom[] = {"TestSurrender",0.9,"AdthPercMstpSlowWrflDnon_1",0.9};

interpolateTo[]

Array
Description:

interpolateTo[] = {"AinvPknlMstpSlayWrflDnon",0.01,"AinvPknlMstpSlayWrflDnon_1",0.01,"AinvPknlMstpSnonWnonDnon_1",0.01,"AinvPknlMstpSnonWnonDnon_2",0.01,"AinvPknlMstpSnonWnonDnon_3",0.01,"AinvPknlMstpSnonWnonDnon_4",0.01,"AdthPknlMstpSnonWnonDnon_inventory",0.1};

interpolateWith[]

Array
Description:

interpolateWith[] = {"BasicDriver",0.02};

interpolationRestart

Boolean
Description:

interpolationRestart = 0;

interpolationSpeed

Float
Description:

interpolationSpeed = 6;

J

JumpOff

Float
Description:

JumpOff = "";

K

L

ladderOff

String
Description:

ladderOff = "AmovPercMstpSnonWnonDnon";

ladderOffBottom

String
Description:

ladderOffBottom = "LadderRifleDownOff";

ladderOffTop

String
Description:

ladderOffTop = "LadderRifleTopOff";

ladderOnDown

String
Description:

ladderOnDown = "LadderRifleOn";

ladderOnUp

String
Description:

ladderOnUp = "LadderRifleOn";

leaning

String
Description:

leaning = "aimingLying";

leaningCorrectionAngleBeg

Float
Description:

leaningCorrectionAngleBeg = 0;

leaningFactorBeg

Float
Description:

leaningFactorBeg = 0.75;

leaningFactorEnd

Float
Description:

leaningFactorEnd = 0.75;

leaningFactorZeroPoint

Float
Description:

leaningFactorZeroPoint = -1;

leanLRot

Float
Description:

leanLRot = 0.57;

leanLShift

Float
Description:

leanLShift = 0.07;

leanRRot

Float
Description:

leanRRot = 0.57;

leanRShift

Float
Description:

leanRShift = 0.01;

leftHandIKBeg

Boolean
Description:

leftHandIKBeg = 0;

leftHandIKEnd

Boolean
Description:

leftHandIKEnd = 0;

leftHandIKCurve

Array
Description: As the name suggests, this array describes the curve controlling FK/IK blending on the left arm. Every pair of values describe a 2D point, with the first number representing time (horizontal) and the second being the weight (vertical). Time ranges from 0-1, where 0 is animation start, 0.5 is half way, and 1 the end. Weight also ranges from 0-1, where 0 means animation is taken from RTM file (FK) and IK is disabled, 0.6 meaning a 40% blend of FK and 60% IK, and 1 is 100% IK. Let me interpret the last example below (the long one). The curve has 4 points [0, 1], [0.05, 0], [0.95, 0] and [1, 1]. When the animation starts playing, the IK takes full effect, but is gradually disabled by point #2. It stays disabled until point #4 towards the end, when it's weight starts climbing again. At the end, at point #4, the IK is fully on again, overriding all FK.

leftHandIKCurve[] = {};                                //IK OFF.
leftHandIKCurve[] = {1};                               //IK fully ON.
leftHandIKCurve[] = {0.1, 1, 0.15, 0};                 //IK fully ON one-tenth into the animation, but disabled soon afterwards.
leftHandIKCurve[] = {0, 1, 0.05, 0, 0.95, 0, 1, 1};    //IK ON at start, but soon disabled. Re-enabled towards the end.

legs

String
Description:

legs = "legsLyingAiming";

legsDefault[]

Array
Description:

legsDefault[] = {};

legsNo[]

Array
Description:

legsNo[] = {};

limitFast

Float
Description:

limitFast = 5.5;

limitGunMovement

Boolean
Description:

limitGunMovement = 1;

looped

Boolean
Description:

looped = 1;

Lying

String
Description:

Lying = "AmovPpneMstpSnonWnonDnon";

M

medic

String
Description:

medic = "AinvPknlMstpSlayWrflDnon_medic";

N

O

onLadder

Boolean
Description:

onLadder = 1;

onLandBeg

Boolean
Description:

onLandBeg = 1;

onLandEnd

Boolean
Description:

onLandEnd = 1;

P

PlayerCrouch

String
Description:

PlayerCrouch = "AmovPknlMstpSrasWlnrDnon";

PlayerProne

String
Description:

PlayerProne = "AmovPpneMstpSnonWnonDnon";

PlayerStand

String
Description:

PlayerStand = "AwopPercMstpSoptWbinDnon_rfl";

predictSpeedCoef

Float
Description:

predictSpeedCoef = 1;

preload

Boolean
Description:

preload = 1;

primaryActionMaps[]

Array
Description:

primaryActionMaps[] = {"DeadActions","LauncherKneelActions","BinocProneRflActions","BinocProneCivilActions","RifleProneActions","PistolProneActions","RifleKneelActions","PistolKneelActions","RifleStandActions","PistolStandActions","RifleLowStandActions","SwimmingActions","CivilStandActions","BinocKneelRflActions","BinocStandRflActions"};

putDown

String
Description:

putDown = "AmovPpneMstpSrasWrflDnon";

PutDownEnd

Float
Description:

PutDownEnd = "";

Q

R

reloadAT

String
Description:

reloadAT = "LauncherReloadKneel";

reloadMagazine

String
Description:

reloadMagazine = "WeaponMagazineReloadStand";

reloadMGun

String
Description:

reloadMGun = "AmovPpneMstpSrasWrflDnon";

reloadMortar

String
Description:

reloadMortar = "AmovPpneMstpSrasWrflDnon";

relSpeedMax

Float
Description:

relSpeedMax = 0.6;

relSpeedMin

Float
Description:

relSpeedMin = 0.5;

rightHandIKBeg

Boolean
Description:

rightHandIKBeg = 1;

rightHandIKEnd

Boolean
Description:

rightHandIKEnd = 1;

rightHandIKCurve

Array
Description: See CfgMoves_Config_Reference#leftHandIKCurve.

rightHandIKCurve[] = {};                                //IK OFF.
rightHandIKCurve[] = {1};                               //IK fully ON.
rightHandIKCurve[] = {0.1, 1, 0.15, 0};                 //IK fully ON one-tenth into the animation, but disabled soon afterwards.
rightHandIKCurve[] = {0, 1, 0.05, 0, 0.95, 0, 1, 1};    //IK ON at start, but soon disabled. Re-enabled towards the end.

S

salute

String
Description:

salute = "AmovPercMstpSlowWrflDnon";

showHandGun

Boolean
Description:

showHandGun = 1;

showItemInHand

Boolean
Description:

showItemInHand = 1;

showItemInRightHand

Boolean
Description:

showItemInRightHand = 0;

showWeaponAim

Boolean
Description:

showWeaponAim = 1;

sitDown

String
Description:

sitDown = "AmovPsitMstpSnonWpstDnon_ground";

skeletonName

String
Description:

skeletonName = "OFP2_ManSkeleton";

slowB

String
Description:

slowB = "AmovPercMrunSlowWlnrDb";

slowF

String
Description:

slowF = "AmovPercMevaSlowWlnrDf";

slowL

String
Description:

slowL = "AmovPercMrunSlowWlnrDl";

slowLB

String
Description:

slowLB = "AmovPercMrunSlowWlnrDbl";

slowLF

String
Description:

slowLF = "AmovPercMrunSlowWlnrDfl";

slowR

String
Description:

slowR = "AmovPercMrunSlowWlnrDr";

slowRB

String
Description:

slowRB = "AmovPercMrunSlowWlnrDbr";

slowRF

String
Description:

slowRF = "AswmPercMrunSnonWnonDf";

soundEdge1

Float
Description:

soundEdge1 = 0.45;

soundEdge2

Float
Description:

soundEdge2 = 1;

soundEnabled

Boolean
Description:

soundEnabled = 1;

soundOverride

String
Description:

soundOverride = "bodyfall";

speed

Float
Description:

speed = 0.00833333;

Stand

String
Description:

Stand = "AmovPknlMstpSrasWrflDnon";

startSwim

String
Description:

startSwim = "AswmPercMrunSnonWnonDf";

stop

String
Description:

stop = "AinvPknlMstpSlayWrflDnon";

stop

String
Description:

stop = "AwopPercMstpSoptWbinDnon_non";

StopRelaxed

String
Description:

StopRelaxed = "AidlPercMstpSlowWrflDnon01";

stopSwim

String
Description:

stopSwim = "AmovPercMstpSnonWnonDnon";

StrokeFist

Float
Description:

StrokeFist = "";

strokeGun

String
Description:

strokeGun = "AmovPercMstpSnonWnonDnon";

T

takeFlag

String
Description:

takeFlag = "AinvPknlMstpSlayWrflDnon";

terminal

Boolean
Description:

terminal = 1;

TestDriver

String
Description:

TestDriver = "BasicDriver";

TestDriverOut

String
Description:

TestDriverOut = "BasicDriverOut";

TestGunner

String
Description:

TestGunner = "BasicSittingGunner";

throwGrenade

String
Description:

throwGrenade = "AmovPercMrunSlowWpstDf_AmovPercMstpSrasWpstDnon_gthThrow";

transitionsDisabled[]

Array
Description:

transitionsDisabled[] = {};

transitionsInterpolated[]

Array
Description:

transitionsInterpolated[] = {};

transitionsSimple[]

Array
Description:

transitionsSimple[] = {};

treated

String
Description:

treated = "AinvPknlMstpSlayWrflDnon_healed";

turnL

String
Description:

turnL = "AmovPercMstpSlowWrflDnon_turnL";

turnLRelaxed

String
Description:

turnLRelaxed = "AmovPercMstpSlowWrflDnon_turnL";

turnR

String
Description:

turnR = "AmovPpneMstpSrasWrflDnon_turnR";

turnRRelaxed

String
Description:

turnRRelaxed = "AmovPpneMstpSrasWrflDnon_turnR";

turnSpeed

Float
Description:

turnSpeed = 0.1;

U

untiltWeapon

String
Description:

untiltWeapon = "untiltWeaponDefault";

untiltWeaponDefault[]

Array
Description:

untiltWeaponDefault[] = {};

up

String
Description:

up = "AmovPercMstpSnonWnonDnon";

upDegree

String
Description:

upDegree = "ManPosBinoc";

useFastMove

Boolean
Description:

useFastMove = 1;

V

variantAfter[]

Array
Description:

variantAfter[] = {20,40,100};

variantsAI[]

Array
Description:

variantsAI[] = {"AidlPpneMstpSrasWrflDnon0S",0.7,"AidlPpneMstpSrasWrflDnon01",0.1,"AidlPpneMstpSrasWrflDnon02",0.1,"AidlPpneMstpSrasWrflDnon03",0.1};

variantsPlayer[]

Array
Description:

variantsPlayer[] = {"AdthPercMrunSlowWlnrDf_1",0.5,"AdthPercMrunSlowWlnrDf_2",0.5};

visibleSize

Float
Description:

visibleSize = 0.25;

W

walkB

String
Description:

walkB = "AmovPercMwlkSlowWrflDb";

walkF

String
Description:

walkF = "AmovPercMevaSlowWlnrDf";

walkL

String
Description:

walkL = "AmovPercMwlkSlowWrflDl";

walkLB

String
Description:

walkLB = "AmovPercMwlkSlowWrflDbl";

walkLF

String
Description:

walkLF = "AswmPercMwlkSnonWnonDf";

walkR

String
Description:

walkR = "AmovPpneMrunSnonWnonDr";

walkR

String
Description:

walkR = "AswmPercMstpSnonWnonDnon";

walkRB

String
Description:

walkRB = "AmovPercMwlkSlowWrflDbr";

walkRF

String
Description:

walkRF = "AmovPercMwlkSlowWrflDfr";

weaponOff

String
Description:

weaponOff = "AmovPercMstpSnonWnonDnon";

weaponOn

String
Description:

weaponOn = "AmovPknlMstpSrasWlnrDnon";

X

Y

Z

Namespace of anim classes and files

A...P...M...S...W...D[_A...P...M...S...W...D][_Comment]

A: Description of the animation type, ie: mov for movement, cts for cutscene
P: Stance: erc for erected, knl for kneel, pne for prone
M: Speed of animation: stp for stopped, wlk for walk, run for runnin, eva for evasive
S: Weapon holding: low for lowered, ras for raised
W: Weapon: non for unarmed, pst for pistol, lnr for launcher, rfl for rifle.
D: Direction of movement: non for no direction, f for forward, etc.

If there is a second movement definition named [_A...P...M...S...W...D] after the first one, the animation is a transition from the first animation to the second.

[_Comment]: additional comments, if required

Example:

AmovPpneMstpSnonWnonDnon

means: Movement - Prone - Stopped - civil (no weapon) - no direction (due to being static)