MAXScript Language Reference > 3ds Max Objects > NURBS > The NURBS Classes > NURBS Associated Classes >

# NURBSSurfaceApproximation : Value

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/Setthe maximum number of triangles in the Advanced Surface Approximation dialog.

Available in 3ds Max 8 and higher.

#### See Also

- Value Common Properties, Operators, and Methods