Horizon Forbidden West

Skeletons, animations, shaders, texturing, converting, fixing and anything else related to read game models
tbmq008
Posts: 62
Joined: Thu Nov 26, 2020 2:13 pm

Re: Horizon Forbidden West

Post by tbmq008 »

OK, i couldn't run h2_extr.exe in an full-on VM environment (a la QEMU, VirtualBox or VMware), but i enabled my PC to install Hyper-V components so they could set themselves as "hosts" or something. so my computer is an overglorified VM now. i won't pretend to understand any of it, but it's something of a compromise if you will.
anyway, a promise is a promise and i won't break it. so, let's get the show on the road, shall we?

here's me running h2_extr.exe and Edgetosmd.exe without any game files to work on. naturally.
https://drive.google.com/file/d/10GATR4OPTPkLA8at13hCsbxVV8Nl1pUe/view?usp=sharing
and here's me destroying it.
https://drive.google.com/file/d/1newRN-cCDDATNsDzNE04Xh3A0eEZ_mBi/view?usp=sharing

so, am i going to be blamed for s--- like usual? because i just "don't understand how things work"? let's see...

first of all, no one gets to write a program that somehow angers anti-virus vendors. no one. it's not just a matter of "ohhhhh my app needs to be signed for that to happen and even then my anti-virus will eat it anyway" or even "ohhhhhhhhhhhhhhhh even if i make my app the best written program on planet earth my anti-virus will eat my app anyway because heuristic analysis", nonononono. it's your responsibility to ensure no anti-virus vendors eat your program alive. just think of something. you're badass at it. otherwise your users will be anxious at the mere thought of even using it.

second of all, i was willing to go past the malware i was giving your ehhh.... "tool" the reputation of and... your tools don't account for s--t.
if you simply execute h2_extr.exe and/or Edgetosmd.exe without any commands, it throws in the towel and stops working. if you give h2_extr.exe the intended command (hex numbers in fact, from 0 to 7eeee, whatever) it'll throw a tantrum the moment it doesn't find that special file... awesome.
this is assuming that said "special file" isn't anywhere on that "special path" the user must set though an f---ing ini file. it's always in the first line of said ini. which in my case turned out to be true.

what this means is that you made sure these tools did not account for any mistreatment the end user might give to any of your tools, be it intentional or not. and we know all too well that intentions don't matter in the slightest. as my walls-of-text can attest.
in other words, what are you saying with these tools is that the end user deserves more error messages than if they used them the "right way". yaaaaaaaaaaaaaaaaaaaaaaay!
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

Time to explain the most complicated part, robots.

First, I will describe all assets needed. All of them were present in horizon 1, but now we also need EDGE assets. To get full animated robot, we will need ALL of these. And they could easily be in many different asset groups (groups described in a post above), or all in one. Which complicates things.

This is a list of all robot assets used in extraction:

1. Models:
- main model
- additional models (antennas etc)
- destructible parts

2. Skeletons:
- mesh skeleton
- physics skeleton
- edge skeleton
- SkeletonHelpers

3. Other data:
- destructibles description
- animations
- textures and materials

Now let me describe these assets a little.

1. Models are kind of usual, and they are same as horizon 1. There are many static small destructible parts, one big skeletal model, and maybe a few more skeletal/static parts. All destructible parts are usually in one group, rarely in two. Canisters are in separate small groups, one for each canister type.

2. Skeletons. Why do we need all these?

Mesh skeleton has all bones for visual model parts, weighted, and many of them are not present in any other skeleton.

SkeletonHelpers (called robotmodelhelpers in zero dawn) is the only place that has all helper bones - for destructible parts.

Physics skeleton. In addition to base skeleton, it also has bones needed to attach helpers, and again, some of them are not anywhere else. Nothing is weighted to them, they are just auxiliary bones to attach helpers, and then destructible parts to be attached to those helpers.

Edge skeleton is almost same, but its needed for sony tool to work.

3. other data:

Animations - original EDGE anim files. Most animations are in one group, just its usually different group, not the same as main model.

Destructibles description is a special table that connects SkeletonHelpers with static destructible parts. That part of the process was done manually in Horizon 1, because everything had names. Now we need those too.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

So the 1st step in getting any robot is finding all these assets, in which group they are. We already have a list of all main parts for a start (attached). Now here's what the tool does when it encounters these assets:

1. Models

Models are exported as ASCII files. Note that destructible parts on the first run (when its unknown where to place them) are exported as static models. Later on, they will be exported as skeletal models, placed and weighted to corresponding bones.

2. Skeletons

All skeleton asset types (skeleton, physicsskeleton, skeletonhelpers, edgeskel) are exported as raw original assets with corresponding extension. Additionally, mesh skeletons are exported as ASCII + SMD, so they can be used to combine with ASCII model or SMD animation.

