INCLABLOCKA Posted May 4 Share Posted May 4 Does anyone have an up-to-date way of getting textures and models from Diablo Immortal? I know you can use Casc-Explorer to download resources.mpk's and extract those to get .mesh files Then use the .MESH to .OBJ tool to convert them to .OBJ's My problem is that when extracting all those mpks every file is just named "file", does anyone know of way of finding out file names so I can see that "Iron helmet = resources35.mpk>file_023" or something. Also, textures. Where can I get textures? The only alternative I have is using the WOWhead model viewer, but it's very outdated and missing metal/rough textures and a lot of models from newer seasons I'm looking for. Last question (just wanted to ask everything while I can) is there a way to get the skeletons/armatures of the models too? I noticed that WOWheads model viewer loads something called a ".skinskeleton" but I haven't found any information on it. Thank you <3333 Link to comment Share on other sites More sharing options...
Denizantip Posted May 4 Share Posted May 4 There is many steps to get texture you want. First need to unpack mpk. You can find python script MPK extractor or DIDT tool. (Skeletons and skin skeletons will be there, if I'm not wrong.) After that unpack files (they are compressed with lz4, except textures. The packed with lz4 on some mip levels.) Then find the texture file. It may contain from 1 to 9 sub texture inside of it. Somewhere was binary templates that may help you. (010 editor). Each level packed by BC7 algorithm not all but most of them. Link to comment Share on other sites More sharing options...
INCLABLOCKA Posted May 5 Author Share Posted May 5 4 hours ago, Denizantip said: There is many steps to get texture you want. First need to unpack mpk. You can find python script MPK extractor or DIDT tool. (Skeletons and skin skeletons will be there, if I'm not wrong.) After that unpack files (they are compressed with lz4, except textures. The packed with lz4 on some mip levels.) Then find the texture file. It may contain from 1 to 9 sub texture inside of it. Somewhere was binary templates that may help you. (010 editor). Each level packed by BC7 algorithm not all but most of them. Oh wow thank you so much! Do you know where I can get the tools for doing this? That's interesting that the textures are all in one thing lol. What if you're looking for a specific characters textures since everythings unsorted? Link to comment Share on other sites More sharing options...
Denizantip Posted May 5 Share Posted May 5 I have found tools for Diablo 2 Resurrected/3/4 but for immortal only information about how the resources was packed. As I understood it was made by outsourcing studio. So I had to parse all that files by myself. Link to comment Share on other sites More sharing options...
wq223 Posted Tuesday at 01:52 PM Share Posted Tuesday at 01:52 PM On 2024/5/5 at AM10点54分, INCLABLOCKA said: 哦哇非常感谢你!你知道我在哪里可以获得执行此操作的工具吗?有趣的是,纹理都是一件事,哈哈。如果您正在寻找特定的角色纹理,因为一切都未排序怎么办? You can use this bms script to convert .4 or .0 or .1 texture files into a universal texture format. Logically speaking, it should be suitable for Diablo. This script comes from the bms official website By the way, does anyone have any ideas on opening .anim and .skeleton? It seems that they are not the final files. # quickbms script for converting texture files from games using Messiah engine into common formats (biggest mip only) # created by spiritovod get NAME filename # ASTC format set MEMORY_FILE binary "\x13\xAB\xA1\x5C\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00" # DXT formats set MEMORY_FILE2 binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x0A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x05\x00\x00\x00\x44\x58\x54\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" # BC7 format set MEMORY_FILE3 binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x0A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x44\x58\x31\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00" # PVR format (ETC1 / ETC2) set MEMORY_FILE4 binary "\x50\x56\x52\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x00\x00\x50\x56\x52\x03\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00" idstring "\x02\x02\x02" get VER short get FORMAT byte get MIPS byte get UNK3 byte get UNK4 long get WIDTH short get HEIGHT short goto 0x28 for i = 1 <= MIPS get MSIZE long get MWIDTH short get MHEIGHT short get UNK5 long get SIZE long getdstring TYPE 4 savepos OFFSET if i = MIPS callfunction extract 1 endif if TYPE = "NNNN" math OFFSET + SIZE elif TYPE = "ZZZ4" || TYPE = "LZMA" get SIZE long xmath OFFSET "OFFSET + MSIZE - 20" endif goto OFFSET next i startfunction extract string INTYPE = "" if TYPE = "ZZZ4" || TYPE = "LZMA" get SIZE long math MSIZE - 24 math OFFSET + 4 if TYPE = "ZZZ4" comtype lz4 elif TYPE = "LZMA" comtype lzma endif elif TYPE = "NNNN" getdstring INTYPE 4 if INTYPE = "RIFF" math MSIZE - 20 math SIZE = MSIZE else math MSIZE = SIZE endif comtype copy endif if FORMAT = 0x12 || FORMAT = 0x14 # DXT1, DTX5 putvarchr MEMORY_FILE2 0xC HEIGHT long putvarchr MEMORY_FILE2 0x10 WIDTH long if FORMAT = 0x14 putVarChr MEMORY_FILE2 0x57 0x35 endif elif FORMAT = 0x03 || FORMAT = 0x19 # RGBA, BC7 putvarchr MEMORY_FILE3 0xC HEIGHT long putvarchr MEMORY_FILE3 0x10 WIDTH long if FORMAT = 0x03 putvarchr MEMORY_FILE3 0x80 0x1C endif elif FORMAT >= 0x24 && FORMAT <= 0x31 putvarchr MEMORY_FILE 7 WIDTH threebyte putvarchr MEMORY_FILE 10 HEIGHT threebyte if FORMAT = 0x24 # 36, ASTC 4x4 putvarchr MEMORY_FILE 4 4 putvarchr MEMORY_FILE 5 4 elif FORMAT = 0x26 # 38, ASTC 5x5 putvarchr MEMORY_FILE 4 5 putvarchr MEMORY_FILE 5 5 elif FORMAT = 0x28 # 40, ASTC 6x6 putvarchr MEMORY_FILE 4 6 putvarchr MEMORY_FILE 5 6 elif FORMAT = 0x2A # 42, ASTC 8x6 putvarchr MEMORY_FILE 4 8 putvarchr MEMORY_FILE 5 6 elif FORMAT = 0x2B # 43, ASTC 8x8 putvarchr MEMORY_FILE 4 8 putvarchr MEMORY_FILE 5 8 elif FORMAT = 0x2E || FORMAT = 0x2F # 46/47, ASTC 10x10 putvarchr MEMORY_FILE 4 10 putvarchr MEMORY_FILE 5 10 elif FORMAT = 0x31 # 49, ASTC 12x12 putvarchr MEMORY_FILE 4 12 putvarchr MEMORY_FILE 5 12 else continue exit_here endif elif FORMAT = 0x1F || FORMAT == 0x20 putvarchr MEMORY_FILE4 0x18 HEIGHT long putvarchr MEMORY_FILE4 0x1C WIDTH long if FORMAT = 0x1F # ETC math TEX_TYPE = 0x6 elif FORMAT = 0x20 # ETC2 RGBA math TEX_TYPE = 0x17 endif putvarchr MEMORY_FILE4 8 TEX_TYPE byte else continue exit_here endif if INTYPE = "RIFF" string NAME + ".webp" clog NAME OFFSET MSIZE SIZE cleanexit endif append if FORMAT = 0x12 || FORMAT = 0x14 clog MEMORY_FILE2 OFFSET MSIZE SIZE math MEM = -2 string NAME + ".dds" elif FORMAT = 0x03 || FORMAT = 0x19 clog MEMORY_FILE3 OFFSET MSIZE SIZE math MEM = -3 string NAME + ".dds" elif FORMAT = 0x1F || FORMAT = 0x20 clog MEMORY_FILE4 OFFSET MSIZE SIZE math MEM = -4 string NAME + ".pvr" else clog MEMORY_FILE OFFSET MSIZE SIZE math MEM = -1 string NAME + ".astc" endif append get FSIZE asize MEM log NAME 0 FSIZE MEM cleanexit endfunction exit_here: print "This format is not supported! Add it to definitions first." Link to comment Share on other sites More sharing options...
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