Commit Graph

1894 Commits

Author SHA1 Message Date
Robert Osfield
f738ab8fe2 Changed the image reading so that it leverages the osgDB::Input::readImage() method
to ensure that it picks up on any local paths set on the Input object.
2008-09-10 11:28:47 +00:00
Robert Osfield
c266cef6b1 Changed the path management so that the node path is prepended on the database path list, rather than replacing it. 2008-09-10 11:27:45 +00:00
Robert Osfield
45ccf11161 Added osg::Image::set/getWriteHint() that allows images themselves to control how
they are written to disk, either inline or as an external file.  Added support for
this in the .ive plugin.  Default of WriteHint is NO_PREFERNCE, in which case it's
up to the reader/writer to decide.
2008-09-10 11:26:30 +00:00
Robert Osfield
d2e29efcd9 Added acceptance of .ogv extensions in xine-lib plugin 2008-09-02 16:13:54 +00:00
Robert Osfield
8759984f52 Replaced uint with unsigned int 2008-09-01 15:29:22 +00:00
Robert Osfield
99a294ebae Implemented support for ShapeAttributeList, used John Vidar Larring's initial
submission as a base, but implementing the user data functionality in a different
way to facilitate more flexible user data support
2008-09-01 12:40:33 +00:00
Robert Osfield
befa2112f8 From John Vidar Larring, initial cut of .ive support for ShapeAttributeList user data 2008-09-01 12:39:19 +00:00
Robert Osfield
141296c323 From Michael Guerrero, "I've attached the files with the new addition of the "registered = true"
flag set."
2008-08-29 09:26:07 +00:00
Robert Osfield
ed617f87df Introduce the concept of layer set name, using the osg::Object::s/getName() to store
the setname, and using a compound string (set:setname:filename) in place of standard filename when reading and writing
files.
2008-08-28 16:15:57 +00:00
Robert Osfield
95a359bdab Introduced SwitchLayer which will form the basis of provided support for varients 2008-08-27 10:13:30 +00:00
Robert Osfield
9499cfa420 Improved the GLSL implementation. 2008-08-26 17:40:04 +00:00
Robert Osfield
11bd5f39d4 From Ulrich Hertlein, attached is a small fix for a mismatched function signature 2008-08-26 08:41:30 +00:00
Robert Osfield
38efb23901 From Liang Aibin, added support for :
osgFX::Effect
    osgFX::AnisotropicLighting
    osgFX::BumpMapping
    osgFX::Cartoon
    osgFX::Scribe
    osgFX::SpecularHighlights.
2008-08-25 15:57:17 +00:00
Robert Osfield
d3dda658a8 From Liang Aibin, removed redundent spaces 2008-08-25 15:37:48 +00:00
Robert Osfield
5c2a4b014e From Michael Guerrero, Fixed crash that occurred when openning an new movie file after all previous movie ImageStream had been closed. Also add a missing close of the movie file. 2008-08-25 15:20:42 +00:00
Robert Osfield
0c9214636f From Paul Martz, "This change fixes a problem with PAT nodes during FLT export."
Note, Paul Martz has merged this patch into OpenSceneGraph-2.6.
2008-08-25 15:03:31 +00:00
Robert Osfield
43d19c11cf From Guillaume Chouvenc, "I have added the file StateAttribute.cpp in src/osgPlugins/osg
to support the reading and writing of StateAttribute Callback
in osg files.
"
2008-08-25 14:59:06 +00:00
Robert Osfield
8d5bfeddee From Guillaume Chouvenc, "I have modified Uniform.cpp and StateSet.cpp in src/osgPlugins/osg
to support the reading and writing of Uniform Callback and
StateSet Callback in osg files."
2008-08-25 14:54:11 +00:00
Robert Osfield
78e22f24c2 Introduced initial cut of a dicom loader, which uses ITK to do the loading. 2008-08-22 16:39:17 +00:00
Robert Osfield
8303f03b24 Added .ive support for BlendEquation 2008-08-18 15:06:41 +00:00
Robert Osfield
4adb68c802 Added BlendEquation .osg support 2008-08-18 14:49:16 +00:00
Robert Osfield
5400e570c7 Added support for geometry shader attributes 2008-08-15 17:18:10 +00:00
Robert Osfield
7cd4641ece From Stephane Lamoliatte, "I added the osg::Program parameters support for the osg plug'in.
Now we could correctly configure geometry shaders in osg files."

