This tutorial assumes you extracted assets this way with the space-wasting method, where you have a full game dump at hand. Notes on how to see specific chunk names for a mesh are at 12., for those who do not want a full game dump.
_________________________________________
1. Inside your dump folder, create a new folder and call it whatever you want, i named mine 'working'.

Now go into the 'bundles' folder (this is your extracted game). Inside you will find a folder called 'chunks', cut it out (right click, cut). Do not use copy, use cut!

Now navigate into your 'working' folder and paste it.

2. Now search for a character you want to extract. For this example we will extract Darth Maul's head. Navigate to
...\bundles\characters\heads\heads_darthmaul\heads_darthmaul_0\
You see a texture subfolder, 4 ebx files and one .MeshSet. Inside the texture folder there's various .Texture files. Copy those and the .MeshSet to your 'working' folder.
Many characters use shared textures for parts like eyes and teeth. So if there is none inside the head folder go to ...\bundles\characters\heads\_shared\ and check inside the eye and teeth folder for Darth Maul. He has unique color/diffuse/albedo/whateveryouwannacallthem maps for both so copy those along with the general additional maps over to your 'working' folder aswell.
3. All we need now is the skeleton. For most human and alien characters this is called walrus_humanmale.ebx, you can find it in ...\bundles\characters\rigs\humanoids\. This is also the skeleton name the tool defaults too if you do not enter a name for the skeleton you want to use. Our model uses this skeleton so all we need to do is copy this into 'working' aswell.
There always has to be a skeleton for the tool to work. Static models are possible, but you need to add a skeleton to them too (doesn't matter which).
4. Now copy and paste Fb_SWBF2_mesh.exe into 'working' aswell. Your final folder should look like this:

5. Okay the main work is done. Just drag heads_darthmaul_01_mesh.MeshSet and drop it onto Fb_SWBF2_mesh.exe. Important here is that your chunks folder is really called 'chunks' and nothing else. This way the tool will automatically search for the chunk needed for this mesh!
This will give you two new files:
heads_darthmaul_01_mesh.smd = rigged model in Source smd format, has 'bone rotations' proper. Idk for what that's useful but there you go. Limited to one UV channel.
heads_darthmaul_01_mesh.ascii = rigged model in XPS .ascii format, apparently doesn't have the bone rotations, but comes with multiple UV channels (important for weapons, vehicles, etc).
Both models share vertex group names and scaling, so the skeletons are interchangeable.
For information how to use a different skeleton check 13.
6. Before going on with the model let's quickly extract these textures! Because i was stupid at the beginning of the tutorial and i can't be bothered to redo all of it: Create a new folder inside the 'working' one and call it 'textures'. Move all .Texture files inside it:

7. Now run Batch_Itexture_Converter_SWBF2.exe.
Click 'Select Itexture Folder' and chose the 'textures' folder you just created.
Then press 'Select Chunk Folder' and select the 'chunks' folder.

After it finished counting the chunks, press 'Get DDS files':

8. After a few seconds you should have .dds files inside your texture folder, one equivalent for each .Texture:

9. These .dds files will not work in most common image editors! The two most reliable programs to view them are Noesis and Photoshop (with the Intel dds plugins, nvidia dds plugins will not work). Here we will use Noesis.

10. We want all the textures to be in a format we can use in our common 3d applications. Noesis has a convenient batch mode function, you can access it under Tools>Batch Process. A new window will pop-up:

Set Output extension to a format you like. I personally am comfortable with tga textures, but you can also use for example png.
Set the Output path to $inpath$\$inname$.$outext$ (I don't recommend the default one, as it creates a new folder for every file and adds 'out' at the end of every filename, so use what i said.)
Click Folder Batch and just ok in the follow up window. It will create a list in the Commands window. Now just press Export and you will get all textures converted to a normally viewable format!
11. Okay now let's load this head in Blender! I will use the .smd model here (if you extract weapons/vehicles/etc, use .ascii to have more than one UV). Go to File>Import>Source Engine smd and select your model.
Once loaded you can barely see anything because the bones cover his face. Select the skeleton and untick the 'Shapes' box here.

Also, damn that looks ugly. His eyes are popping out weirdly and his mouth is deformed.
To fix this (only applies to head models), proceed here!
12. Notes for people who do not want an entire game dump!
Both the mesh and also the texture tool let you know chunk names when they can't find it. You can then copy these names, paste them into UFBE and extract these chunks seperately.
A. Mesh Tool:
Open a cmd prompt inside the 'working' folder and enter Fb_SWBF2_mesh.exe heads_darthmaul_01_mesh.MeshSet and press Enter. You will get a message that includes the name of the missing chunk. On Windows 10 (not sure about earlier versions) you can copy this name from the command window and paste it into UFBE (without the '.chunk' extension). Make sure these chunk files are in the same directory as the .MeshSet, or a sub directory called 'chunks', when you run the mesh tool again.

B. Texture Tool
Set it up as you would normally but instead of the chunks folder select the texture one again. Tick the small 'Display Info' box and click away the warning. Then press 'Get DDS files' and see your list fill with chunk names you can paste into UFBE for extraction.

13. How to use a different skeleton.
For once there's the very lazy way to just rename for example the weapon skeleton weaponske01.ebx to walrus_humanmale.ebx. The mesh tool will extract just fine that way. However since this may cause confusion in the long term you can specify a skeleton when you run the tool through commad line. It is the second parameter, right after the .MeshSet.
Example: Fb_SWBF2_mesh.exe some_weapon_mesh.MeshSet weaponske01.ebx

This will override the default and use weaponske01.ebx instead.
