368 lines
14 KiB
Plaintext
368 lines
14 KiB
Plaintext
The following is a very basic intro of how to get the OSG going under Linux,
|
|
FreeBSD, IRIX, Windows and Mac. Each intro mentions OpenSceneGraph-Data, it is
|
|
recommended that you also download it alongside this source distribution.
|
|
|
|
The scene graph depends upon Standard C++, STL and OpenGL so you need a C++
|
|
compiler up to the task and OpenGL or Mesa installed. The viewer depends upon
|
|
GLUT which you'll need to download and install from the GLUT website. The
|
|
OSG has it own native ascii file format, and .rgb image reader inbuilt which
|
|
allows you read the example data with any dependencies other than C++, STL and
|
|
OpenGL.
|
|
|
|
The OSG also has a set of plug-ins which support non-native 3d database and
|
|
image formats, several have no dependencies on external libraries (flt,3ds,obj,
|
|
lwo,dw, tga & pic), while others (pfb,jpeg,gif,tiff) require other libraries
|
|
to be installed to compile them. If you don't already have them installed then
|
|
don't worry, you'll still be able to use the OSG. The core osg library and
|
|
viewer has been designed to load the plug-ins at run-time only and if they
|
|
are required to load a specific data set. If you don't need them for your
|
|
datasets then it won't matter that you haven't been able to compile
|
|
all the plug-ins. A full list of dependencies and where to download the
|
|
required libraries are listed in the index.html.
|
|
|
|
If you're coming across the OSG for the first time and want to get started
|
|
quickly, go right ahead and follow the compilation instructions. You can
|
|
always later download the libraries which the plug-ins require if you
|
|
eventually need them.
|
|
|
|
If you haven't already checked it out, for a list of distribution contents,
|
|
contacts and links to documentation check out index.html.
|
|
|
|
|
|
Environmental settings under Unix
|
|
---------------------------------
|
|
|
|
These enviromental settings are useful to help develop with an
|
|
entirely local copy of the osg. However, once you've done a
|
|
make install you can make do without all of these, although
|
|
OSGFILEPATH is still useful as the osgDB library uses it for
|
|
picking locating datafiles.
|
|
|
|
Add the following to your .cshrc :
|
|
|
|
setenv OSGHOME <location of OSG root>
|
|
setenv OSGDATA <location of OSG data root>
|
|
setenv OSGFILEPATH ./:${OSGDATA}:${OSGDATA}/Images:
|
|
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${OSGHOME}/lib
|
|
setenv PATH ${PATH}:${OSGHOME}/bin
|
|
|
|
Or the following if you're using a sh compatible shell :
|
|
|
|
export OSGHOME=<location of OSG root>
|
|
export OSGDATA=<location of OSG data root>
|
|
export OSGFILEPATH=./:${OSGDATA}:${OSGDATA}/Images:
|
|
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OSGHOME}/lib
|
|
export PATH=${PATH}:${OSGHOME}/bin
|
|
|
|
note: under IRIX you'll need to use LD_LIBRARYN32_PATH instead
|
|
of LD_LIBRARY_PATH.
|
|
|
|
Compiling under Linux
|
|
---------------------
|
|
|
|
To compile, from the OSG root directory, type:
|
|
|
|
make
|
|
|
|
Note, make should automatically detect linux and copy the
|
|
Make/makerules.linux and Make/makedefs.linux over the
|
|
default Make/makerules and Make/makedefs. If autodetection
|
|
does not work type 'make linux'.
|
|
|
|
And if you wish to install the OSG to /usr/include/ &
|
|
/usr/lib then su root, and type:
|
|
|
|
make install
|
|
|
|
or
|
|
|
|
make instlinks
|
|
|
|
To get full details of make options, type:
|
|
|
|
make help
|
|
|
|
|
|
Compiling under FreeBSD
|
|
-----------------------
|
|
|
|
To compile, from the OSG root directory, type :
|
|
|
|
make freebsd
|
|
|
|
And if you wish to install the OSG to /usr/include/ &
|
|
/usr/lib then su root, and type:
|
|
|
|
make install
|
|
|
|
or
|
|
|
|
make instlinks
|
|
|
|
To get full details of make options, type:
|
|
|
|
make help
|
|
|
|
|
|
Compiling under IRIX
|
|
--------------------
|
|
|
|
When setting up environmental variables, specified above,
|
|
LD_LIBRARY_PATH should of course be replaced by LD_LIBRARYN32_PATH.
|
|
|
|
Since the OSG uses Standard C++ features such as STL it is important
|
|
to have an up to date version of the MIPSPro compilers. The library
|
|
has been tested under MIPSPro7.3 & MIPSPro7.2.1, and *may* compile
|
|
under previous versions but has yet to be tested. It is recommended
|
|
to use MIPSPro7.3.1.1m.
|
|
|
|
When compiling with MIPSPro7.2.1 you will need to use STLport for its
|
|
proper implementation of Standard C++ iostreams which are missing
|
|
from compiler own implementation. See the bottom of this file for
|
|
further information on STLport.
|
|
|
|
To compile, from the OSG root directory, type :
|
|
|
|
make
|
|
|
|
Note, make should automatically detect IRIX and copy the
|
|
Make/makerules.irix.std and Make/makedefs.irix.std over the
|
|
default Make/makerules and Make/makedefs. If autodetection
|
|
does not work type 'make irix' for MIPSPro7.3 or 'make irix.old'
|
|
for MIPSPro7.2.1 and before.
|
|
|
|
And if you wish to install the OSG to /usr/include/ &
|
|
/usr/lib then su root, and type:
|
|
|
|
make install
|
|
|
|
or
|
|
|
|
make instlinks
|
|
|
|
To get full details of make options, type:
|
|
|
|
make help
|
|
|
|
|
|
Compiling under Windows
|
|
-----------------------
|
|
|
|
The Microsoft Visual C++ 6.0 workspace file is VisualStudio.dsw located
|
|
in the VisualStudio\ below the OSG this root directory. The OSG will
|
|
compile with the basic VisualC++6.0, but its recommended that you use
|
|
Service Pack 4 to fix MS compiler bugs which affect the OSG. Even
|
|
Service Pack 4 does not completely fix MSVC bugs associated with STL, so
|
|
it is recommended that you also use STLPort which can be downloaded
|
|
from http://www.stlport.org since they actually know how to write a
|
|
STL library and have done a rather good job at it. Notes on using
|
|
STLport at the bottom of this file.
|
|
|
|
The OSG is composed of a number of libraries and executables, to get
|
|
running you'll need at least to compile osg,osgUtil,osgDB,osgGLUT,
|
|
dot_osg and sgv. The rest of the libraries and executables are
|
|
optional and can be compiled if you need them. It may well be simplest
|
|
to do a batch build of all the libraries and executables in the
|
|
distribution, some of the plug-ins which support non native file
|
|
formats may not compile due to dependencies on other libraries (such
|
|
as libpng), you can ignore these compilation errors unless you need
|
|
to load the related file types.
|
|
|
|
To execute the viewer the file path for the .dll's and .exe, both compiled
|
|
into the OSG's bin directory, need to be setup, such as by adding the PATH
|
|
to your autoexec.bat, its also useful to add the OSGFILEPATH to your
|
|
autoexec.bat to help the location of datafiles. For example :
|
|
|
|
SET OSGFILEPATH=D:\OpenSceneGraph-Data;D:\OpenSceneGraph-Data\Images
|
|
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\Oglsdk\lib;D:\osg-0.8.40\bin;
|
|
|
|
To help compilation of the image reader plugins, various image libraries
|
|
have been zipped up for your convienice, your find these on the OSG
|
|
release download directory.
|
|
|
|
|
|
Compiling under MacOS 9
|
|
-----------------------
|
|
|
|
The Microwerks Codewarrior workspace files can be found under the
|
|
Microwerks directory. Further details to be fleshed out since
|
|
Mac port is in its early stages and is not uptodate with the
|
|
current release. To get it compiling you will have to use these
|
|
Codewarrior files as a starting place. If you get it running and
|
|
have time to maintian the port please email robert@openscenegraph.org.
|
|
|
|
|
|
Compiling under MacOS X (instructions written by Phil Atkin)
|
|
------------------------------------------------------------
|
|
|
|
For anyone who's ever used a Unix box for development it really is so simple
|
|
it's insane.
|
|
|
|
You need to have installed the Developer tools from the CD that comes for
|
|
free with OS X. This gives you compilers, headers, frameworks - stuff like
|
|
GLUT and Carbon for developers.
|
|
|
|
Everything is done command-line, so you need to get to the underlying OS
|
|
rather than the Aqua gloss. The Mac comes with an app in
|
|
Applications/Utilities called Terminal - open up any Finder window (e.g
|
|
double-click on your hard disk icon), click on the Applications icon at the
|
|
top right of the window, then click on the Utilities folder to get access to
|
|
all the grubby apps which give away the real OS roots underneath the shiny
|
|
paintwork. Anyone developing will need Terminal so much they should put it
|
|
in their Dock. You do that by grabbing the icon of the app in the Utilities
|
|
folder and dragging it to the bottom of your screen, at which point the
|
|
other app icons in the Dock slide away to leave a gap which when you release
|
|
the mouse button leaves Terminal permanently available, just a mouse click
|
|
away on your desktop. When you start Terminal it brings you up a csh
|
|
running under Darwin (which is the BSD-with-knobs-on that underlies OS X),
|
|
and does a cd to ~ (otherwise /Users/username of whoever you are logged in
|
|
as, as far as the Finder in OS X is concerned you are in the Users/username
|
|
folder of the harddisk the machine booted from).
|
|
|
|
Then you are in Unix land, and it's all very familiar.
|
|
|
|
You will need a .cshrc file with $OSGHOME (as in your instructions), and
|
|
this is a filename that the Mac won't let you see from the Finder or in fact
|
|
generate from an app, so I used vi to create that. Then I just went
|
|
|
|
cd $OSGHOME
|
|
make clean
|
|
make macosx
|
|
|
|
And it sounds too good to be true but it is that simple. It's worth doing
|
|
some editing on the Makefiles in the Plugins and Demos directories so that
|
|
it only tries to build a subset, otherwise the developer will have to dig
|
|
out the support projects like jpeg etc. I have only built up to now sgv,
|
|
hangglide, osgcube, osgreflect, osgviews and in the Plugins have built osg
|
|
rgb 3ds and a couple others - will check and get back to you.
|
|
|
|
Tricky bit -
|
|
Installing the libdl.a is more trouble, as you have to enable the root
|
|
account on the machine, which by default is switched off as the machines
|
|
ship for security reasons. Rather than typing in and risking error through
|
|
paraphrase, here is a link to a site which tells you how to do this -
|
|
|
|
http://www.macos.utah.edu/Documentation/macosx/security/enablerootuser.html
|
|
|
|
Or alternately
|
|
|
|
http://www.thinkmacintosh.com/osxfaq.html
|
|
|
|
|
|
One you have a root account enabled, you have to su root you cd to the
|
|
directory which the Fink installer generates, and it puts libdl.a and the
|
|
associated .h files in sensible system places so the compiler just finds
|
|
them.
|
|
|
|
There is one oddball problem - if you rely on Path to find the resulting
|
|
executables, a weird Core Graphics error occurs - so even though I set up my
|
|
path to include $(OSGHOME)/bin, and when I cd to $OSGHOME and type for
|
|
example hangglide, the application starts fine (so it is in the path), but
|
|
at the point it tries to use GLUT to open a window it falls over with a CGS
|
|
error (which is I think Core Graphics System). If you explicitly go
|
|
bin/hangglide it works fine. Weird, it may be an OS X 10.04 issue which is
|
|
gone in 10.1 or it may be a weirdy in the Mac GLUT implementation, but
|
|
forewarned is forearmed.
|
|
|
|
Running the demos
|
|
-----------------
|
|
|
|
To run the viewer demo type (you made need to type rehash first under Unix) :
|
|
|
|
sgv dumptruck.osg
|
|
sgv cow.osg
|
|
sgv e-s-bike.osg
|
|
|
|
sgv lz.rgb
|
|
|
|
sgv Spinnercar.flt
|
|
sgv Alley.3ds
|
|
sgv town_ogl_pfi.pfb
|
|
|
|
Other run other demos type
|
|
|
|
osgcube
|
|
|
|
or
|
|
|
|
hangglide
|
|
hangglide master.flt
|
|
|
|
or
|
|
|
|
osgreflect cow.osg
|
|
|
|
or
|
|
|
|
osgconv Alley.3ds Alley.osg
|
|
|
|
or
|
|
|
|
osgtexture lz.rgb tree.rgb
|
|
|
|
or
|
|
|
|
osgimpostor cow.osg
|
|
|
|
or
|
|
|
|
osgviews glider.osg
|
|
|
|
|
|
(Note: the file is picked up by checking the directories pointed to
|
|
by $OSGFILEPATH)
|
|
|
|
|
|
Plug-in dependencies
|
|
--------------------
|
|
|
|
You may have compile errors if you don't have all the required libraries,
|
|
especially for the plugins. As long as the core libraries osg, osgUtl,
|
|
osgGLUT and sgv have compiled you won't have any problems running the osg
|
|
itself but may not be able to use some non-native data formats. To get
|
|
the problematic plugins working you may need to download support libraries
|
|
such as libtiff, libjpeg etc. For further details see index.html.
|
|
|
|
Using STLport under Windows
|
|
---------------------------
|
|
|
|
The OSG has been tested under Windows with STLport-4.5, which allows
|
|
the users to configure the type of STL support required for STLport
|
|
itself. The key configuration that the OSG needs to do is to enable
|
|
the wrapping of MS's own iostreams, than using STLport's own
|
|
implementation. The later is not required because this has not be
|
|
problematic under Windows, it is only the container classes and
|
|
algorithms that need replacing (thanks to MS's utterly hopeless
|
|
implementation of these). Using the iostream wrappping option means
|
|
the STLport can just be used on your include path, there is no need to
|
|
compile STLport itself, or link into any special libraries.
|
|
|
|
To configure STLport simply comment IN (its commented out by default),
|
|
the follwing line from STLport-4.5/stlport/stl_user_config.h so it
|
|
should look:
|
|
|
|
# define _STLP_NO_OWN_IOSTREAMS 1
|
|
|
|
Then configure the includes path in Visual Studio to pick up on STLport:
|
|
|
|
Select the "Tools" menu.
|
|
Select "Options"
|
|
In the Options dialog, select the "Directories" tab
|
|
Under the "include" option, add the path to STLport4.5, something like:
|
|
D:/STLport4.5/stlport
|
|
Then press the up array to move the entry all the way to the top of the
|
|
list, thus overriding MS's own STL implementations.
|
|
|
|
STLport under IRIX with MipsPro7.2
|
|
----------------------------------
|
|
|
|
This hasn't been tried yet, but STLport should allow the OSG to compile
|
|
with the old MipsPro7.2 compilers which don't have their own StandardC++
|
|
iostreams implementation (they only have iostrean.h etc). Since the
|
|
OSG now only links to the StandardC++ version, STLport should be able
|
|
to provide the StandardC++ iostreams for us. You may need to modify
|
|
include paths set up in Make/makedefs.irix.nonstd. The default option
|
|
of using STLport own iostreams is required, which is in contrast to
|
|
the situation under Windows as outlined above. Let us know how you
|
|
get on.
|