Model Importing

Blender: Start a new File. Remove camera, lights, and cube from your scene. (A, then Del). Import your target model. Look at the "Scene Collection" menu on the top right. Move your model so that it's directly under "Scene Collection". Delete "Collection".

Now Take note of the hierarchy. Take a screenshot if it helps. This needs to look the exact same when your model import is complete. Ensure that the target model has numbered submeshes. (e.g. 19:0). If it doesn't, rename each mesh to this format:

meshNumber:0

So if the mesh you're looking at says mesh_1_Pikachu_LAnger_mh, you should rename it to "1:0". There are exceptions to this rule, and characters like marth will have meshes with two numbers.

Ensure that the target model's submeshes are assigned the correct materials. They should not be magenta, and it would be best if they used the same few materials, rather than the numerous copies that blender likes to make. It may be necessary to update the target model's UV's to stay inside the bounds of the image. Most games simply repeat or reverse textures past this distance, so this likely isn't a requirement to avoid crashes. The smdout tool may complain about this, however.

Cleanup and Preparation: Clean and prepare new model for replacement. Do not attempt to interact with the target model or armature yet. Simply clean any stray vertices and take this opportunity to do any model editing. Delete this model's armature.

(Bonus blender tips: Use "Merge By Distance", "Toggle X-ray", Ctrl+I, the L-Key, and the C-Key to save a lot of time removing excess geometry)

Clear all vertex groups from source model Select source model, Shift-select armature, and CTRL+P to set target armature as parent. Select "With Empty Groups" (It may be possible to use the "Automatic Weights" option, but this is how Miguel did it). Test your model's rig for quality. Update target texture to a suitable texture for the new model. This texture has to be the same dimensions as the original texture you intend to overwrite. Feel free to move around the UV maps, too. In the Mesh properties, (the same menu where you can find vertex groups), find the UV Maps menu. Make sure your new mesh(es) have a UV Map named "DiffuseUV". Join your new mesh to any of the target meshes (CTRL+J). Again, every mesh should be numbered, i.e. "19.0", and there should be no new meshes added to the armature. Finally, select the armature and press R, X, then type "-90" to lay your character on its back.

Review your model import by looking at the Scene Collection again. If it looks the same as when you started, it should be game-ready. For extra assurance, check each altered mesh for anything abnormal. The only UV map should be "DiffuseUV", and there shouldn't be any new vertex groups. Every vertex group will match a bone.

Exporting: Scene(righthand sidebar, the bottom white icon with a cone and other objects)->Source Engine Export Set export to SMD, and Target Up should be Z.

Have your smd_converter(57).py and smd2csv.py files ready. Make a new folder for them and toss them in. This is where you will export your model to. Copy and paste the directory path (into blender) into "Export Path" just underneath the Export button (You may only see "Export..").

Select the meshes that you wish to export. Hover over your viewport and hit F3 to search. Type "smd" and select the option that says "Export". Then, select the second option, Scene Export.

You will see a bunch of .smd files in this directory. Now you create an empty text file and rename it "dump.csv". Run smd_converter.py. Find your character's normal.bch from one of their costumes. Copy and paste this file into your model's output directory. You can use kukii.exe or ohana3ds's bch texture replacer to replace textures from this normal.bch file.

open dump.csv and CTRL+F to find Material. Replace Material #123 or whatever with the appropriate mesh name, which again, should be something like "26:1".

copy mbnMaker20XX_Bone.py into your model's directory. open the command line by typing "cmd" in the directory bar, and use the command "mbnMaker20XX_Bone.py dump.csv -n". This will create a model.mbn file. Test this file in Ohana3DS. If it looks good, you're ready.

Moment of Truth as with any mod, load your files into modmoon or saltysd to test them on your 3DS. If there were issues or crashes, try again and make sure your model is cleaned and prepared correctly. Otherwise, Great job on a successful model import! Happy modding!