bradenmcd / openvrml

VRML runtime library
http://openvrml.org
GNU Lesser General Public License v3.0
18 stars 9 forks source link

OpenVRML library version 0.18.99 Copyright 1998, 1999, 2000 Chris Morley cmorley@vermontel.net Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Braden McDaniel braden@endoframe.com Portions Copyright SGI and others

Available from http://openvrml.org

See the "NEWS" file for a list of changes in this release.

About

OpenVRML is a portable toolkit including a C++ library for reading and displaying VRML and X3D files, an OpenGL renderer, and a Mozilla Web browser plug-in for viewing VRML and X3D content on the Internet.

License terms

The OpenVRML libraries comprising the VRML/X3D runtime ("libopenvrml") and the OpenGL renderer ("libopenvrml-gl") are available under the terms of the GNU Lesser General Public License (LGPL), version 3. These libraries incorporate some code that is available under "LGPL- compatible" licenses, which effectively means that the OpenVRML libraries are Free Software which may be used collectively according to the terms of the LGPL. The full text of the LGPL can be found in the file "COPYING.LESSER". Code used in these libraries under other terms (and available for reuse under the same terms) is as follows:

Package directory layout

/data /component : XML component definitions. /doc /manual : API documentation. /examples : Example programs. /ide-projects /Windows /VisualC9_0 : Microsoft Visual C++ 9.0 project files. /m4 : m4 macros used by the GNU build system. /models : Sample VRML models. /src /libopenvrml : Runtime library sources. /libopenvrml-gl : OpenGL renderer library sources. /mozilla-plugin : Mozilla plug-in sources. /node /vrml97 : VRML97 node implementation sources. /x3d-cad-geometry : X3D CAD Geometry component node implementation sources. /x3d-core : X3D Core component node implementation sources. /x3d-dis : X3D DIS component node implementation sources. /x3d-environmental-effects : X3D Environmental Effects component node implementation sources. /x3d-event-utilities : X3D Event Utilities component node implementation sources. /x3d-geometry2d : X3D Geometry2D component node implementation sources. /x3d-geospatial : X3D Geospatial component node implementation sources. /x3d-grouping : X3D Grouping component node implementation sources. /x3d-h-anim : X3D H-Anim component node implementation sources. /x3d-interpolation : X3D Interpolation component node implementation sources. /x3d-key-device-sensor : X3D Key Device Sensor component node implementation sources. /x3d-networking : X3D Networking component node implementation sources. /x3d-nurbs : X3D NURBS component node implementation sources. /x3d-rendering : X3D Rendering component node implementation sources. /x3d-shape : X3D Shape component node implementation sources. /x3d-texturing : X3D Texturing component node implementation sources. /openvrml-xembed : XEmbed control application sources. /openvrml-player : OpenVRML Player application sources. /script : Scripting engine module sources. /java : Script node Java API sources. /tests : Test programs.

Prerequisites

At a minimum, OpenVRML requires these libraries to build:

 Boost (at least 1.44)      <http://boost.org>
 libltdl (non-Windows only) <http://www.gnu.org/software/libtool/>
 libxml (non-Windows only)  <http://xmlsoft.org>

These libraries are packaged for many systems; so you should consult your operating system vendor if any of them is not already installed on your system. Otherwise, you can obtain them at the above URIs.

Note that Boost binaries built from the boost.org distribution, as well as some other distributions, apply a suffix to the library name that depends on the particular build configuration. When building OpenVRML with such binaries it may be necessary to set the variable BOOST_LIB_SUFFIX to match the suffix applied to the Boost binaries; refer to the output of "configure --help".

libltdl and libxml are not required on Microsoft Windows platforms. On Windows, OpenVRML uses the Win32 API for module loading and the XmlLite library for XML parsing. XmlLite is included with recent versions of the Microsoft Windows SDK.

Building OpenVRML is fairly demanding of system resources; especially, it seems, with modern versions of the GNU C++ compiler. It is recommended that 32-bit build hosts have at least 1 GB of system memory; the recommended minimum for 64-bit build hosts is 2 GB.

Optional dependencies

