2001-08-09 Frank Suykens * Config.common: added -DNOPOOLS to global flags 2001-08-09 Pieter Peers * prepared for first release! Removed experimental nodes. * Phase fucntions not yet tested but included! 2001-08-09 Pieter Peers * fixed PhBToggleImage * fixed small clone problem with PhBImageTexture * fixed small clone problem with PhBBilinearInterpolation 2001-08-08 Pieter Peers * fixed small clone problem with bumpmaps * PhBBilineairInterpolation -> PhBBilinearInterpolation 2001-08-07 Frank Suykens * All: Merged my changes [differentials] and Pieter's changes [see further in this log] into xrml 0.5.2, changed version to xrml 0.5.3 Differentials are enabled by defining the symbol PATH_DIFFERENTIALS. * mipmap.C/H[new]: preliminary mipmap support. Currently the file is comiled but its functionality never used. * differentialscommon.H[new]: common stuff for path differentials * nodes/TextureTransorm.H/C: added vector transforms [i.e. a transformation to be applied to direction vectors, excluding translation,...] * PhBBilineairInterpolation*.C/H: added support for filtering. Currently slow box and gaussian filtering are supported. These take a lot of samples over the supplied footprint. TODO: LOD/mipmap support for all textures, separate class? * differentials: To find affected files for path differentials, do a grep on PATH_DIFFERENTIALS in PhBRML subdir. 2001-07-19 Pieter Peers ,pieter.peers@cs.kuleuven.ac.be> * optimized PhBBumpMap 2001-06-14 Pieter Peers * added wavelength2xyz function in PhBSpectrum. This function is needed by PhBMonochromaticSpectrum, PhBBlackBodySpectrum, PhBSampledSpectrum and PhBTabulatedSpectrum. * added PhBMonochromaticSpectrum node * added PhBBlackBodySpectrum node * added PhBSampledSpectrum node * added PhBTabulatedSpectrum node 2001-06-12 Pieter Peers * added PhBTextureEmiter node 2001-06-07 Pieter Peers * changed sampling on PhBNeumannReflector. New sampler gives beter results. 2001-05-30 Pieter Peers * added PhBBilineairInterpolation node 2001-05-07 Pieter Peers * revised pdf in PhBHomogeneousBackground and in PhBtexturedBackground * included opening angle in PhBBackgroundLight * added jacobian method in PhBBackgroundTextureProjection 2001-05-03 Pieter Peers * added PhBHomogeneousBackground * added PhBBackgroundLight * fixed small bug in PhBTexturedBackground::sample 2001-04-30 Pieter Peers * added PhBNeumannReflector * added PhBAshikminReflector * added small optimizations to Perlin Noise 2001-04-16 Pieter Peers * fixed turbulence function in PerlinNoise (thanks to Karl) 2001-04-12 Pieter Peers * Merged with Philippes version. * Added example scenes * Added environment maps, including following nodes PhBSpherePhotoBackground PhBLandscapePhotoBackground PhBCubePhotoBackground PhBTexturedBackground PhBBackgroundProjection * Added a new temporary picture reader ReadImage which includes an improved PPM reader and a PIC reader. * Added Phase Function Nodes, includes following nodes: PhBPhF PhBPhaseFunction PhBHenyeyGreensteinPhaseFunction PhBSchlickPhaseFunction * Minor changes in: PhBImageTextureBase (commented mipmap code out) PhBMedium PhBTexture PhBToggleTexture PhBPixelTexture vector.H (removed anoying compile warnings) 2001-03-19 Philippe Bekaert * PROGS/vrmlview: texture rendering changes + various options (disabling -non working- lighting etc...) * XRML/PhBRML/PhBImageTextureBase.*: image width etc... available in base class * XRML/renderer.C: clean ups * XRML/nodes/ImageTexture.*, PixelTexture.*: initial implementation (ImageTexture reads ppm files) * ====> release 0.5.2 (effectuated on July 3th 2001, from on 20010319 snapshot) 2001-03-01 Philippe Bekaert * renderer.[CH]: new flags 'require_normals' and 'require_texcoords' control normal and texture coordinate generation in the default geometry handler. * vrmlview: accepts -input-format flags for specifying input file format and can now read a sequence of files given on the command line. * FILTERS/cso: further improvements * nodeCatalog.C: node version was checked in a wrong way, fixed. * ===> release 0.5.1 2001-02-28 Philippe Bekaert * Array.H: array elements set using the 'set()' member function are no longer deleted when deleting the array. * Proto.[CH]; new member 'Proto* parent': if non-null, 'this' is an instance of 'parent' * FILTERS/cso: C++ output filter: writes scene graph out in the form of a C++ program, which can be compiled into a shared object. 2001-02-22 Philippe Bekaert * world.[CH], importer.H, exporter.H: minor changes * FILTERS. PROGS/: . mgf and nff exporters and renderers moved to FILTERS directory . new vrmlconv program that converts any supported input file format to any supported output file format . vrml2mgf, vrml2nff and ply2vrml programs depreciated * DOC/: documentatoni updates * ===> new release 0.5.0 2001-02-21 Philippe Bekaert * EVERYTHING: . everything embedded in a "xrml" nameclass . all names vrml_xxxx changed into xxxx . vrml.H and vrmlP.H renamed into xrml.H and xrmlP.H . pools memory stuff removed in memory.H . filters live in their own name space (e.g. vrml2_utf8, ply, ...), the vrml parser, previously named vrml2_utf8_parser now thus becomes vrml2_utf8::parser * nodeCatalog.[CH]: does no longer use a static array, because that caused problems with shared libraries on irix64 * FILTERS/toy, PROGS/toy: small example showing how you can program additional import filters and programs using them. Based on Ingo Walds documentation "How to create a scene graph". 2001-02-20 Philippe Bekaert * FILTERS/ply, PROGS/ply2vrml: Ingo Walds (wald@graphics.cs.uni-sb.de) ply to vrml importer filter incorporated. * XRML/base/Array.H, Assoc.H: new member functions . set(): encapsulates a C++ array into an array class object (the C++ array is not copied and should not be deleted for the life time of the array class object!) . concat(): concatenates an array with an other array object * XRML/base/world.[CH}, importer.H and all importers so far: . importer::parse() returns boolean whetehr parsing was succesful or not (world::parse() inspects this boolean in order to return the scene graph or a null pointer as its return value) . world::init() also initialises sceneGraph to an empty MFNode array. These changes facilitate sequential parsing of multiple files in one world object. * support for compiling shared libraries . MKTOOLS dir contains mklib. scripts, copied from Mesa (www.mesa3d.org) . Config.common and .site file contain variables MKLIB = name of script to create library from object files MKLIBFLAGS = compilation flags for compiling proper object files for inclusion in a library (only for those, not for programs!) LIBEXT = library file name extension (a, so, sl, ...) Default set for static library in Config.common. Can be overriden in Config.site (see e.g. Config.Linux) * PROGS/vrmlview: . disable lighting button state now consistent . new "use display lists" button (display lists can now also be disabled) . application title shows rendering speed in frames per second 2001-02-19 Philippe Bekaert * source tree restructuring: . VRML directory renamed XRML, ==> libvrml renamed libxrml <== . within XRML, subdirectories: . base: core scene graph representation and utilities . nodes: VRML'97 nodes, later probably to be upgraded to vrml200x . PhBRML: physically based rendering extensions . vrml2_utf8: vrml2 utf8 encoded file format filters . utils: utility classes (Vec3, Mat4, Spectrum, ...) . new FILTERS directory: will contain additional import/export filters . PROGS and POOLS remain as they were * Makefile changes: . xrml library include files linked to new include/ subdirectory . filter include files appear in subdirectories of include (e.g. include/vrml2_utf8) . libraries are linked to lib/ subdirectory . binaries are linked to bin/ subdirectory . main Makefile install targets copy include files, libraries and binaries from include/, lib/ and bin/ * XRML/base: bindables.[CH] renamed to StackManager.[CH]. It just sounds better ... 2001-02-15 Philippe Bekaert * SFNode.c, vrml2_utf8/parser2.C, NODES/Bindable.C: initial binding of bindable nodes during parsing cleaned up. * vrml[P].H: global variables current_world etc... in vrml namespace moved from vrml.H to vrmlP.H 2001-02-14 Philippe Bekaert * source tree structure changes (first step towards more): . vrml2_utf8 parser files moved to separate VRML/vrml2_utf8 subdirectory (still part of the "core" library since these are the default im/exporter) . node utility member data type ehader files moved to separate subdirectory VRML/utils * world.C: parse now makes world being parsed current before calling import filter parse(). Also current file name and line number are saved and restored afterward. * PROGS/ray2vrml: rayshade to vrml file format convertor work in progress. 2001-02-13 Philippe Bekaert * exporter.H, importer.H, world.[CH] and many other core files: importing and exporting now is done through vrml_world::parse() and vrml_world::save() with appropriate vrml_exporter/ vrml_importer child class object, facilitating the design and implementation of new import/export filters. Nothing needs to be changed to the core files anymore in order to read/write a new file format. Unfortunately, this implies making public several SFNode|nodeInterface members that were previously protected. * vrml2_utf8_exporter.*: VRML V2.0 utf8 exporter first version finished * vrml2_utf8_[scanner|parser|parser2][C|H|bison|flex]: VRML V2.0 utf8 parser and scanner renamed to vrml2_utf8_xxxx to make clear difference with (future) other import filters * vrml2_utf8_parser2.C: bugfix concerning reading SFImage objects. * TODO: move the vrml2_utf8 importer and exporter to separate directories 2001-02-12 Philippe Bekaert * PROGS/vrml2nff: vrml'97 to NFF convertor 2001-02-09 Philippe Bekaert * vrml.H, world.[CH], node interface implementation: save() member functions for saving in a VRML-like file. * NODEGEN/nodegen.C, */*P.C, nodeInterface.H: timestamp of field interface members is now set in assign_xxx functions instead of field::asign_here(), so it also gets updates if one directly calls assign_xxx(). * file.[CH]: multiple changes needed for elegant saving: . file handles now have unique ID number (which can to used in order to test whether a node has been written before or not) . indentation and fprintf() equivalent * x = Vec3(bla).normalize() calls split into x = bla; x.normalize() to make old gcc 2.7.3 happy. * TODO: upgrade version numbers to 0.5 instead 0.4 due to the changes above. 2001-02-08 Philippe Bekaert * vrml.H: . MF* types constructors cleaned up. * Array.H, Assoc.H, Stack.H, CmpString.H: . constructors cleaned up. . const added where appropriate. * Array.H: . append() member function returns index of new element rather than reference to it. . new append() member function for adding several elements in one call. * TOOLS/testarrayassign.C: test program demonstrating how an MF* array can be constructed from SF* elements. 2001-02-06 wald * DOC/index.html and DOC/howToCreateASceneGraph.html some documentation on how a scenegraph is generated * world.C: added a hook for an external parser. there now is a global variable bool (*externalParser)(file,time,world), which is default-initialized to NULL. external applications (like vrmlview) can use this variable to 'register' their own parsers (e.g. an mgf-parser). external parser functions are hooked in by simply overwriting the externalParser variable. if externalParser return false, the original vrml_world::parse fct is called. THIS IS ONLY A TEMPORARY SOLUTION, and should be be changed to some more advanced way of hooking in different parsers (probably as self-initializing shared librarys) * world.C: new addNamedNode and make_current member functions. 2001-01-31 Philippe Bekaert * VRML/PhBRML/PhBTexturedSurface: cleanup up + fixed so negative texture vaues are allowed now (can occur with pixel textures). 2001-01-27 Philippe Bekaert * VRML/PhBRML/PhBLAfortuneReflector.C: albedo fix 2001-01-25 Philippe Bekaert * VRML/PhBRML/PhBLafortuneReflector: SFFloat Cx, Cy and Cz parameters replaced by one SFVec3f C parameter. * VRML/PhBRML/PhBPixelTexture: new pixel texture node, can contain more than 3 channels and the values are given by floats (not restricted to [0,1] interval!) instead of ints. * VRML/NODES/PointSet: extended with a normal and texCoord exposedField for shaded point sets (against the standard!!), and pointsize hint member. * VRML/parser.H: some redundant semicolons removed. 2001-01-23 Philippe Bekaert * VRML/PhBRML: Lafortunes modified Phong model (SIGGRAPH 1997) implemented 2001-01-22 Philippe Bekaert * DOC/nodeapi: node class API documentation added 2001-01-19 Philippe Bekaert * DOC/nodegen: nodegen documentation added 2001-01-18 Philippe Bekaert * DOC/: documentation updated, completed and converted to HTML. 2001-01-11 Philippe Bekaert * PROGS/vrml2mgf: minor fixes 2001-01-04 Philippe Bekaert * PROGS/vrmlview: minor fixes 2001-01-03 Philippe Bekaert * Makefile: separate install targets for includes/bins/libs * PhBImageTextureBase, PhBImageTexture, PhBToggleTexture: minor changes: - repeating is TRUE by default now - PhBImageTexture::getpixel was identical to PhBImageTextureBase::getpixel and has been removed (the render() function is not removed for clarity) 2000-12-21 Pieter Peers * fixed small bugs in example files and in PhBImageTextureBase, and in PhBNoiseTexture 2000-12-20 Philippe Bekaert * merge with Pieters changes since 2000-11-28 . some nodes renamed: PhBProceduralNoise -> PhBNoiseTexture PhBGrayscaleTexture -> PhBToggleTexture PhBProcedural3D[Checker|Spiral|Noise] -> PhB3D[Checker|...]Texture PhBSpherePhotoTextureProjection -> PhBSpherePhotoBackgroun . some nodes re-parented: PhB3D[Checker|Spiral|Noise] are children of PhB3DTexture PhBSpherePhotoBackground is child of PhBBackground PhBImageTExture and PhBToggleTexture are now children of a new parent class PhBImageTextureBase . PhBSurfaceDistortion is no longer a leaf node class and has been removed from the nodeCatalog . test examples for new nodes implemented by Pieter * private sources regenerated: node typeId is now also set for parent classes so complains of nodeCatalog about non-lead nodes in the catalog are at least clear now. * VRML/vector,Float,complex,spectrum.H: const fixes for SGI * various other small fixes for SGI 2000-12-19 Pieter Peers * PhBGrayscaleTexture added (1 channels -> 2 channels complement) 2000-12-18 Pieter Peers * Procedural/Texture/Noise/3DTexture/3DNoise/3DChecker/3DSpiral added TODO: Dvalues for 3D textures * PerlinNoise class constructed for procedural use 2000-12-14 Pieter Peers * PhBAppearance: added bumpmap support in init_query * PhBImageTexture: Dvalues fucntion added nrChannels function added (inline) * PhBBumpMap node added * PhBNormalMap node added * PhBBrushMap node added * PhBShadingFrameDistortion node added * PhBTexture: nrChannels function added (inline) Dvalues function added 2000-12-19 Philippe * vrmlview: simple animation mode * NODES: first implementation of interpolator nodes. 2000-12-18 Philippe * TimeSensor node implemented * other small fixes to route.C 2000-12-18 Philippe Bekaert * POOLS can also be switched off (by compiling with -DVRML_NOPOOLS) * Float.H, vector.H, matrix.H, complex.H, spectrum.H: "const" added where ever possible. 2000-12-15 Philippe Bekaert * Config and Makefiles updated: same as for RenderPark again now * file.C, field.C: SGI compile fixes * file.C: url cache bug fix * now uses POOLS for the memory management: GetMemoryUsage() is probably too pessimistic: more vrml_fake_free() calls needed in order to capture all frees. fake_free_calls are expensive however and should be avoided when possible (e.g. 0 size occurs a lot). * parser2.C: memory consumption halved by deleting field values that were copied after reading and no further referenced. 2000-12-14 Philippe Bekaert * NODEGEN updates, affecting all nodes: . validate_[exposed]field functions replaced: . synchronize_ member function for [M|S}FNode valued fields . assign_ member functions check value range, do proper assignement, and call synchronize() for [M|F]SNode valued fields . static assign__ functions that check whter SFNode* node argument is of proper type and call assign_ member . previous "do-all" synchronize() member omitted . eventOut value is now also member of the class + there are now two post_() member functions replacing previous () function: one with and one without value argument . value argument of post_eventOut, set_[exposed]field and process_ functions are now const references, except for SFNode*. . instantiate() returns 'this' for named nodes without enclosing proto and calls synchronize() for [S|M}FNode values. . [exposed]fields, eventIns, eventOuts declared at the highest level where they are defined: post_, assign<[exposed]field>, and set_ at base classes declared virtual and prints error message. True implementation only for leaf classes (since only there the complete interface is available). . status bits indicate what fields/eventOuts have been updated since last inspection. They are declared only for leaf classes. Manipulation by a user is through xxx_is_updated() and xxx_clear_update() member functions, which for base classes are declared virtual and print a "stub called" error message. . Can also handle nodes without interface members now . Better handling of utility data in constructor/destructor by means of new util_[init|clone|destruct]() member functions. . new comment delimiters in header file indicate where manual editing should be restricted, so the headers can be updated automatically later on without tedious manual merging. . major refactoring of the nodegen program itself. * bug fixes in node interface code. * PhBRML: most scatterers: normalisation field removed. * PhB[Cone|Sphere]TextureProjection: problem with poles fixed (Pieter Peers) 2000-12-11 Philippe Bekaert * List.H: linear list template class * EventManager.[CH]: event queue split off vrml_world + implemented by means of a linear list. Events are now dispatched in the same order as they are queued. * route.C: routes implemented by means of a linear list + split off nodeInterface.[CH] * link.C, nodeInterface.C: links split of from nodeInterface.C + forward links maintained now for PROTO declaration interface members. synchronize() method no longer needed for maintaining consistent "raw" event and field values. 2000-12-08 Philippe Bekaert * event routing and execution engine + several smaller improvements. Can't test event execution engine thoroughly because sensors and interpolator functionality must be implemented first. * Viewpoint binding appears to conform to NIST conformance tests, at least those tests not reuiring createVRMLFromURL/String and Anchor "jumpcut"s. 2000-12-07 Philippe Bekaert * file.C: url caching * nodeInterface.[CH], field.C, eventIn.C, eventOut.C, exposedField.C: event linking 2000-12-06 Philippe Bekaert * file.[CH]: vrml_file class cleaned up. * nested EXTERNPROTO support, Inline and EXTERNPROTO now pass all NIST VRML conformance tests, except those with eventIn or eventOut linking (not yet implemented) 2000-12-05 Philippe Bekaert * Inline and EXTERNPROTO support. 2000-12-04 Philippe Bekaert * parser and lexical scanner made re-entant: requires flex and bison, but parser need not be regenerated unless bison/flex scripts are changed. Almost everything that could be separated out the bison script is in parser2.C. The parser.C file generated by bison needs manual editing, see Makefile. 2000-12-01 Philippe Bekaert * file.[CH]: new openFromURL method fetches URL using wget (needs to be installed on your system) to a temporary file and opens that (deleting it on close()). * world.[CH]: 'filename' field replaces by a vrml_file * in which much more information is kept + new method openFileFromURLs for opening files from urls relative to the url the world was parsed from. Use 'world->file->url' whereever 'world->filename' was used before (e.g. yacc.y++). * PhBImageTexture.C: updated to use world->openFileFromURLs(). 2000-11-29 Philippe Bekaert * world.[CH], vrml.H: vrml_world class no longer defined in vrml.H for better data hiding * bindables.[CH]: bindable node stacks in vrml_world implemented as separate class. * yacc.y++: bindable node stacks are now properly initialised + new 'NAME' keyword (doesthe same like 'DEF' except node is not added to the scene graph) * Bindable.[CH] and all bindables: bindable node stack stuff done * vrmlview: adapted so default view point is correctly determined as the 'bound' one after reading a file + bounding box determination of Grouping nodes hopefully fixed. * DOC: documentation updated. 2000-11-28 Philippe Bekaert * PhBAppearance: default_projection texture projector must return shading axis frame in same coordinate system as 'point' argument (if 'point' is in world coordinates, shading frame also must be in world coordinates). * Stack.H: new member fucntion for getting the top of the stack and for removing an element from the stack. * Bindable.[CH]: default implementation of BIndable::set_bind() eventIn according to the specs. * vrml.H: vrml_world class now contains bindable node stacks for each type of bindable node. * TODO: bindables and their stacks: . bind first encountered item of each bindable node type in an input file . initialise bindable node stack pointer for each type of bindable node + let set_bind() eventIN call BIndable::set_bind eventIn default implementation. * PhBRMLRGBSpectrum, PhBMonitorCalibration: new node classes for RGB spectra and monitor characteristics (needed for converting rgb to internal XYZ spectral representation) 2000-11-27 Philippe Bekaert * PhBRML: more PhBAppearance API changes * texturing nodes: new isTextured() member function * NODES/TextureTransform implemented 2000-11-22 Philippe Bekaert * PhBRML: . PhBSchlickReflector . PhBHeterogeneousSurface, . PhBImageTexture (Pieter P) . 2d texture projections nodes (PhB[Box|Sphere|Cylinder|Cone]TextureProjection) (Pieter P.) . PhBTexturedSurface (Pieter P.) scattering, emission still TODO . PhBFresnelBSDF . PhBSDF renamed PhBSimpleBSDF . new PhBAppearance API, TODO: bump- and displacement mapping, 2d texture xf. . PhBHomogeneousSurface re-implemented . PhB3DTexturedSurface re-implemented * TEST/: numerous new test scenes * file.[CH]: smart class for opening/closing files. 2000-11-10 Philippe Bekaert * PhBRML/PhBWardReflector: new scatterer (together with Pieter Peers) * TEST/wardtest.wrl: test scene 2000-10-12 Philippe Bekaert * PROGS/vrmlview/oglrenderer.[CH], main.C: list of predefined views in renderer changed to array of pointers to viewport nodes instead of array of viewpoint nodes themselves. The old method could cause a crash, probably due to the fact that the destructor of the SFNode class is not yet OK (BUG) 2000-09-03 Philippe Bekaert * PROGS/vrmlview: lighting does not always seem to work. It can be disabled now + several other smaller fixes. * PROGS/vrml2mgf: important improvements in material conversion + more indicative MGF object and material names 2000-09-02 Philippe Bekaert * VRML/SFNode.C (name): implemented using old-fashioned, but at least working, sprintf() instead of ostrstream crashing on Linux * VRML/eventIn/Out.C: not-yet-implemented link_event() function now properly returns 0. * PROGS/vrmlview: new GUI font + 3-button mouse motion 2000-01-31 Jan Prikryl * VRML/NODES/Makefile.am, VRML/PhBRML/Makefile.am: auxiliary libraries are not being installed anymore; header files installed to $(includedir)/VRML * VRML/Makefile.am: header files installed to $(includedir)/VRML * Makefile.am: conditinal compilation of NODEGEN * configure.in: code for MKDEP_XTRAINC updated, conditinal compilation of NODEGEN 2000-01-30 Jan Prikryl * NODEGEN/yacc.y++, VRML/yacc.y++: renamed from `yacc.y' to correspond to GNU automake C/C++ resolution of yacc files. * */Makefile.am: new files * make.rules: new file * */Makefile.save: backups of the old Makefiles, reflect changes in directory strucutre, changed "include" to "-include" * acinclude.m4: new file * acconfig.h: new file * configure.in: new file * mk2save: copied from Renderpark distro * save2mk: likewise * VRML/NODES: contains code from `./NODES' * VRML/PhBRML: contains now code from `./PhBRML' * VRML: contains the rest of `libvrml.a' stuff from `.' * AUTHORS: now up-to-date 1998-12-02 Philippe Bekaert * release 0.2. See BUGS and DOC/status. 1998-04-10 Philippe Bekaert * release 0.1