Important information: this site is currently scheduled to go offline indefinitely by end of the year.

Animation Recipe Cracker

Post questions about game models here, or help out others!
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Animation Recipe Cracker

Post by Bigchillghost »

1) Introduction
Animation Recipe Cracker, abbreviated as ARC, is a helper tool aimed for quick research and examination on animation data. It provides a text-based C-like layout definition interface with dozens of pre-defined variables, along with other commands for custom variable definition, allowing to de-serialize different animation formats in a concise yet flexible way. There're also plenty of useful GUI options for interpreting the read data.

2) Change Log

Code: Select all

2023.09.23 - v1.0.2		Added individual Radian switch checkbox for Euler and Axis Angle;
				Bug fix for matrix convertion.
2023.09.14 - v1.0.1		Initial release.
3) User Interface
Image

4) Main Features
1. Support for parsing animation related data of all sorts of data types;
2. Ability to handle variant-length data structures;
3. Support for common arithmetic, logical and bit operations;
4. Support for conditional evaluations and loop statements;
5. Support for dictionary/vector assignment and reference;
6. Formatting operations for debugging raw/converted transformation info and entire data pool;
7. Visualization of animation;
8. Export of the animation as the FBX format.

5) Notes

There are some components used or required by ARC which are not likely to be changed frequently so they're detached from the release of the ARC executable.

The first component is an external mesh viewer called "ViewScene" which ARC uses to preview the animation.

The second component is required by ARC for its GUI is based on Qt technology thus it requires the Qt dependencies for execution.

These components can be downloaded through the links provided in the attachment.

You must place both the ViewScene folder and the Qt dependencies into the same path of the ARC executable.
The overall folder layout of ARC should be:

Code: Select all