Notes from Robert Osfield, renamed the names of the parameters to be less GL centric and more human readable.
2008-08-15 16:43:56 +00:00
Robert Osfield
38f6cddc2c Changed osg::ImageSequence::set/getDuration to set/getLength() to be in keeping with the
osg::ImageStream's getLength().
2008-08-15 16:21:44 +00:00
Robert Osfield
7f8183f64c Merged changes to OpenSceneGraph-2.6 into trunk using :
svn merge -r 8729:8734 http://www.openscenegraph.org/svn/osg/OpenSceneGraph/branches/OpenSceneGraph-2.6 .
2008-08-05 11:17:48 +00:00
Robert Osfield
c8001915f6 From Ulrich Hertlien, "attached is a patch to src/osgPlugins/quicktime/QTImportExport.cpp that fixes loading images using the quicktime loader. Also fixes some minor bugs like uninitialized variables and incorrect deletes.
I'm a bit puzzled why this didn't pop up for more people as it's quite severe: basically the filename was never set!""
2008-08-04 09:05:29 +00:00
Robert Osfield
65d5ef608d Reverted back to using std::list<std::String> 2008-07-25 17:42:37 +00:00
Robert Osfield
d137394169 Added Mode support 2008-07-25 16:23:00 +00:00
Robert Osfield
d8d2bc4193 From Ulrich Hertlein, "as I hinted at on osg-users in the "obj loader: map_* only reads last component" thread, this submission broke material/texture loading for some files I have that specify texture matrix scaling.
The following link shows a very comprehensive list of .mtl file options:
http://local.wasp.uwa.edu.au/~pbourke/dataformats/mtl/

Attached is a patch that should fix spacey filenames and optional texture scale/offset.  I have tested it with files I have that I modified to contain spaces in the texture filenames."
2008-07-25 15:45:40 +00:00
Robert Osfield
ec4d189b64 Added ImageSequence to .ive plugin, added support for multiple ImageThreads in osgDB::ImagePager 2008-07-25 13:45:07 +00:00
Robert Osfield
5cdb5c055c Added extension docs 2008-07-25 10:18:14 +00:00
Robert Osfield
7c6aba874b Added option docs 2008-07-25 09:46:05 +00:00
Robert Osfield
79fbab4a95 From Paul Martz, "Not sure about the descriptions, so I left those blank. But at least "osgconv --formats" will display the .ive options now." 2008-07-24 13:25:49 +00:00
Robert Osfield
7dabdf5d7e Added supportOptions() entry docs 2008-07-24 12:01:45 +00:00
Robert Osfield
ea309e2677 From Bob Kuehne, "fix for filenames that have spaces within their name."
Note form Robert, changed std::cout to osg::notify(osg::INFO)
2008-07-24 11:22:43 +00:00
Robert Osfield
bfcc7473b8 Applied filename fix suggested by Andrew Bettison. 2008-07-23 19:06:14 +00:00
Robert Osfield
c9dc578186 Added support for pruning old images, recording the Duration in the .osg file, and -o filename output support in osgimagesequence. 2008-07-22 16:44:49 +00:00
Robert Osfield
669d6be0b2 Fixed handling of TextureCubeMap's with mipmapped/ImageSequence/PBO's. 2008-07-22 14:47:59 +00:00
Robert Osfield
14771d3a4d Added ImageSequence IO support in Texture classes 2008-07-22 12:40:02 +00:00
Robert Osfield
573044ceea From Mario Valle, signed/unsgined warning fix 2008-07-21 21:17:05 +00:00
Robert Osfield
e4b22e44d2 Moved the ~Record body into the .cpp to avoid a MipsPro compile error (due to a compiler bug) 2008-07-21 19:23:03 +00:00
Robert Osfield
2125c9843b Moved the if (!buffer) check to infront of the memory initialization 2008-07-21 16:17:41 +00:00
Robert Osfield
c2432b22da Added first cut of ImageStream IO wrapper 2008-07-21 09:55:15 +00:00
Robert Osfield
4aed0a7eac From Ulrich Hertlein, "attached are some minor tweaks:
- fixed typos in osgViewer/ViewerBase
- const-ness in include/osg/View findSlaveIndexForCamera
- supported options for STL reader, fixed return values to reflect proper errors
- supported options for DirectX reader, fixed return values
- normals pseudo-loader: scaling normals to a const (but variable) fraction of the bounding sphere radius
"
2008-07-17 13:51:14 +00:00
Robert Osfield
adaf71fa19 Added osgDB::AuthenticationMap/Details to osgDB and curl plugin to add the ability
to authenticate http transfers
2008-07-17 11:55:55 +00:00
Robert Osfield
cacb509f60 Moved .net plugin out into Deprecated section of osg svn repostitory 2008-07-16 16:19:54 +00:00
Robert Osfield
a383f7ee34 Fixed name of lib 2008-07-15 19:42:49 +00:00
Robert Osfield
47255490a9 Changed IMPORT to "Import option", and "EXPORT:" to "Export option:" in supportsOptions() docs make it a little more friendly and understandable 2008-07-15 19:28:30 +00:00
Robert Osfield
115787f8e9 From Paul Martz, "Here's documentation for the export options of the FLT plugin. I also labeled the import options as such." 2008-07-15 19:26:20 +00:00
Robert Osfield
c989b98f2e From Gino van den Bergen, "The VRML plugin in the current 2.5.4 release will not compile under VC8.0 when the project file is generated using CMake 2.6. The attached CMakeLists.txt will fix this problem. The file replaces the CMakeLists.txt file in src/osgPlugins/vrml.
NB: It is assumed that the antlr and regex libs are located in $(OPENVRML_DIR)/lib.
 "
