Repository navigation
Conversation
Problem: After Effects 26 imports STL models besides glTF and OBJ; we refused .stl files, and the Media Browser and import dialog did not list them as models. Fix: a pure-Rust STL reader in effectcraft-model (binary and ASCII, detected from the contents; several ASCII solids and polygon loops; VisCAM/SolidView and Materialise Magics facet colours as plain materials; Z-up turned to the model's Y-up; faceted normals from the winding). Truncated, empty or non-finite input is an error, never a crash. .stl is now a model extension for import, probing, the Media Browser, the import dialog and the system report. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 11, 2026
This branch has not been deployed
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.
Fixes #729.
Part of ranked gap #13 "3D model formats and materials" (docs/gaps.md).
Problem
After Effects 26 imports STL models (
usdStl) besides glTF and OBJ. We refused.stlfiles, and neither the Media Browser nor the import dialog listed them as models.Fix
crates/model/src/stl.rs, a pure-Rust reader written from the public format description, with no new dependencies:u32facet count, 50-byte facets. Bytes after the last facet are ignored.solidblocks in one file and fan-triangulates loops with more than three vertices.solidkeyword, because many binary headers also start withsolid.COLOR=header with a part colour). Each colour becomes a plain dielectric material. Files without colour get no materials, so the renderer's default material applies, the same as OBJ without an MTL file..stlis wired in everywhere models are recognised:effectcraft_model::format_of/load,MODEL_EXTENSIONS(import and probe, codecSTL (…)), the Media Browser model kind, the File ▸ Import dialog filter, the system report import list and thelayer.newModelhelp.docs/gaps.mdrow Unsaved changes: ask before closing a modified project; the modified mark follows undo #13 anddocs/file-format-parity.mdare updated (estimate unchanged).Tests
effectcraft-model:stl_binary_is_faceted_and_turned_y_up: binary file whose header starts withsolid, Y-up turn, winding, trailing bytes.stl_ascii_with_polygon_loops_and_several_solidsstl_binary_colours: VisCAM and Magics.stl_hostile_input_is_an_erroreffectcraft-media:stl_imports_as_a_model(is_importableplus probe as a model item). It fails without the change.Gates
cargo fmt --check: passed.cargo clippy -j 4 -p effectcraft-model -p effectcraft-media -p effectcraft-engine -p effectcraft-ui-egui --all-targets -- -D warnings: clean.cargo test -j 4 -p effectcraft-modelcargo test -j 4 -p effectcraft-mediacargo test -j 4 -p effectcraft-engine(523 passed)cargo test -j 4 -p effectcraft-ui-egui(499 passed)cargo xtask layers: ok.cargo check -p effectcraft-model -p effectcraft-media -p effectcraft-engine --target wasm32-unknown-unknown: ok.cargo xtask ciwas not run locally because the machine is shared.What remains
The rest of gap #13 is still open: FBX, USD/USDZ, and Substance 3D materials with mesh displacement. STL units are taken as-is, the same as OBJ, and scaled by Model Scale.
🤖 Generated with Claude Code