Getting Started With If Mom Had Three Arms
If Mom Had Three Arms is a procedural animation toolkit that lets you generate branching limb structures for 3D characters without hand-modeling every joint. It works by taking a base skeleton and applying growth rules that simulate how additional limbs attach at specific bone angles. The output is a valid FBX or glTF file ready for rigging. Most people figure out the basics in under an hour. The problems start once you try to use it for anything beyond simple test scenes. The tool runs as a standalone application but also has a plugin version for Blender and Maya. I use the Blender plugin because it stays synchronized with your scene. Download the zip from the official repo, extract it, and install through the addons menu like any other Blender extension. You will need Python 3.10 or higher installed separately because the physics simulation backend doesn't bundle its own interpreter. That detail isn't obvious from the README and it took me three failed installs before I figured it out. Once installed, open the sidebar and click New Generation. The default parameters give you a humanoid base with two extra arms branching from the shoulder blades. The preview renders in about 8 seconds on a midrange GPU. Export to FBX and you have a mesh with a clean armature underneath. No retopology needed for basic use.
Here is where it gets interesting. The default growth algorithm uses what the documentation calls angular attraction biasing, which means extra limbs naturally curve toward the axis of the parent bone rather than growing straight out. This produces more organic results but also means your new arms will overlap your character's torso if you don't adjust the separation parameter. Set it above 2.5 and you avoid clipping. Below that and you are manually fixing intersecting geometry after export, which defeats the whole point of using this tool.
Advanced Setup and Real Problems
I ran into a specific issue when trying to generate If Mom Had Three Arms configurations for a quadruped base instead of a biped. The tool assumes a spine-based hierarchy by default, so feeding it a four-legged skeleton caused the extra limbs to spawn inside the ribcage geometry. The generated bones had zero length in certain joints, which broke the IK solvers in both Blender and Unity. I spent two days debugging this before realizing the fix was simple: enable the skeletal offset checkbox in the generation settings and set the Z-axis offset to 1.8 units. That moves the attachment points outside the body volume without requiring manual bone repositioning. Another thing nobody mentions is that the collision detection between new limbs and the base mesh is turned off by default. Your character will walk through their own arms in the viewport until you enable self-collision in the physics tab. This adds about 40% more render time but prevents grotesque clipping during animation playback. I always leave it on, even for static renders, because the preview is only a fraction of the total production time. The tool also handles texture UV unwrapping automatically, but the results are mediocre at best. I recommend running the exported mesh through a proper UV layout tool before texturing. The UV islands from the generation are typically scattered across the texture space with significant overlap. Expect to spend another 20 to 30 minutes on cleanup per limb pair.
Get the Full Details

When It Doesn't Work
There are scenarios where this tool simply will not produce usable results. If you need symmetric limb placement with exact angular precision, the procedural approach introduces variance that makes consistent results impossible across multiple generations. I tried generating five identical characters for a crowd scene and each one had slightly different arm orientations. The variance was small enough to miss at a glance but obvious when you compare them side by side. For that use case, manual rigging with a preset template is faster and more reliable. The tool also struggles with high-poly base meshes. If your character model exceeds roughly 500,000 triangles, the generation process becomes unstable and the collision calculations fail. The workaround is to decimate the mesh before importing it into the tool, then re-subdivide after generation. This adds steps to your workflow but keeps the process from crashing midway through. Performance-wise, generation time scales non-linearly with limb count. Two extra arms take about 8 seconds. Four extra arms take around 45 seconds. Six extra arms pushed my system to over three minutes and produced geometry errors in the tertiary branch joints. If you need more than four additional limbs, split the generation into separate passes and merge the outputs in your 3D software.
Final Notes
The official documentation covers the basic parameters but skips over several edge cases like the skeletal offset issue I mentioned. The community forums have some useful threads but they are scattered across different versions of the tool, so check the version number before following any tutorial. I keep a local notes file with all the parameter values I have tested for common configurations. It saves me from reinventing the wheel every time I start a new project.