Animating idle states for first-person view

polycounter lvl 6
Offline / Send Message
armagon polycounter lvl 6
I'm trying to make a more natural and fluid animation for my idle states in first-person weapon models. Everything that i tried looks very stiff and repetitive... i mean, i can detect the patterns and the loop.

Does anyone recommend any technique for this? Do you guys use some kind of random natural noise in the curve, like perlin, or do you base your animation on top of an algorithm like the Lissajous curve?


  • Hito
    Offline / Send Message
    Hito polycounter lvl 10
    you can't do much about the repetitiveness without very long loop cycles (like 1886); but it's unlikely anyone will sit still long enough in an FPS to see it. A lot of times there are idle breaks (checking gun, looking around, etc), short loops that randomly play during idle to break up the repetitiveness.

    As far as pop when looping, make sure the 1st and last key frame are exactly the same. check your animation curves and make sure the in/out tangents on the 1st/last keyframe are smooth. For playback, drop the last frame so you aren't playing the same frame twice (another contributor to popping loop).

    Some people add "dirt" using noise, or manually. Max has noise controller for that; Maya can do the same with node editor. I'm not convinced it makes any visual difference so far.
  • heboltz3
    Offline / Send Message
    heboltz3 polycounter lvl 5
    What Hito saying is right on the head.

    Realistically, I find my idles to be on average anywhere from 90-360 frames, depending on what I'm doing, and then I'll go in with a bunch of fidget animations and hook them up to break the repetitive nature of the idle.

    A super large cycle could work, but realistically you can also achieve the same effect with smaller animations chained together randomly and periodically.

    I dont think I'd throw noise in at the maya/max level, but in engine I've seen it used before to decrease accuracy, for gameplay reasons handled by code. Not really used to break up a repetitive nature of an animation however.
  • armagon
    Offline / Send Message
    armagon polycounter lvl 6
    Thanks for the feedback guys! Do you create alternatives for the "walking" animation as well, to create more variation? Do you guys recommend any learning material on the subject?
  • Hito
    Offline / Send Message
    Hito polycounter lvl 10
    if you are strictly talking FPV, the visible movements are only from torso and arms, same idle breaks can be applied with filters It's something that animator, programmer and designer have to work out in collaboration really. Best way to learn it is open up some sample character/actor assets from Unreal or Unity or some other Engine, look at the animation state tree, the animation clips, and see how the character plays in game.
  • NiklasT
    As have been mentioned, you either need a rather long loop, or you need a short generic one.

    If you go with the long one, try to stay away from big and distinctive movements. You can put those in randomized loops instead. If you go for a short-loop approach try to just make the character breathe. On 30 fps a 180 long animation is enough for 2 breaths (I think). You can also keep it very structural;
    1 (start pose) -> 45 (full breath out) -> 90 (full breath in, same as start), then use the same loop for 90 -> 180. Having 2 loops gives you some room to put in smaller follow-through details and a general swaying or side-to-side movement.

    Also, if you can see the loop very clearly, have you checked the tangent splines?
  • thatanimator
    Offline / Send Message
    thatanimator polycounter lvl 6
    don't forget about additives :)
    you could get away with a shorter 90 frame animation and then have another 90 frame animation with some "noise" and have it mess with the base animation on an additive layer :) ez

    I've taken the lazy way out a few times on a current project and made around ~300 frame long idles, but then I've got layers in motion builder to help me out with randomizing the base layer animation a bit :)
Sign In or Register to comment.