> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gingerbim.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Simplifying Heavy Geometry

> What to do when the connector warns that an object has too many faces — work out which kind of heavy it is, then fix it at the source in SketchUp or Rhino.

When you add an object to a component bucket, the connector counts its faces. If one object carries an unusually large number — roughly **20,000 faces or more** — you'll see a warning with the count before it's added.

It isn't an error, and you can always add the object anyway. It's a heads-up that one object is carrying more geometry than the rest of your model put together, which costs you in three places:

* **Publishing is slower**, and the version is larger to load for everyone on the project.
* **The 3D viewer gets heavier** for every collaborator, on every device.
* **2D drawings degrade** — hidden-line output has to consider every one of those faces, so drawings take longer to generate and can come back cluttered with edges that shouldn't be drawn.

The good news is that heavy objects are almost never heavy *on purpose*. They're usually imported, downloaded, or generated by another tool at a resolution nobody chose. This page shows you how to find out which, and what to do about it.

## Step 1 — Does it need to be published at all?

Before simplifying anything, check whether the object belongs in the model.

The most common heavy objects in a real project are **entourage**: cars, trees, people, furniture and appliances from the 3D Warehouse. A single realistic tree can be 100,000 faces on its own — more than an entire building's worth of walls and slabs. They carry no BIM value: they aren't scheduled, they aren't classified, and they don't belong on a drawing.

If that's what you're looking at, don't simplify it — **leave it out**:

* Put entourage on its own tag (`entourage`, `no-publish`) and don't add those objects to any component bucket.
* Because [Auto-categorise](/connectors/categorising-objects) matches on tag names, a tag that doesn't look like a category name is never picked up automatically.

This resolves a large share of heavy-geometry warnings in about thirty seconds, with no change to your model.

## Step 2 — Find out what kind of heavy it is

If the object *does* belong in the model, the fix depends entirely on **why** it has so many faces. There are two causes, they look completely different, and the tool that fixes one does nothing for the other.

