Important information: this site is currently scheduled to go offline indefinitely by end of the year.

2022 - Tom Clancy's Rainbow Six: Siege Asset Extraction Tools

Post questions about game models here, or help out others!
Post Reply
User avatar
zaramot
double-veteran
double-veteran
Posts: 783
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 855 times

Re: Rainbow Six: Siege Models Thread

Post by zaramot »

Making model-import scripts, PM
User avatar
MaZTeR
mega-veteran
mega-veteran
Posts: 248
Joined: Sat Jul 09, 2016 4:06 pm
Location: Finland
Has thanked: 6 times
Been thanked: 12 times

Re: Rainbow Six: Siege Models Thread

Post by MaZTeR »

Tushkan wrote: Sat Feb 08, 2020 3:35 am As I said previously, I am planning to share my tools. Only problem is they are going to require some skills from a person using it. It's python based and it's tailored towards scripted execution i.e. there is no gui.
Alright, well, have to see how complicated they are to use once they're public.
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

I'm trying to document everything I do there. But you will still most likely need to write a script to grab the actual thing you want. Right npw the process looks like this:

Code: Select all

import r6s

with r6s.forge.parse('path\\to\\forge.file') as f:
	for i, e, n, c in f.files():  # loop through all files in forge archive
	# i - file index
	# e - file entry, has info about it's uid and offset
	# n - name entry, has info about its type and lots of less relevant data
	# c - file container (may also be hash or meta dict)
	meta_stream = c.meta.getstream()  # yields stream with unpacked meta data
	file_stream = c.file.getstream()  # yields stream with actual unpacked file
	# right now module doesn't select specific parser on the fly, so you have to make it manually
	with r6s.mesh.Mesh(file_stream) as mesh_handler:
		# mesh_handler holds parameters from model file. It includes vertex buffer length,
		# number of islands, all vertices and all lods
		actual_mesh = mesh.getmesh()  # this one yields 1 specific lod. This is what I import in blender
there are more comfy modules planned designed to ease up asset search and load to avoid fiddling with all that manual work. But that is not going to happen before I crack asset files and strings linking to make search by models names an option.
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
Custard
advanced
Posts: 65
Joined: Fri Oct 25, 2019 12:33 am
Has thanked: 11 times
Been thanked: 14 times

Re: Rainbow Six: Siege Models Thread

Post by Custard »

zaramot wrote: Sat Feb 08, 2020 8:11 pm https://youtu.be/tSNCstwSzq8
Interesting, they must have separate sub-rig for head and for equipment points, maybe apart or together.

Tushkan wrote: Sun Feb 09, 2020 11:27 pm I'm trying to document everything I do there. But you will still most likely need to write a script to grab the actual thing you want. Right npw the process looks like this:

Code: Select all

import r6s

with r6s.forge.parse('path\\to\\forge.file') as f:
	for i, e, n, c in f.files():  # loop through all files in forge archive
	# i - file index
	# e - file entry, has info about it's uid and offset
	# n - name entry, has info about its type and lots of less relevant data
	# c - file container (may also be hash or meta dict)
	meta_stream = c.meta.getstream()  # yields stream with unpacked meta data
	file_stream = c.file.getstream()  # yields stream with actual unpacked file
	# right now module doesn't select specific parser on the fly, so you have to make it manually
	with r6s.mesh.Mesh(file_stream) as mesh_handler:
		# mesh_handler holds parameters from model file. It includes vertex buffer length,
		# number of islands, all vertices and all lods
		actual_mesh = mesh.getmesh()  # this one yields 1 specific lod. This is what I import in blender
there are more comfy modules planned designed to ease up asset search and load to avoid fiddling with all that manual work. But that is not going to happen before I crack asset files and strings linking to make search by models names an option.
What does making the parser manually entail? If scouring and cataloging some file data will help you out I'd be happy to give it some time.
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

