Blender Guide

Vermintide asset ripping - NinjaRipper, Noesis, Ravioli Scanner, Blender for Blender

Vermintide asset ripping – NinjaRipper, Noesis, Ravioli Scanner, Blender

Overview

In this guide you’ll learn the specific workflow for asset ripping meshes, textures and audio files from Vermintide: The End Times and Vermintide 2 using NinjaRipper, Noesis, Ravioli Scanner and Blender.

Introduction

As part of honing my skills in Blender, I’ve been making fan animations of a video game series “Vermintide”. I’ve been spending my free time ripping the characters from the games, assembling them together, rigging and finally animating in Blender. It’s been a great excercise and a phenomenal outlet for creativity, though obviously time consuming.

After noticing the growing interest of people wanting to know how I got my hands on these models, I decided to write this guide so I can just link it to people instead of writing down an essay on asset ripping to each individual person. That and unless someone finds out a better way, this is the most time efficient way of asset ripping meshes and textures from the game.

WARNING: This way of asset ripping does not restore shape keys, vertex groups or rigs. The final result is a character model ready for rigging.

MODELS AND TEXTURES – VIDEO VER.

The model and texture ripping sections now have a video version that you can follow instead!
Consider it a supplement to the guide since I couldn’t cram everything into a video.

Detailed videos about ripping environments and sound files coming up next.

Necessary tools

Programs required for asset ripping this specific game are as follows:

MESH/TEXTURE RIPPING

Paste the RIP files plugin (.py) into the noesisv4421pluginspython folder. It allows the model viewer to read and export the meshes that NinjaRipper creates.

SOUND FILE RIPPING

Setting up NinjaRipper

NinjaRipper is a fairly flexible tool that works for some games, for others not quite. It basically takes a snapshot of the game screen and rips everything that’s on it including the textures. It doesn’t work on every game, it’s often blocked by anti-cheat software. Luckily for us it works like a charm in Vermintide, it’s only a matter of jumping through a couple hoops.


For Vermintide 2

  • use the x64 version
  • for “Exe:” choose the game executable located in this directory:
  • SteamsteamappscommonWarhammer Vermintide 2binariesvermintide2.exe
  • for “Output Directory” create a folder preferably on a hard drive with plenty of space to spare, the ripped assets can (and will) take up gigabytes of space
  • The line of “Arg:” code necessary for the software to run in-game:
  • -eac-untrusted -bundle-dir bundle -ini settings -silent-mode

    It meddles with the EAC anti-cheat system, allowing you to use the NinjaRipper in-game. Thanks to the Vermintide 2 modding community for helping out with this one!

  • Everything should work fine with the “Intruder Inject” setting


For Vermintide: The End Times:

  • you must use the 32bit version (x86) due to the nature of the game’s older engine
  • “Exe.” file:
  • SteamsteamappscommonWarhammer End Times Vermintidebinariesvermintide.exe
  • The same tip for “Output Directory” applies here, though keep it separate from V2’s folder for obvious reasons
  • “Arg:” code:
  • -bundle-dir ../bundle

    It tells the tool where the game’s data is located (inside the “bundle” folder), without it the game will be stuck at a loading screen/crash

  • Once again “Intruder Inject” setting seems to work fine with this version of Vermintide

steam_appid.txt

Inside the binaries folder, create a steam_appid.txt file that contains the game’s ID number:

552500

Without this file the following error will occur:

“Fatal Error!

The game will close!

Vermintide 2. You need to have the Steam Client running to play the game.”

Vermintide: The End Times

All I could find for the first game was the Enemy Spawner [www.nexusmods.com] mod. Besides that our options are pretty limited.

Inside the binaries folder, create a steam_appid.txt file that contains the game’s ID number:

235540

Otherwise the same error as the one above will appear.

Setting up the game in and of itself

Vermintide 2

The easiest way to asset rip in Vermintide 2 is with a combination of a couple debug mods made by the community:

PHOTOMODE by SkacikPL
  • this mod allows us to pause the game and use freecam to force the game to load high quality textures.
SPAWN TWEAKS by prop joe
  • this mod allows us to roam maps without enemies (or spawn 10x as many if you’re bored)
CREATURE SPAWNER by Aussiemom
  • this mod spawns enemy units ranging from cannon fodder to specials to bosses

Since we’ll launch the game via NinjaRipper, make sure it is set to launch in Modded Realm. Simply open the Launcher and select the appropiate realm, then close it.

1. Launch the game via NR

With the settings set and NinjaRipper ready to go, use the “Run” command to launch the game. You don’t have to worry about having Steam turned off or being in offline mode.

You’ll know that NinjaRipper is active if:

  • the game launches without the launcher
  • you are not receiving any messages from EAC in the top right corner (doesn’t concern End Times)
  • you are experiencing a big performance drop in the Keep/Inn caused by NR

If the game refuses to launch despite every step done correctly, try turning off your antivirus and/or firewall.

In chapters below I address how to set up each character type for asset ripping, since each one has its own gimmicks that have to be met for the procedure to go as smoothly as possible. I came to these conclusions after hours upon hours of experimenting and doing things mostly by myself.

Übersreik Five

There are two working ways for asset ripping the Übersreik Five:

1. CHARACTER SELECT SCREEN

Specifically for characters you don’t own. Had some issues with this option, specifically helm/weapon textures were awfully small compared to the regular size ones.

2. PHOTOMODE


Guarantees highest resolution textures. Make sure to have Force highest model/texture quality enabled.

In the Keep, obviously with highest graphical settings, I choose my desired character and walk outside to an area with a mountain landscape.


At the edge of the cliff, I enter photomode.


The deal with NinjaRipper is that it rips everything that’s on the screen. If you were to rip Saltzpyre when the Keep is behind him, it will also rip all, ALL of the assets that are behind the wall and beyond.


Therefore it makes things much easier to just not have the Keep in view. Move the camera so that the mountain landscape is behind the character and done.

That and NinjaRipper makes the game really laggy, so it’s better to stay outside the Keep anyway

(OPTIONAL) LOHNER’S EMPORIUM OF WONDERS


Lets you rip any available cosmetic/ weapon models along with high resolution textures.

NPCs

I noticed a weird gimmick with NPC characters – NinjaRipper would only recognize their heads but not rip their bodies. To hopefully solve this issue you can go back to Vermintide: End Times and try there.

For example, I had to go to the Red Moon Tavern to rip Franz Lohner’s body. For whatever reason I couldn’t in V2. Can’t confirm if the same happens to Olesya. Olesya actually ripped fine, so Lohner is just the exception thus far.

Enemies

Asset ripping the enemy units depends on some gimmicks as well, however, afaik, they don’t demand switching games (unlike Lohner).

Using the Creature Spawner, place them in the same position that you would the heroes of Übersreik.


If NinjaRipper doesn’t work and the meshes aren’t ripped, then try your luck with the ragdoll of the enemy instead. Be careful not to dismember or drop the enemy off the edge.

2. Ripping the assets

Having prepared your desired character, you are presented by NinjaRipper with three ways of ripping the assets.


Obviously we would want to use F10 or F12 to rip the meshes. There is practically no difference between the two except for one thing:

F10 AND F9 crash the game. That is okay, it’s normal. Because you’re straining the game by demanding and extracting so much data in a span of a second, it will crash when you rip the files. Don’t worry, that always happens and assets are successfuly ripped either way.

However, F12 doesn’t for whatever reason, so I use that the most. In case that doesn’t work for some reason, just use the previous two options.

3. Exporting to Blender

Inside the chosen Output Directory folder, a _NinjaRipper folder one is created and all rips are stashed inside, sorted by hour and date. They should contain RIP files (meshes) and DDS textures.


Without messing around with the program’s filters, the meshes and textures are generally close to one another.

