Download ModTemplate.max from the Modding Files public folder. For other 3D modelling software, I've supplied a more generic .fbx file, though at this point I can't guarantee it will work. If you know a better way to make the modding template available for other programs, let me know.
This is what you'll see when you open the file in 3Ds Max.
Open the Layer Explorer to see what's in this scene.
As of this point, I've included the following.
These assets are basically in the public domain now. I understand I cannot restrict their use in any way, so you have my blessing to do whatever you want with them.
Let's find some model to try to get into the game.
Get him into the 3Ds Max project. Make sure he's on position 0, 0, 0.
Scale him to be roughly the same size as the bones of the vanilla models.
Select any of the bones, go to the animation tab and click on Figure Mode, under Biped.
Note: I'm using the Biped plugin for the rigging of the NPCs
Select your downloaded 3D model and press Alt + X to make it see-through. This will help us posing the bones.
I'm going to freeze the Default layer (where our downloaded model is supposed to be), so as to not select the model when trying to pose the rigging.
Start moving the bones to make the skeleton match the new model. Be sure to be in Figure Mode. You can work on only one side, as we are going to copy the pose from one side to the other at a later step.
When working on the arms, you are not supposed to select the grey bones and pose them. It won't work. You instead need to take some extra steps.
If you want to rotate the left upper arm, you have to select the bone called "Bip001 L UpperArm". In the same way, if you want to rotate the left fore arm, select "Bip001 L Forearm" and pose that bone. You don't need to unhide those bones, but if you do, make sure to hide them when you are finished. Trust me, you'll need those bones hidden for a later step. Have in mind also, that you might need to rotate/scale the clavicle bone, which is parent to the upper arm. For this screenshot, posing the clavicle is necessary to get the arm in the right place.
You need to make sure that, when you're scaling, this dropdown is set to Local. When rotating, it might also be useful, though it's not as vital as when scaling.
As you can see, the arm is now properly in place.
I've scaled the arms to make them longer. Though, it's not necessary to scale the bones in all axes. Scaling along their length axis is enough.
When reasonable, take the extra effort to pose everything as neatly as possible. Switch between Local and View transform modes to make your life easier.
When you're happy with the pose, select any bone and click on "Copy/Paste" field to open the panel.
Here comes a tricky part. Double click the clavicle bone to select it and all of its children bones. You should see them all highlighted. If you don't see the wireframe, press F4 to toggle it on/off.
Now, note that the Forearm and UpperArm bones are not selected. That's because they are hidden. Press the Ctrl key in your keyboard, and left click on the name of those bones in the Layer Explorer to add them to your selection
Like so.
Next, inside the Copy/Paste panel, click on the "Create Collection" button, then click on "Copy Posture", and finally click "Paste Posture Opposite". You should see the other arm posed exactly as the one you just worked on.
The legs will be easier. Double click the thigh bone to select it and all of its children bones. Then, just create a collection, copy the posture and paste it on the opposite side.
While having any bone selected, click the Figure Mode button to exit Figure Mode.
Move the timeline scrubber to frame 10, and press the Auto Key button to start making a test animation.
At this point, you can't scale bones anymore. Limit yourself to rotating. Move only when necessary. Preferably only for the feet bones.
Be very sure you are not on Figure Mode, you are on a frame different from 0 and that Auto Key is enabled.
When you're done, disable Auto Key by clicking on it again. Move the timeline scrubber to see your animation. Go back to frame 0, an enable Figure Mode again for the next step.
Select your downloaded model and un-freeze it. You can make it not see-through anymore by pressing Alt + X again while it's selected.
We'll begin the skinning process now. With your model selected, open the Modifier List dropdown and look for the "Skin Wrap" modifier.
If you don't see the Modifier List, be sure to change the tab to Modify, to the left of the Motion tab you were before, in the top-right part of the screenshot.
Have the BodyNaked_LP model visible for this next step.
Click on the "Add" button under Parameters, and then select BodyNaked_LP in the Layer Explorer. Then, right click to stop "adding" objects.
You might see your model change color to black in some places. Don't worry about that for now.
Select a bone and now turn Figure Mode off once more.
It's very likely that the skinning won't be spot on, but you should still see most of your model adhering to the bones/animation.
Select your model again, and change the value of the Deformation Engine dropdown from Vertex Deformation to Face Deformation. If you are lucky, the skinning will be 100% fixed.
If it isn't, you are going to need to retouch the skinning manually. In either case, you're going to need to convert the modifier to Skin before exporting. Press the "Convert To Skin" button.
There's a change that when converting to skin, the skeleton will exit Figure Mode on its own. You don't want that. In case that happens, delete both Skin and Skin Wrap modifiers.
Select a bone, turn Figure Mode on, select your model, add Skin Wrap, add BodyNake_LP again, and turn it to Skin. I believe this bug occurs when you try to see the animation scrubbing the timeline scrubber, so this time leave it alone. You should see this, if not, repeat the process again.
Now, you can safely, and for the last time, turn Figure Mode off. At this point, you can also hide the bone layer.
My model deforms pretty acceptably, except for the armpits. I'll show you how to retouch the skinning manually.
With your model selected
Select one bone (represented by a grey line) that is close to the area you want to fix. Be careful to not moving accidentally while selecting. Here we can also copy the modifications we do on one side to the other, but only work on one side at a time.
Scrub your animation timeline to try to identify troublesome vertices. When you spot one that isn't deforming correctly, select it by clicking on it. You will know which vertices are selected because they will have a tiny white box on them.
Scroll down in the properties panel until you see a field named "Abs. Effect". This property determines how much a vertex follows the selected bone when it moves. Values go from 0.0 to 1.0. Many bones can affect a vertex, and their total effect cannot be greater than 1.0. You can scrub this value continuously by clicking and dragging the arrows in the right border of the property box.
Modify vertices this way until you find the deformation is good enough.
Note: it is important that you don't add any influence to the bone called Bip001. No model in the game uses this bone. To ensure compatibility, you must have this bone in your Skin modifier, but don't add any weight to it for any vertex.
To copy all bone weight information from on half into the other, press the "Mirror Mode" button. There are two buttons under it that are of importance to us. "Paste Green to Blue Verts" and "Paste Blue to Green Vers". The first, will pass all bone weight information from your left side (colored in green), to your right side (colored blue). The later will do the opposite. After you use any of those buttons, disable Mirror Mode.
Skinning is quite a job on its own, so don't expect a lot of shortcuts or easy solutions. The quality of the deformation you can achieve is also limited by the topology of the model you're working with.
Having said that, you don't need to strive for excellence. Most of the time, it's likely you won't notice small imperfections in the skinning job. Only be as diligent as you want.
When you're satisfied with your work, go back to frame 0 of your animation, and with your model selected, go to File > Export > Export Selected in the menu bar.
Export your model as .fbx on an appropriate location. When you hit "Save" you'll see a dialog with a lot of options. Just press the "Ok" button, as it's safe to ignore it.
Bring your model to Unity and make sure that it's in the same scale as the GenericDoru model supplied.
Your model might come by default with a flat shaded low poly look.
To give it a smoother look, select the file itself in the Project window, and, in the Inspector, change the Normals dropdown to Calculate, then hit "Apply".
Depending on how few polygons your models has, the smooth shading will still be a bit rough. The usual workflow requires a normal map to be made for your models, baked from a high poly version of it, but that process escapes the scope of this guide.
Make your model's GameObject child of the child GameObject of ModelContainer (Test Mod, in my case). Then, remove the Animator component.
Your model's GameObject should have at least two children GameObjects. One containing the entire bone hierarchy, and the other containing a Skinned Mesh Renderer component.
Grab this GameObject and drop it in the "Lod 1" field in the Npc Skin Info component of the child GameObject of ModelContainer (Test Mod, in my case).
Save the prefab, give the mod a name and try to see if it works in the game.
I know this is a very dense guide, but the reward of seeing your work come alive is a beautiful thing. Here our Example Guy has no material/texture, so it's a bit hard to see. You can give him a material just as we did with the red sphere.
It isn't unlikely that your model ends up with some of its vertices wrongly skinned. To fix this, you will have to go back to your Skin modifier an fix those vertices.
9 times out of 10, errors like that are vertices that have zero influence from every bone. They are like orphan vertices. If you take note on where those troublesome vertices are, in 3Ds Max then select the vertices around that area, and try to see if they are affected by any bone at all. In this case, there are a couple of vertices that have zero "Abs. Effect" on every bone.
Just give them a 1.0 Absolute Effect on any close bone.
Now, go back to Unity and repeat the necessary steps.
Looking good there, PepsiMan Example Guy.
Perfectly integrated into the game :)