Show help
fascat --help
fascat help convertCheck version
fascat versionInspect STEP input
fascat inspect motor.step
fascat --json inspect motor.step
cat motor.step | fascat inspect -Convert to OpenUSD or glTF
fascat convert motor.step
fascat convert motor.step motor.usdc --profile realtime-desktop
fascat convert motor.step motor.glb --profile virtual-reality
fascat convert motor.step motor.glb --profile realtime-mobile
fascat convert motor.step motor.glb --profile mixed-reality
fascat convert motor.step motor.usda --debug --report report.json
fascat convert motor.step - --dry-runScope by assembly filter
fascat inspect motor.step \
--filter 'path=*/Fasteners/*' \
--filter 'name=Bolt*' \
--metadata full \
--pmi summary \
--json
fascat convert motor.step motor.glb \
--filter 'path=*/Fasteners/*' \
--merge \
--merge-mode by-material \
--explode connected-components \
--replace bounding-box \
--batch-by-material \
--merge-compatible-meshes \
--split-large-meshes \
--bake-materials \
--bake base-color,opacity \
--decimate \
--remove-holes \
--max-hole-diameter 3.0 \
--remove-occluded \
--run-lod-generators \
--lod-preset vr \
--target-triangles 80000 \
--report report.jsonFor branch-specific conversion settings, put named filters and ordered steps in a pipeline file:
[import]
metadata = "full"
pmi = true
[export]
metadata = "summary"
pmi = "metadata"
[[filters]]
name = "fasteners"
path = "*/Fasteners/*"
names = ["Bolt*"]
[[steps]]
op = "merge"
where = "fasteners"
mode = "by_material"fascat convert motor.step motor.glb --pipeline realtime.tomlTune tessellation and LODs
fascat convert input.step output.usdc \
--heal-brep \
--heal-tolerance 0.05 \
--sag 0.1 \
--angle 15 \
--min-edge-length 0.02 \
--max-edge-length 25 \
--curvature-adaptive \
--quality-report tessellation-quality.json \
--target-triangles 500000 \
--preserve-hard-edges \
--preserve-material-boundaries \
--preserve-small-parts \
--normals hard-edges \
--tangents \
--validate-normals \
--materials cad \
--material-mode pbr \
--merge-equivalent-materials \
--uv1 lightmap \
--texel-density 256 \
--uv-padding 4 \
--atlas \
--atlas-size 4096 \
--lods 0.5,0.25,0.1 \
--lod-mode variants \
--lod-screen-coverage 0.5,0.2,0.05 \
--lod-per-part-budget \
--lod-drop-tiny-parts \
--lod-tiny-part-screen-size 2 \
--validate-lods
Use .usda or .usd with --debug when you want inspectable text output. Binary .usdc, .gltf, and .glb output is rejected in debug mode.
Runtime export handoff
fascat convert input.step output.glb \
--export-preset web \
--quantize \
--meshopt \
--size-ladder \
--file-size-budget-mb 50
fascat convert input.step output.obj --obj-materials --write-mtl --force
fascat convert input.step output.stl --stl-binary --force
fascat convert input.step output.fbx --fbx-materials --fbx-uvs --forceValidate output
fascat validate output.usdc
fascat validate output.glb
fascat validate output.fbx
fascat validate output.glb --geometry-quality --report quality-report.json
fascat validate output.glb --visual-preview preview.png --lod-preview-dir preview-lods/JSON output
Every command supports --json for scripting:
fascat --json <subcommand> | jq '.'
fascat <subcommand> --json | jq '.'Dry run
Preview changes before applying them:
fascat --dry-run <subcommand>
fascat <subcommand> --dry-runShell completions
# bash
fascat --install-completion bash
# zsh
fascat --install-completion zsh
# fish
fascat --install-completion fish