mirror of
https://github.com/PixarAnimationStudios/OpenSubdiv
synced 2024-12-27 18:30:21 +00:00
Add content / fix typos to modeling tips ReST documentation
This commit is contained in:
parent
99843dc650
commit
a2c7c49bd3
@ -31,6 +31,21 @@ Modeling Tips
|
||||
|
||||
----
|
||||
|
||||
The following sections describe common techniques specific to modeling with
|
||||
subdivision surfaces.
|
||||
|
||||
.. container:: notebox
|
||||
|
||||
**Note**
|
||||
|
||||
The following information contains techniques specific to the Catmull-Clark
|
||||
subdivision scheme. Some elements need to be adjusted for Loop surfaces.
|
||||
|
||||
----
|
||||
|
||||
Topology
|
||||
========
|
||||
|
||||
Well-constructed subdivision meshes have several important properties:
|
||||
|
||||
* They consist primarily of quad faces
|
||||
@ -38,39 +53,40 @@ Well-constructed subdivision meshes have several important properties:
|
||||
* They efficiently describe the intended shape
|
||||
* They are topologically `manifold <subdivision_surfaces.html#manifold-geometry>`__
|
||||
|
||||
The following sections describe common techniques specific to modeling with
|
||||
subdivision surfaces.
|
||||
----
|
||||
|
||||
Use Fewer Spans
|
||||
===============
|
||||
+++++++++++++++
|
||||
|
||||
While polygon models need to use a large number of spans to approximate smooth
|
||||
curved surfaces, subdivision models require significantly fewer control points.
|
||||
|
||||
In most situation, 6 spans is enough to create a circular shape and 4 is often
|
||||
enough to approximate it for background objects.
|
||||
In most situations, 6 spans are enough to create accurate circular shapes, and
|
||||
4 is often enough to approximate background objects.
|
||||
|
||||
.. image:: images/mod_notes.0.png
|
||||
:align: center
|
||||
:target: images/mod_notes.0.png
|
||||
|
||||
----
|
||||
|
||||
Avoid High Valence vertices
|
||||
===========================
|
||||
+++++++++++++++++++++++++++
|
||||
|
||||
A high valence vertex is a vertex connected to more than 4 adjacent edges.
|
||||
|
||||
High valence vertices cause several problems when subdivided:
|
||||
|
||||
* OpenSubdiv has a hard constraint imposed by GPU shaders on the maximum
|
||||
valence of a vertex (~27 on current hardware)
|
||||
* High valence vertices incur fairly large performance hits
|
||||
* The Catmull-Clark scheme can produce "wavy" surfaces when a revolution
|
||||
vertex is surrounded by triangles (see `here <subdivision_surfaces.html#triangle-subdivision-rule>`__):
|
||||
|
||||
.. image:: images/mod_notes.2.png
|
||||
:width: 200px
|
||||
:align: center
|
||||
:target: images/mod_notes.2.png
|
||||
.. image:: images/mod_notes.2.png
|
||||
:width: 150px
|
||||
:align: center
|
||||
:target: images/mod_notes.2.png
|
||||
* High valence vertices incur fairly large performance hits
|
||||
* Currently, OpenSubdiv has a hard constraint imposed by GPU shaders on the
|
||||
maximum valence of a vertex (~27 on current hardware)
|
||||
|
||||
Instead, here are some topological strategies to cap revolution shapes:
|
||||
|
||||
@ -81,15 +97,17 @@ Instead, here are some topological strategies to cap revolution shapes:
|
||||
Note that all these cylinders use only quad faces, and all the vertices in the
|
||||
caps have a valence of 4 (except the bottom left example)
|
||||
|
||||
----
|
||||
|
||||
Edge-Loop Transitions
|
||||
=====================
|
||||
+++++++++++++++++++++
|
||||
|
||||
It is often necessary to vary the density of control vertices over the surface
|
||||
mesh: areas around the fingers of a hand require more CVs than the comparitively
|
||||
simpler region around the palm. It is important to handle the topology around
|
||||
these transitions efficiently.
|
||||
|
||||
One strategy is to use extraordinary vertices, such as this example using a
|
||||
One strategy is to use extraordinary vertices, such as this example, using a
|
||||
valence 5 vertex to expand 3 edge loops into 5.
|
||||
|
||||
.. image:: images/edge_loops.png
|
||||
@ -97,25 +115,28 @@ valence 5 vertex to expand 3 edge loops into 5.
|
||||
:width: 400px
|
||||
:target: images/edge_loops.png
|
||||
|
||||
As an alternatives to this pattern, it is possible to use triangles or pentagons
|
||||
instead of extraordinary vertices.
|
||||
----
|
||||
|
||||
Practical Topology Primer
|
||||
=========================
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
Some real-world examples showing how to produce detailed shapes with sparse
|
||||
topology, few extraordinary vertices, and no high-valence revolution poles.
|
||||
|
||||
.. image:: images/mod_notes.3.png
|
||||
:align: center
|
||||
:width: 400px
|
||||
:target: images/mod_notes.3.png
|
||||
|
||||
.. image:: images/mod_notes.4.jpg
|
||||
:align: center
|
||||
:width: 400px
|
||||
:target: images/mod_notes.4.jpg
|
||||
|
||||
----
|
||||
|
||||
Triangles and N-Gons
|
||||
====================
|
||||
++++++++++++++++++++
|
||||
|
||||
Used sparsely, non-quads can be very useful to gather 3 or more diverging
|
||||
edge-loops. These are often encountered in highly deforming areas with curvature
|
||||
@ -128,18 +149,20 @@ allowing for complex topology to flow around.
|
||||
:target: images/mod_notes.5.png
|
||||
|
||||
|
||||
----
|
||||
|
||||
Semi-Sharp Creases
|
||||
==================
|
||||
|
||||
Semi-sharp creases can be a very powerful tool for hard-surface modeling.
|
||||
|
||||
* Creases introduce extra computation costs proportional to the sharpness
|
||||
value. However...
|
||||
* It is generally cheaper to use creases whenever possible instead of adding
|
||||
extra edges / edge loops.
|
||||
* Crease sharpness ranges from 0 (smooth) to 10 (infinitely sharp)
|
||||
* Sharpness above 5 should rarely be needed.
|
||||
* Both edges and vertices can be tagged with a sharpness value.
|
||||
* Crease sharpness values range from 0 (smooth) to 10 (infinitely sharp)
|
||||
* It is generally cheaper to use creases whenever possible, instead of adding
|
||||
extra edges/edge-loops. However...
|
||||
* Creases introduce extra computation costs that are proportional to the
|
||||
sharpness value. So...
|
||||
* Sharpness values above 5 should rarely be needed.
|
||||
|
||||
The following sections introduce some techniques to best leverage them.
|
||||
|
||||
@ -149,20 +172,45 @@ Use crease sets
|
||||
Complex hard-surface models (giant robots, vehicles, buildings...) are likely to
|
||||
tag large number of edges : it is extremely useful to organize these edges/edge
|
||||
loops into logical sets with descriptive names. Edges or vertices in a crease
|
||||
set group all share the same sharpness value. If you are modeling with Maya,
|
||||
the CreaseSetEditor implements this type of workflow.
|
||||
set group all share the same sharpness value.
|
||||
|
||||
One of the benefits of having edge-loops share identical sharpness values is
|
||||
that enables very powerful optimizations within the feature adaptive algorithm.
|
||||
If you are modeling with Maya, the CreaseSetEditor implements this type of
|
||||
workflow. Additionally, for debugging purposes, it is often very helpful if the
|
||||
name of a set contains the sharpness value (ex: topDeck_2).
|
||||
|
||||
.. image:: images/crease_editor.png
|
||||
:align: center
|
||||
:target: images/crease_editor.png
|
||||
|
||||
Additionally, for debugging purposes, it is often very helpful if the name of a
|
||||
set contains the sharpness value (ex: topDeck_2)
|
||||
Besides authoring convenience, one of the benefits of having many edge-loops
|
||||
share identical sharpness values is that it enables very powerful performance
|
||||
optimizations within the feature adaptive algorithm (faster renders & less
|
||||
memory).
|
||||
|
||||
.. include:: under_development.rst
|
||||
----
|
||||
|
||||
Additional Resources
|
||||
====================
|
||||
|
||||
An excellent short tutorial from the Guerrilla CG Project that illustrates many
|
||||
of the common pitfalls of subdivision modeling, and the strategies to overcome
|
||||
them:
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<center>
|
||||
<iframe width="640" height="360" src="http://www.youtube.com/embed/k_S1INdEmdI" frameborder="0" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
----
|
||||
|
||||
Ivo Kos, Modelling Technical Director at Pixar Animation Studios, shows some of
|
||||
the modeling techniques he uses when modeling props and architecture sets for
|
||||
feature films.
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<center>
|
||||
<iframe src="http://player.vimeo.com/video/70600180" width="640" height="360" frameborder="0" allowfullscreen></iframe>
|
||||
</center>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user