Animation Export Profiles – Arma Reforger

From Bohemia Interactive Community
Revision as of 15:11, 9 November 2023 by Lou Montana (talk | contribs) (Fix this abomination o_o)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Export profiles define set of bones that are exported from Blender, Motion Builder or 3ds Max. Their default location is

\anims\export_profiles

.

Arma Reforger default data does not contain any export profiles; some are provided along Enfusion Blender Tools (EnfusionBlenderTools-Data.zip) - see Enfusion Blender Tools - Installation.

Provided files:

Body

File Description
000_Multi_FullBodyABS_RHandNone_LHandNone.apr
002_Multi_FullBodyABS_RHandNone_LHandABS.apr
101_FullBodyABS.apr
102_FullBodyABS_camera.apr
110_FullBodyABS_RHandNone_LHandNone.apr
120_FullBodyABS_RHandNone_LHandABS.apr
121_UpperBodyABS_RightArmABS.apr
122_UpperBodyABS_LeftArmABS.apr
123_Head_ABS.apr
123_Head_ADD.apr
123_LHandABS.apr
124_FullBodyABS_RHandABS_LHandNone.apr
126_UpperBodyABS_RHandNone_LHandABS.apr
150_FullBodyADD.apr
150_FullBodyADD_camera.apr
151_FullBodyADD_RHandNone_LHandNone.apr
152_FullBodyADD_RHandNone_LHandNone_HipsADD.apr
250_UpperBodyADD.apr
251bis_UpperBodyADD_RHandNone_LHandABS.apr
251_UpperBodyADD_RHandNone_LHandNone.apr
252_UpperbodyADD_ArmsABS.apr Reloads
253_UpperbodyADD_ArmsABS_RPropNone.apr
254_UpperbodyADD_ArmsABS_RHandNone.apr
255_RArmABS_RHandNone.apr
256_UpperbodyADD_LArmABS.apr
257_UpperbodyADD_LArmADD_LHandABS.apr
258_UpperbodyADD_ArmsABS_HandsNone.apr
259Bis_UpperbodyADD_LArmABS_LHandNone_LPropABS.apr
259_UpperbodyADD_LArmABS_LHandNone.apr
260_LArmADD_LHandNone.apr
262_ArmsADD_RHandABS.apr
301_LowerbodyABS.apr
401_RIndexABS.apr

Inverse Kinematics

File Description
501_IK.apr
502_IK_RightHand.apr
503_IK_LeftHand.apr
504_IK_RightElbow_Hand.apr

Misc

File Description
601_watch_SandY184A.apr
602_flag.apr

Weapon Idles

File Description
700_Pistol_Idle.apr
701_Rifle_Idle.apr
702_Machinegun_Idle.apr
703_RPG_Idle.apr
704_Grenade_Idle.apr
705_PKM_magazine.apr
706_M60_magazine .apr
707_Rifle_Idle_SVD.apr
708_M249_magazine.apr
709_Machinegun_Idle_M249.apr
710_Grenade_RGB2_Idle.apr
711_Rifle_stock.apr

Generic Weapon Profiles

File Description
720_Weapon_FireMode.apr
721_Weapon_Trigger.apr
722_Weapon_MagRelease.apr
723_Weapon_Sight.apr With sight slider: rifle, machinegun, RPG
724_Weapon_Bolt.apr
725_Weapon_Hammer.apr Pistol, RPG
726_Weapon_Bolt_trigger.apr
727_Weapon_Bolt_rack.apr
728bis_M203_Sight.apr
728_M16a2_Sight.apr
729_Weapon_Sight_M21.apr

Pistols

File Description
730_Weapon_FireMode_m9.apr
731_Pistol_SlideHammer.apr
732_Pistol_SlideHammerRelease.apr
733_Pistol_SlideHammerReleaseTrigger.apr
734_Pistol_safety.apr
735_Pistol_SlideTrigger.apr
736_Pistol_Slide.apr

Generic Rifle Profiles

File Description
737_Weapon_Sight_M249.apr
738_Weapon_Bolt_M249.apr
739_Weapon_Bolt_release.apr
740_Rifle_Bolt_Rack.apr
741_Rifle_Bolt_Rack_SVD.apr
742_Rifle_safety_trigger.APR

Machineguns

File Description
750_Machinegun_Fire.apr Includes dustcover
751_Machinegun_TopCover.apr
752_Machinegun_bipod.apr
753_Machinegun_bipod_M249.apr

RPGs

File Description
760_RPG_Sight.apr Without the sight slider
761_RPG_Sight_Front.apr
762_RPG_Safety.apr
763_RPG_Unfold_TEMP.apr
764_RPG_M72_idle.apr

