Skinned Meshes Model Importing Tutorial

From Luma's Workshop
Jump to navigation Jump to search
This page is in progress and may contain incomplete information or editor's notes.

Todo:

  • Info about the BMDCubed method
  • More info about SuperBMD issues and fixes (such as wrong lighting with specific materials which can be fixed with J3DView)


This tutorial will teach you how to import models with a skeleton for use with skeletal animations.

Preparing

Requirements:

  • Blender or another modelling tool that can export .fbx or .dae files with skeletons.
  • SuperBMD

Model Info

Weights don't overlap Weights overlap
(crashes the game)
SkinnedModel-Tutorial SuperBMDissue1.gif SkinnedModel-Tutorial SuperBMDissue2.gif
Do this in Blender so that the weights are no longer overlapped

Keep this in mind in your modelling tool before exporting:

  • All Objects should have the coordinate 0:0:0 as SuperBMD will reset every objects position automatically
  • All Objects should not be rotated 90° on the X-Axis like you do with unskinned models.
  • Your skeleton object needs to be named skeleton_root. SuperBMD will search for this name to convert it.
  • Due to a SuperBMD issue currently present in every version, multiple weights that overlap each other (a common thing with skinned models) will glitch/crash the game, so be sure that your weights don't overlap. You can do this by using Blender's Limit Total option in Weight Paint mode but it might make your model animate edgier as a result unfortunately.
  • Due to another SuperBMD issue also present in all versions, at least one bone needs to be a children of another bone, otherwise SuperBMD will falsely display "Model uses bone that isn't part of the skeleton"
  • Due to yet another SuperBMD issue, objects must not be children of other objects, otherwise SuperBMD will incorrectly display "Number of meshes is not the same as the number of mesh objects".
  • Due to yet another SuperBMD issue, additional problems may arise during conversion if the --bdl function is used to create a BDL model instead of the BMD model. These problems include:
    • Specific materials will appear white
      • This can be fixed by removing the -bdl command. The game supports both BMD and BDL model formats. However, if BDL is required open the exported BMD in J3DView, go to File -> Save As and save the file as BDL.
    • Broken --rotate function (doesn't rotate)



Replacing An Existing Model

If you want to replace an existing model's mesh without editing the skeleton, you need to import the original model with a Blender plugin called "Blemd" to get the proper skeleton. You can find it here along with installing instructions. If you use a dae exported by SuperBMD the skeleton won't be the same as the model's.

  • Go to Import -> Nintendo BMD/BDL and select you BMD/BDL file.
  • Be sure to keep the default import settings.
  • Click on Import BMD. This might take some time to import.

Conversion

Exporting

  • Export you model as either .fbx or .dae file.
    • When exporting to .fbx, be sure that Add Leaf Bones in the Armatures tap is unchecked! (In Blender)
    • When exporting to .dae, be sure that Deform Bones only in the Armature Options tap is unchecked! (In Blender)

Converting

  • Open a command prompt (or use a batch script for this instead) in the same folder as SuperBMD.exe and enter this command:
 SuperBMD.exe MODEL --tristrip all --degeneratetri --bdl 
  • Replace MODEL with your model directory, for example: "C:/MyModels/CrazyCharacter.fbx". (Use "%1" instead when using a batch script)
    • For extra materials, add --mat materialname.json ("%~dp0galaxymaterial.json" when using a batch script and SuperBMD's category function).
  • Your bdl model should appear in the same folder as your exported fbx/dae file
  • If something goes wrong, SuperBMD will tell you the problem:
    • "Loose Vertex or Edge": Try to delete loose verts. In Edit Mode click on Mesh -> Clean up -> Delete loose
    • If some vertices in the model get mistakenly wielded together, replace --tristrip all with --tristrip none
    • "Number of meshes is not the same as the number of mesh objects": Look for objects that have objects as children, select the children and the main object last, and press CTRL and J.