Hi All,
Yesterday I did a review of Paul Mart'z little osgio app that queried
the OSG plugins for what facilities they had. I haven't merged Paul's
changes as I feel they tackle the task of querying plugins in a way
that can be bettered if we just refactor the OSG's plugin API a
little. So... rather than dally around I just go the bit between my
teeth and implemented this extra API. This API is then implemented in
the plugins to allow more information to be externally querried, and
extra options in osgconv compliment this. The new API is in
osgDB::ReaderWriter in the form a a few new methods:
class osgDB::ReaderWriter {
public:
...
typedef std::map<std::string, std::string> FormatDescriptionMap;
/** return which protocols are supported by ReaderWriter. */
virtual const FormatDescriptionMap& supportedProtocols() const
{ return _supportedProtocols; }
/** return which list of file extensions supported by ReaderWriter. */
virtual const FormatDescriptionMap& supportedExtensions()
const { return _supportedExtensions; }
/** return which list of file extensions supported by ReaderWriter. */
virtual const FormatDescriptionMap& supportedOptions() const {
return _supportedOptions; }
And a couple of continence methods for populating these maps:
protected:
void supportsProtocol(const std::string& fmt, const
std::string& description);
void supportsExtension(const std::string& fmt, const
std::string& description);
void supportsOption(const std::string& fmt, const std::string&
description);
The plugin now have calls to supports*() in their constructors like:
FLTReaderWriter()
: _implicitPath( "." )
{
supportsExtension("flt","OpenFlight format");
supportsOption("clampToEdge","");
supportsOption("keepExternalReferences","");
supportsOption("preserveFace","");
supportsOption("preserveObject","");
supportsOption("dofAnimation","");
supportsOption("billboardCenter","");
supportsOption("noTextureAlphaForTransparancyBinning","");
supportsOption("readObjectRecordData","");
supportsOption("noUnitsConversion","");
supportsOption("convertToFeet","");
supportsOption("convertToInches","");
supportsOption("convertToMeters","");
supportsOption("convertToKilometers","");
supportsOption("convertToNauticalMiles","");
}
This is what I've added into the OpenFlight loaders one, You can have
multiple formats supported by one plugin of course so this then looks
like (From the xine plugin):
ReaderWriterXine()
{
supportsExtension("avi","");
supportsExtension("db","");
supportsExtension("flv","");
supportsExtension("mov","");
supportsExtension("mpg","Mpeg movie format");
supportsExtension("mpv","Mpeg movie format");
supportsExtension("wmv","");
supportsExtension("xine","Xine plugin Pseduo plugin");
Now there are quite a few description fields left as "", but this is
something the community can help fill out - there is only so much much
RSI can take with this type of stuff (yesterday I updated all 58
plugins with this stuff, ack what an awful job...) Anyway the
result of this effort is that you can now go query the plugins, and to
do this I've added two new parameters to osgconv, --plugins lists the
path to all the plugins, and --formats lists all the supported
protocols, formats and options. What the results look like on my
system is appended below as an appendix :-)
This is just a first step, others are welcome to dive in add better
descriptions, more query options in osgconv. We could possibly also
move the functions used into osgDB, as well as move the command line
query support into a osginfo or osg-config application. However, we
are really close to 2.6 so my main interest is stability right now,
rather than introducing lots of new tools etc. I'd be happy to see
all this functionality mature fully once 2.6 is out.
Cheers,
Robert.
----
> osgconv --plugins
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_bmp.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_cfg.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dae.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dds.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dxf.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_geo.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_gif.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_freetype.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_hdr.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_ive.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_jp2.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_md2.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_lwo.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_lws.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_net.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgshadow.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_obj.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_ogr.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_xine.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osg.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_pic.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_png.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_pnm.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgparticle.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_rgb.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_jpeg.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_x.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_rot.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_shp.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_tga.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_tgz.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_stl.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_svg.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_txf.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_txp.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_ac.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_curl.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dw.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgviewer.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_iv.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_zip.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgsim.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgterrain.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgtgz.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_3dc.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_3ds.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_logo.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_tiff.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_gdal.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_openflight.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_trans.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_glsl.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgfx.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_scale.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_normals.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgtext.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osga.so
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_vrml.so
> osgconv --formats
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_bmp.so
{
ReaderWriter : BMP Image Reader
{
extensions : .bmp BMP Image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_cfg.so
{
ReaderWriter : ReaderWriter
{
extensions : .cfg Producer camera configuration file
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dae.so
{
ReaderWriter : COLLADA 1.4.x DAE reader/writer
{
extensions : .dae COLLADA 1.4.x DAE format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dds.so
{
ReaderWriter : DDS Image Reader/Writer
{
extensions : .dds DDS image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dxf.so
{
ReaderWriter : ReaderWriter
{
extensions : .dxf Autodesk DXF format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_geo.so
{
ReaderWriter : GEO Reader/Writer
{
extensions : .gem CarbonGraphics Geo model format
extensions : .geo CarbonGraphics Geo model format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_gif.so
{
ReaderWriter : GIF Image Reader
{
extensions : .gif GIF Image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_freetype.so
{
ReaderWriter : FreeType Font Reader/Writer
{
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_hdr.so
{
ReaderWriter : ReaderWriter
{
extensions : .hdr High Dynamic Range image format
options : NO_YFLIP
options : RAW
options : RGB8
options : RGBMUL
options : YFLIP
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_ive.so
{
ReaderWriter : IVE Reader/Writer
{
extensions : .ive OpenSceneGraph native binary format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_jp2.so
{
ReaderWriter : RGB Image Reader/Writer
{
extensions : .jp2 Jpeg2000 image format
extensions : .jpc Jpeg2000 image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_md2.so
{
ReaderWriter : Quake MD2 Reader
{
extensions : .md2 Quak2 MD format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_lwo.so
{
ReaderWriter : Lightwave Object Reader
{
extensions : .geo Lightwave geometry format
extensions : .lw Lightwave object format
extensions : .lwo Lightwave object format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_lws.so
{
ReaderWriter : ReaderWriterLWS
{
extensions : .lws Lightwave scene format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_net.so
{
ReaderWriter : HTTP Protocol Model Reader
{
protocol : http HTTP Protocol
extensions : .* Passes all file loading onto other plugins
extensions : .net Psuedo loader extension for selecting NET plugin
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgshadow.so
{
ReaderWriter : osgShadow pseudo-loader
{
extensions : .osgshadow OpenSceneGraph osgShadow extension to
.osg ascii format
extensions : .shadow OpenSceneGraph osgShadow extension pseudo loader
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_obj.so
{
ReaderWriter : Wavefront OBJ Reader
{
extensions : .obj Alias Wavefront OBJ format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_ogr.so
{
ReaderWriter : OGR file reader
{
extensions : .ogr OGR file reader
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_xine.so
{
ReaderWriter : Xine ImageStream Reader
{
extensions : .avi
extensions : .db
extensions : .flv
extensions : .mov
extensions : .mpg Mpeg movie format
extensions : .mpv Mpeg movie format
extensions : .wmv
extensions : .xine Xine plugin Pseduo plugin
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osg.so
{
ReaderWriter : OSG Reader/Writer
{
extensions : .osg OpenSceneGraph Ascii file format
extensions : .osgs Psuedo OpenSceneGraph file loaded,
with file encoded in filename string
options : OutputTextureFiles Write out the texture images to file
options : precision Set the floating point precision when
writing out files
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_pic.so
{
ReaderWriter : PIC Image Reader
{
extensions : .pic PIC Image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_png.so
{
ReaderWriter : PNG Image Reader/Writer
{
extensions : .png PNG Image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_pnm.so
{
ReaderWriter : PNM Image Reader/Writer
{
extensions : .pbm PNM Image format
extensions : .pgm PNM Image format
extensions : .pnm PNM Image format
extensions : .ppm PNM Image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgparticle.so
{
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_rgb.so
{
ReaderWriter : RGB Image Reader/Writer
{
extensions : .bw bw image format
extensions : .int int image format
extensions : .inta inta image format
extensions : .rgb rgb image format
extensions : .rgba rgba image format
extensions : .sgi sgi image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_jpeg.so
{
ReaderWriter : JPEG Image Reader/Writer
{
extensions : .jpeg JPEG image format
extensions : .jpg JPEG image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_x.so
{
ReaderWriter : DirectX Reader/Writer
{
extensions : .x DirectX scene format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_rot.so
{
ReaderWriter : rotation pseudo-loader
{
extensions : .rot Rotation pseudo loader
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_shp.so
{
ReaderWriter : ReaderWriter
{
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_tga.so
{
ReaderWriter : TGA Image Reader
{
extensions : .tga Tga Image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_tgz.so
{
ReaderWriter : TGZ Database Reader/Writer
{
extensions : .tgz Tar gzip'd archive format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_stl.so
{
ReaderWriter : STL Reader
{
extensions : .sta STL format
extensions : .stl STL format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_svg.so
{
ReaderWriter : SVG Image Reader
{
extensions : .svg Scalar Vector Graphics format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_txf.so
{
ReaderWriter : TXF Font Reader/Writer
{
extensions : .txf TXF Font format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_txp.so
{
ReaderWriter : TXP Reader/Writer
{
extensions : .txp Terrapage txp format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_ac.so
{
ReaderWriter : AC3D Database Reader
{
extensions : .ac AC3D Database format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_curl.so
{
ReaderWriter : HTTP Protocol Model Reader
{
protocol : http Read from http port using libcurl.
extensions : .* Passes all read files to other plugins to
handle actual model loading.
extensions : .curl Psuedo file extension, used to select
curl plugin.
options : OSG_CURL_PROXY Specify the http proxy.
options : OSG_CURL_PROXYPORT Specify the http proxy oirt.
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_dw.so
{
ReaderWriter : Design Workshop Database Reader
{
extensions : .dw Designer Workbench model format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgviewer.so
{
ReaderWriter : osgViewer configuration loader
{
extensions : .osgviewer OpenSceneGraph viewer configuration format
extensions : .view OpenSceneGraph viewer configuration format
options : OutputTextureFiles Output texture image to file
options : precision Set the floating point precision of output
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_iv.so
{
ReaderWriter : Inventor reader/writer
{
extensions : .iv Inventor format
extensions : .wrl VRML world file
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_zip.so
{
ReaderWriter : ZIP Database Reader/Writer
{
extensions : .zip Zip archive format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgsim.so
{
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgterrain.so
{
ReaderWriter : Terrain ReaderWriter
{
extensions : .osgterrain OpenSceneGraph terrain
extension to .osg ascii format
extensions : .terrain OpenSceneGraph terrain ascii format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgtgz.so
{
ReaderWriter : OSGTGZ Database Reader/Writer
{
extensions : .osgtgz OpenSceneGraph tar gzid'd archive format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_3dc.so
{
ReaderWriter : 3DC point cloud reader
{
extensions : .3dc 3DC point cloud format
extensions : .asc 3DC point cloud format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_3ds.so
{
ReaderWriter : 3DS Auto Studio Reader
{
extensions : .3ds 3D Studio model format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_logo.so
{
ReaderWriter : Logo Database Reader/Writer
{
extensions : .logo Ascii logo placement format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_tiff.so
{
ReaderWriter : TIFF Image Reader
{
extensions : .tif Tiff image format
extensions : .tiff Tiff image format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_gdal.so
{
ReaderWriter : GDAL Image Reader
{
extensions : .gdal GDAL Image reader
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_openflight.so
{
ReaderWriter : FLT Reader/Writer
{
extensions : .flt OpenFlight format
options : billboardCenter
options : clampToEdge
options : convertToFeet
options : convertToInches
options : convertToKilometers
options : convertToMeters
options : convertToNauticalMiles
options : dofAnimation
options : keepExternalReferences
options : noTextureAlphaForTransparancyBinning
options : noUnitsConversion
options : preserveFace
options : preserveObject
options : readObjectRecordData
}
ReaderWriter : ATTR Image Attribute Reader/Writer
{
extensions : .attr OpenFlight texture attribute format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_trans.so
{
ReaderWriter : translation pseudo-loader
{
extensions : .trans Translation Psuedo loader.
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_glsl.so
{
ReaderWriter : GLSL Shader Reader
{
extensions : .gl OpenGL Shader Language format
extensions : .glsl OpenGL Shader Language format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgfx.so
{
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_scale.so
{
ReaderWriter : scaling pseudo-loader
{
extensions : .scale Scale Pseudo loader
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_normals.so
{
ReaderWriter : ReaderWriter
{
extensions : .normals Normals Pseudo loader
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osgtext.so
{
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_osga.so
{
ReaderWriter : OpenSceneGraph Archive Reader/Writer
{
extensions : .osga OpenSceneGraph Archive format
}
}
Plugin /home/robert/OpenSceneGraph/lib/osgPlugins-2.5.4/osgdb_vrml.so
{
ReaderWriter : ReaderWriter
{
extensions : .wrl VRML format
}
}
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org