Java implementation of BSP based CSG (Constructive Solid Geometry)
OTHER License
Java implementation of BSP based CSG (Constructive Solid Geometry). It is the only simple and free Java implementation I am aware of. This implementation uses an optimized CSG algorithm based on csg.js (see CSG
and Node
classes). Thanks to the author for creating the csg.js library.
There's also the related VCSG library, a plugin for VRL-Studio and two extension libraries: JCSG-MeshExtension and JCSG-PathExtension.
In addition to CSG this library provides the following features:
difference()
and union()
operations (many thanks to Sebastian Reiter)JavaFX 3D
nodesJCSG on stackoverflow.
To see what's possible with JCSG try JFXScad.
Open the JCSG
Gradle project in your favourite IDE (tested with NetBeans 7.4) and build it
by calling the assemble
task.
Navigate to the Gradle project (e.g., path/to/JCSG
) and enter the following command
bash gradlew assemble
gradlew assemble
// we use cube and sphere as base geometries
CSG cube = new Cube(2).toCSG();
CSG sphere = new Sphere(1.25).toCSG();
// perform union, difference and intersection
CSG cubePlusSphere = cube.union(sphere);
CSG cubeMinusSphere = cube.difference(sphere);
CSG cubeIntersectSphere = cube.intersect(sphere);
// translate geometries to prevent overlapping
CSG union = cube.
union(sphere.transformed(Transform.unity().translateX(3))).
union(cubePlusSphere.transformed(Transform.unity().translateX(6))).
union(cubeMinusSphere.transformed(Transform.unity().translateX(9))).
union(cubeIntersectSphere.transformed(Transform.unity().translateX(12)));
// save union as stl
try {
FileUtil.write(
Paths.get("sample.stl"),
union.toStlString()
);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
JetBrains for their IntelliJ IDEA license(s)
Evan Wallace for creating the JavaScript library csg.js