March 28, 2024, 12:09
bigger smaller reset     1020px Wide width Full width Reset   * *

Gildor's Forums

  Homepage Facebook Read news on Twitter Youtube channel Github page
Welcome, Guest. Please login or register.
Did you miss your activation email?

« previous next »
Print
Author Topic: Dishonored skeletalMesh  (Read 7162 times)
deepshit
Newbie
*
Posts: 22


View Profile
« on: January 22, 2013, 14:10 »

Hi Gildor
I needed to make some changes to some UE games so I read lots of information to make an application to that.Currently I can read textures and staticMeshes and I can do what I want with them.
But now I'm stuck at SkeletalMeshes.It's been a week and I had no progress in deserializing it and it's giving me a headache. Angry
I can find bones and vertices and faces in Hex but there's lots of unknown data that I can not parse and In order to skip them I need to analyze them.
Can you please help me in this game for serialization?
I would really appreciate it.
Thanks.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #1 on: January 22, 2013, 14:26 »

Skeletal mesh data are quite complex to describe. Try reading this site
http://me3explorer.wikispaces.com/
It's made by warrantyvoider (he's present on this forum) and has some documentation about Mass Effect data formats. Some docs were made with a bit of my help (at least reviewed by me).
Warrantyvoider has some tools for Mass Effect modding. They're made with C# and has open source. Most likely umodel's source will be released this Spring.
Logged
deepshit
Newbie
*
Posts: 22


View Profile
« Reply #2 on: January 22, 2013, 15:05 »

I was waiting for the source Grin.Good news.
I have already read WarrantyVoider's documents on skeletalMesh but the differences is a lot.
SkeletalMesh in Voider's doc is Bounding->Materials->Bones->LODs
But in Dishonored it's like Bounding->unknown->materials->lots of Unknown->Bones->Unknowns->LODs
Thanks
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #3 on: January 22, 2013, 15:12 »

What do you want to do with Dishonored's meshes? If you want to modify them - forget about it. Dishonored uses PS3's Edge library aside with ordinary UE3's mesh and animation. It uses UE3 mesh for visualization and Edge for animation. Each mesh has "edge skeleton" information which is used for animation, it's stored after mesh position/rotation fields.
Logged
deepshit
Newbie
*
Posts: 22


View Profile
« Reply #4 on: January 22, 2013, 15:21 »

I know I cant modify them and I don't want to.
I just wanna find vertices and faces and make them null so they become invisible in game Grin
I can do it by hex editing but it's gonna take lots of time.
I hav already done it for staticMeshes but I can't deserialize SkeletalMeshes.
Thanks
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #5 on: January 22, 2013, 15:31 »

I just wanna find vertices and faces and make them null so they become invisible in game Grin
Very strange reason for doing such amount of work.
Logged
deepshit
Newbie
*
Posts: 22


View Profile
« Reply #6 on: January 22, 2013, 15:45 »

Yeah I know Grin
Most of it is for learning purposes.
After materials there is --Some data until bones --and-- some other data after bones-- until faces.
I cant find anyway to calculate them to skip.
Thanks
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #7 on: January 22, 2013, 15:54 »

There's single FName, FVector and float fields (structure) before Bounds field, immediately after the properties block. Also there's a byte array immediately before skeleton description which holds Edge mesh. Nothing else was changed for Dishonored in SkeletalMesh format.
Logged
deepshit
Newbie
*
Posts: 22


View Profile
« Reply #8 on: January 22, 2013, 16:10 »

Thanks.
I'll try to see what can I do.
Logged
Alcatraz
Newbie
*
Posts: 17


View Profile
« Reply #9 on: January 25, 2013, 11:48 »

I've worked on it in the past. I think we can work together now, only If you're interested in serializing Unreal Skeletal Meshes / Animations....
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #10 on: January 25, 2013, 12:32 »

I've worked on it in the past. I think we can work together now, only If you're interested in serializing Unreal Skeletal Meshes / Animations....
Do you mean - you have information about Dishonored's animation format?
Logged
Alcatraz
Newbie
*
Posts: 17


View Profile
« Reply #11 on: January 26, 2013, 13:47 »

I've worked on it in the past. I think we can work together now, only If you're interested in serializing Unreal Skeletal Meshes / Animations....
Do you mean - you have information about Dishonored's animation format?
Nope, but I can help reverse engineering it. I am interested in Unreal Engine file formats in general, so it doesnt really matter which game is it. And I know the structures and the serialization order is usually very, very different between games, but the generic serializing code is always the same, you just have to reverse engineer it separately for EACH game.
Logged
deepshit
Newbie
*
Posts: 22


View Profile
« Reply #12 on: January 31, 2013, 12:25 »

I've worked on it in the past. I think we can work together now, only If you're interested in serializing Unreal Skeletal Meshes / Animations....

Hi
I deserialized Dishonored skeletalmeshes thanks to gildor.
It had a little different from other UE games.I deleted the vertices and the game runs smoothly with no errors and invisible enemies. Grin
« Last Edit: January 31, 2013, 12:27 by deepshit » Logged
warrantyvoider
Full Member
***
Posts: 109


View Profile
« Reply #13 on: January 31, 2013, 16:55 »

a little tip from me how I bruteforced through this. First if you encounter a new unknown section, it either has a fixed length, or starts with a count and you need to guess the length. This works nice for static structs and simple arrays, so you can "skip" sections and analyze them later. Arrays of flexible length structs, like the LODs are harder to reverse but its possible with good guessing aswell. Once you can read all in, you can try to break it more down. Then I guess gildors tool can extract your gamefiles to PSKs. I have made a simple PSK viewer, but you can make your own pretty easily. Now just look for the actual values. F.e. if you have a point with 3 floats (x,y,z) try to find that bytepattern in the hex and you know where the vertices are. UVs on the other hand are compressed to minifloats, that makes it a bit harder to look for, but its possible too. And so on... when your done finding the mesh related informations, you need to write a converter between the skm format and f.e. the PSK format for import/export. That will be your hardest part, but you can try to port my code to your needs ^^

greetz WV
Logged
Print 
« previous next »
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS