The three commands

Almost everything you do with fascat is one of these:

fascat inspect motor.step              # look at a CAD assembly
fascat convert motor.step motor.glb    # convert it to a runtime asset
fascat validate motor.glb              # check the result

If you omit the output path, convert writes a .usdc file beside the input. The output suffix selects the format (.usdc, .glb, .obj, .stl, .fbx, …). Not sure which to pick? See Which output format?.

Pick a target profile

Profiles set sensible tessellation, optimization, and LOD defaults for a platform:

fascat convert motor.step motor.usdc --profile realtime-desktop
fascat convert motor.step motor.glb  --profile realtime-web
fascat convert motor.step motor.glb  --profile realtime-mobile
fascat convert motor.step motor.glb  --profile virtual-reality
fascat convert motor.step motor.glb  --profile mixed-reality

See the profiles table for each profile's budgets.

Inspect before converting

fascat inspect motor.step
fascat --json inspect motor.step          # machine-readable
cat motor.step | fascat inspect -          # read from stdin

fascat inspect motor.step --filter 'path=*/Fasteners/*' --pmi summary

Scope work to part of the assembly

Use --filter to apply optimization and LOD work to one branch only:

fascat convert motor.step motor.glb \
  --filter 'path=*/Fasteners/*' \
  --merge --merge-mode by-material \
  --target-triangles 80000

Tune tessellation

fascat convert motor.step motor.usdc \
  --sag 0.1 --angle 15 \
  --curvature-adaptive \
  --target-triangles 500000

Prepare for runtime delivery

fascat convert motor.step motor.glb \
  --export-preset web --quantize --meshopt \
  --file-size-budget-mb 50

Validate output

fascat validate motor.glb
fascat validate motor.glb --geometry-quality --report quality-report.json
fascat validate motor.glb --visual-preview preview.png

Going further

  • Combine many steps — long flag lists work, but for repeatable

branch-specific recipes use a pipeline file instead. See Pipeline files.

  • Every flag is documented in the CLI Reference.
  • Scripting from Python — the same pipeline is available as a fluent API.

See the Python API.

A pipeline file keeps named filters and ordered steps in TOML:

[[filters]]
name = "fasteners"
path = "*/Fasteners/*"

[[steps]]
op = "merge"
where = "fasteners"
mode = "by_material"
fascat convert motor.step motor.glb --pipeline realtime.toml

Useful global behavior

fascat --json <subcommand>           # JSON output, pipe to jq
fascat <subcommand> --dry-run        # preview without writing
fascat --install-completion bash     # shell completion (bash/zsh/fish)
fascat --help                        # help works anywhere in the command