2008-07-15 19:02:20 +00:00
Robert Osfield
c2b77aa08e From Jeremy Moles, import of the osgWidget NodeKit, sourced from the original http://osgwidget.googlecode.com/svn/trunk
Notes from Robert Osfield, I've merged osgWidget trunk, and added/changed CMakeLists.txt file to make it suitable for inclusion in the core OSG, and moved imagery/scripts/shaders out into OpenSceneGraph-Data
2008-07-15 17:21:25 +00:00
Robert Osfield
5ab4af80c5 Added missing ac3d supportsExtensions() constructor 2008-07-14 20:11:37 +00:00
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
cb98cddc31 Added new ReaderWriter methods for recording what protocols, extensions and options are
support by ReaderWriters
2008-07-13 15:24:45 +00:00
Robert Osfield
6aa604f31a From Paul Martz, removed uneccessary libraries from link line 2008-07-13 12:34:06 +00:00
Robert Osfield
4ca61c38f0 From Doug McCorkle, "Attached is patch that corrects/improves the following issues with the OBJ loader:
1. Added options to control wether the osgUtil::Tessellator or osgUtil::TriStripVisitor are run. By default they still run just as before.
2. Added support for the Emissive material. The data was being read from the mtl file but was never being applied to the model.
3. This is the main bug addressed, when a model is read in with an alpha value specified like:

newmtl Material__8
       Ns 24
       d 0.33
       illum 2
       Kd 0.204 0.204 0.204
       Ks 0 0 0
       Ka 0.153 0.153 0.153

where the alpha value is d. The loader would then overwrite the alpha value when reading the diffuse, specular, and ambient colors. I have changed all the material color readers to only set the values they read and to use the default colors specified in the constructor of the obj class. With these changes, the obj reader now handles opacity correctly if the alpha value is specified before the material colo"
2008-07-12 12:00:58 +00:00
Robert Osfield
360e7629d0 From Christophe Loustaunau, "For our application, we need to write tiff file in floats. I have change a little bit the readerWritterTiff :
It check the data type of the image ( img.getDataType() ) and if it's GL_FLOAT :It save the tiff with float values.
Otherwise it does the same thing as before."
2008-07-11 19:43:01 +00:00
Robert Osfield
0e2dea9a39 From Liang Aibin, " In lastest svn version of OSG, the .ive plugin missing osg::Light, it
does not process I/O for osg::Light. Now I have fixed it as follows:
 
2. In DataInputStream.cpp, I add support code in DataInputStream::readStateAttribute
    for osg::Light.
 
3. In DataOutputStream.cpp, I add support code in DataOutputStream::writeStateAttribute
    for osg::Light.
 "
2008-07-11 19:23:49 +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
161e01dc5d From Mathias Froehlich, "Due to the recent data variance changes/discussion:
Change the ac3d loader that can as such only deliver static models to set the
data variance to static for the returned model.
"
2008-07-11 17:35:13 +00:00
Robert Osfield
aa593fcd2d From Colin McDonald, "There is a problem reading bmp files containing a colour palette,
due to an incorrect scan line length calculation.  Attached is a fix,
and a little bmp file which demonstrates the problem."
2008-07-01 19:04:29 +00:00
Robert Osfield
dba344feba From Lilin Xiong, "I change ive plugin a little for osgText inout, so the ive plugin supports backdrop setting,
and Text3D, FadeText inout :

1. in DataInputStream.cpp, add 1286--1293 lines;
2. in Text.cpp, add some code for text's Backdrop setting;
3. in IveVersion.h, add line 39,  increase the VERSION to VERSION_028(line 41)
4. in ReadWrite.h,  add line 146,147
5. add file FadeText.h, FadeText.cpp, Text3D.h, Text3D.cpp."
2008-07-01 18:37:13 +00:00
Robert Osfield
275811d02a From Eric Sokolowsky, "I have made a number of changes intended to get a few things working better on OSX. However, since I'm still pretty new at Mac development and cmake I'm not entirely certain that the changes I have made are benign on other platforms. I have tested these changes on Leopard with CMake 2.6 generating Xcode 3.0 projects, compiling on ppc and i386 for 10.5 and 10.4, and on Linux (CentOS) and everything still seems to work ok. Here are the changes I made (against OSG svn as of this afternoon):
- Added osgviewerCocoa example to APPLE builds
- Fixed corrupt Xcode project generation with CMake 2.6 dealing with ADD_DEFINITIONS and CMake Policy CMP0005 on Leopard
- Resolved CMP0006 warning for examples and programs by setting BUNDLE DESTINATION to same as RUNTIME DESTINATION with CMake 2.6
- Fixed freetype plugin on Leopard to avoid OpenGL linking problem
- Figured out how to use a custom Info.plist included in the project (see osgviewerCocoa application CMakeLists.txt)"
2008-06-23 09:57:45 +00:00
Robert Osfield
1e3183a355 Quietened down debug info 2008-06-21 17:56:38 +00:00
Robert Osfield
af271f99ec Added support for X11's overrideRedirect functionality 2008-06-21 17:50:58 +00:00
Robert Osfield
8aa7c330f8 Changed const double* to const Matrix::value_type* to ensure changes in Matrix type don't break the build 2008-06-20 15:28:38 +00:00
Robert Osfield
2ba5f002d2 from Andrew Bettison, LineStipple support for .ive 2008-06-19 14:57:36 +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
c3c727b822 From Andrew Bettison, "Attached are changes for src/osgPlugins/ive (version 2.4.0) that implement LineStipple read/write support for the ive file format." 2008-06-19 14:14:20 +00:00
Robert Osfield
45fcb25765 From Liang Aibin:
"1. Location: <OSG_SOURCE_ROOT>\src\osgPlugins\osg\Fog.cpp
   Reason: ".osg" writter plugins output incorrected string for osg::Fog's Mode.
   How to Fix:
     Line 138 in Fog.cpp: case(Fog::LINEAR): return "NERVER";
     Change to:           case(Fog::LINEAR): return "LINEAR";
