SolidKit Library Overview
The SolidKit Library is a programming library for 3D/2D graphics applications development for Microsoft Windows family of operating systems
in C++ and
.NET using OpenGL. The library provides data-model-independent classes for easy navigation in 3D/2D space (for example it provides functions such as view pan, rotate, zoom), provides functions for objects
manipulation and editing, supports printing of OpenGL renders, provides functions for 3D mathematics
functions, Constructive solid geometry for triangle meshes (in the Pro package only).
The C++ version of the library provides classes for reading/writing JPEG, GIF, BMP and PNG raster images files using memory formats directly usable by the OpenGL API functions.
The C++ version of the library uses MFC (although it's use is optional), the .NET
version uses Windows Forms.
SolidKit Library is developed by Solid Graphics and it is continuation of development of the ClassGL Library under new name.
SolidKit Library Features
View navigation and 3D/2D objects manipulation
The library provides classes for creating 3D window views which provide these data-model-independent scene view navigation modes:
- rotate - freely rotate around xyz axes, or around any specified vector (axis)
- pan - freely move in xyz space, or in any specified plane
- zoom - zoom in, out, to specified window rectangle, to whole scene, to selected object
- fly view - change view direction using mouse or keyboard
- free look view (this is the same mode as used in first person shooter games) - walk move with "keeping the head-up direction)
- view angle control
The 3D window class also supports features, such as:
- shortcut keys customization for view navigation
- printing of the 3D renders
- simple texture-based text printing
- antialiasing (accumulation buffer based)
- 3D objects selections and manipulation
The 3D window class allows this manipulations of selected 3D objects:
- moving object freely in xyz space, or along a plane, or along specified vector. It is possible to set moving constraints, such as prohibiting to move an object beyond a specified limit. Moving objects in steps (snap to grid) is also supported.
- rotate objects freely along xyz axis, or around any specified vector. It is possible to set ratation constraints such as to prohibit to rotate object more or less than certain angle. Rotating objects in discrete steps (for example in 5 degree steps) is also supported.
- multiple objects can be selected, the moving or rotating is applied to all selected objects
Raster image formats support
The C++ version of the library provides classes for reading and writing raster images from and to JPEG, PNG, GIF and BMP files. These JPEG file pixel-formats are supported: 3-byte RGB , 4-byte CMYK, 1-byte Grayscale. For BMP files - only 24 bit uncompressed BMP format is supported. Animated GIF files are not supported.
The images can be also loaded from or saved to memory using JPEG, PNG, GIF or BMP binary formats - this is usefull when temporarily compressing image data into memory, or for example for loading images into memory from files attached to an application exe file as binary resource.
The library does not provide coresponding classes in .NET, as this functionality
is already provided by .NET
Constructive solid geometry support (in SolidKit Pro package only!)
Constructive Solid Geometry for triangle meshes is included in the SolidKit Pro package. For more information about the SolidKit's constructive solid geometry capabilities and limitations see the Support of Constructive Solid Geometry in the SolidKit Library article.
3D types for use in your applications
Although you can use your own or third party object models which represents your scene - the SolidKit Library also provides a few 3D data types which you can use for developing your new applications. These types vary from simple types like Point or more complex ones such as Shape. They are accompanied with set of supporting functions which you can use to for example find out whether a point lies inside a shape, or find a triangle area.
Supporting classes and functions
The SolidKit Library provides several common-use classes, functions and templates. These classes/functions can be used when for example your application does not use other higher-level library - such as MFC or ATL. For such purpose the SolidKit Library provides classes/functions for reading/writing registry values, reading writing to/from files, compressing/decompressing data (using ZLIB functions), parsing XML files, time measurements, string manipulations, list and dictionary templates.
The .NET version of the SolidKit library does not provide such classes because
.NET Framework Class Library already provides the same or better features.