BSPSolid
ThreeDify BspSolid is a fully re-entrant, very fast, very compact and powerful polyhedral solid modeling library developed by ThreeDify Incorporated. It is best suited for interactive solid modeling and internet applications because of its speed and small size. The entire library is written in ANSI C/C++ and is thus platform independent. It features Boolean set operations (union, intersection, difference and symmetric difference) and CSG operations on polyhedrons in 3D and on polygons in 2D, using Binary Space Partitioning (BSP) Trees. Recent developments in ThreeDify BspSolid has resulted in support for ray tracing polygons as well as real time dynamic BSP trees for animation and game programming.
One feature that distinguishes ThreeDify BspSolid from other solid modeling libraries is its implementation of Boolean operations using three different methods:
- "Incremental" method for Boolean operations between a BSP tree and a solid mesh;
- "CSG" method for Boolean operations on a CSG tree that may contain unlimited number of Boolean operations and primitive solids;
- "Tree-Merging" method for Boolean operations between two BSP trees that may containno boundary information.
The source code is about 25,000 lines. It uses neither global nor static variables, and is fully re-entrant, making it an ideal compact software component. It is available for Win95/98/NT/2000/XP as a static LIB.
Features and Capabilities
New in Version 1.6.0:
- Overhauled the fundamental polygon classification algorithm used by BspSolid. This resulted in significant robustness improvements in Boolean operations and boundary generation, especially for Incremental and CSG algorithms.
- Upgraded to Visual Studio 2008.
New in Version 1.5.3:
- Added BSP_ExtrudeAlongVector for extruding a polygon along a specified vector with support for "unaligned" end face
- Added BSP_ExtrudeAlongPath for extruding a polygon along a polyline path.
New in Version 1.5.2:
- Added ability to remove T-edges in 3D BSP trees (v1.5).
- A major bug fix for 2D Boolean operations: polygon extraction from a 2D BSP solid can occasionally fail due to a design flaw in the graph construction algorithm used (v1.5).
- Fixed a bug in DXF import/export (v1.5).
- Added ability to extract COMPLEX_FACE from a 2D solid BSP tree (v1.5).
- Changed the prototype for BSP_SaveTree and BSP_RetrieveEntityList to use the newly introduced, more generic BSP_READ_INTERFACE and BSP_WRITE_INTERFACE structures (v1.5).
- Added misc. useful geometric routines (v1.5).
- Fixed two memory leaks in CSG tree construction (when evaluating expression tree) (v1.5).
- Fixed a memory leak in 2D boundary extraction/minimization (v1.5).
- Fixed several memory leaks in the demo programs (v1.5).
- STL/Standard C++ compliant (v1.5.1).
- Minor API and doc changes (v1.5.1).
- Fix for the undefined BSP_CreateCone API. (v1.5.1).
- Added BSP_InitBinTree/BSP_RayXBinTree/BSP_KillBinTree to support ray tracing a scene consisting of polygons (v1.5.2).
- Added BSP_ConvertFacelstToPlygnlst for converting a face list into a polygon list.
- Added BSP_KillPolygonList function (v1.5.2).
- Made the lib compatible with both standard and non-standard C++ IO library (v1.5.2).
- Now available for Visual Studio 2005 (v1.5.2).
Version 1.0/1.2 Features and Capabilities:
- Non-incremental construction of static BSP trees from polytopes (generic term for polyhedron in 3D and polygon in 2D);
- Incremental construction of both static and dynamic BSP trees;
- Real time dynamic BSP trees for animation and games (version 1.2 only);
- Boolean operations between a BSP tree and a polytope using "Incremental" method;
- CSG evaluations on multiple polytopes using "CSG" method. The calling program can construct a CSG tree with leaf nodes containing polytopes and internal nodes representing set operations (Intersection, Union, Difference and Symmetric Difference). The library provides an API call to evaluate such a CSG tree, producing either a BSP tree or a boundary representation of the composite polytope;
- Boolean operations between two BSP trees through generic Tree-Merging. This is useful when the input data consist only of BSP trees with no boundary information; This allows one not to store boundary information with a BSP tree so as to save space, since it can be regenerated on the fly;
- Ability to expand, shrink and shell a single convex polytope.
- Generation of boundary from a BSP tree having no boundary information. This allows one not storing boundary information with a BSP tree in order to save disk space and loading time.
- Ability to detect and correct inconsistent faces whose normals are not properly oriented so as to "solidify" the input data.
- Testing of polytopes for convexity.
- Faces of the polyhedron resulted from a set operation are all convex. But the library is capable of merging coplanar faces (also known as boundary minimization), if required.
- The faces of an input polyhedron can be concave polygons;
- Profile generation from solid bodies by slicing;
- Splitting of a solid body into two solid bodies;
- Extract vertex-connected or edge-connected components from a solid body;
- Any linear transformations can be applied to a solid body.
- Interference detection between two solids. Points, lines and polygons can also be classified with respect to a solid body to determine the parts that are 'inside', 'outside', and 'on' thesolid body.
- Model statistics, such as surface area, body volume and mass properties (centre of mass and inertia tensor) can be easily obtained.
- BSP trees can be serialized to and from disk with or without boundary information.
- Fast collision detection between a 3D BSP tree and a sphere, and between a 2D BSP tree and a circle.
- Back-to-front and front-to-back traversals of a BSP tree.
- Hidden line and hidden surface removals.
- Real time true shadows for point light source using shadow volume (area light source is coming) .
- Creation of popular primitives: box, cone, cylinder, sphere, ellipsoid, torus;
- Creation of more complex objects: ruled solid, solid of extrusion, solid of revolution.
- Import/Export to DXF and STL file formats.
- Also included for free is a NURBS geometry lib that is used in ThreeDify BspSolid to create solid objects.
For the detailed description of ThreeDify BspSolid API, please email us through the Company | Contact ThreeDify page on our web site.
Key Benefits
- Compact, efficient and fully re-entrant, making it an ideal software component.
- Affordable. ThreeDify BspSolid costs order of magnitude less than similar products.
Pricing
License Type |
SKU # |
Price (usd) |
Conditions |
|---|---|---|---|
ThreeDify BspSolid v1.6.0 Single-Developer |
bsp01001 |
inquire |
Binary lib for single OS/compiler, single developer, single application title. Annual subscription required or royalty-based. |
ThreeDify BspSolid v1.6.0 Multi-Developer Site |
bsp01002 |
inquire |
Binary lib for single OS/compiler, multi-developers (up to 10), single application title. Annual subscription required or royalty-based. |
ThreeDify BspSolid v1.6.0 Source License |
bsp01003 |
inquire |
Un-obfuscated source code, multi-platforms, single application title. Annual subscription required or royalty-based. |