2. Location: <OSG_SOURCE_ROOT>\src\osgPlugins\ive\
   Reason: ".ive" writter plugins missing to process "osg::Fog".
   How to Fix:
   (1). Line 86 in ReadWrite.h:
        Add: #define IVEFOG                          0x00001133
   (2). In CMakeLists.txt
        "SET(TARGET_SRC" section Add: Fog.cpp
        "SET(TARGET_H" section Add: Fog.h
   (3). In DataInputStream.cpp
        Line 54,Add:    #include "Fog.h"
        Line 1185,Add:  else if(attributeID == IVEFOG){
                            attribute = new osg::Fog();
                            ((ive::Fog*)(attribute))->read(this);
                        }
   (4). In DataOutputStream.cpp
        Line 57,Add:    #include "Fog.h"
        Line 832,Add:   // This is a Fog
                        else if(dynamic_cast<const osg::Fog*>(attribute)){
                            ((ive::Fog*)(attribute))->write(this);
                        }
   (5). Add newly created ive::Fog Object in Fog.h and Fog.cpp.
"
2008-06-18 20:17:13 +00:00
Robert Osfield
df87106d4b From Bob Kuehne, "added multi-texture support (alpha/trans images)" 2008-06-18 11:56:50 +00:00
Robert Osfield
bc79df7cd8 From Gino van den Bergen, "Added support for vrml primitive caching" 2008-06-18 10:51:02 +00:00
Robert Osfield
f10cb3c388 Added mutex to serialize access to the trpager 2008-06-16 13:20:51 +00:00
Robert Osfield
239f4e5c42 From Stephane Lamoliatte, "fix to reading of DatabasePath property" 2008-06-06 16:41:24 +00:00
Robert Osfield
c2a4825afa From Mathieu Marache, "I have made the logo plugin work again (a simple copy and paste problem) and added the path of the logo file (if not empty) to the data file path in order to be able to find images relatively." 2008-06-06 14:59:17 +00:00
Robert Osfield
71187a2c56 From Mario Valle, fixed warnings 2008-06-03 13:07:40 +00:00
Robert Osfield
6873d4237c Ran merge to get rid of tabs 2008-06-03 13:06:54 +00:00
Robert Osfield
0a6b4d5709 From Luc Frauciel, Added support for osgTerrain::ValidDataOperator.
From Robert Osfield, added versioning to the above.
2008-05-30 12:59:49 +00:00
Robert Osfield
7a2c403992 Added code to catch erroneous Dof axis settings 2008-05-29 11:45:31 +00:00
Robert Osfield
8e91926ca5 From Thibault Genessay, "The PNG plugin crashes when you try to read a malformed file (attached
is an example). This can happen in circumstances that are not
manageable by the OSG itself (e.g. 3rd party buggy program) but one
would expect the plugin to be able to recover by returning
ReadResult::ERROR_IN_READING_FILE.

libpng provides two callbacks for warnings and errors - those are
currently unused. By default, they point to function that call exit()
or something similar (the default error callback never returns). This
patch registers the callbacks using libpng's mechanisms, makes the
warning callback emit an osg::notify(osg::WARN) message and the error
callback throw an error. The reading process is enclosed in a
try...catch block. Upon error, the memory is freed and
ReadResult::ERROR_IN_READING_FILE is returned.
"
2008-05-28 13:51:56 +00:00
Robert Osfield
20f3e74643 From Brad Anderegg, "This submission fixes two bugs and helps some performance problems we have been having with txp databases.
The first bug is that the terrain tiles will page out to a lower LOD when they are right in front of you.  The issue appears to be with the blacklisting heuristic which forces a tile to LOD 1, commenting out the usage of blacklisting with the LOD Nodes fixes our problem.  This code change was made to line 29 of TXPPageLOD.cpp.

 

The second bug we were experiencing is that the database reader options never make it through to the archive loader.  The use case for us appeared when the FID codes for the terrain were no longer on the materials.  As it turns out the archive was being created twice, once by TXPNode and once by the ReaderWriterTXP on getArchive() so the options never actually got set on the archive that was being loaded.  The fix is to first create the archive by calling getArchive on the ReaderWriterTXP, which stores it in a map for reference later, and then passing that archive into the TXPNode for it to set its internal member.  With this code change we only create one archive (not sure what creating two did) and our options flags get set properly on the database.

 