Right now it's based around manual parsing for 2 reasons: 1) it gives more flexibility. I can collect specific files and work on their raw data 2) it simply isn't finished to be as straightforward as possible =) . My main goal is to build complete models parser, complete skeletons parser (thanks to zaramot for hints on skeleton data) and provide at least rudimental means of identifying specific assets by their names. After that I intend to release it as a module so anyone willing to make a neat gui can use my work as a basis. Or even translate it to other programming languages and build more refined tools.
As for manual data tagging, It might come in handy in reversing some of the unknown tags inside mesh files. I'll think about your proposal. The only problem is it might also involve some manual fiddling with data import in blender. If you're an animator, I suppose you work with some kind of DCC (maya?). Are you familiar with blender and some rudimental understanding of python syntax?
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
Custard
advanced
Posts: 65
Joined: Fri Oct 25, 2019 12:33 am
Has thanked: 11 times
Been thanked: 14 times

Re: Rainbow Six: Siege Models Thread

Post by Custard »

I am familiar with Blender, and my idea of Python might pass for rudimentary. I've use a line or two of it making drivers, but it's not like I can differentiate api functions from vars 90% of the time in another person code. If this manual fiddling you speak of is such task of replacing a directory path, or swapping one var for another that's been notated then I manage. :)

I was thinking that finding a few sets of meshes that we know belongs to the same asset could help uncover something through the data comparison, though how far you gotten with this is unknown to me, no reason to indulge me if I can't be put on a useful track.
KnownAzEpic
ultra-n00b
Posts: 3
Joined: Wed Oct 23, 2019 1:08 pm

Re: Rainbow Six: Siege Models Thread

Post by KnownAzEpic »

Is it possible to extract the menu background images?
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

Yes. Those are just textures like everything else. Problem is identifying them.
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

comword wrote: Wed Feb 05, 2020 4:09 pm Here is the link, have a try. https://www.dropbox.com/sh/sii6e34kymrk ... DBY3Qv2TUa
Small node about your archives. I couldn't find any pointers from beast mesh to it's asset file. What this means is there are 2 options:
1. Mobs aren't stored as an operator asset
2. You missed some .depgraphbin file when you were backing up outbreak assets, so now I'm lacking linking data between assets.
I think it's the second one (can be proved on current full game build but I hadn't had enough time to check). What does it mean: either I will scan through all asset files and will find links there or you will be bound to manually skim through all meshes and textures to assemble the model back. Or you will be able to find another enthusiast that managed to store all necessary depgraphbins.

On the bright side, I almost ended unpacking data for meshes (normals done, vert colors done, uvs done thanks to zamarot, skinning is next in queue). Next up will be asset's skeletons (again, thanks to zamarot for data section hints).
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

NNNNNOOOOOOOO!!!! I just found out from their update notes that they are going to restructure game data. Why?! WHY?!?!?!

Edit: checked the TTS game version. They have indeed changed file format. But it's not that severe. They seem to pack meta and file data into one block now, so file headers have changed. But overall forge structure is the same (except for file type link but it will be easy to fix), compressor is the same, models are the same. Will have to see how they handle assets. I guess I will catch up fast enough. Only problem is I will shift onto new format and stop working with older forge archives. I still can decompress them, but at some point api might diverge and not all tools will longer apply to both newer and older forge versions.
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
Custard
advanced
Posts: 65
Joined: Fri Oct 25, 2019 12:33 am
Has thanked: 11 times
Been thanked: 14 times

Re: Rainbow Six: Siege Models Thread

Post by Custard »

Yikes :ninja:

Btw we can guess that those Operation Chimera creatures and more is going to be in the Rainbow Six Quarantine, so that might providing a better source for that stuff. With a bit of luck it could end up being very relatable in the files to Siege.
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

Well as long as they don't decide to encrypt it like in for honor. And someone provides game resources. Because I don't think I'm going to buy it )
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
comword
n00b
Posts: 12
Joined: Thu Nov 22, 2018 10:38 am

Re: Rainbow Six: Siege Models Thread

Post by comword »

Tushkan wrote: Mon Feb 17, 2020 10:55 pm 2. You missed some .depgraphbin file when you were backing up outbreak assets, so now I'm lacking linking data between assets.
I think it's the second one (can be proved on current full game build but I hadn't had enough time to check). What does it mean: either I will scan through all asset files and will find links there or you will be bound to manually skim through all meshes and textures to assemble the model back. Or you will be able to find another enthusiast that managed to store all necessary depgraphbins.
Hi, I am really busy these days and very glad to see your progress. I found that my dropbox was full, and may result in missed depgraphbin.
This is all depgraphbins:

Code: Select all

./datapc64_bootstrap.depgraphbin
./datapc64_fury_d01_resort.depgraphbin
./datapc64_fury_d01_resort_p2.depgraphbin
./datapc64_fury_d02_hospital.depgraphbin
./datapc64_fury_d02_hospital_p2.depgraphbin
./datapc64_fury_d03_junkyard.depgraphbin
./datapc64_fury_d03_junkyard_p2.depgraphbin
./datapc64_pvp10_chalet_set02.depgraphbin
./datapc64_pvp11_university.depgraphbin
./datapc64_pvp12_russiancafe_set02.depgraphbin
./datapc64_pvp13_border.depgraphbin
./datapc64_pvp14_favela.depgraphbin
./datapc64_pvp15_temple.depgraphbin
./datapc64_pvp16_ibiza.depgraphbin
./datapc64_pvp17_themepark.depgraphbin
./datapc64_pvp19_tower.depgraphbin
./datapc64_r6_menuworld_playgo.depgraphbin
./datapc64_ui_playgo.depgraphbin
./datapc64_ondemand.depgraphbin
./datapc64_ondemand_fury.depgraphbin
./datapc64_ondemand_playgo.depgraphbin
./datapc64_ondemand_set01.depgraphbin
./datapc64_ondemand_set02.depgraphbin
./datapc64_pvp01_house_v2_set01.depgraphbin
./datapc64_pvp02_oregon_set02.depgraphbin
./datapc64_pvp03_hereford_playgo.depgraphbin
./datapc64_pvp04_clubhouse_set02.depgraphbin
./datapc64_pvp05_plane_set01.depgraphbin
./datapc64_pvp06_yacht.depgraphbin
./datapc64_pvp07_consulate_set01.depgraphbin
./datapc64_pvp08_bank.depgraphbin
./datapc64_pvp09_kanal_set02.depgraphbin
https://drive.google.com/file/d/1EGeIBr ... sp=sharing
Tushkan wrote: Mon Feb 17, 2020 11:18 pm NNNNNOOOOOOOO!!!! I just found out from their update notes that they are going to restructure game data. Why?! WHY?!?!?!

Edit: checked the TTS game version. They have indeed changed file format. But it's not that severe. They seem to pack meta and file data into one block now, so file headers have changed. But overall forge structure is the same (except for file type link but it will be easy to fix), compressor is the same, models are the same. Will have to see how they handle assets. I guess I will catch up fast enough. Only problem is I will shift onto new format and stop working with older forge archives. I still can decompress them, but at some point api might diverge and not all tools will longer apply to both newer and older forge versions.
You can try to use different parts of unpacking code based on conditions and try to support different game versions. If this is too complex, try to use version control like git to snapshot your code for older forge versions.
Tushkan
veteran
Posts: 106
Joined: Mon Dec 18, 2017 1:47 pm
Has thanked: 2 times
Been thanked: 39 times

Re: Rainbow Six: Siege Models Thread

Post by Tushkan »

Fury_ondemand seems to be the vital one that is missing.
I stashed the old parser for now to keep the code. I don't want to introduce versioning inside existing repo right now because I want to focus on actual data parsers. I might introduce version recognition later. Or simply unpack the data and sent it back to you so you can work with it.
Rainbow 6 Siege forge unpacking tool:
https://www.dropbox.com/sh/b2cuse4hp90y ... qTfja?dl=0
benchmark7770
ultra-n00b
Posts: 2
Joined: Mon Jun 24, 2019 2:56 pm
Has thanked: 1 time

Re: Rainbow Six: Siege Models Thread

Post by benchmark7770 »

Hey Tushkan,
First of all thank you for your time and effort you are putting into this, i have a question do i have to keep the mesh.rip data that i extracted via ninja ripper or is it all ruined already and of no use, bcs of how the mesh is broken, when it is imported into noesis?
Post Reply