Grenades

File Description
770_Grenade_Pin.apr

UGLs

File Description
780_M203_barrel.apr

Ground Vehicles

File Description
801_Vehicle_Door_L01.apr
802_Vehicle_Door_R01.apr
803_Vehicle_Door_L03.apr
804_Vehicle_Door_R03.apr
805_Vehicle_Door_L02.apr
806_Vehicle_Door_R02.apr
807_Vehicle_Door_L01_BTR.apr
808_Vehicle_Door_R01_BTR.apr
809_Vehicle_Door_L01_m998..apr
810_Vehicle_Door_R01_m998..apr
811_Vehicle_Door_L02_m998..apr
812_Vehicle_Door_R02_m998..apr
820_Vehicle_Steering_Wheel.apr
840_Vehicle_Throttle.apr
841_Vehicle_Clutch.apr
842_Vehicle_Brake.apr
843_Vehicle_Starter_Switch.apr
844_Vehicle_Gearshift.apr
845_Vehicle_light_switch.apr
846_Vehicle_Handbrake.apr
847_Vehicle_Starter_Switch_BTR.apr

Aircrafts

File Description
860_Mi-8MT_Door_L.apr
861_Mi-8MT_CyclicControl.apr
890_Vehicle_Empty.apr

Ground Vehicles

File Description
900_Ural_Idle.apr
901_Uaz_Idle.apr
902_BTR_Idle.apr
903_M151a2_Idle.apr
904_M9231A1_idle.apr
905_M998_Idle.apr
950_Mi-8MT_Idle.apr
999_Empty.apr
FullBody_Additive.apr
FullBody_Pistol.apr
FullBody_Rifles.apr
FullBody_Unarmed.apr
GadgetIKOffset.apr
Head_Additive.apr
IK.apr
RightIndexAbsolute.apr
TEST.apr
UpperbodyAdditive_ArmsAbsolute.apr
UpperbodyAdditive_ArmsAbsolute_WeaponDummy.apr
Upperbody_Additive.apr
Vehicles_Clutch.apr
Vehicles_horn.apr
Vehicles_ShiftGear.apr
Vehicles_Throttle.apr
Weapons_Grenede_Idle.apr
Weapons_Grenede_Pin.apr
Weapons_Hammer.apr
Weapons_Idle.apr
Weapons_MagRelease.apr
Weapons_Pistol_SlideHammer.apr
Weapons_Pistol_SlideHammerRelease.apr
Weapons_Pistol_SlideHammerReleaseTrigger.apr
Weapons_Rifles.apr
Weapons_Rifles_Bolt.apr
Weapons_Rifles_Bolt_rack.apr
Weapons_Rifles_Fire.apr
Weapons_Rifles_Sight.apr
Weapons_Rifles_Topcover.apr
Weapons_RPG7_Sight.apr
Weapons_Safety.apr
Weapons_Trigger.apr
↑ Back to spoiler's top


Format

Let's use FullBody_additive.apr as an example:

$animExportProfile {
 #trackCount 152
 #defaultFn ""
 $tracks {
	"Scene_Root"				""						"TRG" 		$genFn { "generateSceneRootMB" }
	"EntityPosition"			"Scene_Root"			"TRA"
	"Collision"					"EntityPosition"		"TRA"
	"Hips"						"EntityPosition"		"TRA"
	"LeftLeg"					"Hips"					"TRD"
	"LeftLegVolume"				"LeftLeg"				"TRD"
	"LeftLegTwist"				"LeftLeg"				"TRD"

	...
 }
}