The changes made are in TXPNode.h line 72 where the TXPArchive is now passed in.  In the TXPNode.cpp the loadArchive(TXPArchive*) was changed to have the default behavior if NULL is passed in, if an archive is passed in then it does not load it since all the loading is done in the ReaderWriterTXP::getArchive().  The only other place that loadArchive is called is in TXPIO.cpp where a modification was made to pass in NULL which will have the same behavior as it used to.  The last change is the little block of code starting on line 57 of ReaderWriterTXP.cpp, this was changed so that it first calls getArchive() which caches the archives in a map does some loading stuff and returns a pointer to it which is then passed in as a parameter to TXPNode::loadArchive().

 

The performance changes were made to TXPParser.cpp line 163 where we use to osgUtil::Optimizer on the node before passing it off, and on line 1456 we changed the geometry to use display lists.  These small changes actually made drastic performance increases for us, as much as 1000% on certain laptops.

 

As far as testing goes, we have tested these changes with at least 5 txp databases on a variety of different computers including Mac OS and Linux.  The base version used is 2.4."
2008-05-27 20:53:43 +00:00
Robert Osfield
169b1a02ad From Gino van den Bergen, "I've refactored the single ReadedWriterVRML2.cpp into multiple files. The reason for doing this was to break up the horribly long function
osg::ref_ptr<osg::Node> ReaderWriterVRML2::convertFromVRML(openvrml::node *obj)
 
The fixes are:
 
* Added the source's parent directory as search directory for image files.
* The material properties are now set in the stateset of the Geode rather than the Geometry. This will allow geometries to be reused with different material properties in future updates.
 
NB: I planned for a caching scheme in which multiple occurences of the same primitive (e.g., Cylinders with radius 0.8 and height 1.2), would use the same Geometry object. Unfortunately, my planning moved me to other areas, but I might still finish the caching scheme in a quiet hour. For the time being I decided it would be a good thing to already submit my current changes.
 "
2008-05-27 12:06:50 +00:00
Robert Osfield
dd6d04e088 From Andrew Bettison, "Problem: the LineStipple pattern when read from an OSG node file is always 0xFFFF, even though specified otherwise in the OSG file.
Cause: possibly a copy/paste typo in src/osgPlugins/osg/LineStipple.cc, line 61:
  if (fr[0].matchWord("functionMask") && fr[1].getUInt(mask))

Solution: change to:
  if (fr[0].matchWord("pattern") && fr[1].getUInt(mask))"
2008-05-27 11:07:52 +00:00
Robert Osfield
66a1996a5a From Wang Rui, "I have just done some changes on the classic osgdb_gif plugin (based on OSG 2.5.0). I wish our developers may use the newly written GIF reading plugin to attach animate GIF files as textures now! In my opinion, a GIF is much smaller than AVI and MOVs, and much more efficient sometimes.
Changes includes:
1. A new GifImageStream class (inherit from osg::ImageStream and OpenThreads::Thread) have already been added to implement different operations of a GIF movie, such like playing, pausing, rewinding, setting time and so on.
2. Some small changes to decode_row() and gif_read_stream(), which make the transparency of GIF images correctly.
3. Just a few changes to the ReaderWriterGIF::readGIFStream() function, which ensure that animate GIFs are loaded by GifImageStream (and the function returns GifImageStream objects) and static GIFs unchanged (still use the old method and returns osg::Image objects!).
 
Attachments are the cpp file and an animate GIF file for further test. Just rebuild the osgdb_gif project and use osgviewer or osgmovie to view it.
The plugin has been tested on Windows and Arch Linux."
2008-05-27 10:50:26 +00:00
Robert Osfield
476cb5373e From Philip Lowman, post 1:
"Here is a collection of changes which should fix issues building the OSG with CMake 2.6.0 (along with some other changes)

CMakeLists.txt:
* Set CMP0003 to supress warning about linking against -lpthread (which is a
  non-absolute library location).  (CMake 2.6.x fix)
* Modified the WIN32_USE_MP and a couple of other Visual Studio specific flags
  to be in an IF(MSVC) block  (minor tweak to reduce exposing this stuff on MinGW builds)
* Includes my second set of glu tesselator autodetection changes that you
seemed to want but haven't committed yet.

src/OpenThreads/pthreads/CMakeLists.txt:
* Eliminates warning when compiling on Linux about spaces in link line (CMake 2.6.x fix)

