BINARY INSTALLATION =================== You may want to check, if you can get installable packages/binaries for your operation system under http://www.csv.ica.uni-stuttgart.de/vrml/dune/down.html BUILD INSTRUCTIONS FOR UNIX/Linux: ---------------------------------- The installation procedure of white_dune do not contain a "make install" process. This is intentional. Instead, if you have root, a systemdependend binary package should be build and installed, so white_dune is available to the systemdependend installer/packing mechanism. The building of systemdependend binary packages is done in the "packager" directory. Systems supported by "packager" directory ========================================= For MacOSX 10.2 "jaguar"/MacOSX 10.3 "Panther" you need on "X11 for MacOSX" and the matching SDK package use: (cd packager/macosx && sh mksit.sh) For IRIX 6.5 use (as root): (cd packager/irix && sh mkpkg.sh) For SUN Solaris 8 use: (cd packager/solaris && sh mkpkg.sh) For FreeBSD 5.0-RELEASE use (as root): (cd packager/freebsd && sh mkpkg.sh) For Redhat Linux (and possibly other rpm based systems) use (as root): (cd packager/rpm && sh mkrpm.sh) For Debian Linux use: (cd packager/debian && sh mkdeb.sh) For Slackware Linux use: (cd packager/slackware && sh mkpkg.sh) For gentoo Linux use: (cd packager/gentoo && sh mkebuild.sh) For AIX 4.3 (RS/6000) you need gcc/g++ and mklpp from the bull freeware collection http://www.bullfreeware.com/download/aix43/bull.mklpp-1.2.9.0.exe use: (cd packager/aix && sh mkbff.sh) You will find the binary package files either in /tmp or in the usual systemdependend place like /usr/src/Redhat or $HOME/lppdir/bff Non root or if your Systems is not (yet) supported by the packager directory ============================================================================ To compile under Unix, you need to have OpenGL/Mesa3D and Motif/OpenMotif/Lesstif installed. Older versions of Lesstif (e.g. 0.92.26 delivered at /opt/sfw under Solaris) can cause problems (nothing works if you click to a icon). To avoid this problems you can use "sh ./configure --with-buginlesstif", see below. Someone reported problems with the fileselector in debians lesstif 0.93.18-4 version. Use openmotif instead. It is recommended to have libjpeg, libpng and zlib installed. Note, that dune may fail to compile/run with buggy gcc CVS snapshots called "gcc-2.96" (to find out run "gcc -v") which is delivered with some older Redhat/Linux distributions. See "--with-kgcc" option below. Dune also may fail to compile with some (all ?) "ecgs" g++ compilers, g++ 2.91.66 is the last "ecgs" compiler made (to find out run "g++ -v") Dune compiles at least with - gcc/g++ 3.2.1 - gcc/g++ 2.95.3 - gcc/g++ 2.95.2 - gcc/g++ 2.8.1 - MIPSpro 7.30 (SGI IRIX) - Sun WorkShop 6 update 2 C/C++ 5.3 (SUN SOLARIS) (make depend fails (harmless)) It is unknown, if dune compiles with the AIX xlc/xlC compilers, but it compiles with AIX gcc/g++. If you got a .tar.gz file then you can extract it with $ gzip -cd white_dune-whatever.tar.gz | tar -xvf - and change into the main directory with $ cd white_dune-whatever If you want to read and write X3D Files via the java translators from Qiming Wang, you need to download the files from http://ovrt.nist.gov/v2_x3d.html and extract them into the directories ./v2x3d and ./x3dv2 If you want to use the faster saxon translator from http://users.iclway.co.uk/mhkay/saxon/ and extract saxon.jar into the directory ./x3dv2 Use the X3D translators at your own risk ! To avoid dataloss with the X3D translators, the temporary .wrl files are kept in the directory /tmp ... To compile run $ rm -f config.cache $ sh ./configure --with-somethingbelow --without-somethingbelow $ make A typical configure line when compiling on a typical Linux system is $ sh ./configure --with-optimization --with-buginlesstif On a Linux system intended for german users the typical configure line is $ sh ./configure --with-optimization --with-buginlesstif --menu-german If the "configure" command fail mysterically, it is strongly recommended to read the file config.log Under some circumstances, the "configure" command "lie": e.g. when your disk is full a compiling test can fail cause the compiler can not write it's internal files. A note for people who want to generate a own white_dune package from scratch: ---------------------------------------------------------------------------- The configure procedure will set the defaults for documentation and needed VRML proto files to the current source directory. If you want to delete the source directory after package generation, it would be a good idea to use the --with-helpurl --with-vrml97am1url --with-x3ddrafturl and --with-scriptednodesurl configure options according to the location of the installed documentation directory. Additionally you may want to download the ISO 14772 (VRML97) document http://www.web3d.org/x3d/specifications/vrml/ISO_IEC_14772-All/part1/nodesRef.html and use the configure option --with-vrmlnodesurl "sh ./configure --help" gives you a list of available options. There are some unusual options for running configure --with-buginlesstif use to avoid bug if you click to a icon and nothing works --without-textedit disable file -> textedit cause it would do not return --with-blacknwhiteicons use Barts black and white icons --with-nebula use if you want to convert to The Nebula Device --without-devil do not use DevIL library to load textureimages --with-helpurl="helpurl" URL of the "docs" directory --with-vrmlnodesurl="url" URL of ISO standard vrml97 node list documentation --with-vrml97am1url="url" URL of the directory for PROTOs of VRML97 Amendment1 --with-x3ddrafturl="url" URL of the directory for PROTOs of X3D draft --with-scriptednodesurl=\"url\" URL of directory for PROTOs of scripted nodes --without-stereo use if you do not have shutterglases --with-stereocommand="stereocommand" how to switch to stereomode, on IRIX --without-usrlocalinclude use when the compiler refuse -I/usr/local/include --with-kgcc use to avoid the buggy Redhat/SuSE Linux "gcc 2.96" --with-routeatend write route statement at end in file --with-eulerrotation use for euler angles instead of VRML like rotations --with-dontreplacevrmlscript do not replace vrmlscript: in URLs with javascript: --with-aflockdebug use debug messages for Ascention Flock of birds --with-coredump switch off emergencysave signalhandling --with-fpuinterrupts switch on interrupts on invalid fpu operations --with-optimization optimize for speed --with-gprof compile with support for gprof analyser --with-efence use the efence malloc debugging routines --with-testinmenu insert a extra menupoint for testing new things --with-cut currently you better use copy/paste/delete instead --with-textureimagemode use nonstandard mode field in TextureImage node --with-vrmlbrowser=vrmlbrowser VRML browser eg. netscape freewrl lookat... --with-wwwbrowser=wwwbrowser www browser eg. netscape mozilla opera... --with-menugerman use a menu in german language Former configuration options, not supported anymore: --with-dontcarefocus moved into commandline parameters --with-aflock now always true --with-krlikeindent moved into preferences --with-nurbssurfaceprotourl="url" moved to --with-vrml97am1url --with-nurbscurveprotourl="url" moved to --with-vrml97am1url --with-nurbsgroupprotourl="url" moved to --with-vrml97am1url =================== --with-buginlesstif =================== If you click to a icon and nothing works, there is a problem, that seams to be related to some lesstif versions. "sh ./configure --with-buginlesstif" will use a workaround. ==================== --without-textedit ==================== Use this as a workaround, if disable file -> textedit do not return. This problem has been occured with glXDestroyContext on a radeon graphics card on FreeBSD 5.0-RELEASE (possibly this is a bug in the file -> textedit implementation itself). ======================= --with-blacknwhiteicons ======================= Use Barts black and white icons instead of the normal colored icons. ============= --with-nebula ============= Use if you want to convert to The Nebula Device 3D engine. With this feature, white_dune joined forces with "SAND dune" (Save As Nebula Device) by Aaron Cram (based on Stephen F. Whites dune 0.13). For more information see http://www.ori.org/~aaronc/code/nebula/ =============== --without-devil =============== Do not use DevIL library to load textureimages. The DevIL library is a wrapper library, it can be used to load different imageformats like TIFF, BMP, TGA, MNG, XPM, PCX, PNM, etc. It is not sure, if your target VRML browser support this imageformats, cause the VRML97 standard only demand support for JPEG and PNG image file formats and recommend GIF. ======================== --with-helpurl="helpurl" ======================== URL of the "docs" directory. Default: "docs" directory of the source package. also available at http://www.csv.ica.uni-stuttgart.de/vrml/dune/docs/ ================================== --with-vrmlnodesurl="vrmlnodesurl" ================================== URL of ISO standard vrml97 node list. Default: http://www.web3d.org/x3d/specifications/vrml/vrml97/part1/nodesRef.html Download the ISO standard vrml97 pages to avoid unnecessary internet communication costs. ============================== --with-vrml97am1url="protourl" ============================== Currently, the VRML97 Amendment1 NURBS nodes (e.g. NurbsSurface, NurbsCurve or NurbsGroup) are not supported by all VRML97 browsers. There are working NurbsSurface implementations in the cc3d (blaxxun contact) and cortona VRML97 browsers. In the docs/vrml97Amendment1 directory of the white_dune sources, there is a javascript implementation of the NurbsSurface, NurbsCurve and NurbsGroup node that works (at least) with the cosmoplayer 2.? VRML97 browser. When using the Amendment1 NurbsSurface, NurbsCurve or NurbsGroup node, dune write per default a reference to the urn's of cc3d and cortona and the URL of the local File with the PROTO of the javascript implementation of this nodes. You can replace this URL of the PROTO with a other location. ============================= --with-x3ddrafturl="protourl" ============================= Similar to the --with-vrml97am1url option, for nodes orginating from the X3D draft. In the docs/x3dDraft directory of the white_dune sources, there is a javascript implementation of the LoadSensor node that works (at least) with the cosmoplayer 2.? VRML97 browser but is only a weak emulation of the X3D draft LoadSensor node. ================================== --with-scriptednodesurl="protourl" ================================== Similar to the --with-vrml97am1url option, for nodes which are only implemented via script Nodes. In the docs/scriptedNodes directory of the white_dune sources, there are the javascript implementation of this nodes that work (at least) with the cosmoplayer 2.? and cc3dglut 4.3 browser. For the SuperEllipsoid and SuperShape it is not very useful, to use the javascript implementation for morping animations. ================ --without-stereo ================ If your system is capable to do quadbuffer stereo, but you do not have shutterglases or a similar technologie, use --without-stereo to disable the default stereomode. ==================================== --with-stereocommand="stereocommand" ==================================== On some systems, you need a extra command to switch to a quadbuffer stereo capable visual. To see your if the current visual is capable for stereo, use the "glxinfo" command and look at the "st" column (for details see the manpage). On some systems, a 1280x1024 resolution mode is not stereo capable. To switch on a SGI from a 1280x1024 mode to a stereocabable 1024x768 mode, use a command like "/usr/gfx/setmon -n 1024x768_96s" or "/usr/gfx/setmon -x 1024x768_96s". On some older systems, setmon commands to switch resolution ("setmon -x") are only accepted from root and the X server must be restarted to complete the operation. For example a SGI Indigo2 IMPACT/1/1/1 ("High Impact") system in 1024x678_76 videomode can find a visual with quadbuffer stereo, but the monitor must be switched to a matching mode with the command: "/usr/gfx/setmon -n 1024x768_96s" Using the --with-stereocommand option, this can be done by starting dune. ========================= --without-usrlocalinclude ========================= Some of the gcc 3.X compiler versions refuse to accept the -I/usr/local/include option. In this case a lot of configure tests will fail mysterically if you do not read config.log =========== --with-kgcc =========== If you have the buggy Redhat Linux compilers (gcc CVS snapshot aka "gcc-2.96") or buggy SuSE Linux compilers (gcc CVS snapshot aka "gcc-2.96"), use $ rm -f config.cache $ sh ./configure --with-kgcc $ make The fake "gcc-2.96" compilers have problems to successfull compile code with variable argument list (stdarg). To install on Linux redhat 7.1 you will find kgcc in a package called "compat-egcs", which need the compat-glibc package (BTW: the lesstif package is in the "powertools" directory). =================== --with-krlikeindent =================== Use if you want this Transform { children [ Shape { appearance Appearance { material Material { } } geometry Cone { } } ] } Kernigan/Richie like indent (from their C book) instead of this Transform { children [ Shape { appearance Appearance { material Material { } } geometry Cone { } } ] } indent. ================= --with-routeatend ================= Write ROUTE statements at the end of the VRML file. Otherwise (default) ROUTE statements are written at the first possible place outside nodes. ==================== --with-eulerrotation ==================== Use if you want to input euler angles (in degrees) as fieldvalues instead of VRML like rotations. Of course, this option only affects interactive input, not the export or import of VRML files. ============================ --with-dontreplacevrmlscript ============================ Some older VRML editors (like cosmoworlds 1.02) use "vrmlscript:" instead of "javascript:" to sign URL with inlined javascript in Scriptnodes. If this configure option is not set, white_dune will replace "vrmlscript:" with "javascript:" in URLs (to avoid problems with modern VRML browsers). ================== --with-aflockdebug ================== Use debug messages for the Ascention Flock of birds magnetic headtracker. =============== --with-coredump =============== Switch off emergencysave signalhandling. Useful for testing, or if the signalhandling code do not match your system. ==================== --with-fpuinterrupts ==================== Switch on interrupts on invalid fpu operations. Useful to find numeric errors together with "--with-coredump". =================== --with-optimization =================== Optimize for speed. ============ --with-gprof ============ Compile with support for the gprof analyser to messure how much time has been spend in various regions of the code. After run, a file gmon.out will occure. See the messure with "gprof dune". ============= --with-efence ============= Use the efence malloc debugging routines. This is useful to find hard to find bugs related to memory allocation. Efence requires to start dune from the debugger. ================= --with-testinmenu ================= This option is only intented for developers of new code, who want to check new but do not want to take care about the menu mechanisms. Look for MainWindow::testInMenu() in MainWindow.cpp to see how to use this menupoint. ========== --with-cut ========== Tries to make use of the "edit -> cut" menupoint in dune. This is known to cause problems. Currently you better use the copy/paste/delete menupoints instead. Use this option only, if you want to try to write a bugfix. ======================= --with-textureimagemode ======================= Dune can use a nonstandard "mode" field in the TextureImage node. ============================ --with-wwwbrowser=wwwbrowser ============================ Use this to configure your default wwwbrowser to view HTML (help) files. Examples are netscape mozilla opera etc. ============================== --with-vrmlbrowser=vrmlbrowser ============================== Use this to configure your default vrmlbrowser to view VRML files. This can be needed if your default wwwbrowser (like netscape) has no vrml plugin (like the one from FreeWRL) installed and you use a standalone vrml browser program (like lookat) instead. ================= --with-menugerman ================= Use this to configure the menus of the program to german language. See the developer documentation about details for localisation. ========================================================================== BUILD INSTRUCTIONS FOR WIN32 (Micro$oft Visual C++ 6.0): ------------------------------------------------------- Run one of the following scripts in white_dune_directory\batch jpg_png_zlib.bat (recommended, version which use the jpeg, libpng and zlib libraries) nt.bat (version without the need of a noncommon library) devil.bat (version which use devIL "DEVelopers Image Libaray") devilbw.bat (devil version with Bart's black and white icons) germankids.bat (version with a simplifed modeller menu in german language) When using nt.bat, you get a version, which can not display ImageTextures, but do not need any additional library. The usage of jpg_png_zlib.bat is recommended. You get a version, which can display ImageTextures, but can only use image formats really supported by the VRML97 standard (jpeg and png). When you try to install development versions (with "beta" in name), you are forced to use jpg_png_zlib.bat, cause it is only are updated regularly. You can find sources, binaries and needed Micro$oft Visual C++ 6.0 project files of the needed libraries at http://www.csv.ica.uni-stuttgart.de/vrml/dune/jpeg_png_zlib_win32static.tar.gz For the other versions you need to install DevIL from http://openil.sourceforge.net This versions can display ImageTextures with a lot of different image fileformats, but this version can not read of gzip compressed VRML files. If you want to use a version with a menu foreign language, you can copy the file dune.somelanguage.rc to dune.rc. Currently only dune.german.rc and dune.english.rc are available. If you want to change the parser.y/lexer.l files, you need to install the cygwin programs "bash", "flex" and "bison" from http://www.cygwin.com/ and need to customise the batch files white_dune_directory\batch\usebison.bat and white_dune_directory\batch\useflex.bat In case of the build command finds no bash, flex and bison tools, the output previously generated under Linux/Unix/MacOSX (files lexer.cpp and parser.cpp) will be used. If you use the Linux/Unix/MacOSX file, you should avoid to use the "rebuild all" menupoint, otherwise lexer.cpp and parser.cpp would be removed and you would need another copy of this files. If you want to read and write X3D Files via the java translators from Qiming Wang, you need to download the files from http://ovrt.nist.gov/v2_x3d.html and extract them into the directories ./v2x3d and ./x3dv2 Another (better ?) source for this files is from the X3Dedit distribution http://www.web3d.org/x3d/content/README.X3D-Edit.html If you want to use the faster saxon translator from http://users.iclway.co.uk/mhkay/saxon/ extract saxon.jar into the directories ./x3dv2 Open the dune.dsw workspace file, and custumise the include/link paths to needed libaries. The defaults are: for jpeg_png_zlib version: /I include paths for jpg_png_zlib white_dune_directory\..\jpeg-6b white_dune_directory\..\zlib-1.2.1 white_dune_directory\..\libpng-1.2.5 libaries: white_dune_directory\..\jpeg-6b\Debug\jpeg.lib white_dune_directory\..\zlib-1.2.1\Debug\zlib.lib white_dune_directory\..\libpng-1.2.5\Debug\libpng.lib for DevIL versions: /I include path: white_dune_directory\..\devil\include libary path: white_dune_directory\..\devil\lib Then select "build dune.exe" from the build menu. You will find the executable in the directory Debug (or Release if you changed the default) ========================================================================== MUFTI (mufti@csv.ica.uni-stuttgart.de)