OpenVRML has several optional dependencies. If your system is missing any of these dependencies, first check to see if they are provided by your operating system vendor. If not, consult the URIs below.

 libpng                 <http://www.libpng.org/pub/png/libpng.html>
 libjpeg                <http://www.ijg.org>
 FreeType               <http://freetype.org>
 Fontconfig             <http://fontconfig.org>
 XULRunner              <https://developer.mozilla.org/En/XULRunner>
 Java Development Kit   <http://java.sun.com/j2se/>
 OpenGL/Mesa            <http://mesa3d.org>
 GTK+                   <http://gtk.org>
 GtkGLExt               <http://gtkglext.sourceforge.net>
 libcurl                <http://curl.haxx.se/libcurl/>
 D-Bus                  <http://www.freedesktop.org/wiki/Software/dbus>
 GNOME                  <http://gnome.org>
 SDL                    <http://libsdl.org>
 Doxygen                <http://doxygen.org>

OpenVRML can be built with reduced functionality which can avoid these dependencies. See the following section, "'configure' options", for details.

"configure" options

OpenVRML's build configuration script accepts a number of arguments that modify what features are built and/or what packages OpenVRML depends on.

--enable-exception-specs[=yes,no,nothrow] Modulate use of C++ exception specifications. By default, OpenVRML uses exception specifications wherever the set of exceptions thrown from a function can be constrained. This can aid in debugging; but in general it is likely to degrade performance. Exception specifications can be disabled altogether (using an argument of "no" or the option "--disable-exception-specs"); or, only empty (i.e., nonthrowing) exception specifications can be enabled (using an argument of "nothrow"). Some compilers may be able to use the nonthrowing exception specification as an optimization hint. Note that changing what exception specifications are applied changes the library ABI.

--enable-gecko-rpath Enable use of the Gecko runtime library directory -rpath flag. On many systems, the directory where libmozjs.so and other Gecko runtime libraries reside is not a path known to the dynamic linker. In such cases, applying an -rpath to executables is frequently a desirable alternative to setting LD_RUN_PATH before running them.

--disable-png-textures Disable support for rendering PNG images as textures. OpenVRML uses libpng to read PNG images.

--disable-jpeg-textures Disable support for rendering JPEG images as textures. OpenVRML uses libjpeg to read JPEG images.

--disable-render-text-node Disable support for rendering Text nodes. The node is still parsed, and events to and from it are processed; but no text is rendered. By default OpenVRML uses Fontconfig for font discovery and FreeType to get font data.

--disable-script-node-javascript Disable support for JavaScript in the Script node. By default, OpenVRML uses the Mozilla JavaScript library to execute JavaScript.

--disable-script-node-java Disable support for Java in the Script node. "configure" searches for a Java Native Interface (JNI) implementation, which may be provided either by a Java Development Kit or the GNU Compiler for Java (gcj). If using a Java Development Kit, you will probably need to supply the include and library directories using CPPFLAGS and LDFLAGS, respectively. See the file INSTALL for general information on using these variables.

--disable-gl-renderer Do not build the GL renderer. OpenVRML's GL renderer depends on OpenGL/Mesa.

--disable-xembed Do not build the XEmbed control. This is an out-of-process component that provides a VRML/X3D browser that can be used in an XEmbed container. This depends on GTK+. It also requires that the GL renderer be built.

--disable-player Do not build openvrml-player. This is a GNOME application that hosts the XEmbed control. It depends on GNOME (libgnomeui) and libcurl.

--disable-mozilla-plugin Do not build the Mozilla plug-in. The Mozilla plug-in depends on GTK+ and, of course, a Mozilla-based browser. It also requires that the XEmbed control be built.

--disable-examples Do not build the example programs. The example programs depend on SDL.

--with-x Passing the argument "--without-x" to "configure" will allow OpenVRML to be built without depending on the X Windowing System. This option is really only useful when building OpenVRML on platforms where X is available alongside another windowing system (e.g., Cygwin or Mac OS X with X installed).

--with-libjs Use the stand-alone SpiderMonkey distribution. By default, "configure" looks for SpiderMonkey as it is distributed with a Mozilla Gecko-based Web browser (i.e., libmozjs). Passing the argument "--with-libjs" causes "configure" to look instead for the stand-alone distribution of SpiderMonkey (i.e., libjs).

