Engineers h3x3r Posted June 17 Engineers Posted June 17 9 minutes ago, DreamingOxxy said: I did notice with the script is the UVs were upside down Printf("vt %f %f\n",UnitVector[0].UVPosX,UnitVector[0].UVPosY); to Printf("vt %f %f\n",UnitVector[0].UVPosX,-UnitVector[0].UVPosY); should fix it.
DreamingOxxy Posted June 17 Author Posted June 17 16 minutes ago, DKDave said: I notice that some models are made up of multiple parts and even multiple files, and some have different versions of the model in the same file, such as "damaged" models, etc. Yeah, you can blow some body parts off, so there's gore submeshes, and for the armor pieces it looks like there's multiple meshes for each part (cloth, body, armor), the other guy did seem to figure out how to apply the materials to the models correctly, so maybe you can take a look. 13 minutes ago, h3x3r said: Printf("vt %f %f\n",UnitVector[0].UVPosX,UnitVector[0].UVPosY); to Printf("vt %f %f\n",UnitVector[0].UVPosX,-UnitVector[0].UVPosY); should fix it. Alright thanks
DKDave Posted June 17 Posted June 17 54 minutes ago, DreamingOxxy said: Yeah, you can blow some body parts off, so there's gore submeshes, and for the armor pieces it looks like there's multiple meshes for each part (cloth, body, armor), the other guy did seem to figure out how to apply the materials to the models correctly, so maybe you can take a look. Alright thanks The submesh info has a "material index" value, but the material files themselves seem to define more materials than there are materials used (or I'm not reading the material files correctly ...)
DreamingOxxy Posted June 17 Author Posted June 17 (edited) 6 minutes ago, DKDave said: The submesh info has a "material index" value, but the material files themselves seem to define more materials than there are materials used (or I'm not reading the material files correctly ...) Hm. I see, some models do have reskins, so maybe it's that? Like a skin of sorts. For example some of the armors use the same model for two armor sets, one just uses a different texture. Edited June 17 by DreamingOxxy
DreamingOxxy Posted June 19 Author Posted June 19 Not sure if any of you are still working on this/wanting to, but I wanted to make a quick request about getting skeletons out, I'm not sure if they are actually in the .bones files, but the names of them are in there for sure, and there's some sort of data inside them. I don't understand skeleton finding whatsoever, I've only been able to figure out mesh deconstruction, but it would be helpful to just be able to get the original rigs out, even if there's no weights.
Engineers h3x3r Posted June 21 Engineers Posted June 21 (edited) Here's bms in case tool doesn't work for some reason. #################################### ### Helldivers Resource Unpacker ### #################################### comType zlib_noerror get BaseFileName basename getdstring Dummy 0x6 get Chunks ushort getdstring Dummy 0x4 math Chunks + 1 for i = 0 < Chunks get ZSize uint32 savepos Offset getdstring CData ZSize append 0 clog MEMORY_FILE Offset ZSize ZSize next i goto 0 -1 get Resources uint32 -1 getdstring Dummy 0x100 -1 xmath TableSize "Resources * 16" -1 getdstring Dummy TableSize -1 for i = 0 < Resources savepos HeaderInfoOffset -1 get Extension longlong -1 get CRCName_0 uint32 -1 get CRCName_1 uint32 -1 get ResourceCount uint32 -1 get StreamOffset uint32 -1 for j = 0 < ResourceCount get Unknown_0 uint32 -1 get ResourceSize[j] uint32 -1 get StreamResourceSize uint32 -1 next j savepos HeaderInfoEndOffset -1 for j = 0 < ResourceCount getdstring RawData ResourceSize[j] -1 next j savepos RawDataEndOffset -1 xmath HeaderSize "HeaderInfoEndOffset - HeaderInfoOffset" -1 xmath RawDataSize "RawDataEndOffset - HeaderInfoEndOffset" -1 xmath Size "HeaderSize + RawDataSize" -1 if Extension == -7845776955604022234 set Extension string "animation" elif Extension == -2523249336000628348 set Extension string "animation_curves" elif Extension == 9222729345201491665 set Extension string "baked_lighting" elif Extension == 1792059921637536489 set Extension string "bones" elif Extension == -9051012362580577742 set Extension string "config" elif Extension == -8083727903408977048 set Extension string "data" elif Extension == -7866682425036021491 set Extension string "flow" elif Extension == -6990137951956076416 set Extension string "font" elif Extension == 3151582839410712222 set Extension string "input" elif Extension == -411360246199410658 set Extension string "ivf" elif Extension == 3055991222284753605 set Extension string "level" elif Extension == -6823360279786481694 set Extension string "lua" elif Extension == -1531025310400979233 set Extension string "material" elif Extension == -5586802062191616713 set Extension string "mouse_cursor" elif Extension == 4260310590552720244 set Extension string "network_config" elif Extension == -5936749679887390854 set Extension string "package" elif Extension == -6333977373143224988 set Extension string "particles" elif Extension == -4674384319396922447 set Extension string "physics_properties" elif Extension == 2848016463268491676 set Extension string "render_config" elif Extension == -3681457717887749313 set Extension string "shader" elif Extension == -1878508312612070765 set Extension string "shader_library" elif Extension == -7035681691298058571 set Extension string "shader_library_group" elif Extension == -111525813760131931 set Extension string "shading_environment" elif Extension == -2832068841926820393 set Extension string "sound_environment" elif Extension == -469788778869442224 set Extension string "spu_job" elif Extension == -6591347889605831076 set Extension string "state_machine" elif Extension == -2021911029933276383 set Extension string "static_pvs" elif Extension == 979299457696010195 set Extension string "strings" elif Extension == -5968043961655577708 set Extension string "surface_properties" elif Extension == -3656297521719370190 set Extension string "texture" elif Extension == -7389443945178646108 set Extension string "timpani_bank" elif Extension == 46134157573332076 set Extension string "timpani_master" elif Extension == 8155295712016485532 set Extension string "ugg" elif Extension == -2259526030728936129 set Extension string "unit" elif Extension == -6227052463280761918 set Extension string "upb" elif Extension == -625902272250026155 set Extension string "vector_field" elif Extension == 8678266882450615065 set Extension string "wav" elif Extension == 6006249203084351385 set Extension string "wwise_bank" elif Extension == -5822581075298045840 set Extension string "wwise_dep" elif Extension == -3095508420103327472 set Extension string "wwise_metadata" elif Extension == 5785811756662211598 set Extension string "wwise_stream" elif Extension == 8503174627613226853 set Extension string "xml" endif string FileName p "%s_unpacked/%08X%08X.%s" BaseFileName CRCName_1 CRCName_0 Extension log FileName HeaderInfoEndOffset RawDataSize -1 next i Use quickbms_4gb_files.exe. It may looks like it's stuck but don't worry. It first parse compressed chunks and then parse file table and unpack. Edited June 21 by h3x3r
DreamingOxxy Posted June 22 Author Posted June 22 This extractor is way better actually, thank you so much, it really helps with organizing stuff as well.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now