CMakeModules/OsgMacroUtils.cmake:
* Tweaks to make the macros behave properly under CMake 2.6.0 (doesn't change behavior under CMake 2.4.x)

CMakeModules/Find3rdPartyDependencies.cmake:
* Adds the NO_DEFAULT_PATH option to all of the search options so that things in C:\Program Files\OpenSceneGraph aren't accidently picked up during configure time and instead only things in the "3rdParty" folder are discovered. (general bugfix)
"

post 2:
"Ok, hold the presses.  I just discovered that for some odd reason the osgdb_* plugins under Linux aren't getting put under the osgPlugins-2.5.0 folder.  Not exactly sure why this broke, the folder was there, just empty.  I'll have to look into it this evening."

post 3:

"Fixed, was caused by the switch to CMAKE_LIBRARY_OUTPUT_DIRECTORY and some code in osgPlugins/CMakeLists.txt that effectively overrides LIBRARY_OUTPUT_PATH on non-MSVC compilers to dump the plugins in the plugins folder.  I tweaked it to override CMAKE_LIBRARY_OUTPUT_DIRECTORY as well.  Seems to work fine."
2008-05-26 22:36:58 +00:00
Robert Osfield
51dd9676db From Paul Martz, "When exporting a DrawArrays PrimitiveSet, the DAE plugin computes an incorrect nbVerticesPerPoly if the first index is not zero. The issue can be reproduced easily with:
osgconv cessna.osg cessna.dae
 
Examination of the resulting .dae file reveals several out-of-range tristrip indices; viewing the .dae file in osgviewer causes a crash when OSG tries to lookup those indices.
 
Attached resolves this issue."
2008-05-26 22:34:06 +00:00
Robert Osfield
8f6ca1dc6c From Gino, "According to the 1.4.1 COLLADA spec (2nd ed) the standard behavior for fx_sampler_wrap_common is as follows
CLAMP ->GL_CLAMP_TO_EDGE
NONE->GL_CLAMP_TO_BORDER

The current 2.5.0 daePlugin assumes the following binding

CLAMP ->GL_CLAMP
NONE->GL_REPEAT

Notably the GL_CLAMP binding will result in visible black seams on input files that use otherwise matching textures. Replacing GL_CLAMP by GL_CLAMP_TO_EDGE solves this problem. I've updated both the read and write functions.
"
2008-05-26 21:32:05 +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
58f5ebab19 Checking in missed header 2008-05-22 08:31:56 +00:00
Robert Osfield
7b003b24ea Refactored DatabasePager and related classes to introduce support for
multi-threaded paging, where the Pager manages threads of reading local
and http files via seperate threads.  This makes it possible to smoothly
browse large databases where parts of the data are locally cached while
others are on a remote server.  Previously with this type of dataset 
the pager would stall all paging while http requests were being served,
even when parts of the models are still loadable virtue of being in the 
local cache.

Also as part of the refactoring the DatabaseRequest are now stored in the
ProxyNode/PagedLOD nodes to facilitate quite updating in the cull traversal,
with the new code avoiding mutex locks and searches.  Previous on big 
databases the overhead involved in make database requests could accumulate
to a point where it'd cause the cull traversal to break frame.  The overhead
now is negligable.

Finally OSG_FILE_CACHE support has been moved from the curl plugin into
the DatabasePager.  Eventually this functionality will be moved out into
osgDB for more general usage.
2008-05-21 21:09:45 +00:00
Robert Osfield
646fc43747 Introduced preliminary support for asynchronous file read requests,
ReaderWriter::ReadResult now has a FILE_REQUEST enum.
  ReaderWriter::Options now has a s/getAsynchronousFileReadHint() parameter methods.

  libcurl based plugin now detects enabing of the AsynchronousFileReadHint, but
  as yet does not handle async requests - handling everything syncronously.
  
  DatabasePager now by default will enable AsynchronousFileReadHint for http
  based file requests
2008-05-14 17:03:57 +00:00
Robert Osfield
d7c4e6f26e Moved the cache file writing into StreamObject so that the cache file is only
created once data is being read.
2008-05-14 14:59:50 +00:00
Robert Osfield
6be1928447 Introduced a thread safe map which manages a single EasyCurl object per thread. 2008-05-14 13:16:36 +00:00
Robert Osfield
094dcd9bfd Refactor curl usage so that a new EasyCurl class wraps up the curl handle and
reading from curl.
2008-05-14 12:47:26 +00:00
Robert Osfield
f3d36055ef From Steven Thomas, "Subject: Collada fix
There was a problem converting a file to Collada by using osgconv like this:

osgconv file.osg file.dae

You would get an error message:

I/O error : Permission denied
I/O error : Permission denied
error : xmlNewTextWriterFilename : out of memory!
Error: daeLIBXMLPlugin::write(file://cessna.dae) failed
Warning: Error in writing to "cessna.dae".

This was due to some bad URI processing code in the Collada plugin. The attached file fixes this by using the Collada DOM's URI processing functions. After this change the file will convert successfully in the local directory.
"
2008-05-13 10:56:10 +00:00
Robert Osfield
61cb0833b9 From Bob Kuehne, "* add easy multiple texture targets support for obj by refactoring texture
load into it's own method.

* use new method from step 1 to load 'map_opacity' textures from .mtl files"
2008-05-12 10:18:41 +00:00
Robert Osfield
a7e5972f82 Added CARIO_FOUND into svg plugins checks 2008-05-11 14:26:27 +00:00
Robert Osfield
13acf6420f From Miguel Escriva, Here you will find a SVG Image Reader. It renders a SVG file as an osg::Image using cairo and rsvg. 2008-05-11 14:23:19 +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
e9589ebb49 From Paul Martz, "Another round of plugin enhancements.
3DC: Output now uses osg::notify.
JPEG: Now returns correct error code for empty input file.
FreeType: Prevent possible crash if Options is NULL."
2008-05-10 17:23:12 +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
59653bcc08 From Eric Sokolowsky, "I found one compilation error in OSG 2.4 in the Inventor plugin, where one node (SoTextureCoordinate3) was assumed to be available in all versions of Inventor but is actually only available in Coin. The use of the node is now protected by #ifdef __COIN__ constructs. The attachment is based on OSG 2.4, not SVN." 2008-05-08 16:48:49 +00:00
Robert Osfield
ebf3804c84 From Sebastien Messerschmidt, "attached you'll find a patch for the shp-plugin.
I've spotted huge memory leaks int ShapeParser and fixed them.
Also, there was a missing destructor (PolygonM) and a missing member initialization (PolygonZ)
Would be nice if someone could test the changes.

To release the memory just if no reading error happened (and therefore the arrays would be valid) I've added an macro to release and reset the pointers at once. I'm not using macros myself very often as I don't like them, but I think it doesn't hurt in this code.

"
2008-05-08 15:17:53 +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
973f104704 From Garrett Potts and Robert Osfield, changes to build against Collada DOM 2.x 2008-05-08 12:36:07 +00:00
Robert Osfield
5fbb582856 Commented out checking of DISPLAY env var 2008-05-07 17:06:36 +00:00
Robert Osfield
e14574cbb2 From Luigi Calori, Added CURL_IS_STATIC option to help hint to the libcurl's plugin build so that it can be select as static build 2008-04-21 14:51:47 +00:00
Robert Osfield
c4ba16f017 Added support for COLOR_BUFFER entries up to 15 2008-04-18 14:57:43 +00:00
Robert Osfield
a1f1f5114c From Stephan Huber, "attached you'll find a refactored and improved quicktime-plugin. I moved all code related to the image-loading, swizzling etc into an extra class. The quicktime plugin supports now reading and writing images from/to streams and the code is less cluttered than previous versions.
I removed QTtexture.h/.cpp and added QTImportExport.h/.cpp. I updated the CMake-files, I hope they are alright. I used the submitted code in my own apps since two months or so and it seems pretty stable, but as always the migration to the osg-quicktime plugin may have introduced new bugs, so perfect for developer release :)"
2008-04-17 15:30:35 +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
5893b99122 From Sherman Wilcox, "Modified the cmakelists.txt file for the curl plugin so the proper
linker directories are set in Win32. The old cmakelists.txt would set
the lib release folder for debug builds as well. This should correct
that."
2008-04-11 10:58:28 +00:00
Robert Osfield
462067c5d9 From Benoit Laniel, "I use mingw to cross-compile openscenegraph to win32. However, linux
filesystem is case-sensitive. Here are the modifications needed to make
the compiler happy. These are only some include lines rewritten (Io.h to
io.h, Windows.h to windows.h etc.) for version 2.3.7."
2008-04-11 10:30:00 +00:00
Robert Osfield
2a54ff3e4a Introduced CMake build option for compiling double or float versions of osg::BoundingSphere and osg::BoundingBox.
Introduced code in BoundgingSphere, BoundingBox, ProxyNode and LOD to utilise the above settings.

Added Matrix::value_type, Plane::value_type, BoundingSphere::value_type and BoundingBox::value_type command line 
options that report where the types of floats or doubles.
2008-04-03 18:36:50 +00:00
Robert Osfield
d0b5a42c5c From Mattias Helsing, "While using the dds plugin (via osgdem) it was able to write 24bit
images with BGR order but not read them. My 2-liner fixed it for me
but it may be that someone with more knowledge of the plugin want to
insert more pixel formats in the reading part of the plugin."
2008-04-03 10:26:18 +00:00
Robert Osfield
0ab29e1502 From Mattias Helsing, "Subject: osga reading slash mismatch
requests for files in a archive are made with unix style paths. So to
be able to match an entry in map(_indexMap) it's keys needs to be
stored in unix style even on Win32"

Note from Robert Osfied, simplified this submission so that the added conversion to
unix slahes is done on all platforms as this should be safe and simpler to maintain.
2008-04-02 13:57:26 +00:00
Robert Osfield
3e94d93a66 Changed the Camera::BufferComponent::COLOR_BUFFER0 from being equal to COLOR_BUFFER
to being COLOR_BUFFER+1 to enable differentation between non MRT and MRT paths.
2008-04-02 13:47:45 +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
f42497bc2b Improved the error capture and reporting 2008-03-28 17:53:58 +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
35c5bd2c92 Renamed Terrain to TerrainTile 2008-03-27 10:55:39 +00:00
Robert Osfield
a9d283ca73 Introduce TerrainSystem node which decorates a complete terrain model made up of Terrain tiles. 2008-03-26 20:06:54 +00:00
Robert Osfield
c9fc0cd802 From Carlo Camporesi, "I have made some changes in order to allow the using of proxies via env variables and options.
I have modified also the cmakelist. In this way osg is able to find the library in 3rdParty directory."
2008-03-26 20:03:53 +00:00
Robert Osfield
3a1fbcd6f0 Added #include<memory> to fix gcc 4.3 build problem 2008-03-25 13:01:40 +00:00
Robert Osfield
6e7a1608df Added preliminary file cache support. Enabled by setting the OSG_FILE_CACHE variable. 2008-03-21 18:35:29 +00:00
Robert Osfield
c762eeee0c Added missing break; at end of each case entry. 2008-03-21 18:31:56 +00:00
Robert Osfield
b58d59ceb7 Fixed push/popping of filepath, removed verbose debug messages 2008-03-21 15:43:53 +00:00
Robert Osfield
c26b41d125 Added better detection and error reporting of files without proper server address 2008-03-21 13:20:07 +00:00
Robert Osfield
ac63d37f7b Added initial cut of libcurl based plugin 2008-03-21 13:08:02 +00:00
Robert Osfield
1d1dcf2cf3 To osg::AutoTransform added support for MinimumScale, MaximumScale and AutoScaleTransitionWidth parameters
and a new scheme for computing the scaling when using autoscale that introduces smooth
transitions to the scaling of the subgraph so that it looks more natural.
2008-03-18 15:37:38 +00:00
Robert Osfield
7a7c197af3 Added minimum and maximum scale support to osg::AutoTransform 2008-03-17 15:22:03 +00:00
Robert Osfield
00f161ca35 Introduce osgParticle::ParticleSystem::s/getParticleScaleReferenceFrame() to
help manage the scaling of particles, whether they should be relative to the
local coordiante frame of the particle system, or be in world coordinates.
2008-03-17 12:09:05 +00:00
Robert Osfield
a1c0c2a3eb Added better error reporting 2008-03-15 19:27:35 +00:00
Robert Osfield
849d2fdc8f From Gino van den Bergen, "I've added a few fixes to the VRML 2.0 plugin:
1) Full DOS paths are now correctly opened by OpenVRML. A URL containing
a DOS path should be "file:///C:data/blah" rather than "file://C:data/blah".

