IRIT is a freeform geometric modeling environment that allows one to model general freeform surfaces' based models as well as polygonal objects, and use Boolean operations on both. Beyond its very strong support for Bezier and B-spline curves and (trimmed) surfaces, IRIT has many unique features that help in handling freeform geometry including strong symbolic, numeric and algebraic based computation and analysis, support of trivariate spline volumes, as well as general multivariate spline functions.
IRIT offers numerous unique computational abilities such as extensive bisector computation for curves and surfaces, convex hulls and kernels, freeform curve and surface deformation (including using composition), freeform surface decomposition into piecewise ruled and piecewise developable surfaces, and into adaptive isoparametric curves’ covering, contact and (Hausdorff- and/or extreme-) distance analysis, kinematics analysis over freeforms, wire EDM and multi-axis CNC analysis for freeform surfaces, metamorphosis of curves and surfaces, and artistic line art drawings of parameteric and implicit forms.
A rich set of computational geometry tools for freeform splines is offered including basic operations, such as sums and products of splines in arbitrary dimensions, and a powerful spline based non-linear constraints solver. The solver is capable of computing the simultaneous zero sets of arbitrary number of spline multivariates, where the solution space is zero-dimensional, univariates (one-dimensional), or bivariates (two dimensional).
The IRIT solid modeler is highly portable across different hardware platforms, including a whole variety of Unix machines, Apple iOS, and Microsoft Windows PC (using a whole variety of VC compilers). It is written in C and currently contains over half a million lines of code.
The system is designed for simplicity and is geared toward development and research, offering a Programmable User Interface (PUI, via the Python scripting language and an in-house IRIT interpreter). As such, the extensive graphical user interface (GUI) of IRIT is not an integral part of IRIT but is considered an extension package (See the Graphical User Interface for IRIT, GuIrit).
The modeling is performed using the main module/executable of the system which is called (surprise!) IRIT. A textual interface (i.e. the PUI) is available which provides the interaction interface. An interpreter (in either Python or in IRIT own scripting language) processes the user's command and executes them. The IRIT interpreter includes general mechanisms that are common in high level programming languages such as loops, conditional sentences, and functions. In addition, features that can be found in modern languages such as operator overloading and object oriented design are extensively used. The IRIT interpreter is best employed under the Emacs editor that forks out IRIT as a sub process (available both for Unix and Windows' PC). The IRIT abilities are fully exposed in the Python scripting language via a Python extension module the end use need to sampling include.
Version 11.0 of the IRIT
solid modeling system contains tools that can aid in research and development in the areas of computer aided geometric design and computer graphics. Here is a list of the features that can be executed via the IRIT
(or Python) interpreter:
- Full featured points/vectors/homogeneous matrices algebra by overloading the basic operators +,-,*,/,^.
- Freeform and polygonal based modeling. Constructors for basic primitives (box, cone, torus, etc.) are provided as polygons, as freeform spline surfaces, or as trivariate solids. Boolean operations between freeform and polygonal models are also supported.
- Freeform manipulation tools. Extensive support is provided for polynomial and rational Bezier and piecewise polynomial/rational NURBs curves, surfaces, trivariates, and multivariates. A large set of tools to manipulate these freeforms is provided and includes:
- Low level Constructors (direct control points control, etc.)
- Primitive Constructors (Box, sphere, cone, etc.)
- High Level Constructors (Sweep, Extrude, Boolean Sum, etc.)
- Merging and Profiling tools
- Subspace extraction (i.e. a curve from a surface or a trivariate)
- Interpolation and fitting
- Subdivision and Refinement
- Degree Raising
- Differentiation and Integration
- Symbolic Computation (Difference, Sum, and Product)
- Polygonal/Polyline approximation, for curves and surfaces
- Iso-surface polygonal approximation of trivariates
- Classical rendering as well as line art artistic drawing
- From Curve-curve to surface-trivariate compositions
- Offsets, Evolutes and K-orthotomics
- Area/Volume, Normal fields and Curvature Analysis
- Convex Hull/Kernel/Diameter
- Trimming (for surfaces)
- Intersections and Boolean operations
- The trivariate (polynomial and/or rational) B-spline and Bezier support also includes an interface that is geared toward iso-geometric analysis.
- In addition to the main module of IRIT, quite a few other tools are also provided:
- poly3d-h: A hidden line removal tooi for polygonal data sets
- ihidden: A hidden line removal tool for freeform entities
- irender: A scan conversion Z buffer rendering tool
- illustrt: A line drawing illustration tool
- aisosha, d, lineshad, izebra: Three more line drawing illustration tools
- xogldrvs, xgldrvs, xglmdrvs, xmtdrvs, x11drvs, wntdrvs, wntgdrvs, os2drvs, amidrvs: Display devices (and viewing programs at the same time) for Unix's Open GL and gl, gl, Motif, X11, X11, Motif, Apple iOS, Window 8, 7, Vista, XP, 2000, NT, Win98, Win95 (possibly with Open GL), OS2 2.x, 3.x, and AMIGA. All these drivers support the display of animation using animation curves
- irit23js, irit2dxf, irit2hgl, irit2igs, irit2iv, irit2nff, irit2obj, irit2off, irit2plg, irit2pov, irit2ps, irit2ray, irit2scn, irit2stl, irit2wgl, irit2wrl, irit2xfg: Filters to convert data files created by IRIT to DXF, HP GL, IGES, SGI Inventor, NFF format, OBJ format, OFF format, REND386, POVRAY, Postscript, Rayshade, SCN, STL, VRML, Xfig format, respectively
- 3ds2irit, dat2bin, dat2irit, dxf2irit, igs2irit, obj2irit, off2irit, stl2irit: Filters to convert from 3DS data files, from/to binary IRIT .ibd files, from DXF, IGES, OBJ, OFF, STL formats to IRIT .itd data files. dat2irit converts IRIT .itd data files to IRIT's solid modeling .irt scripts
- The IRIT solid modeler is actively used in various research (and licensed industrial) areas. Several research examples includes (See also Projects Gallery):
- Adaptive Iso-parametric curve Coverage. A coverage based on adaptive extraction of iso-parametric curves can be used for various purposes from tool-path for machining purposes to image rendering. This algorithm, that is exploiting symbolic computation, is implemented using the IRIT solid modeler and a tool named xgladap make use of the hardware of the graphics systems to provide real time rendering using adaptive iso-parametric.
- Surface Layout. A fabrication scheme to automatically compute an approximated layout of a free form surface, on the plane, as developable sheets, so it can be cut from planar sheets (such as paper or fabric) and stitched together to form an approximation of the original surface. Tools to automatically compute this layout were implemented using IRIT.
- Morphing. Using refinement and degree raising, two tools that are available in this system, different surfaces can be brought to a common function space and be continuously morphed or transformed from one to the other. Again, a successful implementation exists in IRIT.
- Matching. The inter-correspondence between two freeform curves is of importance in various applications from modeling (ruled and blend surfaces), through graphics (morphing), to computation geometry (offset computation).
- Illustrt. Line drawings is a neglected area of computer graphics. Illustrt is a tool developed with the aid of IRIT, and now is part of IRIT, to automatically generate line drawings with special effects such as width/size and intensity depth cueing, Z sorting, and end of edge clipping etc.
- C-Space Analysis. Precise (to within machine precision) 2- and 3-contact analysis between planar freeform shapes is conducted and the full C-space of the configuration can be derived, only to apply graph search algorithm for seeking option motion plans.
- Advance manufacturing. Tri-contact of a line with three different surface locations and bi-contact of a flat end tool contact with a surface are used to derive precise motion planning for wire-EDM and for 5-axis machining, that is also superior to the previously known state-of-the-art.
- Kinematics. A mapping between kinematic planning, including motion over and through freeform space and algebraic constraints allow the precise derivation of kinematic motion, even when freeform curves and surfaces are involved.
- Text deformation. Since outline font is represented using piecewise-Bezier curves, text in all modern typesetting software and operating systems, is compatible with geometric modeling tools. Composition of Bezier curves’ text over spline surfaces is exploited to create smooth and appealing deforming text, in real time, and including real time animation.
- Surface detailing. Adding details to surfaces was always a difficult problem and the computer graphics worlds solved it using texture, bump, and displacement mapping. We took this effort one step further and allowed the tiling of general 3D geometry (curves or surfaces) over freeform curves, surfaces and/or trivariates, either approximated or as precise composition. The result can be a highly detailed 3D surface texture or a highly detailed 3D structure embedded in a trivariate.
BECAUSE IRIT AND ITS SUPPORTING TOOLS AS DOCUMENTED IN THIS DOCUMENT ARE LICENSED FREE OF CHARGE FOR NON COMMERCIAL USE, I PROVIDE ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING, I GERSHON ELBER PROVIDE THE IRIT PROGRAM AND ITS SUPPORTING TOOLS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THESE PROGRAMS IS WITH YOU. SHOULD THE IRIT PROGRAMS PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL GERSHON ELBER, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR A FAILURE OF THE PROGRAMS TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY GERSHON ELBER) THE PROGRAMS, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
IRIT is a freeware solid modeler. It is not public domain since we hold copyrights on it. However, unless you are to sell or attempt to make money from any part of this code and/or any model you made with this solid modeler, you are free to make anything you want with it. In order to use IRIT commercially, you must license it first - contact us in such a case.
Attribution & Contribution
The IRIT modeling package was originally developed by Gershon Elber and is (C) Copyrighted to him. Continuing to develope this system, the vast majority of the implementation is done by Gershon Elber. Various people have donated their time/code to become part of the IRIT system. For possible contirbution options, see Contribution Rules.
Getting Your Own Copy of the IRIT Modeling System
The IRIT modeling package is free for noncommercial use and it is copyrighted to Gershon Elber (See Licensing).
One can get the complete set of Ansi C sources as well as documentation from here.
Some More Non Supported Contributions
- You can get an IRIT geometry-tiling using mesh/surface-trivariate composition plugin for Rhino from here.
- You can get an IRIT exporter plugin for NuGrap/PolyTrans from here.
- You can get a matlab interface to the multivariate constraints solver of irit from here.
- You can find a version of the GUI environment developed for IRIT and called GuIrit here.
- You can also get some more, non-supported, tools from here.