The NiCE Geometry Editor provides users of NiCEClient a method for viewing and editing application-specific input data in the form of 3D volume meshes. Editing is performed by means of constructive solid geometry, as is used in many CAD and drafting tools. The Geometry Editor integrates with NiCE to enable users to build geometry data inside the NiCEClient window, as well as to generate output formats to be served as input data for processes launched with NiCECore.
Requirements
User Interface
The user must be able to perform the following from the Geometry Editor's interface.
- Add shapes from a predefined list to the viewport
- Sphere, cube, cylinder, imported custom meshes, etc.
- Apply set operations to two or more objects
- Union, intersection, compliment
- Edit each shape's matrix transformations
- Position, size, scale, rotation, shear
- Select groups of objects as well as individual primitive shapes
- Once selected, the user may delete, duplicate, or reorder its role in the CSG tree.
- Optionally rename instances of primitives and groups
Geometry Engine
In order to integrate with NiCECore, NiCEClient, and third party applications, the geometry engine must have the following capability.
- Initialize, import, and modify a CSG tree
- Generate a triangle surface mesh for the jMonkeyEngine Mesh format in order to display an interactive preview for the user in the Geometry Editor's viewport
- Generate a tetrahedral volume mesh to be used by a third party application
- Build a NiCEDataStructure with CSG tree and program state data, including all information required to persist and restore a Geometry Editor session
- Export to standard and application-specific geometry and volume mesh formats
Graphical User Interface
"I hate meshes. I cannot believe how hard this is. Geometry is hard."
—David Baraff, Senior Research Scientist, Pixar Animation Studios