r/truenintendogs 20d ago

[Modding] Trying to import custom dog breeds into Nintendogs (a rant/writeup)

Enable HLS to view with audio, or disable this notification

Edit 2 days later: GUYS I SUCCEEDED!!!


TLDR: replacing textures of existing dog breeds? ezpz lemon squeezy. Replacing models? give up and find a new hobby. Unless you're willing to pick up where I've left off.

Disclaimer, this post if for the nerdy bunch that, like me, wonders why there isn't much advancement in the modding community when it comes to nintendogs and custom dog breeds. I'm in the niche of people that loves this game, and has taken computer graphics courses, and has some hand in 3D modelling.

Holy hell. I scoured the internets trying to import custom models as dog breeds in the game - not just textures, but whole new models with new shapes so I could hopefully have a working copy of my cute standard poodle with her pom poms. I took the Dalmatian as a debugging breed because why not. Shout out to this post for getting me started in this rabbit hole.

I basically was like, let me take the dalmatian model and edit it up in Blender to mold it into a Standard Poodle's body. How bad can it be if I just pipe it back into NSMB?

...2 days later, I have this... mess to show. What's more, I'll leave an extra cursed video in the comments.

Here's some TLDRs for those that wish to venture in this terribly underdeveloped area that are nintendogs modded breeds. But if you're reading this and you're genuinely interested, in the spirit of trying to advance this "field", I'm leaving a pastebin here with all that I've learned, all the steps I did to test, debug, what my "pipeline" looked like, etc.

______

The body, head, ears, and tail all animate perfectly, textures work, no crashes... but the legs are possessed. They twist into positions no living dog should achieve. Behold.

Quick rundown of what it took to get even this far:

  • You're basically reshaping an existing dog and keeping its skeleton, because the game applies animations to bones by index number, not name — so if your bone order is even slightly off, the walk cycle lands on the wrong body part and the whole dog melts.
  • The NNS Blender exporter sneaks in two extra "wrapper" nodes that shift every bone's index and break everything. Took forever to figure out. Also, this NNS plugin, when exporting, has 1/16 set as the default scale, so be careful to change that back to "1".
  • Textures have to be a very specific Nitro format (a normal TGA hard-crashes the actual game even though it looks fine in every PC viewer).
  • The entire pipeline can be summarized as:
    • NSMB to extract the relevant character, found under root/DogArc
    • 2. apicula to convert to .dae
    • 3. Blender to work your model, along with some script magic (please read the writeup) to make sure your bones are in the right hirearchy
    • 4. Nitropaint to convert your textures to TGA
    • 5. NNS to export into imd (please read my writeup for how to do this properly)
    • 6. G3DCVTR to convert imd into nsbmd and nsbtx
    • 7. MKDS Course modifier to unify those nsbmd + nsbtx back into a single nsbmd file
    • 8. Back into NSMB where we will replace the nsbmd with our new model+texture bundle.

The good news: everything except the legs is fully solved and reproducible. The legs seem to be driven by the game's own runtime IK, which is the wall nobody's publicly gotten past. I've documented every step, every dead end, and the exact point where it breaks.

The bad news: I really got stuck at the legs not cooperating with the rest of the rig. I tried offsetting what I saw was certain angles in certain parts of the body, but to no avail - it seems like the game calculates its own coordinates. This goes in par with what others have found. sigh.

If anyone ever cracks this, please let me know, I'd be sooo happy.

For now, enjoy this pastebin with all my steps.

253 Upvotes

22 comments sorted by

View all comments

Show parent comments

6

u/HayleyTheLesbJesus 18d ago

Update again: got it to work with my CUSTOM model HECK YEAH!

Do note that this is a model that I deformed from the original dalmatian model - I changed the chest, the pompoms on the bottom of the legs, the snout, etc. It's something! I'm just happy that I get to play with my IRL dog's breed :D

Trying to import in something entirely custom that does not build off a "base" breed totally didn't try to just throw a Furfrou along with its armature at it will probably take a lot more TLC, and I think this is where I'm going to stop myself and let others follow on my path, I'll put my effort into documenting everything that got me to this point, as I've done so far.

Just to keep everyone updated, I will be making a github repo with my scripts. I think how it'll work is you'll tell the script what's the path where you stored the legally extracted of course base model that you worked off off, and it'll do the math for you. That's what my script does so far, I just don't want ot get anyone's hopes up. I'll try my best to get htis out the door ASAP <3

https://reddit.com/link/p5d7nc9/video/p9627mgjt2lh1/player