Vermintide characters in particular come in separate parts:

  • mouth (teeth with gums)
  • tongue
  • left eye
  • right eye
  • face
  • ears
  • body
  • sometimes the arms are separate from the main body mesh
  • accessories (scrolls, books)
  • hair
  • hair extras (flat planes surrounding the hair mesh, adds hair detail)
  • weapons
  • weapon parts (the trigger, the arrows, the string etc.)

You can recognize them by their size, the body is always around 1 000/4 000 something large, the rest is usually 300KB, 120KB, but in any case make sure to look through everything.


Export each invidivual file to .obj WITH UV FLIPPED (so the textures apply correctly).


The textures come in three parts:

  • diffuse map (the regular colored texture)
  • combined map (the all-in-one, inside its three color channels (Red, Green, Blue) are metallic maps, AO maps, Subsurface Scattering masks etc. depending on the texture)
  • normal map (applies detail to the object at no cost of performance) (also contains the roughness map or blood/fire masks in its Blue channel, causing the map to look yellow)

If the normal map looks like this:
It’s perfectly fine, export it anyway. More on that in the next chapter.

Having prepared the files it’s just a matter of porting them over to Blender.

In your project, use the Import Waverfront (.obj). Experiment with the Transform settings in the sidebar so that the meshes are in the upright position from the get-go.


Note that objects like hats, helmets, scrolls, books, accessories overall are spawned in the center of the viewport whereas beards, ears, faces, arms usually are properly located.

4. Applying materials

So it turns out my previous method of just slapping the “specular” texture on the BSDF and then messing with making separate materials for metal, cloth were just me wasting time. Since the last update of the guide I’ve learned how to utilize the potential of all three textures.

I’ll start off with the general rundown and then a more detailed description.

DEFAULT MATERIAL SETUP (NO YELLOW NORMAL MAP)
DEFAULT MATERIAL SETUP (YELLOW NORMAL MAP)

The Combined map + Normal Map

The Combined map has three channels and depending on the mesh, they have different maps hidden inside.

  • R – Metallic Map
  • G – Specular Map
  • B – Subsurface Scattering map/Blood Mask (if the normal map isn’t yellow)/Useless Version of the Roughness Map

The Roughness map is actually hidden in the Alpha Channel of the Normal Map


If the model doesn’t need one of these maps, the channel is blank, pitch black

How to fix/use the yellow normal map

It’s not actually broken, it just contains a mask texture inside the B channel. Nevertheless we do need a way to edit it so it’s still usable as a normal map


In order to do it, you could use Photoshop and meddle with the settings there, but there is a way to do the same operation inside Blender!


1. Combine RGB
2. Connect the Color channel to the G channel
3. Connect the Alpha Channnel to the R channel
4. Connect and Invert Node to the B channel

The normal map is now roughly the same color as it would be without the mask.

How do we use the mask though?

Blood mask node setup


It works the same way for a blood mask that’s inside the Combined Map. Feel free to change it to any color you want.

Extra tips
  • Rename the textures to keep things clean and tidy (Tex_0015_0.dds to kruber_head_d etc.)
  • Non-Color is the default setting for a Normal Map and the Combined Texture


And just like that, the model is done!

Ripping the environment – what can be done?

I noticed that at least one person was also interested in ripping the maps from the game. Might as well share my thoughts on that, too.

Video game maps in general are unfortunately far from easy to rip. They’re most likely built inside the engine using a shared pool of assets. It makes sense modelling-wise and game desing-wise, or at least from my perspective – the UV map is not a giant incomprehensible pile, the objects can be individually repositioned, all around a much easier way to go about things for the developers. It’s also why the Vermintide characters are ripped in smaller parts – say, Saltzpyre’s head is reused for all three careers, so no point in duplicating it three times.

Funnily enough,

, to make the game load faster on HDD hard drives, Vermintide 2 does duplicate stuff – instead of having one library of objects to pick from (which from what I understand would make loading times longer), each map has its own set of the same meshes and textures. It’s the reason as to why the game is so bloated file size-wise.

