Back in 2012, I was kinda into Guild Wars 2. Because of reasons, around 2012 I also had to pick a new username due to my old one being often already taken. I ended up going with the name of my GW2 character, and I ended up using that username everywhere to the point said character kinda became a bit of a mascot.
Fast forward to 2022, I get into mini painting. Fast forward to 2023, and I get an excuse to finally print out my charr. Except not really because Tamius is a ranger, not an engineer — and that’s a mistake that’s been rectified when a friend of mine dragged me back into GW2 recently. Yes, I really want my charrzooka that much.
If you’re here just for TL;DR:
Disclaimer: When I did this, I didn’t get a ban. This means it’s likely safe to do it, but it doesn’t mean it’s 100% safe to do it and that it will remain safe to do it.
- Don’t spend €6 on NinjaRipper 2. It doesn’t work with GW2.
- install Intel GPA
- capture frame with intel GPA
- find your character meshes in the GPA capture
- Assemble them in blender
- Rotate and scale to unsquish your character
How-to with pictures starts in Getting the 3D model: revisited.
Getting the model
I first checked out if someone has already made a 3D model and put it on the internet, but nope. There were some charr models, but not with the correct combination of armor and weapons (as expected). So I decided to look for ways to extract the character model from the game.
Fortunately for me, there were tutorials that tell you how to get your character model out of the game. The tutorials boiled down to:
- Download 3D Ripper DX
- Launch game with 3D Ripper DX
- Find a nice place in game and press the capture key
- Import capture into your 3D modelling software of choce
- Isolate your model and ensure it’s fit for printing
- haha printer go brrrr
The nice part of 3D Ripper DX is that it captured character poses. The not so nice part is that 3D Ripper DX is DirectX 9 and 32-bit only, while GW2 is 64-bit and DX11. 3D Ripper DX has some alternatives:
- get necessary files from gw2browser
- use the last free version of NinjaRipper
- fork out 6ish € for a month of NinjaRipper 2 beta
Each of these three options has problems:
- free NinjaRipper will only give you meshes in default poses. You will have to join them together manually, you will have to rig them manually, and you will have to pose them manually
- gw2browser is exacltly like NinjaRipper except even worse: you will have to find the models in the gw2 dat file by scrolling through the endless list of files one-by-one
- you will have to pay €6 for NinjaRipper 2 and hope it works
- with NinjaRipper/NinjaRipper2 you risk getting banned. At the time of me writing this, ANET did not appear to ban you for using this. However, this doesn’t guarantee this will remain the case in the future.
Let me save you €6 real quick: NinjaRipper2 does NOT work with GW2. The game comes with three modes: patch, wrapper, global inject. With patch mode, GW2 won’t launch because GW2 executable doesn’t like having shit injected into it. With wrapper mode, you get this:
With global injection, NinjaRipper will first complain that
dxcapturereplay.dll already exists in
C:/Windows/System32. You then decide to rename it (and you do rename it — specifically, you append .old to the filename — because you should never EVER delete anything from
System32 unless you put it there yourself), except you can’t because Windows won’t let you. You take ownership of the file and give yourself full access. Try again. File gets renamed, but NinjaRipper now complains about
WOW64 folder. You repeat the process until NinjaRipper is happy.
You try launching GW2 again.
The results are going to be exactly the same, except you’ll have this window pop up about 20 times before you get the same result as above:
Now that you don’t have to waste €6: you’re welcome.
This will give you meshes from which you can construct your character. However, these meshes are in the default pose (and you have to assemble them yourself).
NinjaRipper seems to caputre all the models from the level, so my approach to this was to mass import all the meshes (NinjaRipper plugin allowed to import the entire folder), hide all the meshes in Blender and then check each and every mesh until I found my character. At least the partial meshes of my characters were next to each-other. However, this approach didn’t always work — sometimes, the plugin would import much fewer meshes than there were in the folder, and the search would continue.
However, eventually I did find my character’s meshes. There is a small problem — the character is really big and the meshes are rotated 90° (about 195° if you’re using American ones) — but nothing that can’t be fixed in a relatively short amount of time.
You then start to rig your model. This isn’t too hard, if you find a tutorial on youtube you can be done in 30-60 minutes — just don’t bother with inverse kinematics. For a one-off, you’re going to benefit from that much, especially when you discover that the mesh is all kinds of fucked up and that your rig doesn’t deform your mesh correctly. Because the weights didn’t get applied correctly or something.
In theory, you could fix that by manually painting vertex weights. In practice, the state of the combined mesh is such that it makes it more or less impossible if you overdid your rig. Now, rigging and deforming each partial mesh separately might produce better results in theory, but that sounds like a lot of work that I’m not willing to do.
Are there any other alternatives?
Getting the 3D model: revisited
Turns out that yes. We also have RenderDoc and Intel GPA. RenderDoc doesn’t work with GW2 — it appears to be injecting things that GW2 doesn’t like and doesn’t even launch the client. Intel GPA, on the other hand, works!
Installing Intel GPA
I’m not going to hand-hold you through the install process, but it had some things that annoyed me. The installation is mildly annoying because it requires you to close almost EVERYTHING — including Firefox and Nvidia GeForce overlay. But the annoyances don’t end there, because installation complained it cannot create a folder in my documents due to insufficient permissions. So I had to create that folder manually, manually assign administrators to have full access to the folder, and tell the installation to continue.
If you ever wondered whether the software you’re using is enterprise-grade or not … that’s how you can tell.
Capturing the mesh with Intel GPA
When you launch Intel GPA, you get a window that looks something like this:
Select the path to the GW2 executable in the input fields below (the three dots button gives you a GUI browser) and then click launch. Once launched, find yourself a quiet corner on the edge of a map, do whatever pose you wish, and then trigger the capture (by default:
CTRL + SHIFT + C).
Few pro tips. Since Intel GPA intercepts only whatever is being drawn on the screen, you can make your life easier by putting some thought in your capture.
- Pick a corner with as little NPCs, enemies, or objects as possible.
- Ensure your camera is directed towards as few NPCs, enemies, or objects as possible
- Use the lowest FoV possible if in a busy scene. There is a tradeoff with FoV — the lower the FoV, the more distorted the model.
Both things can make a significant difference in terms of draw calls you will have to scroll through.
After you’re done, you can close the game.
Finding your mesh in the capture
After the capture, you can see that some new things appear in your GPA window:
Double-click any of them (but preferably the one you need, the captures are ordered from newest at the top to the oldest at the bottom), then wait. Graphics Frame Analyzer doesn’t open instantly — it can take up to half a minute even on a decent hardware, possibly longer on a toaster.
You get a window like this:
Click on any of the DrawIndexed lines, and you will get the output at a given draw call. A second sidebar will open. Click the ‘Geometry’ tab in the input and you will get to see a model that’s being rendered with a given call. You can use this to find all the meshes that together create your character.
The neat part is that Graphics Frame Analyzer allows you to select multiple calls at the same time with
CTRL + CLICK and
SHIFT + CLICK. We can then click Geometry tab under Output and voila — we have our character assembled. We can now export it as
And then import it into Blender.
Unsquishing the model
Quick disclaimer: one would expect that a person writing blog post about “how to do X in [program]” would know their way around the software. But nope, I’m a pleb. A noob. 6 hours experience with 3D modelling side of blender total. My strats may be suboptimal, but they will get shit done.
If we want to have our 3D printed model look normal, we’ll first have to unsquish it. This will require quite a bit of work — work that will be made a bit easier if the cursor is at the feet of the model. If you know how to use Blender, you can pretty much close this article now. If you don’t …
This can be done very quickly:
- Select the model (left click)
Tabto enter edit mode. That should also select all vertices — if it doesn’t, press A to select all vertices.
Shift+S, select ‘Cursor to selected’.
Now we can start unsquishing the model. Press Tab to enter edit mode and ensure that all the vertices are selected (they should be by default, but if they aren’t: press
A). Then, select the shear tool.
Selecting shear tool gave us a square with few colored rectangles inside it. You can click on these rectangles and drag them around to squish the model in different ways. Shear tool likely won’t be enough to completely unsquish your character, you will probably also want to scale and rotate your model. Here are some keyboard shortcuts that you need to know:
G— moves the character around
R— rotates the character around the center of the shear tool box
S— scales the model
Z— allow model to be moved or scaled only along the X, Y, Z axis
Numpad 7— front, side, top view of the character
Middle click— freely rotate the camera around the cursor (and do it often — if the model looks fine from one angle, that doesn’t mean it looks fine from all others)
Shift + Middle click— move the camera in space
After you managed to unsquish your model, it’s time for the next step: making sure it’s 3D printable.
After recon didn’t net me a ban on my alt, I decided to do the process with my proper account and did the above procedure on my main. The result?
Mending the mesh
If you want your game to both look good and run at a decent framerate, you have to “cheat” a lot. Unfortunately, such optimizations usually mean that 3D models extracted from games usually contain features that aren’t very suitable for 3D printing.
Since the model is big, we’ll start by detaching the charzooka.
We’ll go into the edit mode (press
Tab). Once in edit mode, click a vertex (marked as a black dot) and press L to select all linked vertices.
Well that didn’t go the way we planned. There’s two ways to fix this:
Tab to switch back to object mode. Select your model. In modifier options (blue wrench), click
Add modifier dropdown and select
Weld (in the Generate column). Set
mode to All, and set
distance to 0.0001 m (0.1 mm). Finally, apply the modifier.
Export your model as STL and then import it back again
Which requires like 5% of the effort and produces results as good if not better than that.
Tab back into edit mode, then switch to wireframe mode (
Shift + Z). Select the charzooka barrel like so:
Ctrl + L and the entire charzooka should light up orange. Then
right click and select Separate -> Selection. Charzooka is now a separate object.
But we’re not quite done with the charzooka yet. If zoom in and pay attention to the model, you’ll notice that charzooka is not a solid object. It’s made out of two zero-width sheets, and there’s a small gap between them:
In order to make this 3D printer friendly, you need to fill all the cracks like this. From now on, your workflow will look like this:
- select a pair of points
Shift + selecta neigbouring pair of points
Fto create a new face, and also to pay respects to yourself because that’s your life for the rest of the week
Or you could try printing the model as-is and hope that 3D printer manages to handle it. That was always allowed.
There are also a bunch of problems that will try to fix the model for you. For most, the easiest and most obvious is Microsoft’s 3D Builder (which may already be installed on your machine), and in my experience it generally works most of the time.
There’s also Meshmixer, which didn’t work for me (as its idea of “fixing” the problems boils down to removing things that are a problem).
After warming up our mesh mending skills, it’s time to try them on the character. At this point, your main workflow is going to look like this:
- select a vertex
Lto select all the vertices connected to it
- Observe and evaluate the situation.
Here’s few examples of situations that you will encounter.
1. There are black points on an orange mesh
In this situation, separate the mesh from the object (
right click -> Separate -> selection). If you hide the pants, you will notice a few “floating” objects.
These are about as illegal for your 3D printer as kinder eggs in the USA. To fix, select a point on a strap (or boot, or foot/claw), press
F. Done. Do note that for some complex item, this procedure may deform the mesh in an undesired ways — if that happens, you will have to undo and select points between which you wish to generate faces individually and manually.
After the extra bits have no holes on them, select all the meshes and
right click -> Separate -> selection. Alternatively, instead of right clicking, you can also just press
P and select Selection from the menu that pops up.
Then switch to Object mode (
Tab) and unhide the pants. Select the pants object, and select the Modifier options option panel thingy.
Add modifier and select Boolean. Select Union, and in object select the object with the object that contains boots, feet, and leg straps.
But wait. Now the model doesn’t look right.
Fortunately, that’s an easy fix. Expand the Solver options option and check the Self intersection box.
You can now hide leg extras and voila — the model is now fixed from the waist down.
2. Orange mesh is parallel to a black mesh + dome objects
This is the charzooka example again — but there’s more! The coat forms a dome. This is a problem, because we really need to thicken the coat.
In this case, you start by selecting the inner dome (select a vertex, press
L) and separating it from the main object (
P -> Selection). Then select the mesh and select
At this point, you probably wonder how thick should the coat be, so I took a caliper to my minis. Non-scientific measurements say:
- 1 mm thick: could be fine, but probably risky. Resin is more fragile than the ego of CCP these days ????????????
- 1.5mm thick: you’re probably fine (I have a dragonborn with a cloak this thick)
- 2-2.5mm: safe zone
While we’re at it, we can probably subdivide the cloak a bit in order to increase smoothness by adding a subdivision modifier:
After we’re done, we can join the two meshes the same way we did back with charrzooka.
3. Objects clip and this bothers you
With select tool, select the vertices of the object that’s getting clipped.
Shift + select adds to current selection,
ctrl + select subtracts from current selection,
alt + click on an edge selects the entire edge. You can then use transform, move, rotate, and shear tools to move the problematic geometry out of the way.
4. I tried using subdivision modifier to smoothen out the geometry. Some parts are too smooth now.
Switch to edit mode. Take out the knife tool and create a new edge near the edge that you feel is too curved after you add the modifier, but before applying it.
Once you cut a new path with the knife, press
Enter to apply it. Repeat as necessary, if you mess up
Ctrl + Z is your friend. The result: the edges become less curved:
5. Doing the Charzooka mount
Is relatively easy. We start by adding a new cube to the model. We ensure it’s about stock-sized, align and scale it correctly:
Once the cube is added, we duplicate it (
Shift + D). We enlarge the duplicate and ensure it’s about 0.5mm thicker than the original cube in all dimensions.
Finally, we use boolean modifier union to add the original cube to the charr. On the charzooka model, we use boolean modifier difference to subtract the slightly enlarged cube from the charzooka. This will allow us to attach the charzooka to our charr without problems once the models are printed.
What says Meshmixer now?
After spending all this time trying to fix the model, Meshmixer still has opinions:
Did I mention using the “auto-fix” option in Meshmixer removes half your model? Perhaps it’s time to put the “you can’t print straight-out-of-game models to the test.
Final preparations for 3D printing
It is at this point where I started to consider the possibility that when people say “in-game 3D models aren’t good for printing” and “3D printers can have trouble 3D printing ripped models”, that doesn’t mean that you will never manage to get a 3D print of such model.
Wish there was a way to see if a model will print.
There is. In order to print a 3D model, said model must go through a slicer (piece of software). There are several slicers, a good amount of those are free, and you don’t actually have to have a 3D printer to use a slicer. PrusaSlicer seems like a reasonable option that does both FDM and resin printers.
For shits and giggles, I try importing the model as ripped from the game — just to see what I’d get:
Turns out that slicer would have done somewhat reasonable job out of the box, though some stickers are still sticking (we have unhealthy amount of thin walls, backpack is floating, et cetera).
Our edited and finished model feels much better, with supports being placed in a way that doesn’t result in supports going through the model. We can see that I’ve designed the mini in 4 parts that are supposed to be printed individually. More importantly, we can see that there are problems on the m6-sized pin connecting legs with the upper body, with panels blinking in and out of the existence.
I forgot to check that part before sending the model off for printing. I hope the guy who’s doing me this favour will be able to read my mind and get it fixed properly, but if he doesn’t that’s on me. Since 3D Builder fixes that properly out of the gate, the chances of me getting what I want aren’t abyssmal.
Sculpting DLC: Adding more details
At this point, we could probably send the 3D model away and call it a day. However … notice all the details on the arm pieces, shoulder pieces, and the charrzooka? Notice all the fur?
Turns out that a lot of detail is “faked” with textures and normal maps. Something that we didn’t bother with. This means we have to add that stuff by ourselves. Now, this could be done in Blender, but it seems like VR is a godsend for 3D sculpting01Also, it allows me to justify my poor money spending habits to myself. Ladies and gentlemen, it’s time to launch Shapelab.
Now, there are things that bother me a wee bit in Shapelab — namely, I haven’t figured a way to have a nifty ruler handy enough — so we go for the next best thing. Member the dwarf from the previous blog post? I still have that STL laying around, and I have a vague feel what level of detail certain features of the dwarf have in real life. So let’s import the dwarf model next to our charr, just for scale.
Sculpting took a long time, but eventually I had a result that I was somewhat satisfied with (except fur kinda sucks, still). It wasn’t a 1:1 translation of the features, however — I took some liberties. Most notably, the pattern on the shoulders is much less intricate and outright different. Simplifications like these were often made because original detail would be so small, as I didn’t want details to be significantly smaller than 1mm:
At the end of the day, I had a version that looked passable enough:
Since this model is vulnerable to toppling, I also have a “radio edit” with a shorter, more post-apo-looking weapon:
I think this should cover most of the things.
Printed and Painted
With all the hard work of exporting the model into something that 3D printers can work with done, it’s time to see what we got and what we did with it.
Turns out that my mesh was absolute garbage, which means it took a lot of time and sweat in order to get it to 3D print. My friend did manage to print it just in time for me to be able to enter a local club’s mini painting contest. The downside was that I only had 2 hours to paint it, so results were about what you’d expect:
Good enough to smurf, but not good enough to deserve a spot on my shelf. So I spent the next seven thursdays (about 5 hours of painting each) trying to give it the paint job it deserves. Just in time for NMN (Na Meji Nevidnega; local con). Where it didn’t manage to quite get the top 3, but one of the organizers said it was his favourite — and that’s enough of a win in my book.
And here’s some alternative angles: