tsnlib < products < home

 

related links

 

TSNLib™ - The Trimmed Surface Library1

Product Overview

Trimmed Surfaces are one of the most popular forms for the representation of 3-D shapes in geometry and graphics applications. The Trimmed Surface Library (TSNLib) provides a comprehensive suite of utilities for construction and interrogation of Trimmed Surfaces, Solids, and Open Shells. Trimmed Surfaces can be constructed from NURBS surfaces trimmed by model space (3-D) and/or parameter space (2-D) NURBS curves. The NURBS representation for the surfaces and trimming curves provides a compact, highly accurate and efficient representation for 3-D shapes. TSNLib also contains a proprietary parameter space caching algorithm to enable highly efficient classification of points and curves relative to the trimming boundary. We have positioned TSNLib:

  • To address the needs of "down-stream" application developers who require the ability to interact with previously existing Trimmed Surface-Based 3-D shapes.
  • To provide a framework which will enable developers to create application-specific Trimmed Surface functionality.

TSNLib is an add-on to GSNLib2, which extends the functionality of GSNLib to the domain of Trimmed Surfaces and additionally provides Trimmed Surface specific construction, query, and classification algorithms.

Key Benefits Back To Top
  • Seam and Pole Handling - the ability to represent and robustly process Trimmed Surfaces which contain poles or singularities (vanishing partial derivatives) and seams (edge which delineates the start/end of a closed surface).
  • Parameter Space Domain Cache - much of the Trimmed Surface functionality utilizes a proprietary algorithm and data structures which enable fast access to containment and intersection information.
  • Adjustable Tolerances - the ability to adjust the tolerance of a Trimmed Surface. This enables TSNLib to robustly process Trimmed Surfaces produced by a variety of different systems.

TSNLib Objects:

One of the keys to understanding TSNLib is to understand the objects utilized to represent the geometric and topological information. TSNLib is based on Non-Manifold Topology. The following objects are defined in TSNLib (and GSNLib):

  • IwBrep - This structure contains all of the elements of a Boundary Representation. The remaining objects are contained in the IwBrep.
  • IwRegion -There are one or more regions in a IwBrep. A region represents a volume in space the is bounded by one or more shells. There is always an infinite region that represents all space not contained by the other regions in the model.
  • IwShell - A shell can be either a single vertex (IwVertex), or a connected set of wire edges (IwEdge), or a connected set of faceuses (IwFaceuse), or some combination of connected faceuses and connected wire edges.
  • IwFace - A face is defined as two manifold connected point set. The geometric shape of this point set is defined by a surface (IwSurface). Because the TSNLib utilizes tolerant modeling, it actually represents the face as a uniformly thick slab around the geometry of the surface. The thickness of the slab is defined by the tolerance of the face. A face is bounded by one or more loops (IwLoop). The UV domain of the face contained in the face object and is represented by an IwExtent2d object. The domain of the face can be smaller than the natural domain of the surface but must completely contain the parameter space curves generated by projection of the 3D curves onto the surface. Each surface may have one or more faces that reference it. In the case where there is more than one, a composite face (IwCFace) will exist to manage that relationship.
  • IwLoop - A loop can be either a single unconnected vertex on a face or a connected set of edges on face. A loop may or may not be closed. Each face must have one and only one outer loop.
  • IwEdge - An edge is defined as a one manifold connected point set. The geometric shape of this point set is define by an associated curve (IwCurve). Because the TSNLib utilizes tolerant modeling, it actually processes the edge as a tube in space that surrounds the curve. The radius of the tube is defined by the tolerance of the edge. The curve may have one or more edges that reference it. In the case where there are more than one, a composite edge (IwCEdge) will exist to manage the relationship. An edge may be a wire edge (no faces), a lamina edge (only one face on one side of it), a manifold edge (either two faces or the same face used twice), or a non-manifold edge (more faces than the manifold edge). An edge may be bounded by one vertex in the case of a self-loop edge or it may be bounded by two different vertices. The interval of the curve defined by the edge is represented by a IwExtent1d object.
  • IwVertex - A vertex is defined by zero manifold point in space. The geometric position of the zero manifold is represented by a point object (IwPoint3d). Because the TSNLib utilizes tolerant modeling, it actually processes the vertex as a sphere in space about the point. The radius of the sphere is defined by the tolerance of the vertex.
  • IwFaceuse - There are always two faceuses per face. Conceptually speaking, one faceuse lies on the positive normal side of the surface (we call it the upper faceuse) and the other lies on the negative normal side of the surface (we call it the lower faceuse). A faceuse is bounded by loopuses.
  • IwLoopuse - There are always two loopuses per loop. A loopuse can be either a single vertex on the face or a connected set of edgeuses (IwEdgeuse) on the face. The outer loopuse of the upward faceuse goes counter-clockwise looking from the side of the surface of the positive normals. The inner loopuses of the upward faceuse go clockwise or have no orientation at all if they are not closed.
  • IwEdgeuse - There can be two edgeuses or more in multiples of two per edge. Edgeuses always come in pairs. In the case where the edgeuse is part of a loopuse there is one edgeuse on either loopuse. The orientation of an edgeuse is always the opposite to that of its mate. Each edgeuse has one vertexuse connected to the beginning of the edgeuse. The edgeuses on the upward faceuse may have associated trim curves. The trim curves are always IwBSplineCurve objects or a subclass there of.
  • IwVertexuse - There can be one or more vertexuses per vertex. A vertexuse primarily exists to connect edges to the vertex.

Functionality Summary

