Using the CAD Optimiser
The CAD Optimiser converts CAD and 3D model files into formats JoinXR can render — GLB (always) and, on accounts with the feature enabled, JXR (JoinXR's high-detail format). Along the way it can clean up, decimate, and reorganise your model so it performs well in XR.
The workflow has three steps: Upload your file, Configure the conversion options, then Convert and review the output.
Step 1: Upload your model
- Drag and drop your CAD file onto the upload area, or click Browse files.
- Click Upload.
- Maximum upload size is 4GB. If your file is larger, contact support.
- Stay on the page while the upload is running — navigating away will interrupt it.
Uploading assemblies (multi-file models)
Some CAD formats (for example .CATProduct or .iam) are just an assembly description that references other part files. If you select one of these directly, you'll be prompted to upload a ZIP containing the assembly file plus every part file it references instead — this is the reliable way to get a complete assembly through conversion. You can continue with just the single file, but it may fail if referenced parts are missing.
If you upload a ZIP that contains multiple candidate model files, you'll be asked to pick which one to convert.
See below for full list of supported file formats
Step 2: Configure the conversion options
Once your file has uploaded, the Configure panel lets you choose what processing to apply before conversion. Every option has a tooltip (hover the ⓘ or the row itself) with a short explanation. Settings are remembered in your browser between conversions, and you can click Reset to defaults at any time to clear them back to the standard starting point.
Model Orientation
| Option | What it does | When to use it |
|---|---|---|
| Automatic (default) | Detects the model's up-axis automatically. | Leave this on unless your model comes in rotated incorrectly. |
| Z-Up / Y-Up | Forces the model's up-axis. | Use if Automatic produces a model lying on its side or upside down. Some formats (STEP, Parasolid .x_t/.x_b) can validly be either orientation — if Automatic gets it wrong for one of these, try Z-Up. |
Standard options
| Option | What it does | When to use it |
|---|---|---|
| Decimate Mesh to Target | Reduces the mesh to a target triangle count. Does nothing if the model is already below the target. | Turn on when your output polygon count is flagged as too high in the results (see Step 4) — this is the main lever for fixing an over-complex model. Set the target based on whether you're aiming for a good GLB (~800,000) or JXR (~5,000,000) result. |
| Remove Hidden Geometry | Strips geometry that isn't visible from outside the model. | Good for reducing complexity on solid assemblies. Don't enable this if you plan to use JoinXR's clipping plane to look inside the model, since the hidden internals will already be gone. |
| Flatten Hierarchy | Merges the part hierarchy into fewer nodes for faster rendering. | Enable when a model has a very high part count (flagged in Step 4). Trade-off: you lose the ability to hide, highlight, or exclude individual parts in JoinXR afterwards, so avoid it if per-part interaction matters for that model. |
| Center Model | Moves the model's center to the world origin. | Use if your model was authored far from the origin (common with site/survey data or federated CAD) and appears to be positioned strangely once placed. |
Advanced options
| Option | What it does | When to use it |
|---|---|---|
| Repair Mesh | Fixes common tessellated-mesh issues, including welding duplicate vertices closer than the tolerance. Has no effect on pure CAD parts with no tessellated geometry. | Leave on. Only worth touching the tolerance if you're seeing visible seams/gaps that persist after repair (try raising it slightly), or need to preserve very fine detail (lower it). |
| Tesselate | Converts CAD curves/surfaces into polygons. If disabled, only parts that were already tessellated in the source file will come through. | Leave on for CAD files. Lower tolerance = more polygons but less deviation from the true surface; higher tolerance = fewer polygons but more visible faceting. Adjust if you need finer curved surfaces or want to cut polygon count without full decimation. |
| Decimate Mesh | Reduces polygon count based on an allowed error tolerance, rather than a hard target. | Leave on — it's a general-purpose reduction that helps even alongside Decimate Mesh to Target or other reduction options. Raise the tolerance for more aggressive reduction if a model is still too heavy. |
| Use Alternative Importer | Switches to an alternative import path for certain formats. | Only enable this if JoinXR support advises it for a specific problem file. It's not available for every format (e.g. glTF/GLB, FBX, and Parasolid files use only the primary importer). |
Experimental options
| Option | What it does | When to use it |
|---|---|---|
| Remove Small Parts | Removes individual parts whose bounding-box diagonal is smaller than the given size. | Useful for stripping out bolts, fasteners, and other tiny detail parts that add part/polygon count but contribute little visually at typical viewing distance. |
| Smart Collapse Leaf Nodes | Where a leaf node is the only child of its parent, collapses it into the parent. | Use when a CAD package has exported an overly deep/nested part hierarchy and you want a cleaner, more usable part tree without fully flattening the model. |
| Orient Faces | Re-orients flipped faces so the outward-facing side is correct. | Try this if a converted model shows visual artifacts consistent with inverted normals (parts looking "inside-out" or geometry disappearing at certain viewing angles). |
Step 3: Convert
- With your options set, click Convert.
- Stay on the page while the job starts.
- The Outputs panel shows live status (queued/processing) with a Cancel button if you need to stop the job, and a Job ID — keep this handy, it's what support will ask for if anything goes wrong.
If a conversion fails, the error panel will show a summary and the Job ID. Please raise a support ticket quoting that Job ID — we support a very broad range of CAD formats across many industries, so occasional failures happen, and we can usually resolve them working directly with you.
Step 4: Review your outputs
Once conversion succeeds, you'll see two output cards:
- GLB Output — always produced. Use GLB if your model needs animations or textures.
- JXR Output — only shown on accounts with JXR enabled. JoinXR's own high-detail format, built for rendering very complex CAD (up to several million polygons) with better performance than GLB at that scale. See Use JXR files for more detail. JXR generation isn't supported above 20 million polygons — reduce the model first (see below) if you hit this.
Reading the complexity meters
Each output shows a meter for Polygons (and, for GLB, Parts too), plus an overall complexity rating. These are guidelines for how the model will behave once placed in a JoinXR document — not hard limits:
| Rating | Meaning |
|---|---|
| Low complexity | Safe to use several times in the same JoinXR document. |
| Medium complexity | Fine to use 2–3 times in the same document. |
| High complexity | Best used once per document. |
| Very complex | JoinXR can often still handle it, but performance may vary — consider different conversion settings. |
| Too complex | Will likely result in poor XR performance — reconversion with different settings is strongly recommended. |
Approximate recommended-maximum polygon/part counts behind these ratings:
| Output | Metric | Recommended max | Notes |
|---|---|---|---|
| GLB | Polygons | ~800,000 | Above ~1,000,000 is flagged as too complex for real-time XR. |
| GLB | Parts | ~300 | High part counts hurt scene performance independently of polygon count. |
| JXR | Polygons | ~5,000,000 | Hard ceiling of 20,000,000 — JXR won't be generated above this at all. |
What to do if a stat is flagged
When a meter shows the model is over the recommended level, the page shows a one-click tip:
- High polygon count → suggests enabling Decimate Mesh to Target with a sensible target (800,000 for GLB, 5,000,000 for JXR) and applies it for you if you click Apply Setting.
- High part count (GLB) → suggests enabling Flatten Hierarchy and applies it for you if you click Apply Setting.
Clicking Apply Setting only updates your Configure options — it doesn't reconvert automatically. You still need to click Convert again.
Reconverting
You don't need to re-upload your file to try different settings. Once a conversion has finished (succeeded, failed, or cancelled), the Configure panel is still live:
- Adjust or apply the suggested settings.
- Click Convert again.
- The Outputs panel updates with the new job's status and, once finished, the new stats and download links.
Downloading
Use the Download .glb / Download .jxr buttons on each output card. Add the downloaded file to your document using the JoinXR Windows Desktop app.
Getting help
If a conversion fails, keeps producing an over-complex result even after adjusting settings, or you're not sure which options to use for a particular file, raise a support ticket and include the Job ID shown on the Outputs panel — this lets us look at exactly what happened during your conversion.
Supported Formats
The following gives a full list of all supported import formats
CAD & BIM Formats (BREP, PMI, and structured formats)
-
ACIS –
.sab,.sat -
AutoCAD 3D –
.dwg -
Autodesk Inventor* –
.iam,.ipt -
Autodesk Navisworks –
.nwd,.nwc -
CATIA V4 –
.model,.session -
CATIA V5* –
.CATPart,.CATProduct,.CATShape,.CGR -
CATIA V6 –
.3dxml -
Creo / ProE* –
.asm,.prt,.xas,.xpr -
GL Transmission Format (glTF) –
.glb,.gltf -
IFC / IFCZIP –
.ifc -
IGES –
.igs,.iges -
JT –
.jt -
NX / Unigraphics –
.prt -
Parasolid –
.p_b,.p_t,.x_b,.x_t,.xmt,.xmt_bin,.xmt_txt -
PDF (3D) –
.pdf -
PLMXML –
.plmxml -
PRC –
.prc -
Revit –
.rvt,.rfa -
Rhino3D –
.3dm -
STEP / STEPZ / STPX / STPXZ –
.stp,.step,.stpz,.stepz,.stpx,.stpxz -
Solid Edge –
.asm,.par,.psm,.pwd -
SolidWorks –
.sldasm,.sldprt -
VDA-FS –
.vda
* We recommend zipping all files in the assembly before upload
Mesh & Polygon Formats (tessellated only)
-
3DS –
.3ds -
COLLADA –
.dae -
FBX –
.fbx -
OBJ –
.obj -
STL –
.stl -
U3D –
.u3d -
VRML –
.vrml,.wrl
Scene Formats & Lightweight Runtimes
-
USD –
.usd,.usda,.usdc,.usdz