-
-
Notifications
You must be signed in to change notification settings - Fork 16
Modeling Tips
A heavily documented tutorial on modeling Custom Characters for Character Select
Dependencies:
Maintained by WBmarioo
While we haven't got 100% accurate vertex normals for Mario, we have gotten very close. To start, make sure your model is uncrumpled (t-posed) and find the soles of your feet. Multiply the bottom faces on the X axis by 0. Note: Depending on which rotation Mario's mesh is at, it may be the Z or Y axis instead. We do this to the feet so shading looks accurate during metal, showing only solid color. Remember recrumpling your feet will not mess this up, do not fret about that. Here's what it would look like if done correctly:

Next, mark the edges of your area sharp, like this:

Do not mark sharp the edges inside, only the surrounding ones. Each edge being marked sharp with give each face its own shading. After this, click your mesh and go into the green triangle area where you find vertex groups then scroll down. There should be a option titled 'Geometry Data', open it and if it says 'Clear Custom Split Normals Data' then clear it. Lastly, make sure your model has shade auto smooth at 180 degree angle. While we haven't got 100% accurate vertex normals for Mario, this is as close as we can get. Some other edges on his hands and legs are marked sharp in the template as well, so look at those.
In coop, you may notice that taller characters have issues with their positions and legs in some animations. Keeb's Waluigi in excoop used offsets in code to fix this, but there are different methods now. One of these is called the corrective scale. Waluigi and Toad's normal models in coopdx use this. Here's an example of what waluigi would look like with and without it.
| With Corrective Scale | Without Corrective Scale |
|---|---|
![]() |
![]() |
First, select the measuring tool (blue in image) on the left of your screen.

Next, you'll want to hide everything except for your armature and hold the Ctrl key to snap to the bottom of one of your Thigh Bones. Hold down when it snaps and drag to the corresponding Thigh's shoe bone. You'll have to hold Ctrl for during the whole time for it to snap accurately. If done right, it'll look like this:

Copy this value into this equation, over n:
(n*0.25)/1.55997
Now paste this equation with your value over n into the second bone in the armature, scale bone. Completely override it. Blender automatically does the math when you paste the equation, so don't worry about that process. This is where the corrective scale comes in. I've included a corrective scale bone with Mario. He doesn't originally have one, though I thought it'd be simple for people to already have the bone created. (especially because it doesn't affect base game Mario) Now override it with the equation
0.25 / ((n*0.25)/1.55997)
Once again with your number plugged in over n. If you are doing this with a character shorter than Mario, you'll find that in the ledge grab animation he's above the edge. Taller characters are below the edge. Without custom animations you can't really accommodate for this, but I'd suggest not having a corrective scale if the character is just a little smaller than Mario.
Before anything, make sure this settings is checked (only included in Fast64 Gart):

Even after this, the new materials for the sideburn and emblem mess up reverts.
Go in the model.inc.c and delete all lines of gsDPSetRenderMode(G_RM_AA_ZB_OPA_DECAL, G_RM_AA_ZB_OPA_DECAL2),
and then save the file.
Next, go into the geo.inc.c and scroll to the very bottom. Add this line:
...
GEO_CLOSE_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, waluigi_material_revert_render_settings),
GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, waluigi_material_revert_render_settings),
GEO_DISPLAY_LIST(LAYER_ALPHA, waluigi_material_revert_render_settings),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, waluigi_material_revert_render_settings),
+ GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, waluigi_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};Note it won't always be under the name waluigi, it just so happens I exported under that name. just make sure to add a line that says TRANSPARENT_DECAL with the other commands.
With a recent update of Fast64 Gart and coopdx 1.4, materials can recolor using primitive and environment color. This lets you use shade and ambient for their own recolor slot, or none at all. A use for this would be using primitive and environment for the skin light and ambient, making shade color non-recolorable, and ambient be darker, like how Mario looked before release. Here are two basic combiners for using these types of materials:
| Solid | Textured |
|---|---|
![]() |
![]() |
The textured material is two cycle. Go into the 'Upper' part of your F3D material and enable 2 cycle at the bottom. There many other uses for primitive and environment recoloring, like having a shaded emblem, shaded decals, or only having part of a texture be recolorable. Just try messing with it! Lastly, just make sure to enable Don't set Environment Color alpha to fix transparency visual issues.
The Fast64 Shaded Texture preset is broken and doesn't work ingame to my knowledge, and there are better ways to do them anyway. In this case, you don't have to actually make the png itself have transparency, and can do it in the material. To start, change your draw layer to transparent, transparent decal, or transparent intersecting. After this, enable environment color. It is included in every material already, so just check the box. When you change environment color, there is a alpha section at the bottom.