2)  The last primitive defined in "coordIndex" is now added if the
"coordIndex" is not terminated by -1.

3) Smoothed normals are computed if no normal field is provided.
Currently, there is no support for "creaseAngle", so all edges (even the
ones sharper than the creaseAngle) are smoothed. I might add this in the
future if demand rises.

4) If an IndexedFaceSet contains only triangles or quads then the
primitive type is set to TRIANGLES or QUADS, and the primset becomes
DrawArrays rather than DrawArrayLengths.

Question: I noticed that for DrawArrays you can still provide an index
array. Would the rendering be faster if I'd create DrawElements primsets
rather than DrawArrays? Phrased differently, what is the benefit of
using DrawElements over DrawArrays, as there is clearly not a one-to-one
mapping of these concepts to their OpenGL counterparts?

5) Objects are added to the transparent bin and blend mode is enabled
only if the transparency is nonzero. Rendered transparent objects no
longer write the depth buffer."
2008-03-13 16:40:45 +00:00
Robert Osfield
110c761695 From Melchoir Franz, "ac3d.cpp does currently strip everything but the file name in
"texture" paths. This is to drop absolute paths that some
3d editors export (even AC3D itself!). But this also strips
directories of relative paths, which is wrong and contradicts
the ac3d reference implementation. (The reference implementation
doesn't strip anything, though, and so takes the absolute paths
as they are. Definitely not what we want.)