3. Other data

Destructibles description is not exported at all. This information is only used on the run, to update the data about how to connect destructible parts to helpers. The tool console output can also be used to create a list of all destructible parts and add them to the process. So far I'm only processing their "initial", undamaged states. Damaged states can also be added later.

Edge animations are exported to "anim_edge" subfolder with edge skeleton code in the end of its name. The group/asset number from this code will tell if its this robot animation, or another actor/character animation.

Textures and materials are exported to correspoding folders, just like it was before.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

How to use the tool to get full robot.

1. Find mesh skeleton, physics skeleton and skeleton helpers.

If you don't care where each part is, just use the tool on all known groups for that robot. Run it as usual: h2_extr.exe <number>

After that, you will have a lot of stuff exported, and there will be several assets of each type. You need to choose only one of each type, the right one.

- mesh skeleton is the .Skeleton file thats indicated when extracting main body (the same one that is used in usual models like before)

- there are usually 2 .PhysicsSkeleton files, you need the big one

- there are many helper files, open them and see inside which one has helper bones for destructible parts. Correct one will have bones called like "body_helper", "LegPlate_helper", "part12_helper" etc. Some others may be very small, or have "camera", "action" helpers inside, they are not needed.

2. Once you have those 3 files, run the tool with 3 parameters:

h2_extr.exe <skeleton> <physicsskeleton> <skeletonhelpers>

After that, you get FULL skeleton in ascii/smd called "..._robotskel" and a "robot_helpers" file. That robot_helpers file will gather information about all helper bones. ASCII skeleton will be needed to load the full model, and SMD version is for animations.

3. Process all destructible descriptions.

Again, if you don't know where they are, or don't care about it, just use the tool on all known groups and save the tool output. If in this output you see any missing groups for destructible parts, add them to your list. Messages looking like "Destructible mesh 235 - 8" mean that group 235 contains some needed parts.

4. Cleanup (optional)

Now everything is ready for final pass.

At this point, it may be good idea to delete all ASCII files. It's not required, but that way you can get rid of leftover static parts that will now be replaced with proper skeletal parts.

5. Final pass.

Run the tool on all groups contaning models. Or simply run it again on all of them.

In the end, you get 3 kinds of ASCII files:
- files with _destr suffix are destructibles
- files with _static suffix are static parts
- all other "usual" files with no suffix - these are skeletal parts

After everything is exported to ASCII, you can process all parts exactly how it was in Horizon 1. Static parts may be loaded directly. Destructibles must be all merged together, then count submeshes, add that number above and merge with skeleton. Skeletal parts must be merged with skeleton. Or you can also merge them together like destructibles, but in this case, before merging, remove submesh count from each file.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

Extracting Edge animations.

1. Export .edgeanim and .edgeskel files from animation group (if its not done yet)

Each robot has several edge skeletons, you need to use correct one, that corresponds to animations. You can see skeleton code in the end of every animation name.

2. Use Edge anim decompiler tool (found in leaked Vita SDK for example)

That tool is available in public, and has simple help option how to use it. Can be run in a batch. It outputs animation data as text. You need to save console (command window) output to text file for convertion.

3. Convert .txt to .smd with Edgetosmd.exe

Tool has only 1 parameter: input text file. As output, it creates .smd file with same name. Also can be run in a batch.

4. Merge full SMD skeleton with animations.

Resulting SMD files will only have animation frames, not the initial pose. The bind pose in these animations is usually all zeroes, and it can't be used to apply to the model, so I'm not exporting the bind pose. Instead, the full set of bones with their proper bind pose must be taken from full robot skeleton created before on the stage of model extraction.

You can merge each animation with skeleton individually, or merge several animation files putting skeleton in the beginning, so you can load them all as one big animation.

After that, you can apply animation to the model in your favourite 3d editor.
tbmq008
Posts: 62
Joined: Thu Nov 26, 2020 2:13 pm

Re: Horizon Forbidden West

Post by tbmq008 »

two days have passed since i was promised aluigi's forthcoming ban and i see no such promise being filled.
oh well. i'm officially sick and tired of it now. i'm leaving this thread for real.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

Added a version of Edgetosmd tool (Edgetosmd_i.exe) that adds all frames, with interpolated data. This is for noesis smd plugin which can't work properly without having all frames. Blender smd plugin can load only keyframes (this is what first tool did) making smaller smd files
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

Someone found that last version of the tool somehow got static meshes broken.
Here's the previous version 3 that had them extracted.
tbmq008
Posts: 62
Joined: Thu Nov 26, 2020 2:13 pm

Re: Horizon Forbidden West

Post by tbmq008 »

another one worth adding to the list
Image
Image
i'm not attempting to invoke any kind of sinophobia here (you can find a lot of them everywhere on the internet) but everyone in the f###### Western anglosphere is telling the truth about what this new shiny Diablo game is. sorry, i don't make the rules.