Back To Top
  • TSNLib utilizes topological elements (faces, loops, edges, vertices, etc.) traditionally associated with Solid Modelers to represent its Trimmed Surfaces. This has enabled TSNLib add support for Open Shells and Solid Models.
  • Creation of Trimmed Surfaces:
    • Creation from a parametrically bounded B-Spline (NURBS) surface
    • Creation from a B-Spline surface and 2-D parameter space B-Spline curves (automatic generation of 3-D model space curves)
    • Creation from a B-Spline surface and 3-D model space B-Spline curves (automatic generation of 2-D parameter space curve)
    • Creation with both 2-D parameter space and 3-D model space B-Spline curves
    • Creation of individual topological elements (vertices, edges, faces) using "Euler like" topological operators
    • The ability to adjust the operational tolerance of the Trimmed Surface to compensate for "gaps" found in the input data generated by different modeling systems
    • The ability to represent "seams" on closed surfaces as a single edge which occurs twice in the trimming boundary
  • Topological/Geometric Query Operations:
    • Retrieval of topological adjacency relationships between faces, loops, edges, and vertices
    • Direct retrieval of all faces, edges, or vertices in a Trimmed Surface
    • Retrieval of geometric information (point, 2-D and 3-D curve, surface) corresponding to topological elements (vertex, edge, face)
    • Retrieval of the bounding box of a Trimmed Surface
    • Retrieval of trim boundary with loop and orientation information
  • Classification Operations (Inside/Outside/On boundary classification):
    • Classification of parameter space points relative to the trim boundary
    • Classification of parameter space or model space curves relative to the trim boundary
  • Curve Generators:
    • Planar Sectioning - generation of model space and parameter space curves corresponding to intersection of infinite plane with the Trimmed Surface
    • Parallel Projection of Curves - generation of model space and parameter space curves corresponding to the parallel projection of a curve onto a surface
    • Generation of iso-parameteric (cross hatch) curves
  • Intersectors:
    • Intersection of a curve and a Trimmed Surface
    • Intersection of a point and a Trimmed Surface - dropping a model space point to the Trimmed Surface
    • Intersection of two Trimmed Surfaces
  • Measurement Utilities (Minimization, Maximization, Normalization, Projected Minimization, Projected Maximization, Directed Minimization, Projected Angle Between, Linear Collision Detection):
    • Point and Trimmed Surface/Solid/Open Shell/Shape
    • Curve and Trimmed Surface/Solid/Open Shell/Shape
    • Two Trimmed Surfaces/Solids/Open Shells/Shape
  • Trimmed Surface Interfaces:
    • Output to the NLib Trimmed Surface tessellator
    • Output to OpenGL through the NURBS based curve/surface/Trimmed Surface interface
  • Hidden Curve Removal:
    • Analytical hidden curve removal of Solids and Open Shells
    • Produces 3D curves
    • NOTE: This is a prototype version - it is quite slow for larger parts
  • Solids/Open Shells:
    • Creation of Solids or Open Shells by sewing untrimmed surfaces with matching edges
    • Creation of Solids or Open Shells via. Topology table structures
    • Classification of points as Inside/Outside/On a Solid
  • Mass and Area Properties of Non-Manifold Objects:
    • The ability to compute mass properties for traditional solids as well as non-manifold objects. Faces can be assigned different thickness attributes to give them volumetric properties. Edges can be assigned cross sectional area attributes to give them volumetric properties
  • Mirror of a Solid or Open Shell
  • Trimming of a shell using a set of curves
  • Topological intersection and insertion of intersection topology into constituents
  • Attribute management:
    • Ability to define new attributes as a subclass of existing IwAttribute class that inherits one of two standard behavior types (copy attribute when doing a copy/split or reference same attribute when doing a copy/split)
    • Ability to save attributes to a the file using inherited read/write methods
    • The ability to maintain attribute information even when application defining the attribute is nor present utilizing a IwGenericAttribute class
  • 2-D Boolean Operations:
    • Union, Intersection, and Difference of faces defined on coincident planes in space
  • Non-Manifold Sweeping:
    • The ability to sweep faces, edges, and vertices to the same dimension or to a higher dimension. The sweep of a face to the same dimension produces a copy of the face at the terminal position. The sweep of a face to a higher dimension produces a solid volume between the original face and the terminal position face. The sweep of an edge to the same dimension produces a copy of the edge at the terminal position. The sweep of an edge to a higher dimension produces a face between the original edge and the terminal position edge. The sweep of a vertex to the same dimension produces a copy of the vertex at the terminal position. The sweep of a vertex to a higher dimension produces an edge between the original vertex and the terminal position vertex. The Non-Manifold Sweeping is designed as an Object-Oriented Framework. Application developers can easily create new geometric sweeps by implementing a new subclass that produces the geometry for the sweep operation while the Framework builds the topology for the sweep. See example image below.
  • Advanced Trimming Tools:
    • Creates and validates trimmed surfaces from unordered loops, from loops with unknown orientation, from loops that cross seams of periodic surfaces
  • Surface-based Filleting and Blending:
    • Creation of constant radius fillets between two trimmed surfaces and blending of 3, 4 or more tangential corner surfaces.
  • Primitive Creation:
    • Provides creation of the following solids: box, sphere, torus, cylinder, cone, extrusion and revolution
  • Ray Firing:
    • TSNLib has a highly optimized and precise Trimmed Surface based Ray Firing. It is able to compute up to 30,000 ray/surface intersections per second. The Ray Firing can be used as a basis for optical analysis or for display
  • Assemblies:
    • Creation and display of assembly structures

Sample Figures

Back To Top
Back To Top

To view the PDF files, you will need the Adobe Acrobat Reader.

1 TSNLib Data Sheet   (PDF)  

2 GSNLib Data Sheet   (PDF)  (HTML)