<Steps>
  <Step title="Turn on hidden geometry">
    In SketchUp, go to **View → Hidden Geometry** (in SketchUp 2020 and later, also **View → Hidden Objects**). Smoothed edges — the ones that make a curved surface look curved — become visible as dotted lines, so you can see the actual triangles.
  </Step>

  <Step title="Look at the surfaces">
    | What you see | What it is | Go to |
    | - | - | - |
    | Big **flat** surfaces cut into fans and slivers of triangles | Import debris — the surface was flat all along, something diced it | [Fix A](#fix-a-flat-surfaces-cut-into-pieces) |
    | **Curved** surfaces covered in a dense mat of tiny triangles | Over-tessellation — the curve was sampled far finer than you can see | [Fix B](#fix-b-curves-with-too-many-segments) |
    | Both, in different parts of the same object | Do Fix A first, then Fix B | — |
  </Step>

  <Step title="Note the count so you can measure your progress">
    The connector's warning already told you this object's face count. Keep it — you'll want to compare against it after simplifying. See [Checking a face count](#checking-a-face-count) below for how to read it back in SketchUp.
  </Step>
</Steps>

<Tip>
  Work on **components**, not copies. Fix a component definition once and every instance in the model updates — and the connector publishes that definition once, no matter how many instances you have.
</Tip>

## Checking a face count

SketchUp doesn't show a face count for a single group or component in Entity Info — Entity Info reports what an object *is* (type, tag, volume if it's a solid), not how much geometry is inside it. So there are a few ways to get the number, depending on how exact you need it.

<AccordionGroup>
  <Accordion title="Easiest — read it from the connector">
    The heavy-geometry warning names the object and its face count. That's the same number the threshold is measured against, and it costs you nothing.

    To check your work after simplifying, add the object to a bucket again — if it's under the threshold, no warning appears at all.
  </Accordion>

  <Accordion title="Whole model — Model Info → Statistics">
    **Window → Model Info → Statistics** lists **Edges** and **Faces** for the model, along with counts of components, groups, materials and tags. If the panel offers an option to include nested components, tick it — otherwise geometry inside groups and components isn't counted.

    This tells you whether one object is the problem or the file as a whole is heavy, but it can't isolate a single object.
  </Accordion>

  <Accordion title="One object, exactly — copy it into a blank file">
    The reliable way to isolate one object's count, with no extensions:

    1. Select the object and **Edit → Copy**.
    2. **File → New** (SketchUp opens a blank model — your original stays open).
    3. **Edit → Paste**, then **Window → Model Info → Statistics**.

    The counts now describe that object alone. Close the blank file without saving.
  </Accordion>

  <Accordion title="One object, precisely — Ruby Console">
    If you're comfortable with it, this is the fastest exact answer and it counts nested groups and components properly.

    Select the object, open **Window → Ruby Console**, paste this and press Enter:

    ```ruby theme={null}
    def face_count(entities)
      entities.to_a.inject(0) do |n, e|
        if e.is_a?(Sketchup::Face)
          n + 1
        elsif e.respond_to?(:definition)
          n + face_count(e.definition.entities)
        else
          n
        end
      end
    end
    puts "Faces: #{face_count(Sketchup.active_model.selection)}"
    ```

    It prints the total for whatever is selected, so it works on one object or on a whole selection at once.
  </Accordion>

  <Accordion title="While you work — the simplification tools report it">
    CleanUp³ and Skimp both show before-and-after counts as part of their own results, so if you're using one of them you get the number for free.
  </Accordion>
</AccordionGroup>

## Fix A — Flat surfaces cut into pieces

**Symptom:** flat faces — a wall panel, a floor plate, a flight of stair treads — split into dozens of triangles that all lie in the same plane.

**Cause:** the geometry came in through a format that only speaks triangles. IFC, OBJ, STL, FBX and 3DS imports all do this, as does anything that has been round-tripped through a mesh tool.

**Fix:** merge the coplanar faces back together. This is **completely lossless** — the surface doesn't move by a fraction of a millimetre, it just stops being made of pieces. It's safe on walls, slabs, beams, columns and anything else whose dimensions matter.

The standard tool is **CleanUp³** by ThomThom — free on the Extension Warehouse (it needs **TT\_Lib²**, also free, installed alongside it).

<Steps>
  <Step title="Install CleanUp³">
    **Extension Warehouse → search "CleanUp"** → install **CleanUp³**, then install **TT\_Lib²** if prompted.
  </Step>

  <Step title="Save first">
    CleanUp³ edits geometry. Save the file, or work on a copy, before running it on anything you care about.
  </Step>

  <Step title="Run it on the object">
    Select the group or component (or open it and select all), then **Extensions → CleanUp³ → Clean**. In the options, keep **Merge Faces** ticked — that's the one doing the work here. **Erase Stray Edges** and **Remove Duplicate Faces** are safe and worth leaving on.
  </Step>

  <Step title="Check the result">
    CleanUp³ reports what it removed when it finishes. On genuinely diced imports it's common to see a drop of 50–90%. See [Checking a face count](#checking-a-face-count) if you want to confirm it independently.
  </Step>
</Steps>

<Note>
  If CleanUp³ removes only a little, your object isn't this case — the faces only *looked* flat, and what came off was incidental. On the spiral stair described in Fix B it removed 12%, which was everything genuinely coplanar and no more. A result like that is a clear signal to go to [Fix B](#fix-b-curves-with-too-many-segments).
</Note>

## Fix B — Curves with too many segments

**Symptom:** curved surfaces — a spiral stair, a curved railing, a moulding, a domed roof — covered in a fine mat of triangles, far finer than the shape needs.

**Cause:** the object was generated at a resolution chosen by something other than you: a plugin's default segment count, a high-poly 3D Warehouse download, or an import from a rendering or sculpting tool.

Here's a real example from a project. A spiral stair, 3.1 m across and 4.2 m tall, arrived as **44,800 triangles** over 24 m² of surface — a median triangle of about 275 mm², roughly the size of a postage stamp, everywhere. Nearly **three-quarters of its internal edges bent by less than one degree**: the curve was sampled about ten times finer than any screen or drawing can show. Rebuilt with a tolerance of 1 mm — no point on the surface allowed to move further than that — the same stair comes back at around **6,600 triangles**. An eight-fold reduction, invisible at any scale you'd ever draw it.

That's what over-tessellation looks like. There is no way to merge these faces losslessly — they genuinely aren't coplanar — so the fix is **decimation**: rebuilding the surface with fewer, larger triangles that follow the same shape to within a tolerance you choose.

<Warning>
  **Decimation moves vertices.** It's the right tool for shapes that are complex — stairs, railings, mouldings, furniture, terrain, imported meshes. Don't run it on elements whose dimensions are read off in schedules and drawings — walls, slabs, beams, columns. For those, see [Fix C](#fix-c-rebuild-it-natively).
</Warning>

SketchUp has no built-in decimator, so this needs an extension.

**Free**

* **Universal Importer** (Samuel Tallet, Extension Warehouse) — imports a wide range of mesh formats and offers **polygon reduction during import**. If the heavy object came from an external file, this is the cheapest possible fix: re-import it, ask for fewer polygons, and the problem never enters your model.

**Paid** — third-party commercial extensions, not affiliated with GingerBIM. Listed because they're what the SketchUp community uses for this:

* **Skimp** — the most direct tool for the job. Select an object, drag a slider, and watch the result update live before committing. Also handles heavy imports.
* **Transmutr** — import-side simplification, with proxy objects for very heavy assets.
* **Artisan** — a broader sculpting toolset that includes polygon reduction.

Whichever you use, the workflow is the same:

<Steps>
  <Step title="Save a copy">
    Decimation is destructive and the undo history isn't a backup. Save first.
  </Step>

  <Step title="Reduce to 10–25% of the original">
    That's the usual sweet spot for over-tessellated imports. Go further and check visually rather than guessing — the point of the live preview is that you can see where it starts to matter.
  </Step>

  <Step title="Compare against the original">
    Look at it from the distance it will actually be seen. Silhouettes are what give a decimation away, so check the object's outline against a plain background before you accept it.
  </Step>

  <Step title="Re-soften the edges">
    Select the geometry and use **Window → Soften/Smooth Edges** — around 20–30° is a good starting angle. Decimation can leave the surface reading as faceted until the new edges are softened.
  </Step>
</Steps>

## Fix C — Rebuild it natively

For elements whose dimensions matter — walls, slabs, beams, columns, ramps — the best fix is often not to simplify the imported mesh at all, but to **model it again in SketchUp** with native geometry.

A wall that arrived as a 30,000-triangle mesh is a rectangle and a push-pull: a minute's work, twelve faces, exactly the right dimensions, and it becomes a proper solid the connector accepts into the Wall bucket. A meshed import frequently *isn't* a valid solid, so remodelling often solves a categorisation problem at the same time. See [Modelling Guidelines](/connectors/modelling-guidelines).

Use the imported mesh as a reference, trace it, then delete it.

## Avoiding it next time

<AccordionGroup>
  <Accordion title="Set segment counts before you extrude">
    While an arc or circle is still selected and un-extruded, **Entity Info** shows an editable **Segments** field. SketchUp's default of 12 or 24 is often more than a plan-scale element needs — and every segment you set there is multiplied by every operation that follows it. A Follow Me along a 24-segment path around a 24-segment profile is 576 faces before anything else happens; halving both gives you 144.
  </Accordion>

  <Accordion title="Reduce at import, not after">
    Once heavy geometry is in the file it's a cleanup job. Tools like Universal Importer and Transmutr let you reduce during import instead, which is faster and never pollutes your model.
  </Accordion>

  <Accordion title="Check face counts before downloading components">
    3D Warehouse lists a polygon count on each model's page. Prefer entries described as "low poly" for anything that isn't a building element, and check the count before you place it.
  </Accordion>

  <Accordion title="Softening is not simplifying">
    **Soften/Smooth Edges** hides edges so a surface reads as curved — it doesn't remove a single face. An object can look perfectly clean in SketchUp and still be carrying 50,000 triangles. Turn on **View → Hidden Geometry** to see what's really there.
  </Accordion>

  <Accordion title="Purge unused geometry">
    **Window → Model Info → Statistics → Purge Unused** clears out component definitions, materials and tags that nothing references any more. It won't reduce a heavy object's face count, but it shrinks your file and speeds up every send.
  </Accordion>
</AccordionGroup>

## What's a good number?

There's no hard limit — these are the figures behind the warning.

| Object | Typical face count |
| - | - |
| A wall, slab, beam, or column | 6 – 50 |
| A detailed door or window component | 500 – 3,000 |
| A complex stair or railing, well modelled | 3,000 – 8,000 |
| **The connector warns at** | **20,000 per object** |
| A high-poly 3D Warehouse tree or car | 50,000 – 500,000 |

If one object is bigger than everything around it by a factor of ten, that's the signal — not the absolute number.

## Rhino models

The same principles apply, with different tools.

**Your document mesh settings decide what gets sent.** Rhino solids and surfaces are converted to meshes on send using the document's current render mesh settings, so those settings directly control the face count in your published model. Check **File → Properties → Mesh**: **Smooth & slower** produces far denser meshes than **Jagged & faster**, and a custom setting with a very small maximum edge length will produce enormous meshes from ordinary geometry. If a simple Rhino model is publishing heavy, look here first — one setting change fixes every object at once.

**For geometry that's already a mesh:**

* `ReduceMesh` — decimation, equivalent to Fix B.
* `MergeAllCoplanarFaces` — lossless merge, equivalent to Fix A.
* `QuadRemesh` — rebuilds a clean, evenly-spaced surface from a messy dense one; excellent on scanned or sculpted geometry.

**Use blocks for anything repeated.** A block definition is published once regardless of how many instances you place.

## When the object genuinely has to stay dense

Sometimes it does — a feature stair, a facade panel system, a piece of design intent that's the whole point of the model. Add it. The warning never blocks you.

A few things help when you do:

* **Make it a component, not a group.** The definition is published once and instanced, so ten of them cost roughly what one costs.
* **Split it up.** A facade that's one 200,000-face object is worse in every way than twenty 10,000-face panels — they load progressively, and you can hide, schedule and tag them individually.
* **Keep it out of the buckets that drive drawings** if it's decorative. Objects in the **Generic** bucket still publish and display; they just aren't carrying schedule and drawing weight.

<Note>
  Not sure which case you're looking at? Post a screenshot with **Hidden Geometry** turned on in the [GingerBIM community](https://community.gingerbim.com/) or email [hello@gingerbim.com](mailto:hello@gingerbim.com) — the triangles tell us immediately which fix applies.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.