anyway, recent version still has DRM, i mean code protection sorry not sorry f### you it's DRM WHY IS NO ONE CRACKING THIS WHERE'S EMPRESS WHEN YOU NEED HER, lacking usage with user-made mistakes still unnacounted for and bitdefender treats this for the virus to the point it outright removed the file from my computer that it is even though it's not (in developer's words) actually harmful and oh-my-god scrupulous users sell others' tools for real money because (gasp) systemic social class issues! not everyone can live your luxurious life that you may have deserved at some point in the past, but that's just me.

in other words, nothing changed. and i'll probably still get the blame for all this anyway so imma go and leave this here.

final note is that the PS4 and PS5 versions of HFW are sold separately alongside a rather expensive PS4+PS5 edition on the PlayStation Store after Sony+Guerrilla previously told them "you don't have to pay a dime to upgrade to the PS5 version if you've already bought the game once!" on the lead-up to the game's eventual release. maybe i'm twisting some words here but i don't care and i'm not going to be screwed over again like last time. oh and the source code will never be posted anyway so what do i have to lose?

point is, if this is your first time being impressed by id-daemon's coding skills, you'd do well by staying away from them at all costs. you have been warned.
DJ Normality
Posts: 647
Joined: Tue Jul 24, 2018 8:52 am

Re: Horizon Forbidden West

Post by DJ Normality »

Thanks daemon for the update.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Horizon Forbidden West

Post by aluigi »

I decided to keep all the non-sense posts of the user tbmq008 "as-is" forever since it's useful for other forums that may suffer of the same "problem", and also for making anyone feeling safe about the genuine work of id-daemon.
Sorry for the noise.
Now let's stay on topic and have fun.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

aluigi wrote:Now let's stay on topic and have fun.

Okay. And anyone annoyed by tbmq008 posts can add him to "foe list" and see the clean thread.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

I have to clarify that all tool versions published here ONLY work with game release version 1.00
I don't support any updates (patches) yet.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

Tool updated.
Now all 100% of 75493 asset packages work.
Also changed texture names from decimal to hex, so they correspond to material lists.
JP111555
Posts: 3
Joined: Mon Jul 11, 2022 4:09 pm

Re: Horizon Forbidden West

Post by JP111555 »

So quick question, how does one go about extracting the files from HFW? As far as I know the game isn't even out on PC yet and I have 0 idea on how to extract game files from the PS5.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

So far, game files from PS4 are distributed between people who know each other.
And sooner or later they will be available in public.
JP111555
Posts: 3
Joined: Mon Jul 11, 2022 4:09 pm

Re: Horizon Forbidden West

Post by JP111555 »

Will you eventually post the files for the people who don't have them? As so far the sites for sharing files are virus ridden or are fake. Long story short it's pretty much impossible to get the game files unless you buy the game a second time on PC.
id-daemon
Posts: 1040
Joined: Sun Mar 22, 2015 7:09 pm

Re: Horizon Forbidden West

Post by id-daemon »

JP111555 wrote:Long story short it's pretty much impossible to get the game files unless you buy the game a second time on PC.

That's not true. This forum is not the place to talk about piracy, but this is not a secret: for absolute most games, PS4 files are also available, not only PC.
JP111555
Posts: 3
Joined: Mon Jul 11, 2022 4:09 pm

Re: Horizon Forbidden West

Post by JP111555 »

id-daemon wrote:
JP111555 wrote:Long story short it's pretty much impossible to get the game files unless you buy the game a second time on PC.

That's not true. This forum is not the place to talk about piracy, but this is not a secret: for absolute most games, PS4 files are also available, not only PC.


Any sites in particular though for getting game files that way I know where to look? I haven't downloaded game files off the internet before so this is new to me.
WAUthethird
Posts: 2
Joined: Wed Jul 20, 2022 6:52 am

Re: Horizon Forbidden West

Post by WAUthethird »

JP111555 wrote:
id-daemon wrote:
JP111555 wrote:Long story short it's pretty much impossible to get the game files unless you buy the game a second time on PC.

That's not true. This forum is not the place to talk about piracy, but this is not a secret: for absolute most games, PS4 files are also available, not only PC.


Any sites in particular though for getting game files that way I know where to look? I haven't downloaded game files off the internet before so this is new to me.

Can't share sites, but I would heavily advise against searching for the extracted files - as, like you said, they are virus infested or fake. Distributing the raw unpackaged files is not a hugely common practice. You'll have to extract the files yourself from a (legally obtained) copy using a jailbroken PS4, which can be difficult to come by and is outside the scope of this forum/thread. Lots of resources elsewhere online though.
Last edited by WAUthethird on Wed Jul 20, 2022 7:03 am, edited 1 time in total.