Significant preprocessor symbols

Certain code in OpenVRML is compiled conditionally depending on what symbols have been defined for the preprocessor. The "configure" script will add the appropriate compiler and preprocessor flags for you; in general you should use the options to "configure" documented in the previous section rather than define these symbols in CPPFLAGS. These symbols are documented here primarily for the benefit of persons trying to compile OpenVRML without the GNU build tools.

OPENVRML_ENABLE_PNG_TEXTURES Include support for rendering PNG images as textures. Requires libpng.

OPENVRML_ENABLE_JPEG_TEXTURES Include support for rendering JPEG images as textures. Requires libjpeg.

OPENVRML_ENABLE_RENDER_TEXT_NODE Include support for rendering text using the Text node. Requires fontconfig and FreeType.

OPENVRML_JNI_CONST Define to "const" if "const" should be used in JNI function signatures; define to empty otherwise.

Installation

Refer to the file "INSTALL" for detailed installation instructions.

Usage

To write programs that use the OpenVRML libraries, refer to the API documentation in the "doc/manual" subdirectory of the distribution and the example programs in the "examples" subdirectory.

libopenvrml loads data files and plug-ins from known locations once it is installed. If they are defined, libopenvrml will prefer the locations specified by these environment variables:

OPENVRML_DATADIR Directory where libopenvrml looks for architecture-independent data.

OPENVRML_NODE_PATH A search path where libopenvrml looks for node implementations.

OPENVRML_SCRIPT_PATH A search path where libopenvrml looks for scripting engine implementations.

The most common use case for setting these environment variables is running sdl-viewer or openvrml-xembed from the build directories. For example, if running a Bash shell and building in a subdirectory "build" where the current directory is the root of the OpenVRML distribution:

$ OPENVRML_DATADIR=$(pwd)/data \ OPENVRML_NODE_PATH=$(pwd)/build/src/node \ OPENVRML_SCRIPT_PATH=$(pwd)/build/src/script \ ./build/examples/sdl-viewer models/rotation_toy.wrl

openvrml-xembed is installed as a D-Bus service, meaning that it can be activated on-demand by applications that need it (like openvrml-player and the Mozilla plug-in). In order for this to work, OpenVRML must be installed to the same prefix as the system's D-Bus installation.

Similarly, if OpenVRML is configured to be installed to the same prefix as a Mozilla-based browser is installed on the system, "make install" will install the Mozilla plug-in to the browser's plug-in directory. This should be sufficient to enable support for the "model/vrml" and "model/x3d-vrml" media types in the browser. Entering "about:plugins" in the URL entry bar of a Mozilla-based browser will show a listing of successfully installed plug-ins.

To run openvrml-player or the Mozilla plug-in from the build directories, you must first start an openvrml-xembed process. Once openvrml-xembed has been installed, D-Bus will start it automatically as needed. Additionally, to run the plug-in from the build directories, a symbolic link to the plug-in module "openvrml.so" must be made in the Mozilla plug-in directory.

When running openvrml-player from the build directories, you must specify the location of the GTK+ UI XML files using the environment variable OPENVRML_PLAYER_UIDIR; e.g.:

$ OPENVRML_PLAYER_UIDIR=$(pwd)/src/openvrml-player \ ./build/src/openvrml-player/openvrml-player

Conformance

OpenVRML aspires to full conformance to the VRML97 specification. It isn't there yet, but much of the spec is supported, and OpenVRML will continue to get better.

Bug reports

Please report any bugs you encounter using OpenVRML's bug tracking system:

 <https://sourceforge.net/apps/trac/openvrml/newticket>

Note that you will need to log into SourceForge before reporting a bug.

Mailing lists

Two mailing lists are maintained:

Get involved

We're always grateful for help in improving OpenVRML. Consult the list of active tickets:

 <https://sourceforge.net/apps/trac/openvrml/report/1>

Unassigned tasks are up for grabs; but please post to the openvrml-develop mailing list to alert others of your intention to take a task. This helps avoid duplicated effort. If you do not see the task you'd like to pursue listed, but you think the library could benefit from your contribution, post a proposal to the openvrml-develop mailing list.