Subject: SGI inventor Frequently Asked Questions (FAQ)
From: [email-masked] (The SGI FAQ group)
Date: 20 May 1994 06:00:20 GMT
Newsgroups: comp.sys.sgi.misc,comp.answers,news.answers

Archive-name: sgi/faq/inventor
Last-modified: Sun May  1 10:47:20 CDT 1994

    SGI inventor Frequently Asked Questions (FAQ)

This is one of the Silicon Graphics FAQ series, which consists of:

    SGI admin FAQ - IRIX system administration
    SGI apps FAQ - Applications & compilers
    SGI graphics FAQ - Graphics and user environment customization
    SGI hardware FAQ - Hardware
    SGI inventor FAQ - IRIS Inventor
    SGI misc FAQ - Introduction & miscellaneous information
    SGI performer FAQ - IRIS Performer
    SGI pointer FAQ - Pointer to the other FAQs

Read the misc FAQ for information about the FAQs themselves.  Each FAQ
is posted to comp.sys.sgi.misc and to the news.answers and comp.answers
newsgroups (whose purpose is to store FAQs) twice per month.  If you
can't find one of the FAQs with your news program, you can get it by
anonymous FTP from one of these sites:

    rtfm.mit.edu:/pub/usenet/comp.sys.sgi.misc/
    rtfm.mit.edu:/pub/usenet/news.answers/sgi/faq/
    rtfm.mit.edu:/pub/usenet/comp.answers/sgi/faq/
    viz.tamu.edu:/pub/sgi/faq/

Note that rtfm.mit.edu is home to many other FAQs and informational
documents, and is a good place to look if you can't find an answer
here. If you can't use FTP, send mail to [email-masked] with
the command 'send usenet/news.answers/ftp-list/faq' on a line by itself
in the text, and it will send you a document describing how to FTP by
mail. You can also read a hypertext version of the FAQs at

    http://www.cis.ohio-state.edu/hypertext/faq/usenet/sgi/top.html

The SGI FAQs are freely distributable and we encourage wide circulation.
The contents are accurate as far as we know, but the usual disclaimers
apply. Please send additions and changes to [email-masked].

Topics covered in this FAQ:
---------------------------
   -1- What is Open Inventor?
   -2- What is IRIS Inventor?
   -3- Is Inventor a format for 3D data?
   -4- Can I use Inventor to create 3D objects?
   -5- Is Inventor a user interface toolkit?
   -6- Is there a performance cost using a software layer on top of GL?
   -7- Does Inventor require C++?
   -8- Does Inventor work with the GNU C++ compiler?
   -9- Does Inventor have a Fortran or Ada API?
  -10- Where can I get detailed, technical information on Inventor?
  -11- How much does Inventor cost?
  -12- How can I order Inventor software and/or documentation?
  -13- How can I learn Inventor Programming?
  -14- What version of Open Inventor runs on which version of IRIX?
  -15- Why isn't Open Inventor available on the VGX/PI/GTX or GT?
  -16- What new features are in Open Inventor that weren't in IRIS
       Inventor?
  -17- Will my IRIS Inventor programs stop working if I install Open
       Inventor?
  -18- How hard is it to port from IRIS Inventor to Open Inventor?
  -19- When I compile my Inventor program, I get an error in
       SoDebugError.h.
  -20- What version of IRIS Inventor runs on which version of IRIX?
  -21- Will I be automatically upgraded to Open Inventor if I have IRIS
       Inventor?
  -22- Why do I get errors compiling the Inventor sample programs?

----------------------------------------------------------------------

Subject:    -1- What is Open Inventor?
Date: 30 Apr 94 15:45:00 CDT

Open Inventor is an object-oriented 3D toolkit offering a comprehensive
solution to interactive graphics programming problems. It presents a
programming model based on a 3D scene database that dramatically simplifies
graphics programming. It includes a rich set of objects such as cubes,
polygons, text, materials, cameras, lights, trackballs, handle boxes, 3D
viewers, and editors that speed up your programming time and extend your
3D programming capabilities. 