The attached solution checks absolute paths and only strips
those:

 (1)  A:\\foo\\bar.png   ->   bar.png            (as before)
 (2)  /foo/bar.png       ->   bar.png            (as before)

 (3)  foo/bar.png        ->   foo/bar.png        (new)
 (4)  ../foo/bar.png     ->   ../foo/bar.png     (new)

"
2008-03-13 16:18:03 +00:00
Robert Osfield
a9740118db From Paul Martz, files for adding ObjectRecordData support into OpenFlight 2008-03-13 15:21:34 +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
eb9f7428bc Fixed bug in output of ProxyLayer's MinLevel/MaxLevel 2008-03-12 15:28:26 +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
c4d07194a2 From Art Trevs, add support for saving external shader files.
From Robert Osfield, adding missing member variable initializes and Output::getShaderFileNameForOutput() implementation
2008-03-04 14:04:48 +00:00
Robert Osfield
eb46608be4 From Wojciech Lewandowski and Robert Osfield, Support from LightPointNode::s/getPointSprite parameter. 2008-02-27 12:11:02 +00:00
Robert Osfield
335eed204b Added debug message to track cache usage 2008-02-27 11:43:06 +00:00
Robert Osfield
69d58d6f7c From Paul Martz, "This change adds "GL_NORMALIZE" and "GL_RESCALE_NORMAL" to .osg IO in place of the hex equivalents." 2008-02-25 15:09:56 +00:00
Robert Osfield
75b9a9c809 From Robert Osfield and Carlo Camporesi, took submission from Carlo for adding LoadingExternalReferenceMode to ProxyNode and extended it
to include a wider range of options, also completed implementation
2008-02-25 15:07:35 +00:00
Robert Osfield
adbc15b5a1 From Glenn Waldron, "As you may recall, we discussed adding ReaderWriter::readObject() overrides to all the image plugins in order to facilitate future archive support. Attached are the necessary modifications. I tested JPEG, but not all the others... the code is identical though. Note that the DDS plugin already contained the readObject() implementations." 2008-02-25 13:25:42 +00:00
Robert Osfield
e869200b3d Refactored the mutex usage in osgText and freetype plugin to prevent multi-thread crash 2008-02-25 12:54:54 +00:00
Robert Osfield
67f1503c7d Refactored osgTerrain so that the interface for setting up layer is more straight forward, and added support into GeometryTechnique for handling multiple layers 2008-02-22 11:52:23 +00:00