ARC/ARC.exe
ARC/ViewScene/*
ARC/platforms/*
ARC/Qt5**.dll
Microsoft Visual C++ 2015 Redistributable (x86) or above is required for runtime.

6) Download
You do not have the required permissions to view the files attached to this post.
Last edited by Bigchillghost on Sat Sep 23, 2023 3:27 pm, edited 1 time in total.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

Refer to the user manual for detail usage.
You do not have the required permissions to view the files attached to this post.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

Example:
Image

stand.gif
You do not have the required permissions to view the files attached to this post.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

Skeleton dump and animation file of the above example:
stand.7z
Layout context:

Code: Select all

long	skip[2]
long	posCnt
long	skip[posCnt][3]
long	skip
long	boneCnt
begin	loop[boneCnt]
	long	skip[2]
	long	animKeyOffset
	calc	animKeyOffset[/][6]
	dict	OffsetToBoneMap[animKeyOffset][boneIdx]
	long	skip[6]
end	loop[boneCnt]
begin	loop[boneCnt]
	value	boneIndex[OffsetToBoneMap][boneIdx]
end	loop[boneCnt]
long	keyCnt
begin	loop[keyCnt]
	long	elementCnt
	begin	loop[boneCnt]
		float	Translation[3]
		float	Rotation[3]
	end	loop[boneCnt]
end	loop[keyCnt]

Code: Select all

BigEndian, Quaternion, ColMajor, Up/Front/Right: +Z/-Y/X
Related thread:
viewtopic.php?p=192417#p192417
You do not have the required permissions to view the files attached to this post.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
DMZT2
beginner
Posts: 32
Joined: Thu Nov 21, 2019 3:48 pm
Has thanked: 1 time
Been thanked: 12 times

Re: Animation Recipe Cracker

Post by DMZT2 »

This looks amazing! I have a baked animation format that encodes eulers as short3, and loc as bounded short3, but I haven't been able to work out how loc transform is to be interpreted. I'll definitely try this tool on that format at some point!
reggin2023
ultra-n00b
Posts: 2
Joined: Mon Aug 07, 2023 6:49 am
Has thanked: 10 times

Re: Animation Recipe Cracker

Post by reggin2023 »

I also have a problematic (for me) animation, I tried to get it with your tool, but nothing worked

Code: Select all

byte skip[0x2f50]
long skip[3]//magic
long skip[1]//anim count
short boneCnt
short KeyCnt
begin loop[keyCnt]
	begin loop[boneCnt]
		//float TransformMatrix[12] EDIT >> note from Bigchillghost in the next msg 
		float Rotation[9]
		float Translation[3]
	end loop[boneCnt]
end loop[keyCnt]
You do not have the required permissions to view the files attached to this post.
Last edited by reggin2023 on Fri Sep 22, 2023 9:08 pm, edited 1 time in total.
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

reggin2023 wrote: Wed Sep 20, 2023 9:47 pm I also have a problematic (for me) animation, I tried to get it with your tool, but nothing worked
The key data should be represented as a "Rotation[9]" followed by a "Translation[3]" instead of a "TransformMatrix[12]", which is for row-major storage only. Anyway, the anim keys of the 1st frame have a huge deviation than the initial frame at the bone area, while the following frames have less deviation from each other. So it's likely that the initial frame need to be multiplied by the following keys. Not sure whether each following frame stores relatively to its previous one, just wild guesses. Whatsoever, world space animations and/or other types of delta storage have exceeded the ability of this tool. So your best chance might be looking for clues from the game executables/libraries.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

Bigchillghost wrote: Thu Sep 21, 2023 6:43 pm So it's likely that the initial frame need to be multiplied by the following keys. Not sure whether each following frame stores relatively to its previous one, just wild guesses.
Got it. It's the world space bind pose that was multiplied by each anim keys:
skeleton layout:

Code: Select all

long	parentIndex
long	boneIndex
long	skip[2]
float	TransformMatrix[16] // world inversed bind pose
float	TransformMatrix[16] // world bind pose
float	TransformMatrix[16] // identity
float	TransformMatrix[16] // local bind pose
float	TransformMatrix[16] // world static pose
anims.gif

Might add support for such format in future version.
You do not have the required permissions to view the files attached to this post.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

Updated v1.0.2:
- Added individual Radian switch checkbox for Euler and Axis Angle;
- Bug fix for matrix convertion.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 4283
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 1146 times
Been thanked: 2242 times

Re: Animation Recipe Cracker

Post by shakotay2 »

Hello BigchillGhost,
another amazing tool made by you, congratz.
It's a little bit over my head but I'd like to support the idea (if you'd believe that? :) ).

So, this is NOT a request and NOT a test of your profound skills but if you find the time you might have a look at
shakotay2 wrote: Tue Feb 07, 2023 6:26 pm
("unfinished animation processing")
and
shakotay2 wrote: Tue Feb 07, 2023 7:26 pm
Samples:
Genshinrange wrote: Tue Feb 07, 2023 3:09 pm
.
The more complex OrcWarrior has the advantage of bone names (instead of numbers only):
shakotay2 wrote: Sun Aug 14, 2022 11:46 am
.
Juggernaut, skeleton (child of '2' is '11', btw)
Juggernaut_skel_hierarchy.jpg
You do not have the required permissions to view the files attached to this post.
Tuts: a) Bigchillghost, viewtopic.php?f=29&t=17889
b) Extracting simple models: http://forum.xentax.com/viewtopic.php?f=29&t=10894
"Quoting the whole thing. Would u ever stop this nonsense?"
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

shakotay2 wrote: Fri Oct 06, 2023 2:26 am this is NOT a request ... but if you find the time you might have a look at...
("unfinished animation processing")
Sounds no difference to me. Still I'm the one that needs to do the labors... (:

I see that you're doing a byte searching to get the addresses of the anim groups and key counts etc., but in fact the data was stored in a deeply nested layout and it shouldn't be a problem to tell which curve belongs to which bone if you group them one level at a time. The problem is, how do you distinguish between a translation and a rotation curve:

Code: Select all

anim group 0 (Ability), frame cnt 70
        bone 0
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 0
                slot 4, slot id 9, keyCnt 0
                slot 5, slot id 10, keyCnt 0
                slot 6, slot id 11, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 1
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 0
                slot 4, slot id 9, keyCnt 0
                slot 5, slot id 10, keyCnt 0
                slot 6, slot id 11, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 2
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 58, max key time 69
                slot 4, slot id 9, keyCnt 61, max key time 69
                slot 5, slot id 10, keyCnt 41, max key time 69
                slot 6, slot id 11, keyCnt 30, max key time 69
                        key 8, good sqrsum -> 0.985794
                        key 9, good sqrsum -> 0.995618
                        key 10, good sqrsum -> 0.999051
                        key 17, good sqrsum -> 0.993575
                        key 18, good sqrsum -> 0.998947
                        key 20, good sqrsum -> 0.985768
                        key 28, good sqrsum -> 0.991062
                        key 29, good sqrsum -> 0.997652
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 3
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 44, max key time 69
                slot 4, slot id 9, keyCnt 30, max key time 69
                slot 5, slot id 10, keyCnt 37, max key time 69
                slot 6, slot id 11, keyCnt 33, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 4
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 1, max key time 0
                slot 4, slot id 9, keyCnt 1, max key time 0
                slot 5, slot id 10, keyCnt 0
                slot 6, slot id 11, keyCnt 0
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 5
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 51, max key time 69
                slot 4, slot id 9, keyCnt 40, max key time 69
                slot 5, slot id 10, keyCnt 53, max key time 69
                slot 6, slot id 11, keyCnt 26, max key time 69
                        key 0, good sqrsum -> 0.984535
                        key 1, good sqrsum -> 0.99339
                        key 2, good sqrsum -> 0.996724
                        key 3, good sqrsum -> 0.994339
                        key 4, good sqrsum -> 0.98499
                        key 18, good sqrsum -> 0.986872
                        key 24, good sqrsum -> 0.996097
                        key 25, good sqrsum -> 0.999036
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 6
                slot 0, slot id 5, keyCnt 10, max key time 69
                slot 1, slot id 6, keyCnt 13, max key time 69
                slot 2, slot id 7, keyCnt 6, max key time 69
                slot 3, slot id 8, keyCnt 39, max key time 69
                slot 4, slot id 9, keyCnt 22, max key time 69
                slot 5, slot id 10, keyCnt 47, max key time 69
                slot 6, slot id 11, keyCnt 10, max key time 69
                        key 3, good sqrsum -> 0.99285
                        key 4, good sqrsum -> 0.996336
                        key 5, good sqrsum -> 0.995396
                        key 6, good sqrsum -> 0.993794
                        key 7, good sqrsum -> 0.990877
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 7
                slot 0, slot id 5, keyCnt 41, max key time 69
                slot 1, slot id 6, keyCnt 53, max key time 69
                        key 11, good sqrsum -> 1.00114
                        key 14, bad sqrsum 1.1054
                        key 15, bad sqrsum 1.11995
                        key 16, bad sqrsum 1.12742
                        key 17, bad sqrsum 1.12794
                        key 18, bad sqrsum 1.12154
                        key 19, bad sqrsum 1.10812
                        key 22, good sqrsum -> 1.02191
                slot 2, slot id 7, keyCnt 48, max key time 69
                        key 8, bad sqrsum 1.12299
                        key 9, comp 1 value outside range of [-1, +1]
                        key 9, bad sqrsum 1.25463
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.37554
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.47874
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.5586
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.60984
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.62778
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.61773
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.58906
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.54389
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.48451
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.41325
                        key 20, comp 1 value outside range of [-1, +1]
                        key 20, bad sqrsum 1.33248
                        key 21, comp 1 value outside range of [-1, +1]
                        key 21, bad sqrsum 1.24451
                        key 22, bad sqrsum 1.15166
                slot 3, slot id 8, keyCnt 43, max key time 69
                slot 4, slot id 9, keyCnt 34, max key time 69
                slot 5, slot id 10, keyCnt 35, max key time 69
                slot 6, slot id 11, keyCnt 41, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 8
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 0
                slot 4, slot id 9, keyCnt 0
                slot 5, slot id 10, keyCnt 0
                slot 6, slot id 11, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 9
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 0
                slot 4, slot id 9, keyCnt 0
                slot 5, slot id 10, keyCnt 0
                slot 6, slot id 11, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 10
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 46, max key time 69
                slot 4, slot id 9, keyCnt 39, max key time 69
                slot 5, slot id 10, keyCnt 35, max key time 69
                slot 6, slot id 11, keyCnt 34, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 11
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 28, max key time 69
                slot 4, slot id 9, keyCnt 51, max key time 69
                slot 5, slot id 10, keyCnt 44, max key time 69
                slot 6, slot id 11, keyCnt 57, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 12
                slot 0, slot id 5, keyCnt 9, max key time 69
                slot 1, slot id 6, keyCnt 15, max key time 69
                slot 2, slot id 7, keyCnt 16, max key time 69
                slot 3, slot id 8, keyCnt 34, max key time 69
                        key 10, good sqrsum -> 0.982286
                        key 11, good sqrsum -> 0.996804
                        key 12, good sqrsum -> 0.996403
                        key 14, good sqrsum -> 0.98147
                slot 4, slot id 9, keyCnt 53, max key time 69
                slot 5, slot id 10, keyCnt 45, max key time 69
                slot 6, slot id 11, keyCnt 49, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 13
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 64, max key time 69
                slot 4, slot id 9, keyCnt 53, max key time 69
                slot 5, slot id 10, keyCnt 55, max key time 69
                slot 6, slot id 11, keyCnt 45, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 14
                slot 0, slot id 5, keyCnt 40, max key time 69
                slot 1, slot id 6, keyCnt 54, max key time 69
                        key 11, good sqrsum -> 1.00131
                        key 14, bad sqrsum 1.13444
                        key 15, bad sqrsum 1.15901
                        key 16, bad sqrsum 1.1734
                        key 17, bad sqrsum 1.18079
                        key 18, bad sqrsum 1.1813
                        key 19, bad sqrsum 1.17498
                        key 20, bad sqrsum 1.16169
                        key 21, bad sqrsum 1.14111
                        key 22, bad sqrsum 1.1127
                        key 31, good sqrsum -> 0.990181
                        key 32, good sqrsum -> 0.999705
                        key 33, good sqrsum -> 0.986369
                slot 2, slot id 7, keyCnt 50, max key time 69
                        key 8, good sqrsum -> 1.00853
                        key 9, bad sqrsum 1.14176
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.25958
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.369
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.4615
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.53341
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.5802
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.59692
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.58761
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.56042
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.51733
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.4607
                        key 20, comp 1 value outside range of [-1, +1]
                        key 20, bad sqrsum 1.39281
                        key 21, comp 1 value outside range of [-1, +1]
                        key 21, bad sqrsum 1.31573
                        key 22, comp 1 value outside range of [-1, +1]
                        key 22, bad sqrsum 1.23139
                        key 23, bad sqrsum 1.14172
                slot 3, slot id 8, keyCnt 48, max key time 69
                slot 4, slot id 9, keyCnt 38, max key time 69
                slot 5, slot id 10, keyCnt 33, max key time 69
                slot 6, slot id 11, keyCnt 43, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 15
                slot 0, slot id 5, keyCnt 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 0
                slot 4, slot id 9, keyCnt 0
                slot 5, slot id 10, keyCnt 0
                slot 6, slot id 11, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 16
                slot 0, slot id 5, keyCnt 39, max key time 69
                slot 1, slot id 6, keyCnt 54, max key time 69
                        key 10, bad sqrsum 1.11447
                        key 11, bad sqrsum 1.18418
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.24345
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.29193
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.32976
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.3556
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.37094
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.37907
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.38009
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.37408
                        key 20, comp 1 value outside range of [-1, +1]
                        key 20, bad sqrsum 1.36078
                        key 21, comp 1 value outside range of [-1, +1]
                        key 21, bad sqrsum 1.33962
                        key 22, comp 1 value outside range of [-1, +1]
                        key 22, bad sqrsum 1.30978
                        key 23, comp 1 value outside range of [-1, +1]
                        key 23, bad sqrsum 1.26957
                        key 24, bad sqrsum 1.12728
                        key 30, bad sqrsum 1.1521
                        key 31, bad sqrsum 1.17746
                        key 32, bad sqrsum 1.18744
                        key 33, bad sqrsum 1.17189
                        key 34, bad sqrsum 1.13428
                        key 36, good sqrsum -> 1.01934
                        key 37, good sqrsum -> 1.01515
                        key 38, good sqrsum -> 1.02354
                        key 42, good sqrsum -> 1.02933
                        key 43, good sqrsum -> 0.993634
                slot 2, slot id 7, keyCnt 50, max key time 69
                        key 8, good sqrsum -> 1.01179
                        key 9, bad sqrsum 1.15057
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.23341
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.31464
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.39295
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.45619
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.50506
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.53675
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.54598
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.53383
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.50554
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.46293
                        key 20, comp 1 value outside range of [-1, +1]
                        key 20, bad sqrsum 1.40867
                        key 21, comp 1 value outside range of [-1, +1]
                        key 21, bad sqrsum 1.34494
                        key 22, comp 1 value outside range of [-1, +1]
                        key 22, bad sqrsum 1.27332
                        key 23, bad sqrsum 1.19501
                        key 24, bad sqrsum 1.11124
                        key 25, good sqrsum -> 1.02127
                slot 3, slot id 8, keyCnt 51, max key time 69
                slot 4, slot id 9, keyCnt 37, max key time 69
                slot 5, slot id 10, keyCnt 39, max key time 69
                slot 6, slot id 11, keyCnt 43, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 17
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 40, max key time 69
                slot 4, slot id 9, keyCnt 38, max key time 69
                slot 5, slot id 10, keyCnt 43, max key time 69
                slot 6, slot id 11, keyCnt 43, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 18
                slot 0, slot id 5, keyCnt 44, max key time 69
                slot 1, slot id 6, keyCnt 54, max key time 69
                        key 9, comp 1 value outside range of [-1, +1]
                        key 9, bad sqrsum 1.32078
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.45842
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.56915
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.65589
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.7178
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.76076
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.78864
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.80567
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.8156
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.81843
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.81425
                        key 20, comp 1 value outside range of [-1, +1]
                        key 20, bad sqrsum 1.80236
                        key 21, comp 1 value outside range of [-1, +1]
                        key 21, bad sqrsum 1.78137
                        key 22, comp 1 value outside range of [-1, +1]
                        key 22, bad sqrsum 1.7497
                        key 23, comp 1 value outside range of [-1, +1]
                        key 23, bad sqrsum 1.70502
                        key 24, comp 1 value outside range of [-1, +1]
                        key 24, bad sqrsum 1.54034
                        key 25, comp 1 value outside range of [-1, +1]
                        key 25, bad sqrsum 1.49509
                        key 26, comp 1 value outside range of [-1, +1]
                        key 26, bad sqrsum 1.46326
                        key 27, comp 1 value outside range of [-1, +1]
                        key 27, bad sqrsum 1.45051
                        key 28, comp 1 value outside range of [-1, +1]
                        key 28, bad sqrsum 1.46102
                        key 29, comp 1 value outside range of [-1, +1]
                        key 29, bad sqrsum 1.48893
                        key 30, comp 1 value outside range of [-1, +1]
                        key 30, bad sqrsum 1.56144
                        key 31, comp 1 value outside range of [-1, +1]
                        key 31, bad sqrsum 1.58719
                        key 32, comp 1 value outside range of [-1, +1]
                        key 32, bad sqrsum 1.59326
                        key 33, comp 1 value outside range of [-1, +1]
                        key 33, bad sqrsum 1.56798
                        key 34, comp 1 value outside range of [-1, +1]
                        key 34, bad sqrsum 1.51471
                        key 35, comp 1 value outside range of [-1, +1]
                        key 35, bad sqrsum 1.39038
                        key 36, comp 1 value outside range of [-1, +1]
                        key 36, bad sqrsum 1.35393
                        key 37, comp 1 value outside range of [-1, +1]
                        key 37, bad sqrsum 1.34594
                        key 38, comp 1 value outside range of [-1, +1]
                        key 38, bad sqrsum 1.35406
                        key 39, comp 1 value outside range of [-1, +1]
                        key 39, bad sqrsum 1.38586
                        key 40, comp 1 value outside range of [-1, +1]
                        key 40, bad sqrsum 1.3947
                        key 41, comp 1 value outside range of [-1, +1]
                        key 41, bad sqrsum 1.38904
                        key 42, comp 1 value outside range of [-1, +1]
                        key 42, bad sqrsum 1.36307
                        key 43, comp 1 value outside range of [-1, +1]
                        key 43, bad sqrsum 1.32101
                        key 44, bad sqrsum 1.16955
                        key 45, bad sqrsum 1.13143
                        key 46, bad sqrsum 1.10869
                        key 47, bad sqrsum 1.10446
                        key 48, bad sqrsum 1.11523
                        key 49, bad sqrsum 1.13656
                        key 50, bad sqrsum 1.18891
                        key 51, bad sqrsum 1.20898
                        key 52, comp 1 value outside range of [-1, +1]
                        key 52, bad sqrsum 1.21803
                        key 53, bad sqrsum 1.20232
                slot 2, slot id 7, keyCnt 48, max key time 69
                        key 6, bad sqrsum 1.1663
                        key 7, comp 1 value outside range of [-1, +1]
                        key 7, bad sqrsum 1.3877
                        key 8, comp 1 value outside range of [-1, +1]
                        key 8, bad sqrsum 1.4921
                        key 9, comp 1 value outside range of [-1, +1]
                        key 9, bad sqrsum 1.48505
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.49235
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.50495
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.49093
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.4701
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.44969
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.41744
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.37478
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.32502
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.27018
                        key 19, bad sqrsum 1.21087
                        key 20, bad sqrsum 1.14667
                        key 22, good sqrsum -> 1.00033
                slot 3, slot id 8, keyCnt 57, max key time 69
                slot 4, slot id 9, keyCnt 51, max key time 69
                slot 5, slot id 10, keyCnt 51, max key time 69
                slot 6, slot id 11, keyCnt 53, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 19
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 64, max key time 69
                slot 4, slot id 9, keyCnt 56, max key time 69
                slot 5, slot id 10, keyCnt 58, max key time 69
                slot 6, slot id 11, keyCnt 54, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 20
                slot 0, slot id 5, keyCnt 40, max key time 69
                slot 1, slot id 6, keyCnt 54, max key time 69
                        key 0, bad sqrsum 1.11016
                        key 8, good sqrsum -> 0.981692
                        key 9, bad sqrsum 1.17118
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.28057
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.37009
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.44258
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.49803
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.53925
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.56688
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.58347
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.59268
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.59452
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.58906
                        key 20, comp 1 value outside range of [-1, +1]
                        key 20, bad sqrsum 1.57584
                        key 21, comp 1 value outside range of [-1, +1]
                        key 21, bad sqrsum 1.55397
                        key 22, comp 1 value outside range of [-1, +1]
                        key 22, bad sqrsum 1.52239
                        key 23, comp 1 value outside range of [-1, +1]
                        key 23, bad sqrsum 1.47918
                        key 24, comp 1 value outside range of [-1, +1]
                        key 24, bad sqrsum 1.32451
                        key 25, comp 1 value outside range of [-1, +1]
                        key 25, bad sqrsum 1.28302
                        key 26, comp 1 value outside range of [-1, +1]
                        key 26, bad sqrsum 1.25431
                        key 27, comp 1 value outside range of [-1, +1]
                        key 27, bad sqrsum 1.24315
                        key 28, comp 1 value outside range of [-1, +1]
                        key 28, bad sqrsum 1.25345
                        key 29, comp 1 value outside range of [-1, +1]
                        key 29, bad sqrsum 1.28009
                        key 30, comp 1 value outside range of [-1, +1]
                        key 30, bad sqrsum 1.34968
                        key 31, comp 1 value outside range of [-1, +1]
                        key 31, bad sqrsum 1.37569
                        key 32, comp 1 value outside range of [-1, +1]
                        key 32, bad sqrsum 1.38413
                        key 33, comp 1 value outside range of [-1, +1]
                        key 33, bad sqrsum 1.36399
                        key 34, comp 1 value outside range of [-1, +1]
                        key 34, bad sqrsum 1.3187
                        key 35, comp 1 value outside range of [-1, +1]
                        key 35, bad sqrsum 1.21181
                        key 36, bad sqrsum 1.18081
                        key 37, bad sqrsum 1.17495
                        key 38, bad sqrsum 1.18369
                        key 39, comp 1 value outside range of [-1, +1]
                        key 39, bad sqrsum 1.21426
                        key 40, comp 1 value outside range of [-1, +1]
                        key 40, bad sqrsum 1.22276
                        key 41, comp 1 value outside range of [-1, +1]
                        key 41, bad sqrsum 1.21773
                        key 42, bad sqrsum 1.19418
                        key 43, bad sqrsum 1.15631
                        key 44, good sqrsum -> 1.02134
                        key 45, good sqrsum -> 0.988573
                        key 49, good sqrsum -> 1.02412
                slot 2, slot id 7, keyCnt 48, max key time 69
                        key 6, good sqrsum -> 0.98317
                        key 7, bad sqrsum 1.1942
                        key 8, comp 1 value outside range of [-1, +1]
                        key 8, bad sqrsum 1.31999
                        key 9, comp 1 value outside range of [-1, +1]
                        key 9, bad sqrsum 1.45111
                        key 10, comp 1 value outside range of [-1, +1]
                        key 10, bad sqrsum 1.48202
                        key 11, comp 1 value outside range of [-1, +1]
                        key 11, bad sqrsum 1.50404
                        key 12, comp 1 value outside range of [-1, +1]
                        key 12, bad sqrsum 1.51751
                        key 13, comp 1 value outside range of [-1, +1]
                        key 13, bad sqrsum 1.51771
                        key 14, comp 1 value outside range of [-1, +1]
                        key 14, bad sqrsum 1.50238
                        key 15, comp 1 value outside range of [-1, +1]
                        key 15, bad sqrsum 1.47279
                        key 16, comp 1 value outside range of [-1, +1]
                        key 16, bad sqrsum 1.43058
                        key 17, comp 1 value outside range of [-1, +1]
                        key 17, bad sqrsum 1.37878
                        key 18, comp 1 value outside range of [-1, +1]
                        key 18, bad sqrsum 1.31947
                        key 19, comp 1 value outside range of [-1, +1]
                        key 19, bad sqrsum 1.25371
                        key 20, bad sqrsum 1.18183
                        key 21, bad sqrsum 1.10423
                        key 22, good sqrsum -> 1.01905
                slot 3, slot id 8, keyCnt 45, max key time 69
                slot 4, slot id 9, keyCnt 40, max key time 69
                slot 5, slot id 10, keyCnt 37, max key time 69
                slot 6, slot id 11, keyCnt 44, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 21
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 31, max key time 69
                slot 4, slot id 9, keyCnt 60, max key time 69
                slot 5, slot id 10, keyCnt 49, max key time 69
                slot 6, slot id 11, keyCnt 56, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 22
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 52, max key time 69
                slot 4, slot id 9, keyCnt 56, max key time 69
                slot 5, slot id 10, keyCnt 55, max key time 69
                slot 6, slot id 11, keyCnt 52, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 23
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 7, max key time 69
                slot 4, slot id 9, keyCnt 7, max key time 69
                slot 5, slot id 10, keyCnt 62, max key time 69
                slot 6, slot id 11, keyCnt 58, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 24
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 7, max key time 69
                slot 4, slot id 9, keyCnt 6, max key time 69
                slot 5, slot id 10, keyCnt 64, max key time 69
                slot 6, slot id 11, keyCnt 57, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 25
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 37, max key time 69
                slot 4, slot id 9, keyCnt 39, max key time 69
                slot 5, slot id 10, keyCnt 58, max key time 69
                slot 6, slot id 11, keyCnt 45, max key time 69
                        key 26, good sqrsum -> 0.982767
                        key 27, good sqrsum -> 0.990111
                        key 28, good sqrsum -> 0.990528
                        key 29, good sqrsum -> 0.982939
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 26
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 57, max key time 69
                slot 4, slot id 9, keyCnt 58, max key time 69
                slot 5, slot id 10, keyCnt 60, max key time 69
                slot 6, slot id 11, keyCnt 44, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 27
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 19, max key time 69
                slot 4, slot id 9, keyCnt 60, max key time 69
                slot 5, slot id 10, keyCnt 48, max key time 69
                slot 6, slot id 11, keyCnt 49, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 28
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 6, max key time 69
                slot 4, slot id 9, keyCnt 6, max key time 69
                slot 5, slot id 10, keyCnt 56, max key time 69
                slot 6, slot id 11, keyCnt 56, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 29
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 1, max key time 0
                slot 3, slot id 8, keyCnt 6, max key time 69
                slot 4, slot id 9, keyCnt 5, max key time 69
                slot 5, slot id 10, keyCnt 58, max key time 69
                slot 6, slot id 11, keyCnt 57, max key time 69
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
        bone 30
                slot 0, slot id 5, keyCnt 1, max key time 0
                slot 1, slot id 6, keyCnt 1, max key time 0
                slot 2, slot id 7, keyCnt 0
                slot 3, slot id 8, keyCnt 51, max key time 69
                slot 4, slot id 9, keyCnt 56, max key time 69
                slot 5, slot id 10, keyCnt 56, max key time 69
                slot 6, slot id 11, keyCnt 54, max key time 69
                        key 8, good sqrsum -> 0.980039
                        key 9, good sqrsum -> 0.986642
                        key 39, good sqrsum -> 0.98842
                        key 40, good sqrsum -> 0.990534
                        key 41, good sqrsum -> 0.982666
                slot 7, slot id 12, keyCnt 1, max key time 0
                        key 0, good sqrsum -> 1
HexEdit template for Juggernaut.gobj:
gObj.zip

Up to this point I have no further interest in continuing the research, but let me know if you manage to convert them while it turns out to be an uncommon format. :D
You do not have the required permissions to view the files attached to this post.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 4283
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 1146 times
Been thanked: 2242 times

Re: Animation Recipe Cracker

Post by shakotay2 »

Bigchillghost wrote: Fri Oct 06, 2023 3:07 pmSounds no difference to me. Still I'm the one that needs to do the labors... (:
I like your sense of humor. :D
but in fact the data was stored in a deeply nested layout
I see. That's probably the reason why nobody solved it so far. I was in the hope that I might have overlooked something...

btw, "slots" are the same as like Unreal Engine's "Animation slots"?
HexEdit template for Juggernaut.gobj:
Thanks for the effort!
Is animation data stored in the gobj file?
Because from Demonsangel's script it seems the animations are in separate files:

Code: Select all

def ReadAnimations(self):
        if DEBUGANIM and not os.path.isdir(dirPath + '/anm/'):
            os.mkdir(dirPath + '/anm/')
But at 0x6BF80 (Juggernaut.gobj) it looks like an animation curve:
.
Juggernaut_0x6BF80.png
Up to this point I have no further interest in continuing the research,
It's ok. This is a big step forward after 10 years of stagnation with HOMM6 anims.
but let me know if you manage to convert them while it turns out to be an uncommon format. :D
I fear I'm not qualified enough.
You do not have the required permissions to view the files attached to this post.
Last edited by shakotay2 on Fri Oct 06, 2023 5:24 pm, edited 3 times in total.
Tuts: a) Bigchillghost, viewtopic.php?f=29&t=17889
b) Extracting simple models: http://forum.xentax.com/viewtopic.php?f=29&t=10894
"Quoting the whole thing. Would u ever stop this nonsense?"
User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 4283
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 1146 times
Been thanked: 2242 times

Re: Animation Recipe Cracker

Post by shakotay2 »

If anyone is interested in HOMM6 animations I strongly suggest to have a look at Bigchillghost's template in HexEdit (copy the xml into the exe's folder before starting):
.
HexEdit-template-gobj.png
You do not have the required permissions to view the files attached to this post.
Tuts: a) Bigchillghost, viewtopic.php?f=29&t=17889
b) Extracting simple models: http://forum.xentax.com/viewtopic.php?f=29&t=10894
"Quoting the whole thing. Would u ever stop this nonsense?"
User avatar
Bigchillghost
double-veteran
double-veteran
Posts: 1023
Joined: Tue Jul 05, 2016 9:37 am
Has thanked: 31 times
Been thanked: 1210 times

Re: Animation Recipe Cracker

Post by Bigchillghost »

shakotay2 wrote: Fri Oct 06, 2023 5:19 pm btw, "slots" are the same as like Unreal Engine's "Animation slots"?
Nope, I just use that word habitually. My guess is that for each bone in each anim group, they store 8 animation curves of difference actions. Coz the end time of each action match with the track length. Hence the problem: either they're all rotations, or they're all translations. Otherwise I can't think of a way if they need to coexist.
shakotay2 wrote: Fri Oct 06, 2023 5:19 pm Is animation data stored in the gobj file?
Well, definitely.
shakotay2 wrote: Fri Oct 06, 2023 5:19 pmI fear I'm not qualified enough.
Or maybe it just doesn't worth the efforts.
May you find peace in this puzzle-solving game. Say it with action: click the Image when you get helped.:)
User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 4283
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 1146 times
Been thanked: 2242 times

Re: Animation Recipe Cracker

Post by shakotay2 »

Bigchillghost wrote: Fri Oct 06, 2023 5:43 pm Or maybe it just doesn't worth the efforts.
That's possible. I just stumbled accross it when reviewing the forum before it will shut down.

(Ok, I will continue in the HOMM6 thread to not spam here.)

Thanks again for your help Really appreciated!
Tuts: a) Bigchillghost, viewtopic.php?f=29&t=17889
b) Extracting simple models: http://forum.xentax.com/viewtopic.php?f=29&t=10894
"Quoting the whole thing. Would u ever stop this nonsense?"
Post Reply