Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Contents

Pick the right tool for the job

In general, subdivision surfaces have many advantages but sometimes you actually need a polygon mesh.

Subdivision surfaces

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

Polygon meshes

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

NURBs

  • Pros
    • Perfectly smooth at any resolution.
    • Lightweight in memory
  • Cons
    • Quad-only modeling
    • Not supported in XPU
    • Not very popular nowadays

Suggested reading:

Subdivision modeling

  • Always model the simplest control cage possible.
  • Always view your model with smoothing or render it using PxrVisualizer.
    • You can even model in a live PxrVisualizer render !
  • Use creases to make sharp or semi-sharp edges without adding extra edge loops.
    Creases
  • Corners work like creases for vertices.
    Corners
  • There are 3 type of subdivision surfaces.
    • Catmull-Clark is the most flexible and popular one.
    • Loop is a triangle-based subdivision surface.
      • No creases or corners
      • useful for cloth simulations
    • Bilinear is like a catmull-clark with infinitely hard creases on all edges

Tesselation

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

The main control is the micropolygon length.


  • By default, it is expressed in pixels and a micropolygonlength 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.

This is a creased displaced catmull-clark subdivision surface.

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

  • When the object is large, it is finely tesselated into milions of micropolygons.
  • When the object becomes smaller than a pixel, only the control mesh remains.

This works a bit like an automatic level of detail.



Model detailing

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 add small cost during shading (recomputed at each ray hit).
    • Note that our bump mapping nodes will NOT compute bump if the incoming ray is too "blurry", which means an absence of bump will go un-noticed.

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. 

Memory usage and performance

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.