Torchmodders
Mod Projects => Kva3imoda's Playground => Topic started by: Kva3imoda on August 25, 2015, 01:14:56 am
-
and changing the timing of each keyframe by hand
A couple of days ago, Abramoff made me (after I asked) a utility that does this automatically (all operations: *, /, +, -). :) But this utility has no translation.
With it I accelerated animations for embercopter flags.
-
...a utility that does this automatically (all operations: *, /, +, -). :)
Ooh! :P sounds nice. Use via command line?
(Sorry to go OT a bit Silver)
-
Ooh! :P sounds nice. Use via command line?
Nope. :) It user-friendly. Now, I explained to him how we need this cool utility .
I wanted to share this, but waiting for the translation and some improvements.
-
a keyframe editor
We called it Retimer. :)
-
The idea is very very cool!
Remember a discussion before about "cutting" an animation so you can get only the frames you need? Can this tool help with that? ::) hehe
-
(http://i.imgur.com/eoFlNGRm.jpg) (http://i.imgur.com/eoFlNGR.jpg)
1. Convert your animation *.skeleton to *.skeleton.xml using OgreXmlConverter
2. [Open] *.skeleton.xml
3. Choose [Action] and [Value]
4. Press [Run]
5. Change "name=" (if necessary)
6. [Save] it as *.*.skeleton.xml (use a new name if necessary)
7. Convert *.*.skeleton.xml to *.skeleton
Download Retimer (https://yadi.sk/d/DJXB78XVieKd9)
All thanks to Abramoff. :)
Remember a discussion before about "cutting" an animation so you can get only the frames you need? Can this tool help with that? ::) hehe
Yes, of course I remember it and I thought about it. I think you can use the substraction operation and then remove unnecessary frames.
For example, the desired frame begins at 3.13 - this means it must be 0. Use the utility and subtract 3.13 and delete all frames below zero.
-
and then remove unnecessary frames.
I asked Abramoff and maybe we will do an automatic "Сutter".
-
You can use Retimer for animation inverting. 8)
For example, you have "Run" animation.
length="0.8"
Follow these steps:
1. [Action] = "-" ; [Value] = 0,8
2. [Run]
3. [Action] = "*" ; [Value] = -1
4. [Run]
5. Сhange length="0.8"(or not, if you removed the "length check" before)
Voila, you have inverted animation. :)
-
OMG this is SO COOL Kva! I am going to play with this on the weekend :D sadly that's the only time I'll have enough time >:(
Pls give Abramoff our thanks!
-
Now thats nice! Now we can make resurrection anims by inverting death anims ;)
-
by inverting death anims ;)
Yeah, right, yesterday I did it for TL1 Elemental. It looks satisfactory. :)
-
Hmm... when I use this tool on the Bloatfang Boss's Special_Eat animation, I get an error saying
'0,16667' is not a valid floating point value.I set the Format Float to "0.######" (six pound signs instead of the default five) and tried * and / by 2 for the action. All attempts produced the same error.
When I searched the XML file (using Notepad++) for an instance of "0,", it failed to find any; the comma is likely arising somewhere in the code.
EDIT: The program crashes whenever it tries to handle a floating point number (somehow it seems to be converting decimals to commas).
-
You must use a point in Format Float "0.######"
And a comma in Value.
Here there are some problems in the encodings in different languages. In Russia we always use a comma for Float. :)
And you do not need more than 5# in Format Float. 0.00001 = 10 nanoseconds. :)
-
You must use a point in Format Float "0.######"
...
And you do not need more than 5# in Format Float. 0.00001 = 10 nanoseconds.
Made sure it had a point there (it does). I only adjusted the float format to six places because the animation had six places, so I erroneously thought it might fix the error.
Here there are some problems in the encodings in different languages. In Russia we always use a comma for Float.
Ah. Assuming this is a C# program (it looks like it easily could be), there should be some locale settings that Microsoft provides that (theoretically) should prevent the need for hardcoded commas. I haven't used them ever, so I don't know how good they are, but I know they exist.
If its not a C# program (it doesn't appear to have a managed assembly, so I still don't know), there might be locale wrappers somewhere by someone, depending on the language used, but I know even less at that point.
-
I get an error
Abramoff has updated the utility. We need a test. :)
and maybe we will do an automatic "Сutter".
Done. This feature is added in Retimer.
-
I get an error
Abramoff has updated the utility. We need a test. :)
and maybe we will do an automatic "Сutter".
Done. This feature is added in Retimer.
Wow thanks Kva & Abramoff! Same DL link (https://yadi.sk/d/DJXB78XVieKd9)?
-
Same DL link (https://yadi.sk/d/DJXB78XVieKd9)?
Yes, the same.
-
(http://i.imgur.com/jQc4yyL.gif)
I did this trigger animation today in 10 minutes with Retimer. I use it for a lootable ponya corpse.
-
A but you are not telling the whole story :-\ you first had to make a ponya mesh where he is lying down! Then did you have to make a new .skeleton first or did it export with the mesh? :D
-
you first had to make a ponya mesh where he is lying down! Then did you have to make a new .skeleton first or did it export with the mesh? :D
Well, you do not need a mesh/skeleton with this pose, all this makes the animation in frame 0.
-
Here's how it's done:
https://drive.google.com/file/d/0BwZNatjl1ZmpdkxwTWhJdmVjTzg/view?usp=sharing
-
A but you are not telling the whole story :-\
I can tell you how I did it. :)
I used die1.skeleton animation (Ponya_M certainly).
1. Open die1.skeleton.xml
2. It is necessary to find the right section of frames. We need 0.833333 - 1.33333.
3. Remove unnecessary frames (keyframe time= 0 0.83) [Cut]
4. Then we change time [Action] - 0.833333 [Run]. Now the 0.833333-frames turned into 0-frames.
5. Then make the animation longer: [Action] * 2 [Run]
6. Then change all 0.86668- frames without the previous frame. Like this:
<tracks>
<track bone="Bip01">
<keyframes>
<keyframe time="0.86668">
<translate x="0" y="0.876139" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
<keyframe time="1">
<translate x="0" y="0.876139" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
</keyframes>
</track> Turn it into 0 manually.
<tracks>
<track bone="Bip01">
<keyframes>
<keyframe time="0">
<translate x="0" y="0.876139" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
<keyframe time="1">
<translate x="0" y="0.876139" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
</keyframes>
</track>
This is done for smoothness, but not necessarily.
7. Then I changed(manually) the trajectory for Bip01 bone - for body gliding (y coordinate).
<track bone="Bip01">
<keyframes>
<keyframe time="0">
<translate x="0" y="xxxxxxxxx" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
<keyframe time="1">
<translate x="0" y="xxxxxxxx" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
</keyframes>
</track>
to
<track bone="Bip01">
<keyframes>
<keyframe time="0">
<translate x="0" y="0" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
<keyframe time="0.6">
<translate x="0" y="0.1" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
<keyframe time="1">
<translate x="0" y="0.1" z="-0.184561" />
<rotate angle="1.56748">
<axis x="1.16416e-008" y="-1" z="3.77188e-008" />
</rotate>
</keyframe>
</keyframes>
</track>
I added 0.6 frame to pause gliding before the animation stops. :)
8. Change name="Die1" to name="On" and Save. Animation is ready.