Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added the ability to pre-apply controller preset bearing rotations and piston extensions onto the exported model.
To use this, simply check
Apply Controller Presetswhen converting a blueprint.Why this was made:
I frequently convert vehicles and mechs from the workshop, and these creations tend to rely heavily on controller + bearing setups for shaping body panels, steering columns, and other structural details. Since the tool currently exports everything in its resting state, I'd have to manually set origins and rotate parts in Blender to match how they actually look in-game — which gets tedious pretty quickly. So I decided to implement this.
How it works:
Full disclosure — I have zero programming experience, but I do have some experience with AI-assisted coding. This was implemented entirely using the Claude Code CLI tool with the Claude Opus 4.6 model, followed by multiple rounds of AI-driven code review. Please bear with me on that front.
During blueprint loading, the JSON
controllerfields are parsed to extract bearing pre-rotation angles and piston extension settings. A body hierarchy graph is then built from thejointsconnection data, and BFS is used starting from the root body to accumulate transformation matrices layer by layer. The resulting transforms are then applied to every entity belonging to the corresponding body. The entire process reuses the already-parsed JSON DOM, so no redundant file parsing is needed.Five new files were added (
ControllerData.hpp,ControllerParser.hpp/cpp,ControllerTransform.hpp/cpp), along with am_preTransformmatrix on theSMEntitybase class that gets injected during OBJ writing. The feature is off by default and only takes effect when enabled — existing conversion behavior is completely unaffected.How it was tested:
Built and tested with MSVC v143 (VS 2022) on Windows 11, Release configuration.
Tested with several high-quality vehicle blueprints and mech blueprints from the workshop, as well as small purpose-built test blueprints. Everything works as expected, with no major or obvious issues found so far.
One minor issue: the scoring heuristic for identifying the root body may not be optimal in all cases — on certain mechs, most parts are oriented correctly but the feet may end up not being perpendicular to the ground. That said, this doesn't significantly detract from the overall usefulness of the feature.
Screenshots:





2000 GT classic sports car (pop-up headlights, steering wheel, exhaust pipes):
Porsche (A-pillar, steering wheel):
Titan mech:
UI change:

Added a new setting, placed separately from the existing ones: