Commit Graph

86 Commits

Author SHA1 Message Date
Robert Osfield
02b456bcfa Converted plugins to use the new supportsExtension()/supportsOptions/supportsProtocl() methods
to help enable better querying of supported features
2008-07-13 22:18:59 +00:00
Robert Osfield
ef1ee63f03 From Joakim Simmonson,
"Opcodes.h:
* Added INVALID_OP as -1 in the Opcodes enum. Note that INVALID_OP is not an actual opcode defined in the OpenFlight format. The purpose of INVALID_OP is to mark an opcode variable as invalid or uninitialized.

ReaderWriterFLT.cpp:
* The header node is returned if it exists, even if the file does not contain a node hierarchy. The old behaviour returned a ERROR_IN_READING_FILE error.
* Changed opcodes initialized to -1 to the new enum value INVALID_OP."
2008-07-11 17:46:30 +00:00
Robert Osfield
1489eeb228 From Joakim Simmonsson, fixed various spelling typos in comments 2008-07-11 17:41:50 +00:00
Robert Osfield
cc9d12f34f From Rudolf Weidemann, "in the OpenFlight format materials can have editable names.
In the OSG OpenFlight plugin these names are ignored when reading, and
empty strings are written.

As we need these names in the OSG scene graph by our application, I
changed the plugin code, so the names are now stored in class
"osg::Material" (derived from "osg::Object") by
 material->setName();
