Closed alecss131 closed 3 months ago
Found solution in internet
RotCompressed1 = readUInt()
RotCompressed2 = readUShort()
qx = ((RotCompressed1 >> 20) - 2048.0 ) / 2047.0
qy = (((RotCompressed1 >> 8) & 0xFFF) - 2048.0 ) / 2047.0
qz =(((( RotCompressed1 * 16) & 0xFFF)|(RotCompressed2 >> 12)) - 2048.0 ) / 2047.0
qw = ((RotCompressed2 & 0xFFF) - 2048.0 ) / 2047.0
tx = (readUShort() / 65535.0) * transScalar[0] + transOffset[0]
ty = (readUShort() / 65535.0) * transScalar[1] + transOffset[1]
tz = (readUShort() / 65535.0) * transScalar[2] + transOffset[2]
result and find some errors in my frame read code (frame order)
for i in range(frame_count)
prevFrame = readUInt()
time = readFloat()
currentId = i
prevId = currentId - prevFrame // 20
and sort frames by prevId[i] == currentId[i - 1]
@alecss131 Thanks! Added import support for this format https://github.com/Psycrow101/Blender-3D-RW-Anm-plugin/commit/e2360a37958e8460779c3a16ec8afa0325591973
game from ps2 renderware engine, developer Climax Action in rw anm files have 2 formats: 0x01 - uncompressed (36 bytes per frame) and 0x02 - compressed (22 bytes per frame) but i have format with id 0x0311, data split on two parts, first 8 bytes (time and offsets) and second part 12 bytes I don't understand what and how is stored in the second part of the data logically there should be a quaternion and a vector, but there are not enough 2 bytes for them (7x compressed floats = 14 bytes) anm file structure
im trying decompress floats from uint16_t and decompress RwV3d from uint32_t in combination 4x uint16_t + 1x uint32_t or 3x uint16_t for xyz and restore w from this + 3x uint16_t for vector apply and not scalar and offset for translation in the end nothing comes of it link for dff and anm files (long and short) https://drive.google.com/drive/folders/1f_Ufu5BiD7tOaSYVbJuWj--lYsAMLJNT?usp=sharing
skeleton has 53 bones and looks like screen from my own animation viewer (it's faster to try different decryption options)