Starship Troopers was movie licensed FPS shooter developed by Strangelite. It’s very poorly executed on the technical side. SBM format is the most horrendous thing I have ever researched, and overall rendering and model pipeline is in such a bad state, that I’m suprised it can even run (yes, game barely runs on AMD and on some NVIDIA GPUs).
Tool is written under 3ds max 2017 SP3 however it should work for older versions aswell.
Tool should support all models, including animations and material support.
- Setting Working directory for texture loading. this folder should be set where you extracted slak, where artassets folder should be.
- Overall scale of model. This applies on animations aswell.
- Keeps node name suffix. Disabling this, user will lose important informations about mesh.
- Disabled for now.
- Enables textured model in viewports.
- Removes all keyframes for all bones in scene and restores default pose. This is useful when you importing single animations, so you don’t want to reimport model each time.
- More info in Skin Aberration Glitch section.
Just drag’n’drop mzp file into the scene. Or run it via Run Script.
This tool uses ini file to save state of tool when closed. So next time it will open, your settings will be intact. Ini file is stored in %plugcfg% folder as StarshipTroopersSBM.ini.
If you don’t know where this folder is, type this command into listener: GetDir #plugcfg
Those meshes are used ussually with other kind of shader, like glow. They have _1 suffix in their name and are exactly same as their suffixless partners. Now I know why this game have such FPS unstability.
Skin Aberration Glitch
On some models (mostly bugs) are visible bodypart displacements, that is caused becouse devs didn’t do any form of skeletal optimalization and left object nodes in model skin, this causes some serious glitches. On the picture below, you’ll see that legs are not properly alligned on each other.
To fix this, we need to do some of magic. First it’s really helpfull to import some animations, the more we have imported, the bigger chance to detect those nodes.
Now, since we have imported some animations, we should click on Find Object Nodes button. This will search thru all nodes and dump some into Possible Object Nodes layer. Bones stored here are detected object nodes of course, but this feature will not detect everything.
Bones with names such as: Bone, Point, Group and Scene_Root are skeletal based and should be ignored.
Object nodes ussually have name according to character and bodypart name, and they must NOT be animated.
To manually check if bone is animated we can eighter check their transform curves in curve editor, or by looking at their keys.
Here is example how to check if node is animated.
- Reference frame, this keyframe stores reference pose and must not be removed.
- Animation start frame, this is optional frame created when importing animation
- Animation end frame, this is optional frame created when importing animation
- Reference reset frame, this is created for animation appending when using Sequencer
All those 4 frames can be ignored, and if there are not any frames between, its safe to consider said bone is not animated, thus object node. We can move it to Possible Object Nodes layer.
If we have all our object nodes selected, we can push Transfer Object Nodes and let the tool do its magic. NOTE: Make sure you have selelected only presumed object nodes, this operation cannot be undone.
After a few seconds, we can see a nice result.
We can delete all nodes in Possible Object Nodes layer safely if we want to, since those nodes are not needed now.
Unhandled Shader: %shader name%
Unresearched shader type. Should not ever appear.
Unhandled Mesh format: %mesh block number% at: %offset%
Unresearched model type. Should not ever appear.
Cannot find scene node: %node name%
This can appear when loading animation where script cannot find certain node in scene. This is purely informational and do not affect animation load at all.
Current Version: BETA 1