3D Model Optimization

A 3D model consists of:

  • Geometry — what shape is it?
  • Materials — what is it made of?
  • Textures — what does its surface look like?
  • Rig / Skeleton — how can it bend/move?
  • Animations — how does it move over time?
  • Cameras — where are we looking from?
  • Metadata — names, hierarchy, etc.

Source: raw/generio-work/3d model optimization and stuff.md (also a generio work concept).

1. Mesh

A mesh is a 3D object (a chair, car, character). One object can be a single mesh or several (car = body + wheels + windows + headlights). A mesh = vertices + edges + faces.

2. Vertex

Plural: vertices. A point in 3D space, e.g. (x, y, z) → (2.4, 1.2, -3.1). More vertices = more detailed shapes.

3. Polygon / Face

A polygon is a surface between vertices. GPUs render triangles:

  • “model has 500k polygons” → that’s how many triangles it renders.
  • Polygon count drives cost: ~10k easy, 100k probably fine, 1M getting expensive, 10M 😬.
  • No universal “100k is good” rule — depends on target/platform.

4. Geometry

The mathematical shape = vertices + triangles + normals + UV coordinates + other vertex data. Reducing polygons in Blender simplifies geometry (e.g. 100k → 5k triangles on a sphere).

5. Normals

Normals tell the renderer which direction a surface faces (a tiny arrow sticking out). Critical for lighting: the renderer asks where the light is, where the surface faces, how bright the point should be. “Smooth normals” make lighting behave as if the surface were smoother than its polygons.

Open questions

  • UV mapping & texture atlases (in the structure but not detailed here).
  • LOD (level of detail), draw calls, instancing.
  • How this maps to our web stack (Three.js / react-three-fiber) — see generio.