Custom Track Tutorial/BMD

Programs:  Subtutorials: Video Tutorials:
 * SuperBMD - for converting to .bmd format
 * 3d Modeling software (3dsMax / Blender) - for making the model
 * J3dView - Used for viewing and editing the textures of a .bmd
 * Using SuperBMD
 * Using J3dView
 * Blender Mario Kart Wii Custom Track Tutorial (Part 1: Getting started and Making and Texturing road) by Bearably

 A note about modeling software Most of the work will be done in a 3d modeling program such as Blender/3dsmax. While you can use Sketchup, why would you lol. Blender is free and open source, and for custom courses, is good enough to suit your needs. There are plenty of online tutorials for Blender and 3dsMax. In the end, no one can stop or force you to use a specific program.

General Guidelines

 * Because the default material for SuperBMD is to cull back facing triangles, be sure to check the direction of your faces so that they are facing the right direction.
 * Make sure to Reset Xforms before exporting as .dae / .fbx
 * In 3dsMax, put the object's pivot at the origin. Then, in the Utilities panel, click on the "Reset XForm" button. Select your meshes, and then select "Reset Selected". Then, Collapse All modifiers for the meshes.
 * In Blender, select all meshes, then enter Control + A, and select all transforms.
 * Do not have any bones in your model. The game will render only the meshes skinned to a root bone at the default SRT, so having bones is pointless.

Starting from scratch
Due to the highly subjective nature of custom track design, there is not much advice that can currently be given. However, there are a few general guidelines that generally improve gameplay experience and visual appeal. None of the following bullet points are in any way necessary for creating a custom track.
 * Import the vanilla .bco (converted to a .obj, as shown below) of the course/map that you wish to replace to make sure that the course model itself, including walls and roads, are about the right size.
 * Roads do not have to be a specific width to be fun to play, and they especially don't need to match the width of any road in the game. However, roads that are too skinny can be frustrating to drive on, and roads that are too wide can seem plain and boring.
 * The purpose of a vanilla .bco is purely as a helpful reference, not as any source of prescriptive design rule.
 * Make sure to design a boundary along the entirety of the course between where the kart can go and any other designs. You can do this with walls or deadzones.
 * If using walls, the boundary should be at most 150 units above the ground below it. This is to prevent the camera from clipping through the boundary.
 * While backface cull is automatic in SuperBMD, if you are making your own course, it is strongly recommended that you have borders because they look nicer and are the only way to guarantee issues of looking outside the course.
 * Due to walls being horizontal, having a 2d boundary can cause issues where items land on the boundary, which looks weird. Having a 3d border may be more effort, but solves this issue.
 * Avoid tight, sharp corners at all costs. The game will effectively extend these corners beyond where you want them to be, which can be very, very annoying for players trying to go fast.

Starting from a pre-made model
Of course, not everyone is up to making an original design from scratch. A lot of the tips from above can still be applied to this scenario. For example,
 * Importing the vanilla .bco can help with determining the scaling of the track.
 * Boundaries can be created
 * Textures that are too large may need to be downsized
 * Do not have any bones in your model.

Textures
Guidelines
 * The largest texture that the game will allow you to use is 1024x1024.
 * If you have a texture whose dimensions are not a power of two, you can use it, but you cannot use mipmaps. Additionally, this will cause textures to look weird on console.
 * Having textures that are mirrored, clamped, or have mipmaps require use of a texheader.json file when using SuperBMD.

Skybox Notes
Skyboxes (named coursename_sky.bmd) can be added / deleted to any course at will.

Using SuperBMD
See the tutorial on Using SuperBMD for information. Additional Considerations
 * If you are exporting as .dae or .fbx, make sure that the "--rotate" option is enabled
 * If exporting from Blender, make sure that the "--nosort" option is enabled

Editing textures via J3dView
See the tutorial on Using J3dView for information.

WHEN TESTING A NEW .BMD FOR THE FIRST TIME, TAKE OUT THE ANIMATIONS
'''Your course will crash if you do not do this. This includes .btp, .btk, and .brk files. Do NOT touch any of the files in the "objects" folder.'''