Open Inventor: 
    o is built on top of OpenGL 
    o defines a standard file format for 3D data interchange 
    o introduces a simple event model for 3D interaction 
    o provides animation objects called Engines 
    o provides high performance object picking 
    o is window system and platform independent 
    o supports PostScript printing 
    o encourages programmers to create new customized objects 
    o is fun to use 

------------------------------

Subject:    -2- What is IRIS Inventor?
Date: 30 Apr 94 15:45:00 CDT

IRIS Inventor was the first release of Inventor; it is also known as
Inventor 1.0 (Open Inventor is Inventor 2.0). It is built on top of IRIS
GL rather than OpenGL, and has fewer features. 

------------------------------

Subject:    -3- Is Inventor a format for 3D data?
Date: 30 Apr 94 15:45:00 CDT

Inventor defines a powerful, extensible format for 3D objects and scenes.
The Inventor format is the standard for 3D objects on Silicon Graphics
machines, and may become the standard for all machines. 

However, Inventor is more than a 3D object file format; it is a complete
toolkit for writing interactive, 3D applications. 

------------------------------

Subject:    -4- Can I use Inventor to create 3D objects?
Date: 30 Apr 94 15:45:00 CDT

Inventor is for programmers writing 3D applications, and does not directly
provide any way for users to create 3D objects. Several Inventor applications
have been written that create 3D objects.

Showcase 3.0, which is bundled with IRIX, is a fairly simple example.  A much
more sophisticated modeller called Movieola built on top of Inventor is
available from Radiance Software International. 

------------------------------

Subject:    -5- Is Inventor a user interface toolkit?
Date: 30 Apr 94 15:45:00 CDT

Yes and no. Inventor contains mostly 3D objects. There is little in the way
of conventional user interface objects such as buttons, dialogs, and menus.
However, Inventor includes a full-fledged event model, a framework designed
for 2D or 3D user interaction, and some manipulator objects for 3D user
interface building. Note that the Inventor Xt Component and Utility Library
includes some traditional 2D user interface widgets. 

------------------------------

Subject:    -6- Is there a performance cost using a software layer on
                top of GL?
Date: 30 Apr 94 15:45:00 CDT

Sometimes. Note that few GL programs achieve peak graphics performance. This
is because most applications have natural application overhead, and also
because many programmers lack a thorough understanding of the details and
eccentricities of GL. If you are writing a simple display-only, immediate-mode
GL program, then it will run faster using straight GL, but not much. However,
if your program has scene traversal, interactivity, picking, bounding box
calculations, and other object space tasks, then Inventor will perform better
for you. This is because Inventor is specially tuned to make optimal use of
GL on each SGI machine. Furthermore, Inventor supports render caching which
results in peak GL performance in most cases. 

We have found that in many cases, Inventor programs run FASTER than the
original GL program, and that the programmer productivity increases easily
outweigh the overhead of the toolkit. 

------------------------------

Subject:    -7- Does Inventor require C++?
Date: 30 Apr 94 15:45:00 CDT

No. You can use the C API and never see or use C++. However, subclassing to
extend the toolkit does require C++. 

------------------------------

Subject:    -8- Does Inventor work with the GNU C++ compiler?
Date: 30 Apr 94 15:45:00 CDT

No, Inventor requires SGI's C++ compiler. The GNU C++ compiler and SGI's C++
compiler produce incompatible code, and Silicon Graphics does not ship an
Inventor library compatible with GNU C++. 

------------------------------

Subject:    -9- Does Inventor have a Fortran or Ada API?
Date: 30 Apr 94 15:45:00 CDT

No. 

------------------------------

Subject:   -10- Where can I get detailed, technical information on
                Inventor?
Date: 30 Apr 94 15:45:00 CDT

The Inventor Mentor, written by Josie Wernecke, is published by Addison-Wesley
and is available in technical bookstores (ISBN 0-201-62495-8). 

------------------------------

Subject:   -11- How much does Inventor cost?
Date: 30 Apr 94 15:45:00 CDT

If you want to write Inventor applications on SGI machines, you need the
Inventor developer's option. This option costs $995 for the Open Inventor
release and $495 for the IRIS Inventor releases. There are no royalties for
distributing applications based on Inventor. 

Every SGI machine is shipped with the libraries needed to run Inventor
applications (they are part of the inventor_eoe installation subsystem);
users that want to run Inventor applications on SGI machines do not need
to pay anything extra. 

------------------------------

Subject:   -12- How can I order Inventor software and/or documentation?
Date: 30 Apr 94 15:45:00 CDT

Call your local SGI sales representative or 1-800-800-7441 to order. 

------------------------------

Subject:   -13- How can I learn Inventor Programming?
Date: 30 Apr 94 15:45:00 CDT

SGI Technical Education offers a week-long course in Inventor Programming.
Call 1-800-800-4SGI to sign up. 

------------------------------

Subject:   -14- What version of Open Inventor runs on which version of
                IRIX?
Date: 30 Apr 94 15:45:00 CDT

Inventor 2.0 runs on IRIX 5.2 and higher only. 

------------------------------

Subject:   -15- Why isn't Open Inventor available on the VGX/PI/GTX or
                GT?
Date: 30 Apr 94 15:45:00 CDT

Open Inventor requires OpenGL, which is not currently available on older
SGI machines. 

------------------------------

Subject:   -16- What new features are in Open Inventor that weren't in
                IRIS Inventor?
Date: 30 Apr 94 15:45:00 CDT

Some of the main features that are new with Open Inventor are: 

   Open Inventor Licensing 
      Open Inventor 2.0 represents the first release of Inventor that
      is licensed to third parties to run on other platforms (e.g., Sun,
      HP). 
   The Inventor Mentor and The Inventor Toolmaker 
      Since Open Inventor has been licensed to run on other
      platforms, the programming guides have been published and
      distributed by Addison-Wesley Publishing Company. The
      books are typically available through bookstores that offer a
      good technical book selection. The Inventor Mentor is volume
      I of the programming guide and describes the fundamentals
      of Inventor programming (ISBN 0-201-62495-8). The
      Inventor Toolmaker is volume II and provides advanced
      information for programmers who want to extend Inventor. 
   Automatic caching 
      Open Inventor supports intelligent, automatic caching on the
      parts of the database that are not changing. Previously,
      caching was either `on' or `off' (set at SoSeparator nodes).
      Inventor 2.0 supports a third setting, `auto'. This
      SIGNIFICANTLY improves performance and simplifies
      programming. 
   Error handling 
      Inventor now supports a formal error handling system. Note
      that the API was not affected by this change. All Inventor
      error messages are now posted to an SoError class. The
      application can supply its own error handlers, thus making it
      possible to route error messages to dialogs, as well as stderr or
      stdout. All handlers are called by the SoError::handleError()
      method. When debugging, you can set a breakpoint on this
      method to stop right before an error is handled. 
   Geometry primitives and SoCallbackAction 
      A new feature has been added to the generic Inventor
      traversal action, SoCallbackAction, that allows for shapes to
      return primitives (triangles, lines, points, normals, texture
      coords, etc.) describing the object. 
   Naming 
      Nodes, paths, and engines can have names (strings)
      associated with them. There are methods on
      SoBase::setName() and getName() to set/get names. To search
      for objects by name, see SoNode::getByName(),
      SoPath::getByName(), and SoEngine::getByName(). Also, the
      SoSearchAction can now search based on the name. 
   OpenGL rendering 
      Open Inventor 2.0 uses OpenGL for all rendering; there are no
      calls to Iris GL in Inventor 2.0. If you have written derived
      node classes in 1.0, the Iris GL code must be re-written to
      OpenGL. 
   Printing 
      Printing has been completely reimplemented using OpenGL
      rendering to an off-screen image. All rendering features can
      now be printed (e.g. textures and transparency). 
   Render Culling 
      Inventor now supports object level culling to the viewport.
      Culling, like caching, is controlled by SoSeparators. 
   Unknown nodes 
      Inventor 2.0 reads unrecognized node classes from file and
      attempts to use them. When an unknown class is read,
      Inventor will search for an accompanying DSO file and use it,
      (uses environment variable LD_LIBRARY_PATH to search
      for file classname.so) If none is found, an SoUnknownNode or
      SoUnknownEngine is created and used instead. 

      Inventor 2.0 also supports a special option for nodes called
      alternateRep. It can store a scene graph composed of standard
      Inventor nodes which will be rendered as a stand-in for your
      unrecognized node. During writing, the node or engine is
      written back out. Note that this mechanism works only with
      Inventor 2.0 files; unrecognized nodes in an Inventor 1.0 file
      will still generate a read error. This mechanism allows user
      subclassed nodes to be exportable, renderable, and re- usable.

   SoEngine 
      A new class of objects used for animation and behavior.
      Engines are lightweight objects that are connected between
      nodes, the clock, and other engines to form interesting
      behaviorial objects (e.g. spinning windmill). Engines can be
      written to file along with the 3d scene. 

------------------------------

Subject:   -17- Will my IRIS Inventor programs stop working if I install
                Open Inventor?
Date: 30 Apr 94 15:45:00 CDT

No. The Inventor 2.0 run-time system (inventor_eoe) contains a complete set
of compatibility libraries that will allow existing IRIS Inventor applications
to continue to work. If necessary, it is possible to install both the Inventor
2.0 and Inventor 1.1.2 development environments on the same machine; see the
Inventor 2.0 release notes for details. 

------------------------------

Subject:   -18- How hard is it to port from IRIS Inventor to Open
                Inventor?
Date: 30 Apr 94 15:45:00 CDT

Most Inventor programs will be fairly easy to port. The Inventor 2.0 release
notes contain detailed information on converting your application. Most of your
porting job will be fixing minor syntax changes (e.g. some length() methods
were renamed getLength() for consistency with the rest of the toolkit) and
fixing #include lines for files under /usr/include/Inventor that were moved
around (e.g. all of the Xt components are now under /usr/include/Inventor/Xt). 

Inventor programs that contain a lot of IRIS GL code or that made extensive
use of Inventor subclassing will be more difficult to port, since they will
have to be ported to OpenGL and since the internal structure of Inventor
underwent some major changes. 

------------------------------

Subject:   -19- When I compile my Inventor program, I get an error in
                SoDebugError.h.
Date: 30 Apr 94 15:45:00 CDT

You, or something you #include, are #include'ing the IRIS GL header file
(gl/gl.h). It does: "#define WARNING 2", which conflicts with the enum value
called "WARNING" in SoDebugError. You cannot mix Open Inventor with IRIS GL
anyway (because you cannot mix OpenGL with IRIS GL), so you should fix your
program so it doesn't try to #include <gl/gl.h> it should use <GL/gl.h> the
OpenGL include file. 

------------------------------

Subject:   -20- What version of IRIS Inventor runs on which version of
                IRIX?
Date: 30 Apr 94 15:45:00 CDT

       IRIX     IRIS Inventor Version
     --------------------------------
      3.3.*   | (Inventor is not available for IRIX 3.*)
      4.0.*   | 1.0.1
      5.0.1   | (bad release... do not use)
      5.1.*   | 1.1.2
      5.2.*   | Open Inventor 2.0 (1.1.2 on VGX/GTX/GT/PI)

------------------------------

Subject:   -21- Will I be automatically upgraded to Open Inventor if I
                have IRIS Inventor?
Date: 30 Apr 94 15:45:00 CDT

Customers with software maintenance contracts that have purchased the
Inventor 1.0 developer's option will receive the Inventor 2.0 developer's
option when they receive IRIX 5.2. 

------------------------------

Subject:   -22- Why do I get errors compiling the Inventor sample
                programs?
Date: 30 Apr 94 15:45:00 CDT

Inventor 1.0.1 requires C++ version 2.*. If you have C++ version 3.* installed
on your system, you must specify the -v2 flag to compile Inventor programs. 

Inventor 1.1.2 and Inventor 2.0 work with C++ 3.*. 

------------------------------

End of sgi/faq/inventor Digest
******************************
-- 
The SGI FAQ group                                [email-masked]
Finger us for info on the SGI FAQs, or look in viz.tamu.edu:/pub/sgi.