Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Diablo 4 Models

Featured Replies

  • Author
  • Localization

zardalu, posted Thu Mar 30, 2023 7:59 pm (76122)


Amazing work! Additional Research samples:

https://file.io/88u2NPVz41VG

Hellgate is among the largest app files from the game, lol. Also: Andariel, Demon brute, demon butcher, and succubus.
  • Author
  • Localization

coredevel, posted Thu Mar 30, 2023 10:24 pm (76123)


Sure, I can try, but link says files deleted.
  • Author
  • Localization

coredevel, posted Fri Mar 31, 2023 6:40 pm (76141)


Thanks. Hellgate is highly detailed, 770k trigs, 900k verts.

It's easy to display because it has a single vertex buffer, but some of the other models have multiple vertex buffers.
Still need to figure out how triangles connect to each vertex buffer.

Still missing:
- list of bones for animation.
- list of materials for texturing.

Image
  • Author
  • Localization

tmr32, posted Fri Mar 31, 2023 8:33 pm (76148)


coredevel wrote:
Thanks. Hellgate is highly detailed, 770k trigs, 900k verts.

It's easy to display because it has a single vertex buffer, but some of the other models have multiple vertex buffers.
Still need to figure out how triangles connect to each vertex buffer.

Still missing:
- list of bones for animation.
- list of materials for texturing.

Image