It’s probably possible to in fact port an entire map from the game, however, it would be extremely time consuming with our only tool being NinjaRipper – and even then it would be more like “recreating” than creating a 1:1 copy. Not to mention the fact NR isn’t always detecting everything (see: extracting Lohner’s face but not his body).


Thankfully, since the game has a fairly realistic artstyle it’s easy to piece together an environment that fits the look of the characters. All we need from the game then is its textures and some smaller assets.

I’ve personally gathered a small collection of doors, wooden piles, debris, chests, small furniture, drinks, food, cloth and a lot of wall/wood/ground textures. Mix them together with geometry made by hand in Blender, some more assets from the web and that does the job as well. Good time as any to start practising your modelling skills!

Ripping sound files – Ravioli Scanner

The process of ripping sound files is a lot messier than meshes. At this point we’re just datamining the game files and scrouging up any Wwise Encoded Media we can find, then convert it to a playable format.

1. RAVIOLI SCANNER

To access the game’s files we’ll use the Ravioli Scanner from Ravioli Game Tools[github.com]. It allows us to scan the game’s bundle files, find the audio files inside them and then extract them in .wem format.


Game’s files are all stored inside Warhammer Vermintide2/bundle folder. They’re partially categorized by the patch number and some of them being “STREAM”. This is where we’ll begin our mining.

Some of the files have voice lines for just one character, others have a couple sound effects, some have ambient tracks, music, stingers, etc.. The really big ones, 500+mb have everything at once.

Here’s what I gathered:

  • Be ready to spend a lot of time finding only broken .tga files or anything else that’s unusable to us
  • Generally STREAM files seem to have a higher chance of having audio, but I might be wrong
  • Larger files usually have a higher chance of containing sound files, anything bigger than 40 megabytes is worth looking through
  • The amount of Wwise encoded media can range from a couple dozen to thousands of files
  • The audio files can and will repeat themselves, for example I found the Back To Ubersreik Olesya voice lines more than once

Once you find a file with Wwise, you’ll know it because the bar on the right will instantly start going yellow.

The hard part is that none of the files have their original names, no indication which character, anything, so you will have to listen to them one by one and sort them by hand, preferably don’t bother renaming them at first and just put them in folders like “Kerillian”, “Bardin”.
Don’t worry about the fact that some of the files are named “broken”, they’re not… Most of the time. Sometimes, rarely, the Ravioli Scanner finds voice lines that are straight up spoken by a text to speech synthesizer. I have no idea how or why this happens, I can only assume they’re placeholders/leftovers.

A couple time-saving tips:

  • If it doesn’t find any sound files the moment you start scanning, stop the scan and keep looking. It either does find something or it doesn’t at all
  • If the scanner found the files but is still going, it’s safe to stop the scan and extract what it has already found
  • Open a couple scanners at once and go on a scanning spree to save time. At one point I had, like, five open at once.

2. .WEM TO .OGG CONVERTER

I provided you with a link to a wem2ogg converter[drive.google.com] I found God knows where at this point. It’s a matter of putting it in the same folder as the .wem files and just letting it run.

Once you have your .wem files in a separate folder, copy and paste the content of the .rar file inside there. That means the “revorb” folder, the “ww2ogg” folder and the “convert.bat” file. Then just run the convert.bat file and watch it do all the work.


Once it’s done, all of the files will have a copy of them in .ogg format. Feel free to delete the .wem ones. I recommend searching the folder for “.wem”, then selecting all found files and deleting them.

By the time you get a hang of this, your screen will more or less look like this:

All Audio Files pulled from gamefiles and sorted (~10.000 files – ~500mb) from Vermintide

Conclusion + link to the rigging guide

That would be it for the asset ripping part of the whole ordeal that is bringing the Vermintide cast to life.


If you’re interested in rigging the characters and creating animations with them, I can save you some time and nerves by directing you to my Rigging with Rigify guide, based mostly on my experience with rigging the Übersreik Lads.

I hope you find this guide helpful. Have fun!

SteamSolo.com