Lower the alpha to the desired value. If you put Mario's Mesh in Metal Mario, duplicated it and assigned it to metal material, doing this method could have an outcome like this:

I recommend using an Opaque Decal draw layer with a Transparent Decal set render mode in the lower, and then manually fixing reverts. Remember, this will have the metal render in the layer it should, not causing issues with the waterfall's white material override. Note: this won't work when your mesh doesn't wrap around itself, (a copy of it in the same position) so you'd have to use a draw layer like Transparent Intersecting, which renders infront of trees and water.
Yes, rigging for the first time can be troublesome. Here are some frequent issues that get brought up:
-
My arm and leg rotations are messed up in certain animations! This is caused by rotating either the Arm Color or Leg Color bones when crumpling/uncrumpling. The color bones are a child of the main bones, and many people accidentally select them. To fix this, first rotate the main (not color) limb bones 180 degrees. Next, rotate the color bones 180 degrees. Then go into edit mode, select the main and color limb bones, and press Alt-R. Now, roll should be cleared and both color and main versions of those limbs should be facing up.
-
"A vertex was found that was significantly weighted to multiple groups" This occurs because you've weighted vertices to multiple groups. This typically happens when you are in face select mode when weighting your model, because it hides faces and not vertices. It should say the groups in the error message, so use those to find the issue.
-
"Verts attached to one bone can not be attached to any of its ancestor or sibling bones" This occurs when a mesh is skinned and a vertex connects to another vertex of a bone that is not its immeditent parent bone. For example, a shoe vertex can not connect to a torso vertex (having a edge or face connecting the two groups)
-
My arms/legs are swapped! You assigned the left/right limbs to the other side. Select your group, unassign it from that group, and assign it to the mirrored side.
- T-Posing Rigging can be way easier if you manually t-pose Mario. Make sure to select bones by names listed below (Select Left Arm, not Left Arm Color). Here are the rotations for each bone:
Left Arm X: 0, Y: -90, Z: 180
Right Arm X: 0, Y: 90, Z: 180
Left/Right Hand X: 0, Y: 0, Z: -20
Left/Right Thigh X: 0, Y: 0, Z: 180
Left/Right Shoe X: 0, Y: 0, Z: -69.5
Now, it should look like this:

Now, select only your armature and press Apply as Rest Pose. When rigging back to the original pose, you type the opposite of these rotations (180 -> -180, -20 -> 20), then press Apply as Rest Pose again.
-
Aligning Models Position your character's feet so that they match up with Mario's. You may also need to rescale your character.
-
Moving Bones Assigning Vertex Groups Mario is controlled by bones. If your character is taller than Mario, move the bones of his armature in edit mode to match your model closer. If its too much taller, you may consider the corrective scale method. Bones are assigned to the mesh via vertex groups. You find them in the Data menu, which looks like a green triangle.

You can delete Mario's limbs as you rig, while assigning the closest vertex group to each body part of your model. When done, go back to the last sentence of step one.
- Character Select by: Squishy 6094
- Super Mario 64 Coop Deluxe by: Agent X and AngelicMiracles
- Super Mario 64 by: Nintendo