How did you do that?
(I'm ok with no bones and textures)
  • Author
  • Localization

coredevel, posted Fri Mar 31, 2023 9:38 pm (76150)


Model data is split into two files, meta and payload. Vertices and trigs are stored in the payload. If you just had a hex editor, or something like hex2obj, you could probably find a repeating vertex structure, then find the list of triangles by hand.

But this isn't a reliable way to extract model data, as some models have multiple vertex buffers where the vertex format changes. So the meta data has to be read too to understand how the triangles are indexed. And I assume the meta data stores other things like bones and materials, but still trying the find them.
  • Author
  • Localization

coredevel, posted Sun Apr 02, 2023 4:02 am (76172)


zardalu wrote:
Strange. Different service


Can you tell me, what other files besides .app and .tex come with these models? Because I'm still looking for a list of materials and bones, and they might be stored elsewhere.
  • Author
  • Localization

Ubtshakk, posted Sun Apr 02, 2023 4:06 am (76173)


Looks like there are people already working with the models in Blender:
https://imgur.com/a/qBYO1dE

How? What is the working extractor for D4?
  • Author
  • Localization

coredevel, posted Sun Apr 02, 2023 9:30 pm (76194)


Aside from some Xentax posts, I don't know of anybody else working on it. Nothing released yet. What is your source for this Blender script? Links?
  • Author
  • Localization

coredevel, posted Sun Apr 02, 2023 9:56 pm (76195)


The mesh is stored in a neutral pose, so without bones, it can't be posed or animated.

Can someone post some .ani animation files? Maybe the skeleton can be extracted from those.

Image
  • Author
  • Localization

Ubtshakk, posted Mon Apr 03, 2023 3:07 am (76198)


coredevel wrote:
Aside from some Xentax posts, I don't know of anybody else working on it. Nothing released yet. What is your source for this Blender script? Links?

Saw a random post in a chan board, no source found. How are you extracting the meshes btw? CASCExplorer with Noesis?Or it's something completly different fromD2r?
  • Author
  • Localization

zardalu, posted Mon Apr 03, 2023 7:59 am (76201)


coredevel wrote:
The mesh is stored in a neutral pose, so without bones, it can't be posed or animated.

Can someone post some .ani animation files? Maybe the skeleton can be extracted from those.


Ani samples for research:

https://anonfiles.com/V6s7Daibzc/D4AnimFilesSamples_zip

Also included are some meta folders that seem anim related, in case they are needed. Note these did not have corresponding payload folders in the archive.
I suspect the acr "Actor" meta files might have something boney in them.
  • Author
  • Localization

Ubtshakk, posted Mon Apr 03, 2023 3:58 pm (76206)


Ubtshakk wrote:
Looks like there are people already working with the models in Blender:
https://imgur.com/a/qBYO1dE

How? What is the working extractor for D4?

Update:It was made by Vana3d and extracted with Ninjaripper
  • Author
  • Localization

coredevel, posted Mon Apr 03, 2023 4:58 pm (76207)


zardalu wrote:
Ani samples for research:

Thanks!

Ubtshakk wrote:
Update:It was made by Vana3d and extracted with Ninjaripper


Ah, ok. I'm not using Ninjaripper or Noesis to extract model data. Just a plain hex editor.
  • Author
  • Localization

coredevel, posted Tue Apr 04, 2023 9:01 pm (76224)


Found the bones! Next up, vertex-bone weights. Still need to attach the skin to the skeleton.

Image
  • Author
  • Localization

zardalu, posted Tue Apr 04, 2023 9:23 pm (76227)


coredevel wrote:
Found the bones! Next up, vertex-bone weights. Still need to attach the skin to the skeleton.



Nice! Out of curiosity, were the bones in the .acr files?
  • Author
  • Localization

coredevel, posted Wed Apr 05, 2023 3:36 am (76229)


Nope, I found them hiding in the model file. I think the smaller files like Actor, AnimSet, and AnimTree, contain ids of other files that tie them together. But the animation files helped. I found a bone count and backtracked it.

I also found the bone weights too, but I hit another wall. They stored the weights with the vertex in a byte format. I think the corresponding bone indices are also byte indices. This means bone indices are limited to 255, but there are models like Andariel with at least 515 bones, so there must be some kind of bone index remapping going on. I haven't found it yet.
  • Author
  • Localization

coredevel, posted Sat Apr 08, 2023 12:01 am (76288)


Found the list of materials and textures. I can now texture the model. But, I haven't been able to convert all textures. Some work, some don't.
Like this one, Goatman_Melee_ao.tex. I think it should decode as BC1, but I get static noise in the pixels after conversion.

ah, nevermind. I found my problem. Got it to convert afterall.
  • Author
  • Localization

zardalu, posted Sat Apr 15, 2023 2:27 am (76394)


coredevel wrote:
Found the list of materials and textures. I can now texture the model. But, I haven't been able to convert all textures. Some work, some don't.
Like this one, Goatman_Melee_ao.tex. I think it should decode as BC1, but I get static noise in the pixels after conversion.

ah, nevermind. I found my problem. Got it to convert afterall.


Niiice.... were you able to get the skins working?
  • Author
  • Localization

coredevel, posted Sat Apr 15, 2023 4:26 am (76395)


I can read in pre-converted textures and UVs, but I don't have the full game installation, so I'm missing a lot of files. What I loaded here, I loaded by hand. Each texture has a ID, and even with all of these goatman .tex files, none of them are listed in the goatman model, which is strange.

Image

Obviously not Diablo 4 PBR quality, as I loaded only the base texture. Full model has color, normal, ambient occlusion, roughness, metal, emissive, and transparency.

Still working on the rigging, and also looking at animation. I've looked through all the ani files, and there's two types of files that might be helpful:
doors and chests.

Can you post some model files for these types?
Ancients_Chest_Common.app
Ancients_Chest_Rare.app

Crypt_Arch_A_Single_Door.app
Hell_Fort_Door_A_01_Dyn.app
Zak_Base_Door_B.app

I like these types of animations because they usually have very distinct rotations (0 to 90 degrees), so should be easy to pick apart.
  • Author
  • Localization

zardalu, posted Sat Apr 15, 2023 7:44 am (76396)


coredevel wrote:
I can read in pre-converted textures and UVs, but I don't have the full game installation, so I'm missing a lot of files. What I loaded here, I loaded by hand. Each texture has a ID, and even with all of these goatman .tex files, none of them are listed in the goatman model, which is strange.

Obviously not Diablo 4 PBR quality, as I loaded only the base texture. Full model has color, normal, ambient occlusion, roughness, metal, emissive, and transparency.

Still working on the rigging, and also looking at animation. I've looked through all the ani files, and there's two types of files that might be helpful:
doors and chests.

Can you post some model files for these types?
Ancients_Chest_Common.app
Ancients_Chest_Rare.app

Crypt_Arch_A_Single_Door.app
Hell_Fort_Door_A_01_Dyn.app
Zak_Base_Door_B.app

I like these types of animations because they usually have very distinct rotations (0 to 90 degrees), so should be easy to pick apart.


It seems that for most .app files there is an identically (or at least similarily) named .tex file, although there are many exceptions. It would probably be fairly easy to locate and manually apply most textures. I noticed that in the meta files there is a folder called "Material" (included), which may link the models and textures. Linking textures to models is certainly not as easy in this case as it was for Diablo Immortal though.

Ancients_Chest_Common.app and Ancients_Chest_Rare.app had no obviously named associated .tex files. The rest that you mentioned seem to have relevant .tex files.

https://anonfiles.com/85Aby9ldz1/D4Samples3_zip
  • Author
  • Localization

coredevel, posted Sat Apr 15, 2023 1:22 pm (76398)


Thanks, you're right. I found the missing IDs.

Texture IDs are stored in the .mat file, not the model. So, .mat files will be necessary for automatic texturing.

If these directories are not localized per character, then it might be a pain searching for the textures. Because I don't know if your extracted texture folder has 10 files or 10,000 files. Without filenames, will have to search through all of them looking for a matching ID.
  • Author
  • Localization

zardalu, posted Sun Apr 16, 2023 11:20 am (76409)


coredevel wrote:
Thanks, you're right. I found the missing IDs.

Texture IDs are stored in the .mat file, not the model. So, .mat files will be necessary for automatic texturing.

If these directories are not localized per character, then it might be a pain searching for the textures. Because I don't know if your extracted texture folder has 10 files or 10,000 files. Without filenames, will have to search through all of them looking for a matching ID.


Sadly the directories are not localized. The extracted texture payload folder contains 53682 files (all .tex), no subfolders, just about 70 GB in size. At least there are somewhat relevent file names... However automatic texturing is definitely the dream
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.