$animExportProfile {
 #trackCount 152
 #defaultFn "defaultFnMB"
 $tracks {
	"Scene_Root"				""						"TRG" 		$genFn { "generateSceneRootMB" }
	"EntityPosition"			"Scene_Root"			"TRA"
	"Collision"					"EntityPosition"		"TRA"
	"Hips"						"EntityPosition"		"TRA"
	"LeftLeg"					"Hips"					"TRD"
	"LeftLegVolume"				"LeftLeg"				"TRD"
	"LeftLegTwist"				"LeftLeg"				"TRD"
	"LeftKnee"					"LeftLegTwist"			"TRD"
	"LeftKneeVolume"			"LeftKnee"				"TRD"
	"LeftKneeTwist"				"LeftKnee"				"TRD"
	"LeftFoot"					"LeftKneeTwist"			"TRD"
	"LeftToe"					"LeftFoot"				"TRD"
	"RightLeg"					"Hips"					"TRD"
	"RightLegVolume"			"RightLeg"				"TRD"
	"RightLegTwist"				"RightLeg"				"TRD"
	"RightKnee"					"RightLegTwist"			"TRD"
	"RightKneeVolume"			"RightKnee"				"TRD"
	"RightKneeTwist"			"RightKnee"				"TRD"
	"RightFoot"					"RightKneeTwist"		"TRD"
	"RightToe"					"RightFoot"				"TRD"
	"RightLegClothF"			"Hips"					"TRD"
	"RightLegClothB"			"Hips"					"TRD"
	"LeftLegClothF"				"Hips"					"TRD"
	"LeftLegClothB"				"Hips"					"TRD"

	"Spine1"					"Hips"					"TRD"
	"Stomach1"					"Spine1"				"TRD"
	"Spine2"					"Spine1"				"TRD"
	"Spine3"					"Spine2"				"TRD"
	"Stomach2"					"Spine3"				"TRD"
	"Spine4"					"Spine3"				"TRD"
	"Stomach3"					"Spine4"				"TRD"
	"Spine5"					"Spine4"				"TRD"
	"Neck1"						"Spine5"				"TRD"
	"Neck2"						"Neck1"					"TRD"
	"Neck3"						"Neck2"					"TRD"
	"Head"						"Neck3"					"TRD"
	"LeftShoulder"				"Spine5"				"TRD"
	"LeftArm"					"LeftShoulder"			"TRD"
	"LeftArmVolume"				"LeftArm"				"TRD"
	"LeftArmTwist"				"LeftArm"				"TRD"
	"LeftForeArm"				"LeftArmTwist"			"TRD"
	"LeftForeArmVolume"			"LeftForeArm"			"TRD"
	"LeftForeArmTwist"			"LeftForeArm"			"TRD"
	"LeftHandUpperVolume"		"LeftForeArmTwist"		"TRD"
	"LeftHand"					"LeftForeArmTwist"		"TRD"
	"RightShoulder"				"Spine5"				"TRD"
	"RightArm"					"RightShoulder"			"TRD"
	"RightArmVolume"			"RightArm"				"TRD"
	"RightArmTwist"				"RightArm"				"TRD"
	"RightForeArm"				"RightArmTwist"			"TRD"
	"RightForeArmVolume"		"RightForeArm"			"TRD"
	"RightForeArmTwist"			"RightForeArm"			"TRD"
	"RightHandUpperVolume"		"RightForeArmTwist"		"TRD"
	"RightHand"					"RightForeArmTwist"		"TRD"
 }
}
↑ Back to spoiler's top

  • #trackCount defines the number of track lines
  • #defaultFn defines the bones' default function to be used
  • $tracks lists bones, bone's parent, export type and eventually a function reference.
defaultFn should remain empty if you are exporting animations using Blender! Otherwise additive animations will be exported incorrectly.

Export Type

  • T means Translation
  • R means Rotation
  • S means Scale (not supported right now)
  • A means Absolute (not additive)
  • D means Differential (additive)
Examples
TRA means Translation and Rotation, Absolute
RD means Rotation, Differential


The combination of these creates a type of animation that can be used in different contexts. For example, a walking animation would definitely use every single part of the body, so it would probably contain all of the bones in exported with TRA (Translation & Rotation Absolute).

But an animation for a reload would most likely not export the legs (Pelvis is the first bone, with no parent) the Spine bones would be exported with TRD (Translation & Rotation Differential) so that some movement from the animation playing underneath it comes through, but with the arms and fingers exported with TRA (Translation & Rotation Absolute) so that they are precise and grab exactly where the magazine/rifle/etc is.

Creation

Generation of default export profile for selected model

Workbench have a small option which can assist with creation of new export profiles. When importing a new model in Workbench, there is option called Generate Default Profile in Import Settings of the model.

After checking this option and then pressing Reimport Resource, model will be reimported as usual + Workbench will also prepare a new export profile containing all bones located in the model in proper order & hierarchy. This new animation profile (.apr) file is by default created in /anims/export_profiles/ folder of currently used addon and exact path can be also found by looking at the Console Log window - over there there should be a log entry mentioning status of the export and location of generated file.

This option is quite useful when importing new models with complex skeleton like new custom characters (which don't use existing skeleton) or vehicles. Using this file, it is also possible to prepare derivatives for various other types of animations which might be useful in Animation Editor.

Once default animation profile is created, it is worth to uncheck Generate Default Profile option to avoid constant generation of this profile whenever mesh is changed.
If you are planning to use this export profile in Blender, don't forget to change defaultFn in .apr file!