Skip to main content
Version: 3.4.3

Preparing a Model for Interpretation

A mesh or point cloud arrives from a scanner or a photogrammetry package as whatever that software produced. Before it is comfortable to interpret on, it usually needs work — and the mesh context menu offers about 150 commands with no indication of which ones you actually need.

This guide is the short answer: what to do, in what order, and why. Most models need perhaps six of those commands.

Order matters more than the individual steps

Several of these operations invalidate each other. Decimating after generating LOD throws the LOD away. Tiling before cleaning bakes the mess into every tile. The sequence below is arranged so nothing undoes anything before it.

The short version

#Do thisWhy
1Look at what arrivedEverything after this depends on what you find.
2Fix the coordinate systemCheap now, expensive later.
3Remove the rubbishDegenerate triangles, long edges, unused vertices.
4Fix normals and windingOr the model lights and textures wrongly.
5Decide on sizeDecimate, LOD, or tile — they are different answers.
6Rebuild the indexesSo picking and interpretation are fast.

1. Look at what arrived

Load the model and check three things before touching anything.

  • Is it where it should be? Navigate to it. A model at the project origin when it should be at a national grid coordinate has lost its georeferencing — see Coordinate Systems.
  • Is it the right size? Measure something you know. A model that came in as feet in a metric project is a problem to fix now, not after you have interpreted on it.
  • How big is it? The mesh's properties give the triangle count. Under a few million, you can probably interpret on it as-is. Tens of millions, and step 5 matters.

Attributes & Analysis → Triangle Properties → Maximum Edge Length is a useful first look: false-colour the mesh by it and the reconstruction junk — long thin triangles bridging gaps — lights up immediately.

2. Fix the coordinate system before anything else

If the model is in the wrong place, wrong units or wrong CRS, correct it now. Every interpretation you make is stored in project coordinates, so moving the model afterwards leaves your interpretation behind.

On the mesh's Transform submenu:

ProblemCommand
Wrong CRSCoordinate Conversion → Between Coordinate Systems (CRS)
Feet where metres are expectedCoordinate Conversion → Meters to Feet / Feet to Meters
Axes swapped by the exporterSwap X and Y / X and Z / Y and Z Axes
Right shape, wrong placeTranslate, Rotate, Scale
Two models that should line up but do notICP Alignment

See Coordinate Systems and Georeferencing for the whole picture.

3. Remove the rubbish

All of these are on Quality & Cleanup, and all are safe to run in this order.

StepCommandWhat it removes
aRemove → Degenerate TrianglesZero-area triangles and ones with coincident vertices. These break almost every downstream calculation, so they go first.
bRemove → Duplicate VerticesCoincident vertices merged into one. Photogrammetric meshes are full of them.
cRemove → Edges Greater Than LengthThe long thin triangles that bridge across gaps — the sky between two rock faces, the void behind an overhang.
dRemove → Unused VerticesVertices no triangle references any more, left behind by (a)–(c).
eSelection → Isolated Triangles, then Delete SelectedSingle triangles connected to nothing at all.
fSelection → Progressive Component Select…Whole disconnected clumps — vegetation, scaffolding, patches of sky — that (e) cannot see. See below.
Pick the edge length from the data, not from a guess

Compute Maximum Edge Length as an attribute first and look at its histogram. The real surface and the bridging junk usually separate cleanly, and the threshold sits in the gap between them.

Long-edge removal is not undoable in the usual sense

It deletes triangles. Reload Original on the mesh's menu re-reads the source file and discards everything you have done to it, which is your way back — but that also discards any interpretation attributes you have computed. Try the threshold on a Duplicate first if you are unsure.

Progressive Component Select

Isolated Triangles only finds triangles joined to nothing. It does nothing about the other debris a photogrammetric mesh carries: clumps — a bush, a length of scaffolding, a patch of sky — each a perfectly well-formed little surface, connected to itself and to nothing else. A Poisson mesh is usually full of them.

Right-click the mesh in the Data Tree and choose Selection ▸ Progressive Component Select…. VRGS splits the mesh into connected pieces, sorts them from smallest to largest, and gives you a slider that selects them in that order. Drag it up and the debris lights up red in the 3D view; stop when the next piece to light up is something you want to keep.

The largest piece — the main surface — can never be selected, so there is no way to delete the outcrop by dragging too far.

The readout under the slider tells you where you are:

37 of 412 pieces - 8412 tris (0.4% of mesh). Largest selected piece: 611 tris.

The percentage is the number to watch. Debris is normally a fraction of a percent of the mesh; when that figure starts to climb, you have gone past the junk and into real surface.

  • Delete Selected asks you to confirm, then removes them. This can be undone.
  • After a delete it recomputes on the smaller mesh, so you can keep peeling pieces off without reopening the tool.
  • Deselect All clears the selection without deleting anything.
  • The window stays open while you work. Close hides it and clears the highlight.
  • If you change the mesh somewhere else while it is open, it notices and recomputes rather than acting on a stale picture of the mesh.

The mesh has to be loaded in memory — the tool says so if it is not.

Do this before decimating

Cleaning first means the triangle budget in step 5 is spent on the outcrop rather than on the scaffolding, and a decimated fragment is harder to recognise than a full-resolution one.

4. Fix normals and winding

Symptoms: the model looks inside-out, lighting is inverted, or textures appear on the wrong side.

On Quality & Cleanup → Restructure:

CommandUse when
Check OrientationsDiagnostic — reports inconsistent triangle winding without changing anything. Run this first.
Correct WindingMake winding consistent across the whole mesh.
Reverse WindingThe mesh is consistently wound but the wrong way round.
Relink ConnectivityRebuild triangle connectivity from vertex positions — needed if the exporter produced a "triangle soup" with no shared vertices.

