Jump to content

smookie

Former Developer
  • Content Count

    500
  • Joined

  • Last visited

  • Medals

  • Medals

Posts posted by smookie


  1. Would it be too demanding to have a variety of animations for certain ranges of calibers depending on where you were hit and from what direction?

    W/o using ragdoll? I say it'd be pretty damn demanding :) Variety of animations for certain ranges of calibers, depending on the hit, depending on the direction, depending on the stance, depending on the weapon held etc....


  2. static - quite frankly no clue

    relSpeedMin - minimum relative speed of animation, applicable to fatigue states or AI, 1 means 100% of speed

    relSpeedMax - maximum of above, max is used for player actions for most of the time. used when player is 0% fatigued.

    canBlendStep - new in A3: blending of position of up to 3 animations between which there is interpolation played

    InterpolationSpeed - speed of interpolation, its pretty much self explanatory -> how long it takes for one anim to interpolate to another. its inverse of seconds (interpolationSpeed = 4 means it will take 1/4 s)

    InterpolationRestart - mode of interpolation: 0 - interpolation will start before preceding animation is finished (overwriting preceding animation keyframes) and go into first keyframe of second animation. 2 - interpolation will start at the end of preceding animation and overwrite initial keyframe of next animation. 1 - animation will be interpolated from last keyframe of preceding animation to first keyframe of the subsequent animation

    duty - ammount of fatigue caused by animation. negative value will result in faster restoring of energy.

    useIdles - NEW in A3: if 1, then animations in variantPlayer / variantAI will be played as full body gestures. This is important to reduce glitching resulting from normal interpolations to and from idling states.

    Walkcycles - obsolete

    limitGunMovement - refers to how the gun movement is actually limited (in vertical and horizontal axis) but only in reference to animation (as defined in aimingBody)

    • Like 1

  3. You do this via IK Curves for given hands. rightHandIKCurve[] = {0}; will cause right hand not to lie down on weapon. You dont want that so you'd better leave it at {1}. As for left hand, you should, in most cases, at least try to smoothen the transition between handAnim driver and gesture. You do this by setting points for curve like this:

    leftHandIKCurve[] = {0,1,0.05,0,0.95,0,1,1}; // first number in pair is animation rate marker, second number is target IK value

    This means, IK will be active at 0% of animation (beginning), then will smoothly go inactive at 5% of animation played, will remain inactive until 95% of animation is played and smoothly become active again at 100% animation. This way you get rid of "rough edges" of animations.

    • Like 1

  4. @Bad Benson

    You need to override class SoundEnvironExt in CAManBase that is in Characters_F/SoundEnvironExt.hpp

    To add a new sound, find generic[] array and add your sound there like this:

    // generic is array of sounds played on any kind of surface whenever soundname does not exist

    generic[] =

    {

    {"mySoundName", {"\my_addon\sounds\mySoundName_var_1.wav",db-34,1, 27}}, // name | path to file | volume | pitch

    {"mySoundName", {"\my_addon\sounds\mySoundName_var_2.wav",db-34,1, 27}}, // if more variants to the same sound sample

    // rest of sounds as previously configured

    }

    ---------- Post added at 18:33 ---------- Previous post was at 18:29 ----------

    Is it normal for handAnim mask that is defined in weapon config to not be overriden by gestures which use handsWeapon mask ?

    I am sorry for late reply, notifications didnt arrive to my email.

    I don't think i understand your question. HandAnim mask is only applied if animation or gesture uses IK handling for left or right hand. handsWeapon mask only refers to which bones are affected by use of gesture. Masks do not affect handAnim and handAnim is not a mask.

    ---------- Post added at 18:34 ---------- Previous post was at 18:33 ----------

    I've asked around a bit but got no answers so might you be able to point me to right direction?

    You gotta help me with that. Seems like packing issue that you are having. Please post or send your config to me and I will check it out.


  5. Two possible explanations:

    - The animation chain that leads to AadjPercMstpSrasWrflDdown is too long (over 3 states inbetween start being problematic) and costs are unclear to engine

    - There is no actual animation chain that leads to AadjPercMstpSrasWrflDdown

    If former is the case, you can try some workarounds, like waiting for unit to enter that state and then switchmove to it to unlock control.


  6. I have a more specific question regarding this subject, is there any way to prevent IK animations for handAnim? I'm aware we can force RTM specified via Blending values for gestures, but being able to do the same for handAnim would be wonderful.

    Unfortunately, it's not possible with the current engine state. This is one of the reasons we have decided to drop some nice Magpul style hand animations with AFG for Blufor guns. I will put the request forward for consideration in upcoming DLCs though.


  7. Having received a lot of PMs regarding setting up animations, I decided to start up this thread to try and explain all the magic stuff behind it. I will try to keep this post updated with all the variables and examples but I would prefer being asked questions here in public so that i can explain each of them. This is something I do in my spare time so please bear with me if I dont reply instantly, thank you :)

    For starters:

    1. Configuring animation

    Lets say we have an animation that begins in Default Weapon Raised Standing position (the one you enter game when placing soldier in editor). Its an anim of holding rifle with one hand with the other hanging on the side. You are able to shoot in this position. It lasts for 5 seconds and returns to default pose.

    config.cpp

    .
    class CfgMovesBasic; // Reference CfgMovesBasic. This class is used by ArmA3 to store Actionsets, which will be covered at later time
    class CfgMovesMaleSdr: CfgMovesBasic // Override CfgMovesMaleSdr class in which all animation states and gestures are stored. You can also make your own class but you need to make sure your unit will be using it. . Usually leave as is.
    {
    skeletonName="OFP2_ManSkeleton"; // Skeleton indication. If you are doing animations for a T-rex, you will obviously use your custom skeleton for all moves. . Usually leave as is.
    gestures="CfgGesturesMale"; // Gestures class. Again, if you are using custom class, change it. Usually leave as is.
    class States
    {
    	class AmovPercMstpSrasWrflDnon;
    	class MyAnimation : AmovPercMstpSrasWrflDnon
    	{
    		looped = 0; // if set to 1, engine will copy first keyframe to last keyframe, resulting in more "looped" motion. for non looping movement, ALWAYS DISABLE
    		speed = -5; // if speed is entered as positive number, it will mean it will last for 1/speed seconds (if 0.25, it will last for 4s). You can use negative number to indicate how many seconds should it last, in this example -5 will make it last 5 seconds
    		file = "\myAddons\myAnimation"; // path to animation file. may or may not end with ".rtm", there is no difference
    		canBlendStep = 0; // sliding effect on/off, we set it to off because we do not want character to move/slide in this move
    		minPlayTime= 0.95; // the ratio of animation that is required to play, in this example: 95% of animation must be played before it can be interrupted 
    // Interpolation - smooth blending to another state. We use it usually when we know that last keyframe is different to first keyframe of the target animation. If they are the same, use ConnectTo[] instead.
    		InterpolateTo[] = 
    			{
    				"AmovPercMstpSrasWrflDnon", 0.5  
    // First string is the class name of target animation, in this example this is default rifle standing pose. The number that follows is animation cost -> the engine will always look for the next target animation with smallest cost if there is more than one chain leading towards called action [again, actions will be explained later]
    // You can ignore the number (enter any float you want from 0 to 1) if: 
    /// there is only one way leading to target action
    /// there is no animation chain involved
    			};
    	}
    }
    }     
    

    Variables

    • file [values: any | string] - path to animation file. may or may not end with ".rtm", there is no difference
    • looped [values: 0,1 | integer] - if set to 1, engine will copy first keyframe to last keyframe, resulting in more "looped" motion. for non looping movement, ALWAYS DISABLE
    • speed [values: (-inf, inf) | float] - if speed is entered as positive number, it will mean it will last for 1/speed seconds (if 0.25, it will last for 4s). You can use negative number to indicate how many seconds should it last, in this example -5 will make it last 5 seconds
    • canBlendStep [values: 0,1 | integer] - sliding effect on/off
    • minPlayTime [values: <0,1> | float] - the ratio of animation that is required to play before it can be interrupted

    Arrays

    • InterpolateTo[] [values: alternating "String", float+] - smooth blending to another state. First string is the class name of target animation, in this example this is default rifle standing pose. The number that follows is animation cost -> the engine will always look for the next target animation with smallest cost if there is more than one chain leading towards called action. You can ignore it unless you are working towards improving connection between states that are links away in the chain

    Please post your questions below. I will try to explain all the variables, arrays and problems as soon as possible. Good luck :)

    • Like 2
    • Thanks 1

  8. So, any change that this will be fixed?

    Yes I understood your issue and provided temporary solution to the problem. I also suggest to make a ticket on feedback tracker so that it can reach the designers :)

    @Low-ready replies

    I am just expressing my and design concerns I have got in reply. Believe me that this idea has been passed over to consideration quite a few months ago.


  9. There is something I don´t like about the current system. Say you are in a lowered crouch and then you reload your weapon. What happens is that you go back into crouch until you are finished reloading. I would love to use the stance system to lower myself a bit while I reload , but currently I have to go prone if I´m behind a low wall and want to be protected while reloading.

    Are you going to work on this problem?

    I dont think there are any plans for this since having weapon in the view when reloading is much more tacticool.

    You can however use overlay addon that will change the mask of the kneeled stance to Context. When editing config for animations, you can add these lines in Actions -> RifleAdjustKneelBaseActions (or Pistol...)

    
    		GestureReloadMk20[]=
    		{
    			"GestureReloadMk20Context",
    			"Gesture"
    		};
    		GestureReloadMX[]=
    		{
    			"GestureReloadMXContext",
    			"Gesture"
    		};
    		GestureReloadMXCompact[]=
    		{
    			"GestureReloadMXCompactContext",
    			"Gesture"
    		};
    		GestureReloadMXSniper[]=
    		{
    			"GestureReloadMXSniperContext",
    			"Gesture"
    		};
    		GestureReloadTRG[]=
    		{
    			"GestureReloadTRGContext",
    			"Gesture"
    		};
    		GestureReloadTRGUGL[]=
    		{
    			"GestureReloadTRGUGLContext",
    			"Gesture"
    		};
    		GestureReloadKatiba[]=
    		{
    			"GestureReloadKatibaContext",
    			"Gesture"
    		};
    		GestureReloadLRR[]=
    		{
    			"GestureReloadLRRContext",
    			"Gesture"
    		};
    		GestureReloadEBR[]=
    		{
    			"GestureReloadEBRContext",
    			"Gesture"
    		};
    		GestureReloadSMG_02[]=
    		{
    			"GestureReloadSMG_02Context",
    			"Gesture"
    		};
    		GestureReloadSMG_03[]=
    		{
    			"GestureReloadSMG_03Context",
    			"Gesture"
    		};
    		GestureReloadPistol[]=
    		{
    			"GestureReloadPistolContext",
    			"Gesture"
    		};
    		GestureReloadPistolHeavy02[]=
    		{
    			"GestureReloadPistolHeavy02Context",
    			"Gesture"
    		};
    		GestureReloadFlaregun[]=
    		{
    			"GestureReloadFlaregunContext",
    			"Gesture"
    		};
    		GestureReloadSMG_01[]=
    		{
    			"GestureReloadSMG_01Context",
    			"Gesture"
    		};
    		GestureReloadSDAR[]=
    		{
    			"GestureReloadSDARContext",
    			"Gesture"
    		};
    		GestureReloadDMR[]=
    		{
    			"GestureReloadDMRContext",
    			"Gesture"
    		};
    

    This will cause the animation not to impose its own rotation of the hips bone. In other words - the character will stay leaned in the adjusted pose.

    As for Low-ready pose, this is already achieved in DayZ and as such requires programming intervention to launch desired actions. Humble animator cant do much about it :) This feature, in ArmA3, is on my personal to-do (to-bitch-about) list for a long time but hasnt been confirmed yet.

    ---------- Post added at 15:25 ---------- Previous post was at 15:17 ----------

    Think of tactical key as the tactical/low-ready toggle.So pressing it you can quickly toggle between shouldered and low-ready giving you the choice of having either the weapon up,to be able to quickly fire but with restricted view or weapon low-ready with better awareness but having to go to actual sights when enemy is spotted.Yes you could just press the lower weapon fully key but this adds in a bit of clunkiness with the extra key press.Plus it looks more realistic when the weapons are slightly lowered in 1st person/3rd person and also to other players.

    I actually don't think this is a good idea. I would treat low-ready position as eye-candy only (or well, a feature that allows you to see 20% more of the screen, without reducing combat effectivness). One way out would be having the weapon to raise up automatically when firing but I would be afraid of common folks being confused about not seeing the weapon (or just the tip of it), wondering whether they can actually fire or not. After all, DayZ seems more like a third person game while ArmA3 tends to be played in FPS and therefore it would not be unreasonable to think that more standard FPS solutions should be preffered.


  10. Since we got a stance indicator already, what about the low-ready stance? I'm eagerly waiting for it, would be really useful.

    I'm not sure how much work it is, I think a reply/statement from @Smookie or any other dev might be helpful. It's a lack of realism in my opinion.

    Also setting a low-ready stance, once it implemented as default would be a sweet thing, too.

    I would love that too. Some ideas have been already put forward but they will need to wait until the campaign is fully released :)


  11. Well,

    if you play TvT - the lack of hand signals is a big issue - if you prefer to play a realistic teamplay. I am also not sure, if the AI react to ACRE.

    We have tech required to do the hand signals quite well, we have mocap data for this, its all down to design now. Best you can do is post a ticket on feedback tracker and vote up the feature.

    • Like 1

  12. Have we seen any progress regarding inertia yet?

    ---------- Post added at 20:41 ---------- Previous post was at 20:40 ----------

    Arma 3 is young. It will get more realistic over time. And this take time and resources for the developers.

    Current state is a result of many trade-offs for sake for increased fluidity of control over the character. Being huge fan of inertia in animations and having prototyped some of moves like sprint-stopping/starting etc. - well it takes away from control-ability, i must admit it was correct choice, taking into account the assets that we had. The animation system is, however, a candidate for further development so we might as well see some improvements in this field.


  13. In truth, I am hoping to have climbing/vaulting improved in following iterations of vanilla game and thats why i am paying attention to this. We have some data already mocaped (for both climbing things and even 2 meter walls), it all waits for processing. Catch me on skype if you need details on new stuff.

    As for healing... i admit, its a bug pending for a fix.

×