Truncating an animation

SoltisSoltis Posts: 27
edited December 2011 in Art and Sound
I have what sounds like a fairly simple question:

How can one truncate an existing animation?

Specifically, I am really sick of waiting several seconds for my character to stare stupidly at fish he catches; when I looked at the animation fish_catch in the animation editor, I realised that around 50 frames of the animation are just the character . . . staring . . . at his brand new shiny just-caught fish.

So what I want to do is find a quick/easy way to make that particular animation around 40-45 frames shorter -- so he pulls up the fish, looks at it, and I get my message box telling me I just caught another web fish, without all this suspense.

I'm playing an alchemist at the moment, but I want to make this change for all 3 classes -- but I assume the procedure will be more or less identical between them.

Comments

  • The obvious answer is to use a modelling program, but as in most cases the obvious answer is wrong ;)

    First, you'll need the ogre tools

    Then grab the fishing_cast.skeleton from media\models\[class] and convert it to an xml.
    You should have something like this.
    <skeleton>
        <bones>
            <bone id="0" name="Bip01">
                <position x="0.00585019" y="0.0553454" z="0.978621" />
                <rotation angle="1.16131">
                    <axis x="-0.0597825" y="-0.03916" z="-0.997443" />
                </rotation>
            </bone>
            ...etc.
            </bone>
        </bones>
        <bonehierarchy>
            <boneparent bone="Bip01" parent="root" />
            ...etc.
        </bonehierarchy>
        <animations>
            <animation name="fishing_catch" length="3.5">
                <tracks>
                    <track bone="Bip01">
                        <keyframes>
                            <keyframe time="0">
                                <translate x="0" y="0" z="0" />
                                <rotate angle="0">
                                    <axis x="1" y="0" z="0" />
                                </rotate>
                            </keyframe>
                            ...etc.
                            <keyframe time="3.5">
                                <translate x="0" y="0.013215" z="-0.0551313" />
                                <rotate angle="0.254614">
                                    <axis x="0.0652772" y="-0.0341379" z="-0.997283" />
                                </rotate>
                            </keyframe>
                        </keyframes>
                    </track>
    				... every other bone.
                </tracks>
            </animation>
        </animations>
    </skeleton>
    

    Replace length="3.5" and all instances of time="3.5" with whatever you want. :D
    signature-small.png
  • Then grab the fishing_cast.skeleton from media\models\[class] and convert it to an xml.

    You'd get better results from fishing_catch.skeleton :D

    It's kinda interesting to note that the classes each have a different time to stare at the fish. They all grab it at about 1.3seconds in, but for the whole animation:
    The alchemist takes 3.5 seconds (yea man, it's a fish, stop staring)
    The vanquisher takes 2.8 seconds
    The destroyer takes 2.5 seconds

    Standardized to 2 seconds for all classes
  • You'd get better results from fishing_catch.skeleton :D
    lol yeah that one.

    Maybe the alchemist is trying to work out it's magical transmogrifying properties, while the destroyer doesn't really care :P
    signature-small.png
  • SoltisSoltis Posts: 27
    The obvious answer is to use a modelling program, but as in most cases the obvious answer is wrong ;)
    <snip>
    Replace length="3.5" and all instances of time="3.5" with whatever you want. :D

    First of all, beautiful - this sounds like exactly what I wanted.

    However, I assume that you're simplifying a bit -- namely, I expect that for any time=Y, length=X, Y should never exceed X?
  • Well, in that case I was using the end-frame so time and length are (and should remain) the same.
    But you're right, time can never exceed length.
    The keyframes should also be sequential (when Time1 = X, Time2 > X)
    signature-small.png
  • The first animations truncate a regular polyhedron to the mid-points of its edges, then switch to the dual model and truncate back from the mid-points of its edges.
    The second animations show the full range of an idealised truncation. The edges are treated as lines rather than line segments. The edges are cut in a ratio that ranges from -infinity to +infinity.

    At the extremes of the range the circumsphere of the model grows to become infinitely large. In order to view the transformation the truncated model is scaled to maintain the circumsphere at a constant size. The effect on the base polyhedron is to shrink it into the centre at the extreme ratios.

    One thing more If you're using iClone Pro make sure you select the proper avatar... then open the timeline.

    click the Motion tab of the avatar , click on the animation in the timeline put the play head marker right after the section of the animation you want to remove then right-click and select Break...it will slice the animation into two sections. Delete the unwanted selection.

    And then you could use the Collect Clip tab to re-save the animation with a new name and you shouldn't have to worry 'bout that anim again.
Sign In or Register to comment.