Jump to content

Horizon Forbidden West [PS4/PS5]


id-daemon

Recommended Posts

  • Engineer
6 hours ago, Rinnova17 said:

 

Just wondering, is there any way to find out the assets' IDs for a specific character? For example, for Alva (or enyone else)? In HzD there were specific (and recognizable) names (like "eugene" for Helis or "hannah" for Aloy). 

All file names were removed from the game. There is a way to find specific characters, but its complicated, so I think it will be faster to just check them all one by one.

Link to comment
Share on other sites

44 minutes ago, id-daemon said:

All file names were removed from the game. There is a way to find specific characters, but its complicated, so I think it will be faster to just check them all one by one.

Thanks for the answer 🙂 I was confused by those numbers at first, at the moment I managed to find Kotallo (1153), and (perhaps) Fashav (4426), but they are not complete, parts of the models are somewhere else :(  

Edited by Rinnova17
Link to comment
Share on other sites

  • 3 weeks later...

Really great tool :D. Is there any way how we can extract Burning Shores models? As I understand each Robot has its own ID but they are not included in the list. Is there a way we can find them? Im especially interested in the Horus 3D model which is probably the largest in the game and I suspect it has multiple IDs

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
On 01.11.2023 at 20:22, id-daemon said:

Инструмент Horizon Forbidden West.

Существуют версии для PS4 и PS5.
Извлекает всех (или почти всех) персонажей / роботов со скелетами, анимацией и текстурами, а также статические сетки.

e80MFDs.png

zainRq9.png

QvjNQqO.png

where can I download an archive with 3D models

 

h2_ps4.7zip 603.81 кБ · 57 загрузок h2_ps5.7zip 604.15 кБ · 43 загрузки

hi, where can I download an archive with 3D models, archives are not available

 

Link to comment
Share on other sites

Sorry im quite a newbie for this... I open the 'h2_extr_pc.exe' with the path in the INI set to the game's \LocalCacheWinGame, removed the .BINs, but the thing opens and closes inmediately showing for a split of a second ''?????????????????????????????????????????.?????????????????????????????????????????(String[] )''

Is there anything im missing?

Link to comment
Share on other sites

On 5/21/2024 at 11:53 AM, NahaNax said:

Sorry im quite a newbie for this... I open the 'h2_extr_pc.exe' with the path in the INI set to the game's \LocalCacheWinGame, removed the .BINs, but the thing opens and closes inmediately showing for a split of a second ''?????????????????????????????????????????.?????????????????????????????????????????(String[] )''

Is there anything im missing?

Run cmd (as administrator), navigate through it where you installed the tool (for example, it is in D:\HFW Tool). Type h2_extr_pc.exe "number of the asset from one of the .txt files in lists folder" (without quotes). For example, if you want to extract Kotallo's head (faces.txt), it should look like this  h2_extr_pc.exe 1153

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Hello, i want to rip the music files of the game because, some songs are not present in official soundtrack or some songs like "Built To Kill" are shorter in original soundtrack and "In-Game" version are larger. What files and tools i need to extract music files?

Link to comment
Share on other sites

Is this error normal?

Unhandled Exception: System.FormatException: Additional non-parsable characters are at the end of the string.
   at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos)
   at System.Convert.ToInt32(String value, Int32 fromBase)
   at ?????????????????????????????????????????.?????????????????????????????????????????(String[] )

Link to comment
Share on other sites

OK I m lost I try to make something with this file I get a mode but noesis don't load that give me a error. Now I kind know the model work I tested in blender and it load very good with bone and all but not in noesis. This is the file or the model code I test it. 2B5A and this is the error.

---------------------------
Noesis Python Error
---------------------------
Traceback (most recent call last):
  File "G:\Project\Extract\plugins\python\fmt_nxps_0_9_6.py", line 480, in xpsLoadModel
    if loadMeshes(bs, numberMeshes, meshes, matList) == 0:
  File "G:\Project\Extract\plugins\python\fmt_nxps_0_9_6.py", line 426, in loadMeshes
    bidx.append(int(indices[j]))
ValueError: invalid literal for int() with base 10: '-0.086212'

---------------------------
OK   
---------------------------
Sorry if I just reopen stuff maybe are already solve

Link to comment
Share on other sites

  • 3 weeks later...
  • 4 weeks later...

Quotes below are from @id-daemon from xentax. Just for the sake of consistency and history.

Unfortunately, whatever I do, I cannot get _dest.ascii parts of the robots. The tool only extracts _static parts, and every robot is missing many parts.

Quote

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.

 

Quote

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.

 

Quote

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.

 

Quote

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.

 

Link to comment
Share on other sites

Yeh the _destr part of the process is broken as fk. That said you need to process the code more then 1 (like e.g h2_.exe 255 let it finish and do again) its dump i know I can't explain why what I know first time modify the robo_helper and next extract.

Now for what I was here. Is the list of codes ps4 include the Burning Shores update or just for the main game?

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

I can't find a specific NPC's (Abadund, one of the guys in Las Vegas) head/face. I've extracted and checked all the models in the faces.txt file. Except for these which just say "Assets read success! Done." without anything happening:

- 4658
- 3BAD
- 43FC
- 4CF3
- 79EE
- C629
- E5B8

Has anyone else had any luck with these specific meshes?

PS. If anyone needs a script for batch opening ASCII files in Blender, I gotchu. 

Link to comment
Share on other sites

5 hours ago, id-daemon said:

What's his body code? Maybe you can find his face in his model set.

Thanks for taking the time to reply! In the all_assets_pc.txt list, it's this block:

------------------------------
B291
BodyVariant: 1 parts
  ModelPart ---> B291 253
    Mesh ---> 48F7 0 (lower body)
    Mesh ---> 48F9 0 (upper body)
    Mesh ---> 3A6F 0 (hair)
------------------------------

However running the extractor on B291 yields a:

==============================
B291
Assets read success!
Done.

It finds edgeanims for B291 but no meshes, materials or textures. I apologize if the answer is obvious, this is the first time I'm using a Horizon extractor and I started this only a week ago.

Edited by Numeris
added details
Link to comment
Share on other sites

  • 2 months later...

Hey @id-daemon been following your work for quite some time, I was wondering if Audio is plausible to extract? I've only seen them being kept in .soundbank files, maybe it's Wwise or something of the sort? I know that's pretty widely used now-a-days. Any thoughts or opinions on the possibility of grabbing those, or has that been something figured out already and I just haven't looked hard enough?

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...