Instances of this class
contain a complete surface approximation setting that can be used
to set the approximation for NURBS objects described by NURBSSet
values or directly in existing NURBS scene node. You use the
**setViewApproximation()**
and **setRenderApproximation()**
functions on existing
scene nodes and the **.viewApproximation**
and **.renderApproximation**
properties on NURBSSet
values.

**Constructors**

**NURBSSurfaceApproximation**
[<property>:<val>]...

Any of the object's properties may be set via optional keyword arguments on the constructor.

<nurbsset>.**viewApproximation**

<nurbsset>.**renderApproximation**

**Properties**

<nurbssurfaceapproximation>.**config**
:
**#isoOnly,
#isoAndMesh, #meshOnly**

This property determines what is displayed in the interactive or scanline renderer.

If **#isoOnly**
is
specified, only Iso lines are displayed. Iso (parametric) lines are
similar to contour lines. The lines show where the NURBS surface
has a constant U or V value or both. Iso line representations can
be less crowded and easier to visualize than wire mesh
representations.

If **#isoAndMesh**
is
specified, Iso lines and the mesh are displayed. When chosen,
wireframe viewports display iso line representations of the
surface, and shaded viewports display the shaded
surface.

If **#meshOnly**
is
specified, just the mesh is displayed. When chosen, wireframe
viewports display the surface as a wire mesh, and shaded viewports
display the shaded surface. In wireframe viewports, this option
lets you see the curve approximation used for viewports.

<nurbssurfaceapproximation>.**isoULines**
:
integer

This is used with the ISO line display. This is the number of additional interior iso lines in U (there are always lines along the outer edges).

<nurbssurfaceapproximation>.**isoVLines**
:
integer

This is used with the ISO line display. This is the number of additional interior iso lines in V (there are always lines along the outer edges).

<nurbssurfaceapproximation>.**meshUSteps**
:
integer

This is used for parametric tessellation. This is the number of tessellations in U. This is the number of sub-divisions for a knot span for the surface.

<nurbssurfaceapproximation>.**meshVSteps**
:
integer

This is used for parametric tessellation. This is the number of tessellations in V. This is the number of sub-divisions for a knot span for the surface.

<nurbssurfaceapproximation>.**meshApproxType**
:
**#parametric,
#spatial, #curvature, #regular, #spatialAndCurvature**

This property controls the type of surface tessellation.

If **#parametric**
is
specified, parametric tessellation is performed. This provides for
a fixed number of **meshUSteps**
by **meshVSteps**
tessellations. There
are **meshUSteps**
times
**meshVSteps**
quadrilaterals and each
one is split up into two triangles.

If **#spatial**
is
specified, spatial tessellation is performed. This uses
**spacialEdge**
as
its parameter. This specifies that the size of the tessellation
will be the **spacialEdge**
length. In view dependent
tessellation **spacialEdge**
is
specified in pixels.

If **#curvature**
is
specified, view dependent tessellation is performed. This uses
the **curvatureAngle**
and **curvatureDistance**
property
values.

If **#regular**
is
specified, a fixed, regular tessellation across the surface is
performed.

If **#spatialAndCurvature**
is
specified, a tessellation method which combines the spatial and
curvature methods is used. This uses the **spacialEdge**,
**curvatureAngle**, and
**curvatureDistance**
property
values.

<nurbssurfaceapproximation>.**spacialEdge**
:
float

This
is the length of an edge to use in spatial (**#spatial**) tessellation. In
view dependent tessellation this is specified in pixels. If not in
view dependent tessellation this is a percentage of the bounding
box diagonal length.

<nurbssurfaceapproximation>.**curvatureAngle**
:
float

This
is used in curvature dependent tessellation (**#curvature**). If 0.0 is
specified this is ignored. If specified this ensures that no two
adjacent face normals exceed this angle between them. This value is
specified in radians.

<nurbssurfaceapproximation>.**curvatureDistance**
:
float

This
is used in curvature dependent tessellation (**#curvature**). If 0.0 is
specified this is ignored. This specifies a distance that cannot be
exceeded between a vertex on the mesh and the mathematical surface.
This is defined as a percentage of the diagonal of the bounding box
of the individual surface in object space. For instance if this was
set to 1.0, the allowable error in generating a tessellation would
be 1% of the bounding box diagonal distance of the surface. This
would be 1/100 (1%) of the diagonal distance of the bounding box.
In this way if an object is scaled the tessellation remains the
same. Additionally, if you have an object with a big surface and a
little surface, the smaller surface will get tessellated more
finely because its own bounding box is used. This prevents the
smaller surface from just becoming a single triangle for
example.

<nurbssurfaceapproximation>.**viewDependent**
:
boolean

Specifies if this is view
dependent tessellation. If **true**
this
will tessellate less finely the farther away from the camera the
object is. If **false**
the
tessellation does not change based on distance from the
camera.

<nurbssurfaceapproximation>.**merge**
:
float

Controls the tessellation of surface sub-objects whose edges are joined or very nearly joined. When input to a modifier (such as Mesh Select) requires a mesh, and when NURBS surfaces are tessellated for production rendering, by default the software adjusts the tessellation of adjoining surfaces to match each other, in terms of the number of faces along the edges. The Merge parameter controls how this is done. If Merge is zero, adjoining faces are unchanged. Increasing the value of Merge increases the distance the software uses to calculate how edges should match, guaranteeing no gaps between the surfaces when they are rendered. Default is 0.0.

Available in
**3ds Max
8 and higher**.

<nurbssurfaceapproximation>.**subdivStyle**
:
name

Get/Set the Subdivision
style in the Advanced Surface
Approximation dialog. Possible values are
**#tree,
#grid, #delaunay****.**
Available in
**3ds Max
8 and higher**.

<nurbssurfaceapproximation>.**minLevels**
:
float

Get/Set the minimum number
of Subdivision levels in the Advanced Surface
Approximation dialog. Available in
**3ds Max
8 and higher**.

<nurbssurfaceapproximation>.**maxLevels**
:
float

Get/Set the maximum number
of Subdivision levels in the Advanced Surface
Approximation dialog. Available in
**3ds Max
8 and higher**.

<nurbssurfaceapproximation>.**maxTris**
:
integer

Get/Set the maximum
number of triangles in the Advanced Surface Approximation
dialog. Available in
**3ds Max
8 and higher**.

**See
also**