TroyT 6 Posted April 30, 2019 I've been trying to sort out custom hand animations but keep getting the weird, distorted hand positions. I've found many threads concerning this but most of them are almost 10 years old. I've run through most of the fixes in these threads but can't seem to crack it. This video seemed promising but didn't do it - making a custom handanim for arma weapons My current workflow is this: in Object Builder, open a fresh copy of BISkeleton.p3d from the BIS Oxygen 2 Examples http://www.armaholic.com/page.php?id=1903&highlight=BIMODELS I've also tried some of the RTM files in the Arma 3 Samples' "animation" folder. Create keyframes -0.5000 and 0.0000 While in KF 0.0000, copy a version of my weapon model into the BISkeleton.p3d with all vertices included in a single named selection - "weapon". I've also tried using a proxy. Manipulate hands as needed to fit my model making sure to enable "Points > Transform 3d > Show Local Axis" and using appropriate constraints while moving the skeleton Delete my model - I've tried variations like leaving my model and deleting the M4 that comes with the p3d, leaving them both in, renaming the M4 named selection and keeping the one imported with my model, etc. Export Matrices to my custom rtm file in my "addon/data/anim" folder. I've copied the A3 Samples' Test_Weapon model.cfg into my addon folder and made a few adjustments to overcome some errors the PBO Project throws. Run PBO Project and launch the game to test. Repeat 1000 more times with various tweaks with an exasperated and exhausted plea for success that I fear will never come. Any help would be appreciated. My model.cfg: Spoiler class CfgSkeletons { class Weapon { pivotsModel=""; isDiscrete = 0; skeletonInherit = ""; skeletonBones[] = {}; }; class Rifle: Weapon { pivotsModel=""; isDiscrete = 0; skeletonInherit = ""; skeletonBones[] = {}; }; class BSF_AA12_A1: Rifle { pivotsModel=""; isDiscrete = 0; skeletonInherit = ""; skeletonBones[] = { "trigger", "", /// not in this model, but good to use "bolt", "", "bolt_catch", "", "magazine", "", "safety", "", "muzzleFlash", "", "OP", "", "ForeSight", "", "BackSight", "" }; }; class Test_Bipod { pivotsModel=""; isDiscrete = 0; skeletonInherit = ""; skeletonBones[] = { "bipod_legs", "", "bipod_leg_L", "bipod_legs", "leg_L", "bipod_leg_L", "bipod_leg_R", "bipod_legs", "leg_R", "bipod_leg_R" }; }; class Head { isDiscrete = 0; skeletonInherit = ""; skeletonBones[] = { "neck","", "neck1","neck", "head","neck1", "lBrow","head", "mBrow","head", "rBrow","head", "lMouth","head", "mMouth","head", "rMouth","head", "eyelids","head", "LLip","head" }; }; class OFP2_ManSkeleton { isDiscrete = 0; skeletonInherit = "Head"; skeletonBones[] = { "weapon","", "launcher","", "Camera","", "Spine","", "Spine1","", "Spine2","", "Spine3","", "Pelvis","", "LeftShoulder","", "LeftArm","", "LeftArmRoll","", "LeftForeArm","", "LeftForeArmRoll","", "LeftHand","", "LeftHandRing","", "LeftHandRing1","", "LeftHandRing2","", "LeftHandRing3","", "LeftHandPinky1","", "LeftHandPinky2","", "LeftHandPinky3","", "LeftHandMiddle1","", "LeftHandMiddle2","", "LeftHandMiddle3","", "LeftHandIndex1","", "LeftHandIndex2","", "LeftHandIndex3","", "LeftHandThumb1","", "LeftHandThumb2","", "LeftHandThumb3","", "RightShoulder","", "RightArm","", "RightArmRoll","", "RightForeArm","", "RightForeArmRoll","", "RightHand","", "RightHandRing","", "RightHandRing1","", "RightHandRing2","", "RightHandRing3","", "RightHandPinky1","", "RightHandPinky2","", "RightHandPinky3","", "RightHandMiddle1","", "RightHandMiddle2","", "RightHandMiddle3","", "RightHandIndex1","", "RightHandIndex2","", "RightHandIndex3","", "RightHandThumb1","", "RightHandThumb2","", "RightHandThumb3","", "LeftUpLeg","", "LeftUpLegRoll","", "LeftLeg","", "LeftLegRoll","", "LeftFoot","", "LeftToeBase","", "RightUpLeg","", "RightUpLegRoll","", "RightLeg","", "RightLegRoll","", "RightFoot","", "RightToeBase","" }; }; }; class CfgModels { class Default { sectionsInherit=""; sections[] = {}; skeletonName = ""; }; class Optic: Default { sections[]= { "zasleh" }; }; class Weapon: Default { sections[]= { "zasleh" }; htMin = 1; // Minimum half-cooling time (in seconds) htMax = 600; // Maximum half-cooling time (in seconds) afMax = 0; // Maximum temperature in case the model is alive (in celsius) mfMax = 0; // Maximum temperature when the model is moving (in celsius) mFact = 1; // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)). tBody = 100; // Metabolism temperature of the model (in celsius) skeletonName="Weapon"; class Animations { class zaslehROT { type="rotation"; source="clockMinute"; sourceAddress="loop"; selection="zasleh"; begin="usti hlavne"; end="konec hlavne"; memory=1; minValue=0.0166665; maxValue=0.016666666666666666666666666666667; angle0="rad 0"; angle1="rad 360"; }; class magazine_hide { type="hide"; source="reloadMagazine"; sourceAddress="mirror"; selection="magazine"; minValue=0.0; maxValue=0.4; hideValue=0.5; }; class reload_ammobelt_hide: magazine_hide { selection="ammo_belt"; }; class reload_ammobelt_bottom_hide: magazine_hide { selection="ammo_belt_bottom"; }; class ammobelt_hide: magazine_hide { source="isEmpty"; selection="ammo_belt"; minValue=0.000000; maxValue=1.000000; hideValue=1.000000; }; class ammobelt_bottom_hide: ammobelt_hide { selection="ammo_belt_bottom"; }; /// Hiding of magazine if weapon has none class no_magazine { type="hide"; source="hasMagazine"; selection="magazine"; minValue=0.000000; maxValue=1.00000; hideValue=0.5; unhideValue = -1.0; }; }; }; class Rifle: Weapon { skeletonName="Rifle"; class Animations: Animations { class magazine_hide:magazine_hide { sourceAddress="mirror"; minValue=0.0; maxValue=0.56; hideValue=0.36; }; class bolt_empty { type="translation"; source="isEmpty"; selection="bolt"; axis="bolt_axis"; memory=1; minValue=0.000000; maxValue=0.500000; offset0=0; offset1=0.5; }; class bullet_cover { type="rotation"; source="reload"; sourceAddress="mirror"; selection="bullet_cover"; axis="bullet_cover_axis"; memory=1; minValue=0.0; maxValue=0.5; angle0=0; angle1=-0.4; }; class bolt_fire_begin { type="translation"; source="reload"; selection="bolt"; axis="bolt_axis"; memory=1; minValue=0.000000; maxValue=0.300000; offset0=0; offset1=0.5; }; class bolt_fire_end:bolt_fire_begin { minValue=0.500000; maxValue=1.000000; offset0=0; offset1=-0.5; }; class bolt_reload_begin { type="translation"; source="reloadMagazine"; selection="bolt"; axis="bolt_axis"; memory=1; minValue=0.1; maxValue=0.15; offset0=0; offset1=0.5; }; class bolt_reload_end:bolt_reload_begin { minValue=0.980000; maxValue=1.000000; offset0=0; offset1=-0.5; }; }; }; class BSF_AA12_A1_WeaponBase: Rifle { skeletonName = "BSF_AA12_A1"; sectionsInherit = ""; sections[] = {"muzzleFlash","Camo"}; class Animations { class trigger /// not in this model, but good to use { type = "rotation"; source = "reload"; sourceAddress = "clamp"; selection = "trigger"; axis = "trigger_axis"; minValue = 0; maxValue = "1"; angle0 = "0"; angle1 = "rad -30"; }; class bolt { type = "translation"; source = "reload"; sourceAddress = clamp; selection = "bolt"; axis = "bolt_axis"; minValue = 0.5; maxValue = 1; offset0 = 0; offset1 = 0.3; }; class bolt_2: bolt { minValue = 0; maxValue = 0.5; offset0 = 0; offset1 = 0.7; }; class bolt_empty: bolt{ source = "isEmptyNoReload"; minValue = 0; maxValue = 1; offset0 = 0; offset1 = 1; }; class bolt_reload_move_1: bolt_empty { source="reloadMagazine"; // z: should work like that only if weapon is empty minValue=0; maxValue=0.00001; }; class bolt_reload_move_2: bolt_reload_move_1 { source="reloadMagazine"; // z: should work like that only if weapon is empty minValue=0.78; maxValue=0.80; offset1 = -1; }; class bolt_catch: bolt { selection = "bolt_catch"; axis = "bolt_catch_axis"; }; class bolt_catch_2: bolt_2 { selection = "bolt_catch"; axis = "bolt_catch_axis"; }; class bolt_catch_empty: bolt_empty { selection = "bolt_catch"; axis = "bolt_catch_axis"; }; class bolt_catch_reload_move_1: bolt_reload_move_1 { selection = "bolt_catch"; axis = "bolt_catch_axis"; }; class bolt_catch_reload_move_2: bolt_reload_move_2 { selection = "bolt_catch"; axis = "bolt_catch_axis"; }; class magazine_hide { type="hide"; source="reloadMagazine"; selection="magazine"; minValue=0.000000; maxValue=1.00000; hideValue=0.188; unhideValue = 0.550; }; class no_magazine { type="hide"; source="hasMagazine"; selection="magazine"; minValue=0.000000; maxValue=1.00000; hideValue=0.5; unhideValue = -1.0; }; class magazine_reload_move_1 { type = "translation"; source = "reloadMagazine"; selection = "magazine"; axis = "magazine_axis"; minValue = 0.145; maxValue = 0.170; offset0 = 0.0; offset1 = 0.5; }; class magazine_reload_move_2: magazine_reload_move_1 { minValue = 0.573; maxValue = 0.602; offset0 = 0.0; offset1 = -0.5; }; class muzzleFlashROT { type="rotationX"; source="ammoRandom"; //use ammo count as phase for animation sourceAddress="loop"; //loop when phase out of bounds selection="muzzleFlash"; //selection we want to rotate axis=""; //no own axis - center of rotation is computed from selection centerFirstVertex=true; //use first vertex of selection as center of rotation minValue=0; maxValue=4; //rotation angle will be 360/4 = 90 degrees angle0="rad 0"; angle1="rad 360"; }; class OP_ROT { type="rotation"; source="zeroing2"; // use second muzzle zeroing for rotation sourceAddress="loop"; // loop when phase out of bounds selection="OP"; // selection we want to rotate axis="OP_axis"; // has its own axis minValue=0; maxValue=3; angle0="rad 0"; angle1="rad 65"; }; class BackSight_optic { type="rotation"; source="hasOptics"; selection="BackSight"; axis="BackSight_axis"; memory=1; minValue=0.0000000; maxValue=1.0000000; angle0=0.000000; angle1=(rad 90); }; class ForeSight_optic: BackSight_optic { selection="ForeSight"; axis="ForeSight_axis"; angle1=(rad 90); }; // Rotation of fire mode switch class safety_mode_rot { type = rotation; source = weaponMode; selection = "safety"; axis = "safety_axis"; memory = 1; minValue = 0; maxValue = 0.25; angle0 = 0; angle1 = (rad -52); }; }; }; class BSF_AA12_A1: BSF_AA12_A1_WeaponBase {}; class test_bipod_01_F { skeletonName = "Test_Bipod"; sectionsInherit = ""; sections[] = {"bipod_leg_L","bipod_leg_R","bipod_legs"}; class Animations { class leg_L { type = rotation; source = bipod_legs; sourceAddress = clamp; selection = "bipod_leg_L"; axis = "bipod_leg_L_axis"; minValue = 0; maxValue = 1; angle0 = (rad -5); angle1 = (rad 18); }; class leg_R: leg_L { selection = "bipod_leg_R"; axis = "bipod_leg_R_axis"; }; class legs: leg_L { selection = "bipod_legs"; axis = "bipod_legs_axis"; angle0 = (rad 0); angle1 = (rad 90); }; class Leg_L_move { type = translation; source = bipod_legs_length; selection = "Leg_L"; axis = "Leg_L_axis"; memory = 1; minValue = 0; maxValue = 1; offset0 = 0; offset1 = 10; }; class Leg_R_move: Leg_L_move { selection = "Leg_R"; axis = "Leg_R_axis"; }; }; }; }; my config.cpp Spoiler class cfgMods { author="Troy - BS-Free"; timepacked="1427022694"; }; class CfgPatches { class BSF_AA12 { author="Troy - BS-Free"; requiredVersion= 1.60; requiredAddons[]={ "a3_weapons_f"}; units[]={}; weapons[]= {"BSF_AA12_1A_F"}; }; }; /// All firemodes, to be sure class Mode_SemiAuto; class Mode_Burst; class Mode_FullAuto; /// Weapon slots class SlotInfo; class MuzzleSlot; class CowsSlot; class PointerSlot; class UnderBarrelSlot; #include "AA12_Ammo.hpp" class CfgRecoils { BSF_AA12_Recoil[]={0,0,0,0.039999999,0.079999998,0.039999999,0.039999999,0.039999999,0.02,0.039999999,0.02,0.0099999998,0.039999999,0.0099999998,0.0049999999,0.039999999,0.0049999999,0.0020000001,0.039999999,-0.0099999998,-0.0040000002,0.039999999,-0.0049999999,-0.02,0.039999999,0,0}; }; class CfgWeapons { class Rifle; class Rifle_Base_F: Rifle { class WeaponSlotsInfo; class GunParticles; }; class BSF_AA12_Base: Rifle_Base_F { magazines[]= {"BSF_12g_Drum_32Rnnd_Pellets","BSF_12g_Drum_32Rnnd_Slug"}; reloadAction="GestureReloadM4SSAS"; magazineReloadSwitchPhase = 0.4; /// part of reload animation when new magazine ammo count should affect "revolving" animation source discreteDistanceInitIndex = 0; /// Ironsight zeroing is the lowest value by default maxRecoilSway=0.0125; // Size of recoil sway of the cursor swayDecaySpeed=1.25; // Speed at which the recoil sway goes back to zero (from maxRecoilSway to 0 in 1/swayDecaySpeed seconds) inertia = 0.5;/// inertia coefficient of the weapon /// positive value defines speed of the muzzle independent on the magazine setting, negative value is a coefficient of magazine initSpeed initSpeed = -1; /// this means that initSpeed of magazine is used class GunParticles : GunParticles { class SecondEffect { positionName = "Nabojnicestart"; directionName = "Nabojniceend"; effectName = "CaselessAmmoCloud"; }; }; ///////////////////////////////////////////////////// I R O N S I G H T S ///////////////////////////////////////////////////// opticsZoomMin=0.375; opticsZoomMax=1.1; opticsZoomInit=0.75; distanceZoomMin = 80; distanceZoomMax = 80; ///////////////////////////////////////////////////// I R O N S I G H T S ///////////////////////////////////////////////////// descriptionShort="BSF AA12 1A"; handAnim[]= { "OFP2_ManSkeleton", "BSF_Community_Addon\addons\BSF_AA12\data\anim\bsf_aa12.rtm" }; dexterity=1.5; selectionFireAnim = "muzzleFlash"; /// are we able to get rid of all the zaslehs? modes[]= {"Single","FullAuto","fullauto_medium"}; class Single: Mode_SemiAuto { sounds[]= { "StandardSound", "SilencedSound" }; class BaseSoundModeType { weaponSoundEffect="DefaultRifle"; closure1[]= { "A3\sounds_f\weapons\closure\closure_rifle_7.wss", 1, 1, 200 }; closure2[]= { "A3\sounds_f\weapons\closure\closure_rifle_6.wss", 1, 1, 200 }; soundClosure[]= { "closure1", 0.5, "closure2", 0.5 }; }; class StandardSound: BaseSoundModeType { beginsound[]= { "BSF_Community_Addon\addons\BSF_AA12\data\sounds\AA12.ogg", 1.5, 1, 900 }; soundBegin[]= { "beginsound", 1 }; }; class SilencedSound: BaseSoundModeType { beginsound[]= { "BSF_Community_Addon\addons\BSF_AA12\data\sounds\AA12.ogg", 1.5, 1, 900 }; soundBegin[]= { "beginsound", 1 }; }; reloadTime=0.1; dispersion=0.001; recoil="BSF_AA12_Recoil"; recoilProne="BSF_AA12_Recoil"; minRange=2; minRangeProbab=0.2; midRange=75; midRangeProbab=0.34999999; maxRange=200; maxRangeProbab=0.44999999; }; class FullAuto: Mode_FullAuto { sounds[] = { StandardSound, SilencedSound }; class BaseSoundModeType { weaponSoundEffect="DefaultRifle"; closure1[]= { "A3\sounds_f\weapons\closure\closure_rifle_7.wss", 1, 1, 200 }; closure2[]= { "A3\sounds_f\weapons\closure\closure_rifle_6.wss", 1, 1, 200 }; soundClosure[]= { "closure1", 0.5, "closure2", 0.5 }; }; class StandardSound: BaseSoundModeType { beginsound[]= { "BSF_Community_Addon\addons\BSF_AA12\data\sounds\AA12.ogg", 1.5, 1, 900 }; soundBegin[]= { "beginsound", 1 }; }; class SilencedSound: BaseSoundModeType { beginsound[]= { "BSF_Community_Addon\addons\BSF_AA12\data\sounds\AA12.ogg", 1.5, 1, 900 }; soundBegin[]= { "beginsound", 1 }; }; reloadTime=0.1; dispersion=0.001; recoil="BSF_AA12_Recoil"; recoilProne="BSF_AA12_Recoil"; minRange=2; minRangeProbab=0.2; midRange=75; midRangeProbab=0.34999999; maxRange=200; maxRangeProbab=0.44999999; aiRateOfFire = 0.000001; }; class fullauto_medium: FullAuto /// Pew, pew, pew only for AI { showToPlayer = 0; burst = 3; minRange = 2; minRangeProbab = 0.5; midRange = 75; midRangeProbab = 0.7; maxRange = 150; maxRangeProbab = 0.05; aiRateOfFire = 2.0; aiRateOfFireDistance = 200; }; aiDispersionCoefY=6.0; /// AI should have some degree of greater dispersion for initial shoots aiDispersionCoefX=4.0; /// AI should have some degree of greater dispersion for initial shoots // drySound[]={"A3\sounds_f\weapons\Other\dry_1", db-5, 1, 10}; /// custom made sounds // reloadMagazineSound[]={"A3\sounds_f\weapons\reloads\new_MX",db-8,1, 30}; /// custom made sounds drySound[]= {"A3\Sounds_F\weapons\Other\dry6.wss", 0.1, 1}; reloadMagazineSound[]= {"BSF_Community_Addon\addons\BSF_AA12\data\sounds\reload.ogg", 1.3, 1, 30}; bullet1[]={"A3\sounds_f\weapons\shells\5_56\metal_556_01.wss",0.1,1,15}; bullet2[]={"A3\sounds_f\weapons\shells\5_56\metal_556_02.wss",0.1,1,15}; bullet3[]={"A3\sounds_f\weapons\shells\5_56\metal_556_03.wss",0.17782794,1,15}; bullet4[]={"A3\sounds_f\weapons\shells\5_56\metal_556_04.wss",0.17782794,1,15}; bullet5[]={"A3\sounds_f\weapons\shells\5_56\asphlat_556_01.wss",0.1,1,15}; bullet6[]={"A3\sounds_f\weapons\shells\5_56\asphlat_556_02.wss",0.1,1,15}; bullet7[]={"A3\sounds_f\weapons\shells\5_56\asphlat_556_03.wss",0.1,1,15}; bullet8[]={"A3\sounds_f\weapons\shells\5_56\asphlat_556_04.wss",0.1,1,15}; bullet9[]={"A3\sounds_f\weapons\shells\5_56\grass_556_01.wss",0.0099999998,1,15}; bullet10[]={"A3\sounds_f\weapons\shells\5_56\grass_556_02.wss",0.0099999998,1,15}; bullet11[]={"A3\sounds_f\weapons\shells\5_56\grass_556_03.wss",0.0099999998,1,15}; bullet12[]={"A3\sounds_f\weapons\shells\5_56\grass_556_04.wss",0.0099999998,1,15}; soundBullet[]={"bullet1",0.082999997,"bullet2",0.082999997,"bullet3",0.082999997,"bullet4",0.082999997,"bullet5",0.082999997,"bullet6",0.082999997,"bullet7",0.082999997,"bullet8",0.082999997,"bullet9",0.082999997,"bullet10",0.082999997,"bullet11",0.082999997,"bullet12",0.082999997}; }; class BSF_AA12_1A_F: BSF_AA12_Base { scope=2; displayName="BSF AA12 1A"; model="BSF_Community_Addon\addons\BSF_AA12\BSF_AA12_A1.p3d"; picture="BSF_Community_Addon\addons\BSF_AA12\data\UI\icon_BSF_AA12_1A_CA.paa"; // UiPicture = "\A3\Weapons_F\Data\UI\icon_gl_CA.paa"; /// weapon with grenade launcher should be marked such way weaponInfoType = "RscWeaponZeroing"; /// display with zeroing is good for iron sights // modelOptics="-"; // muzzlePos="usti hlavne"; // muzzleEnd="konec hlavne"; fireSpreadAngle=0.64999998; discreteDistance[]={50,100,200}; class WeaponSlotsInfo: WeaponSlotsInfo { mass=4; class MuzzleSlot {}; }; }; }; Share this post Link to post Share on other sites
ruff 102 Posted August 16, 2020 You need the proper p3d model with the right skeletons. Use the armaholic guide. Share this post Link to post Share on other sites
ruff 102 Posted August 16, 2020 Follow chapter 5 and used the p3d found in this turtorial https://www.armaholic.com/page.php?id=20600 Share this post Link to post Share on other sites
awesomeguy81 1 Posted October 15, 2020 This is an old thread, but just for future reference if anyone is having the same issue. I found that the arms and hands get mangled as pictured above if the RTM file is not binarised. Addon Builder will only binarise the RTM files if there is a valid model.cfg class CfgSkeletons { class OFP2_ManSkeleton { isDiscrete = 0; skeletonInherit = ""; skeletonBones[] = { "Pelvis","", "Spine","Pelvis", "Spine1","Spine", "Spine2","Spine1", "Spine3","Spine2", "Camera","Pelvis", "weapon","Spine1", "launcher","Spine1", // Head skeleton in hierarchy "neck","Spine3", "neck1","neck", "head","neck1", // New facial features "Face_Hub","head", "Face_Jawbone","Face_Hub", "Face_Jowl","Face_Jawbone", "Face_chopRight","Face_Jawbone", "Face_chopLeft","Face_Jawbone", "Face_LipLowerMiddle","Face_Jawbone", "Face_LipLowerLeft","Face_Jawbone", "Face_LipLowerRight","Face_Jawbone", "Face_Chin","Face_Jawbone", "Face_Tongue","Face_Jawbone", "Face_CornerRight","Face_Hub", "Face_CheekSideRight","Face_CornerRight", "Face_CornerLeft","Face_Hub", "Face_CheekSideLeft","Face_CornerLeft", "Face_CheekFrontRight","Face_Hub", "Face_CheekFrontLeft","Face_Hub", "Face_CheekUpperRight","Face_Hub", "Face_CheekUpperLeft","Face_Hub", "Face_LipUpperMiddle","Face_Hub", "Face_LipUpperRight","Face_Hub", "Face_LipUpperLeft","Face_Hub", "Face_NostrilRight","Face_Hub", "Face_NostrilLeft","Face_Hub", "Face_Forehead","Face_Hub", "Face_BrowFrontRight","Face_Forehead", "Face_BrowFrontLeft","Face_Forehead", "Face_BrowMiddle","Face_Forehead", "Face_BrowSideRight","Face_Forehead", "Face_BrowSideLeft","Face_Forehead", "Face_Eyelids","Face_Hub", "Face_EyelidUpperRight","Face_Hub", "Face_EyelidUpperLeft","Face_Hub", "Face_EyelidLowerRight","Face_Hub", "Face_EyelidLowerLeft","Face_Hub", "EyeLeft","Face_Hub", "EyeRight","Face_Hub", // Left upper side "LeftShoulder","Spine3", "LeftArm","LeftShoulder", "LeftArmRoll","LeftArm", "LeftForeArm","LeftArmRoll", "LeftForeArmRoll","LeftForeArm", "LeftHand","LeftForeArmRoll", "LeftHandRing","LeftHand", "LeftHandRing1","LeftHandRing", "LeftHandRing2","LeftHandRing1", "LeftHandRing3","LeftHandRing2", "LeftHandPinky1","LeftHandRing", "LeftHandPinky2","LeftHandPinky1", "LeftHandPinky3","LeftHandPinky2", "LeftHandMiddle1","LeftHand", "LeftHandMiddle2","LeftHandMiddle1", "LeftHandMiddle3","LeftHandMiddle2", "LeftHandIndex1","LeftHand", "LeftHandIndex2","LeftHandIndex1", "LeftHandIndex3","LeftHandIndex2", "LeftHandThumb1","LeftHand", "LeftHandThumb2","LeftHandThumb1", "LeftHandThumb3","LeftHandThumb2", // Right upper side "RightShoulder","Spine3", "RightArm","RightShoulder", "RightArmRoll","RightArm", "RightForeArm","RightArmRoll", "RightForeArmRoll","RightForeArm", "RightHand","RightForeArmRoll", "RightHandRing","RightHand", "RightHandRing1","RightHandRing", "RightHandRing2","RightHandRing1", "RightHandRing3","RightHandRing2", "RightHandPinky1","RightHandRing", "RightHandPinky2","RightHandPinky1", "RightHandPinky3","RightHandPinky2", "RightHandMiddle1","RightHand", "RightHandMiddle2","RightHandMiddle1", "RightHandMiddle3","RightHandMiddle2", "RightHandIndex1","RightHand", "RightHandIndex2","RightHandIndex1", "RightHandIndex3","RightHandIndex2", "RightHandThumb1","RightHand", "RightHandThumb2","RightHandThumb1", "RightHandThumb3","RightHandThumb2", // Left lower side "LeftUpLeg","Pelvis", "LeftUpLegRoll","LeftUpLeg", "LeftLeg","LeftUpLegRoll", "LeftLegRoll","LeftLeg", "LeftFoot","LeftLegRoll", "LeftToeBase","LeftFoot", // Right lower side "RightUpLeg","Pelvis", "RightUpLegRoll","RightUpLeg", "RightLeg","RightUpLegRoll", "RightLegRoll","RightLeg", "RightFoot","RightLegRoll", "RightToeBase","RightFoot" }; // location of pivot points (local axes) for hierarchical animation pivotsModel="A3\anims_f\data\skeleton\SkeletonPivots.p3d"; }; }; class CfgModels { class Default { sectionsInherit=""; sections[] = {}; skeletonName = ""; }; class ArmaMan: Default { htMin = 60; // Minimum half-cooling time (in seconds) htMax = 1800; // Maximum half-cooling time (in seconds) afMax = 30; // Maximum temperature in case the model is alive (in celsius) mfMax = 0; // Maximum temperature when the model is moving (in celsius) mFact = 1; // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)). tBody = 37; // Metabolism temperature of the model (in celsius) sections[] = { "osobnost", "Head_Injury", "Body_Injury", "l_leg_injury", "l_arm_injury", "r_arm_injury", "r_leg_injury", "injury_body", "injury_legs", "injury_hands", "injury_head", "clan", "clan_sign", "Camo", "CamoB", "Camo1", "Camo2", "personality", "hl", "insignia" }; skeletonName = "OFP2_ManSkeleton"; }; class bust: ArmaMan {}; class Male: ArmaMan {}; class MaleSkeleton_Pivots: ArmaMan {}; }; 1 Share this post Link to post Share on other sites