---
title: "Modeling Guidelines"
canonical: "https://rmanwiki-27.pixar.com/space/RU/631308308/Modeling%20Guidelines"
format: markdown
---
![ModellingGuideLines_Header.jpg](media://ee075db3-525c-4e1f-92e5-bc3100f8e93b)

# Picking the right tool for the job

In general, <u>[subdivision surfaces](https://rmanwiki-27.pixar.com/space/REN27/542213016/Subdivision+Surfaces)</u> have many advantages, and at Pixar, the vast majority of modeling is created using that approach, but sometimes you actually need a polygonal mesh.  This page helps you decide which modelling technique is right for your desired look or effect.


![elio-vs-hydra.jpg](media://c20a08f1-dacb-46ea-bc1c-70ebbf83d9fb)

### <span style="color: #4c9aff">Subdivision surfaces</span>

- **Pros**
  - Perfectly smooth at any resolution.
  - Can have sharp or semi-sharp features with creases and corners.
  - They can be very lightweight in memory.
  - Fewer displacement cracks (watertight)
- **Cons**
  - Different modeling techniques/skills
  - Need to tag sharp edges and vertices
  - Some topological constraints (quads or tris, no non-manifold geometry)
    

### <span style="color: #4c9aff">Polygon meshes</span>

- **Pros**
  - Great for heavy geometry like 3D scanned mesh
  - Best for geometry that will be fractured / simmed.
  - Suitable for models with only sharp edges that don't need displacement
  - No micropolygon generation if not displaced.
- **Cons**
  - Heavy models use a lot of memory, even when small in the image.
  - Shadow terminator may be visible on low-resolution, smoothed objects
  - Displacement cracks may be visible

---

# <span style="color: #4c9aff">Subdivision Modeling Tips</span>

- Always model the simplest possible control cage.
- Always view your model with smoothing or render it using <u>[PxrVisualizer](https://rmanwiki-27.pixar.com/space/REN27/542232400/PxrVisualizer)</u>.
  - You can even model in a live PxrVisualizer render!
- Use creases to make sharp or semi-sharp edges without adding extra edge loops.


---

# <span style="color: #4c9aff">Tesselation</span>

If you are coming from another renderer where you have to set subdivision levels, forget about it: **surface tesselation is automatic** in RenderMan (we call it **dicing**).

The main control is the **micropolygon length**.

- By default, it is expressed in pixels, and a micropolygon length of 1 (the default) means that every micropolygon will be approximately 1 pixel wide.
- If you don't want the tesselation to change dynamically, you can set it in object or world space or define a dicing camera.

> 📝 We recommend disabling "raster-oriented dicing" unless you see some artefacts.


Increasing the micropolygon length is equivalent to making the object's size smaller in the image.

- When the object is large, it is finely tessellated into millions of micropolygons, showing fine displacement detail.
- When the object becomes smaller than a pixel, only the base mesh remains.

**Micropolygon Length** works a bit like an "automatic level of detail". It preserves memory when an object is so small on the screen that it doesn't need a fully detailed representation.


> 📝 Notice that the subdiv degrades to a much lower number of faces, preserving memory and speeding up raytracing.


This is what we call **Data Amplification**: a compact geometric representation that can be augmented to create more detail on demand.

---

# <span style="color: #4c9aff">Model detailing</span>

Often, it is better to rely on displacement and bump mapping to add details.

- Displacement allows you to add larger geometric features that impact your object's outline and shadowing.
  - Displacement impacts time to first pixel (micropolygon generation) but doesn't slow down shading.
- Bump or normal maps will add small-scale details.
  - Bump mapping adds a small cost during shading (recomputed at each ray hit).
  - Note that our bump-mapping nodes will NOT compute a bump if the incoming ray is too "blurry", so an absence of a bump will go unnoticed.

If you have modeled a highly detailed object in ZBrush, you should consider:

- retopologizing to create a lightweight model
- extracting a displacement map from the high-resolution mesh.


> 📝 Our displacement nodes have a "model displacement" input to connect the extracted displacement map.

 

---

# <span style="color: #4c9aff">Memory usage and performance</span>

### Polygon meshes

- Shortest **time to first pixel** (TTFP) if not displaced.
- When displaced, the mesh will be diced and micropolygons generated.
- Un-displaced heavy meshes use the same amount of RAM, whether they are full-screen or 2 pixels high.

### Subdivision surfaces

- Slightly longer TTFP but dicing is multi-threaded and efficient.
- Use a bit more memory than meshes for the same number of vertices.
- A sparsely modeled subdiv will only contain the base mesh faces when 2 pixels high.
  - This adaptivity lowers memory usage and speed up raytracing.