(see "PaletteRecords.cpp, line 195) when reading the file, and written
to file by
 dos.writeString( m.Material->getName(), 12 );
(see MaterialPaletteManager.cpp, line 80).

As these names otherwise get lost when reading an OpenFlight file and
writing it again e.g. by
 osgconv example.flt converted_example.flt
these changes make the plugin more complete.

The changes were made to OSG revision 8425, and were tested by
 osgconv example.flt converted_example.flt
comparing the material palettes of both files inside Multigen Creator."
2008-06-19 14:35:18 +00:00
Robert Osfield
7a2c403992 Added code to catch erroneous Dof axis settings 2008-05-29 11:45:31 +00:00
Robert Osfield
189049f9bd From Colin McDonald, "I had to tighten a declaration in OpenFlight/FltWriteResult.h, as the Solaris SunStudio 11 compiler was being picky and wouldn't compile." 2008-05-26 21:04:47 +00:00
Robert Osfield
412717c151 From Paul Martz, "This change adds support for osg::Billboards to the OpenFlight exporter.
It might seem odd that the change actually removes the stub apply(Billboard&) method, but it turns out Billboards are easily supported in subordinate routines of the existing apply(Geode&) method with s dynamic_cast, so there's no need for a separate apply(Billboard&)."
2008-05-10 17:25:42 +00:00
Robert Osfield
61e3285ffc From Paul Martz, "Attached are some minor plugin fixes. PNM, RGB, and JPEG would all crash if attempting to read an empty file, and FLT would go into an infinite loop. All are fixed with this change.
I also fixed some return values for a couple of these, changing FILE_NOT_HANDLED to ERROR_IN_READING_FILE where appropriate."
2008-05-09 11:27:03 +00:00
Robert Osfield
6d61e554b4 From Paul Martz, "As I discovered prior to the 2.4 release, the FLT export geometry backend was using some old turn-on code, originally written just to enable other development but not intended for actual release. Sadly, my OSG training commitments prevented me from fixing this prior to 2.4.
In essence, the FLT exporter was emitting a full set of Mesh records each time it encountered a PrimitiveSet.
 
Attached is a fix. The code now emits the Mesh set up records, then iterates over all PrimitiveSets and emits a Mesh Primitive record per PrimitiveSet.
 
It also loops over PrimitiveSets twice, first writing Face records according to the mode, the writing Mesh records (again according to the mode).
 
The final change included here is support for GL_POINTS as single-vertex Face records.
 
Billboards are still to come."
2008-05-08 13:56:28 +00:00
Robert Osfield
d0a2bf87f3 From Paul Martz,"Several misc changes, but the major fixes include:
* Support for Vec4ubArray for color data
 * Support for material transparency
 
Thanks to Neil Hughes, Jason Daly, yourself, and others for testing and reporting issues."
2008-04-11 13:43:11 +00:00
Robert Osfield
e482e718f5 From Paul Martz, "Two changes:
- Handle DrawArrays first/count correctly (fixes problem reported by Jason Daly)
 - Display warning if non-Geometry Drawable is encountered."
2008-04-01 10:11:22 +00:00
Robert Osfield
5887dc87b1 From Andy Skinner, build fix for Solaris 2008-03-31 14:00:42 +00:00
Robert Osfield
2c1d440444 From Paul Martz, "Some small changes and code cleanup. Biggest change is an improvement to the WriteResult return." 2008-03-28 19:56:25 +00:00
Robert Osfield
497854cb2f Removed old lower case versions 2008-03-28 13:22:30 +00:00
Robert Osfield
28f9b71dd4 From Paul Martz, "Here's the mods to the OpenFlight plugin to support FLT export. The ZIP file contains the new .cpp/h files as well as existing files that I modified.
Changes to existing files:
  ReaderWriter.cpp -- to support writeNode() of course.
  ReaderWriterATTR.cpp -- to support writeObject -- we write .attr files for textures, if they don't already exist.
  AttrData.cpp/.h -- Minor fixes.
  CMakeLists.txt -- to include the new files in the build."
  
From Robert Osfield, port to non Windows platforms just required fixing of header capitilization errors
that windows lets through the net due to having a case insensitive file system.
2008-03-28 12:44:33 +00:00
Robert Osfield
e19dbe8daa From Paul Martz, "The attached preserves OpenFlight Object record data as UserData in the osg::Group corresponding to the Object record.
The files are:
    include/osgSim/ObjectRecordData -- The new class. Derives from Object to support .osg IO.
    src/osgPlugins/OpenFlight/PrimaryRecords.cpp -- Reads data into that class.
    src/osgPlugins/osgSim/IO_ObjectRecordData.cpp -- .osg IO support."

From Robert Osfield, made the OpenFlight read object record data optional via the -O readObjectRecordData ReaderWriter option.
2008-03-13 14:09:11 +00:00
Robert Osfield
af29bccf4f From Andreas Ekstrand and Lars Nilsson, fix for reading Texture Attribute file 2008-03-05 13:54:52 +00:00
Robert Osfield
91e35599dc From Brede Johansen, "Here's a fix to the changes regarding the new dispose() function. The
last primary node inside a push-pop level would not get the dispose()
call.  This would result in information from some ancillary records,
like the matrix (transform), being lost.

Changes are made to the latest version in the repository.

Thanks to Terry for the help to find and fix the bug and test the changes."
2008-02-18 13:52:26 +00:00
Robert Osfield
4d042581a6 From Paul Martz, "Correction to size of reserved filed in .attr file, Spec says "149*4" bytes, not "149"" 2008-01-04 15:30:49 +00:00
Robert Osfield
8d5d543600 From Brede Johansen, support for contiuation records. 2008-01-04 11:26:21 +00:00
Robert Osfield
5e89958623 Fom Brede Johansen, "I have added the OSGPL license to the OpenFlight source files" 2007-12-24 15:32:15 +00:00
Robert Osfield
32e520d5a1 From Brede Johnansen, support for continuation records. 2007-12-11 16:42:10 +00:00
Robert Osfield
ab7043ea45 From Tony Horrobin, "Attached is a small fix for the openflight loader with regard to road
segment and construction records.

It just uses the id field to set the name of the osg node as with other
types."
2007-12-07 13:28:02 +00:00
Robert Osfield
85ef819827 Changed the plugin name to openflight instead of OpenFlight to avoid problems
with osgDB looking for just lower case plugin names
2007-08-23 16:33:39 +00:00
Robert Osfield
6dec61842d Introduce Camera::s/getRenderer(). 2007-07-28 10:28:40 +00:00
Robert Osfield
9e2fe92ef1 From Rudolf Wiedemann, "I need to link OpenSceneGraph statically to my application, so I
completed the new registration of the plugin-readerwriters
("REGISTER_OSGPLUGIN") according to your osgstaticviewer-example (see
attachment, based on today's svn)."
2007-07-06 13:54:26 +00:00
Robert Osfield
a7de33ee55 From Brede Johansen, "Attached is a fix that returns a default color (white) if an invalid
index to the color palette is used."
2007-07-06 13:33:40 +00:00
Robert Osfield
b4cd96ebdd From Jason Daly, "We have a few OpenFlight files that used to display properly with the
old loader, but appear very, very wrong with the new one.  I traced the
problem to the handling of the palette override flags in the external
reference records.  The current behavior for handling the palette
override flags for external references has different offsets for
different OpenFlight version (2 bytes for 14.2-15.1 and 4 bytes for 15.2
and later).  However, I believe this behavior is incorrect.

I know that the original 14.2 OpenFlight spec (dated April 1995)
specifies 2 bytes between the filename and the override flags, and the
15.4 and later specs specify 4 bytes.  However, I also found a 14.2.4
OpenFlight spec (dated January 1996) that changes the specification to 4
bytes.  Also, the databases in question were created using an old IRIX
version of MultiGen II, which wrote OpenFlight 14.2 files natively.
These files also have 4 bytes between the filename and flags.
Furthermore, these databases have always worked properly under earlier
versions of OSG, under Performer, and in every MultiGen product we've used.

This leads me to believe that the original 14.2 spec was incorrect (the
14.2.4 spec corrected this error), and there should be 4 bytes between
the filename and flags for all OpenFlight files version 14.2 and later.

The attached fix modifies the OpenFlight loader to behave in this way."
2007-06-08 10:58:22 +00:00
Robert Osfield
b1909ff55a From Jason Daly, "This changes the handling of textures in the OpenFlight loader.
Currently, if the texture attribute file doesn't explicitly specify an
internal format, the loader will force it to use GL_RGB, which keeps
translucent textures (eg. GL_RGBA textures) from showing up properly.

This patch changes the default behavior to simply use the image's format
instead of forcing a particular format."
2007-06-08 10:22:44 +00:00
Robert Osfield
2b9f209765 From Per Fahlberg, "added use of the internal format specified in the OpenFlight format attr files." 2007-06-05 11:18:28 +00:00
Robert Osfield
6b75603ace From Charles Cole, "Attached are mods to the OpenFlight plug-in to help further implement
the specification.  With these mods, blink sequences are now created for
flashing light point nodes, either palletized (v.15.8 and later) or
non-palletized (15.7 and earlier).  Thanks to Brede for his
implementation of the palletized light point nodes.

There is still work to do on adding the capability to properly handle
light point system nodes, but this does add some capability that did not
previously exist.  So, I wanted to at least submit this and I will
hopefully provide the additional capability in the near future.

I've tested the code modifications with Visual Studio 2005.  I don't
have the means to test any other operating system, but I would suspect
that there shouldn't be any issue (famous last words).  I used the test
files that I uploaded to the users forum to test the changes.

In addition to the added capability, I changed the light point node
radius to the "actualPixelSize" value in the file.  Previously, the
radius was set to half the actual pixel size (see
LightPointRecords.cpp).  Not sure why this was the case.  But, it was
brought to my attention by a co-worker who created the OpenFlight files
and was testing them with different viewers.  If there's some history
for setting the radius to half the size, then this change can be
omitted."
2007-05-26 15:42:30 +00:00
Robert Osfield
6583b5b370 From Charles Cole, "he attached code
implements the LightPointSystem class to allow for the OpenFlight
plug-in to read and handle light point system nodes.  The behavior is
very similar to the old plug-in in that a MultiSwitch node is created to
handle the "enabled" flag bit set in the node record.  The code also
reverts the changes for the actualPixelSize as mentioned above.  And
lastly, the code requires the previously submitted changes for the
plug-in.

As for the other changes, I've tested the code with Visual Studio 2005
and the files that I posted in the users forum.

With all of the submitted changes, the OpenFlight plug-in should now be
capable of loading files with light point system nodes and the use of
palletized light points and non-palletized light points.
"
2007-05-25 19:35:19 +00:00
Robert Osfield
2e6ee4bb39 Removed old gmake and VisualStudio build files 2007-04-10 13:10:25 +00:00
Robert Osfield
282f4ce0b9 Moved the TARGET_NAME setting into the OsgMacroUtils.cmake. 2007-03-19 17:24:19 +00:00
Robert Osfield
da64127539 Ran dos2unix on CMakeLists.txt files. 2007-03-19 13:26:34 +00:00
Robert Osfield
be3f61c49f From Luigi Calori, move to using local CMakeLists.txt files and explicit file lists.
From Robert Osfield, small ammendments of the above to seperate example and application installs, and fix the osgPlugins install directory.
2007-03-19 12:30:26 +00:00
Robert Osfield
ad3cac84e9 Moved Block, ReentrantMutex and ReadWriteMutex into OpenThreads. 2007-02-23 16:31:34 +00:00
Robert Osfield
b14fc636e7 Added STATIC_OBJECT_DETECTION optimizer pass to OpenFlight plugin 2007-02-22 09:16:54 +00:00
Robert Osfield
8dc84d0a8f From Brede Johansen, Thanks for the model it helped to understand the problem. In Creator the "Last Frame Duration" is performed on the last frame of the last loop iteration, I tried to use it for the last frame of every loop iteration. As you already have explained we need a custom Sequence node. In the osgSim nodekit we already have a couple of specialized nodes for the OpenFlight format. We need an osgSim::GroupAnimation but I don't have the time right now to take this challenge. Until then I have modified my last attempt to work with the current osg::Sequence node by ignoring the "Last Frame Duration". 2007-02-21 21:20:33 +00:00
Robert Osfield
36b8ccacdd Fixed warnings 2007-02-15 09:31:00 +00:00
Robert Osfield
927dfc0a52 From Brede Johansen,
"Geometry.cpp
Make sure number of normals match number of vertices when lit or
vertex-normal pairs are separated when geometries are merged by the
optimizer.

Ancillary.cpp
Improved support for multitexture effect field and use texture
environment from .attr file.

PaletteRecords.cpp
Use search path when looking for shader files.

PrimaryRecords.cpp
Added preset uniforms "TextureUnit0", "TextureUnit1", "TextureUnit2"
and "TextureUnit3" for GLSL shaders."
2007-02-13 14:19:39 +00:00
Robert Osfield
4f441771f0 Fixed Suse9.3 build problem due to different handling Quat copy constuctor 2007-02-06 13:44:20 +00:00
Robert Osfield
3c5c4ae242 From Brede Johansen, "I have made some changes to support light sources in the new
OpenFlight loader."
2007-02-05 11:14:23 +00:00
Robert Osfield
3cb9af0dd6 From Brede Johansen, "The OpenFlight loader already have a caching mechanism for externals.
The cache works for nested externals but is cleared before the master
flight file is returned.  I implemented texture caching using the same
mechanism."
2007-01-15 10:11:23 +00:00
Robert Osfield
462803fd57 From Paul Martz, speeling fixes for Tessellator/Tessellation. 2007-01-08 21:29:49 +00:00
Robert Osfield
778fbc78e5 Fixed compile warning 2007-01-04 20:49:39 +00:00
Robert Osfield
d88b996df1 From Brede Johansen, "New option "cloneExternalReferences" for OpenFlight plugin" 2006-12-14 21:15:40 +00:00
Robert Osfield
3cab169b0d Checked in remaining element from Brede Johansen changes for clmapToEdge reader option. 2006-12-05 20:30:46 +00:00
Robert Osfield
289331569d From Brede Johansen, "added a new reader option to replace the texture
wrap mode CLAMP with CLAMP_TO_EDGE."
2006-12-05 14:28:07 +00:00
Robert Osfield
ac9a28051f Fixed the writeNode function so it was properly return FILE_NOT_HANDLED, fixing
a big with it writing out an empty .flt file.
2006-11-07 17:00:29 +00:00