Then Quality & Cleanup → Regenerate Vertex Normals to recompute normals from the corrected geometry.

Do this before texture work

A texture bake projects onto the surface using its normals. Baking before the winding is fixed produces a texture you will have to redo.

5. Decide on size — decimate, LOD, or tile

These are three different answers to "the model is too big", and choosing the wrong one wastes a lot of time.

ApproachWhat it doesChoose it when
DecimatePermanently reduces the triangle count.The model has more detail than the job needs, and you are content to lose it.
Level of Detail (LOD)Keeps the full mesh but draws simpler versions at distance.You need the full detail up close but the whole model in view. This is the usual answer.
Convert to TilesSplits into tiles streamed in and out as you navigate.The model does not fit in memory at all.

Decimate

Quality & Cleanup → Decimate opens a dialog with real controls, not just a percentage:

SettingWhat it does
By ratio (%) or By triangle countThe target. In ratio mode each selected mesh is reduced by the same proportion, rather than all down to one count.
Max geometric errorRefuse any collapse that moves the surface more than this. 0 means no limit.
Max normal deviationRefuse collapses that turn the surface more than this many degrees.
Max UV distortionProtect the texture mapping.
Preserve mesh boundariesKeep the outline of the mesh intact.
Preserve texture seamsKeep UV seams intact — important on a textured model.
Enforce manifold topology / Prevent triangle inversionRefuse collapses that would break the surface or fold it over itself.

The algorithm is Quadric Error Metric decimation. Setting a max geometric error is the honest way to use it: you are saying how far the surface is allowed to move, and letting the triangle count fall out of that.

You can also decimate only part of a model: select triangles, then Selection → Decimate Selected.

Level of Detail

Optimization → Level of Detail → Generate builds the LOD pyramid. It runs in three stages — optimising the mesh, computing a coplanarity attribute to drive the decimation, and building the layers — and switches LOD on for the mesh when it finishes.

Progressively simpler versions are then drawn as the camera moves away. The switch happens when the current level's average triangle drops to about one screen pixel, which is what keeps the transition from "popping" visibly.

The LOD factor in the mesh properties moves the transition distances. It is dimensionless, default 1; lowering it switches sooner, which is faster but more visible.

Remove deletes the layers again.

See what LOD is doing

Turn on wireframe in the mesh group properties and fly toward and away from the model. The triangle density visibly changes at each transition.

Convert to Tiles

Convert To → Tiles asks for a target triangle count per tile (default 100,000) and how to handle textures:

  • Share the model's original textures across all tiles — recommended, and much faster.
  • Repack a separate texture atlas for each tile — only when the tiles must be independent of the original texture files.

A tiled model streams: only the tiles you are looking at are resident. That is what makes a model larger than memory usable at all.

6. Rebuild the indexes

Once the geometry is final:

CommandWhy
Optimization → Rebuild Partition TreeThe spatial index behind picking, interpretation snapping and intersection queries. A stale one makes clicking on the model feel slow.
Quality & Cleanup → Restructure → Optimize StructureReorganises the internal layout for faster rendering.
Quality & Cleanup → Restructure → Optimize For TexturesReorders data to improve texture sampling.
Quality & Cleanup → Upgrade FormatBrings a mesh saved by an older version up to the current internal format. Worth running on anything inherited.

Optimization → Load Into Memory keeps a mesh fully resident rather than streamed — faster to work on, at the cost of RAM. Hide (Keep in Memory) on the item menu is its counterpart: stop drawing something without paying to reload it later.

Point clouds

The same shape of problem, different commands.

StepCommand
Thin an over-dense cloudFilters → Voxel 2D (one point per X-Y cell) or Voxel 3D (one per 3D cell)
Remove overlap between scan positionsOverlap Reduction
Trim by rangeClip Range
Recover deleted pointsUndelete All
Start againReload Original

Point clouds also carry their own level-of-detail and per-region culling, so a large cloud does not need converting to anything — see Working with Large Models.

Optional extras worth knowing about

  • Smooth Surface — reduces noise. Use sparingly; it moves the surface, which matters if you are going to measure on it.
  • Remesh Surface — produces a more uniform triangulation. Useful before analysis that assumes even triangle sizes, expensive on a large mesh.
  • Refinement → Tessellate — the opposite: subdivides triangles where you need more vertices than the source provided.
  • Merge — combines several meshes into one. Do the cleaning first, on the pieces, where it is cheaper.

Order-of-operations traps

  • Decimate or remesh after generating LOD discards the LOD layers. Generate LOD last.
  • Tiling before cleaning bakes the junk into every tile, and tiles are far more awkward to clean than one mesh.
  • Texture baking before fixing winding produces a texture on the wrong side.
  • Moving the model after interpreting leaves the interpretation behind. Fix the coordinate system in step 2.
  • Cleaning after computing attributes invalidates per-vertex and per-triangle attributes, because the vertices they were indexed against have gone.

Tips and troubleshooting

  • The model has holes where the rock clearly is. Long-edge removal took out real triangles. Reload the original and raise the threshold.
  • It still runs badly after decimating. The bottleneck may be textures rather than triangles, or the model may be one of many. See Working with Large Models.
  • Clicking on the mesh is slow or misses. Rebuild the partition tree.
  • Lighting is inverted after cleaning. Regenerate the vertex normals.
  • A command is greyed out. Many operations need the mesh in memory — try Load Into Memory first.

See also