I think Andy means the latest svn of the collada-dom at sourceforge, not of OSG itself.
http://sourceforge.net/projects/collada-dom Regards, Marcus On Thu, 2006-09-28 at 01:38 +0100, Roger James wrote: > I checked out the latest svn and still got exactly the same problem at the > same place. > > Time for bed now :-) > > Roger > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:osg-users- > > [EMAIL PROTECTED] On Behalf Of > > [EMAIL PROTECTED] > > Sent: 27 September 2006 20:17 > > To: osg users > > Subject: Re: [osg-users] Collada plugin not working > > > > Ahhhhhh, > > > > I knew I have seen this issue before. And I have already fixed it. This > > was a problem in the DOM. Its in the 1.1.0 release but has been fixed in > > the SVN. If you check out from there you will get that fix, plus much > > much more. > > > > When Mike Weiblen packaged up the project to hand over to the OSG > > community he included prebuilt libs from the SVN, not the 1.1.0 release > > package. I don't know if they are still being used but if you download > > and build the DOM1.1.0 release you will have this problem. If you use > > the prebuilt libs (or get from svn) you wont. > > > > -Andy > > > > P.S. I am planning on making another release package of the DOM sometime > > in the very near future. > > > > Andreas Ekstrand wrote: > > > Hi Roger, > > > > > > Thanks for your efforts! This helped me come up with a possible > > > solution. What do you think about the modifications to the attached > > > ReaderWriterDAE.cpp? I create the DAE instance when it's first needed > > > instead of in the constructor. I had to use const_cast to do this, maybe > > > not the nicest code, but I couldn't see any alternative. Anyway, it > > > seems to work fine and I'd appreciate it if you verified this. If you or > > > anyone else can't see any problem with the solution I will submit the > > > modifications to Robert. > > > > > > /Andreas > > > > > > > > > Roger James wrote: > > > > > >> On further investigation it looks like the constructor of the global > > >> > > >> osgDB::RegisterReaderWriterProxy<ReaderWriterDAE> > > >> g_readerWriter_DAE_Proxy; > > >> > > >> in ReaderWriterDAE.cpp > > >> > > >> is being called before the constructor of the static > > >> daeStringTable daeStringRef::_stringTable; > > >> > > >> in daestringref.cpp > > >> > > >>> From memory the only way you force ordering of global initialisation > > >>> in C++ > > >> it to put them in the same file. But I tried this and it did not work > > >> :-(. > > >> > > >> Roger > > >> > > >> > > >> > > >>> -----Original Message----- > > >>> From: [EMAIL PROTECTED] [mailto:osg-users- > > >>> [EMAIL PROTECTED] On Behalf Of Roger James > > >>> Sent: 27 September 2006 15:49 > > >>> To: 'osg users' > > >>> Subject: RE: [osg-users] Collada plugin not working > > >>> > > >>> Anders, > > >>> > > >>> I think I am seeing the same behaviour as you. > > >>> > > >>> My environment is MSVC7.1. > > >>> > > >>> The plugin dll crashes during its initialisation phase when the global > > >>> reader writer proxy object is created by the runtime. > > >>> > > >>> > > >> > > >> > > >> > > >> _______________________________________________ > > >> osg-users mailing list > > >> [email protected] > > >> http://openscenegraph.net/mailman/listinfo/osg-users > > >> http://www.openscenegraph.org/ > > >> > > >> > > >> > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield > > > * > > > * This application is open source and may be redistributed and/or > > modified > > > * freely and without restriction, both in commericial and non > > commericial > > > * applications, as long as this copyright notice is maintained. > > > * > > > * This application is distributed in the hope that it will be useful, > > > * but WITHOUT ANY WARRANTY; without even the implied warranty of > > > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > > * > > > */ > > > > > > #include <sstream> > > > > > > #include <osg/Notify> > > > #include <osgDB/ReaderWriter> > > > #include <osgDB/FileNameUtils> > > > #include <osgDB/Registry> > > > > > > #include "daeReader.h" > > > #include "daeWriter.h" > > > > > > #define EXTENSION_NAME "dae" > > > > > > > > ////////////////////////////////////////////////////////////////////////// > > / > > > // OSG reader/writer plugin for the COLLADA 1.4.x ".dae" format. > > > // See http://collada.org/ and http://khronos.org/collada/ > > > > > > class ReaderWriterDAE : public osgDB::ReaderWriter > > > { > > > public: > > > ReaderWriterDAE() : dae_(NULL) > > > { > > > } > > > > > > ~ReaderWriterDAE() > > > { > > > if(dae_ != NULL){ > > > delete dae_; > > > DAE::cleanup(); > > > dae_ = NULL; > > > } > > > } > > > > > > const char* className() const { return "COLLADA 1.4.x DAE > > reader/writer"; } > > > > > > bool acceptsExtension(const std::string& extension) const > > > { > > > return osgDB::equalCaseInsensitive( extension, EXTENSION_NAME ); > > > } > > > > > > ReadResult readNode(const std::string&, const Options*) const; > > > > > > WriteResult writeNode(const osg::Node&, const std::string&, const > > Options*) const; > > > > > > private: > > > > > > DAE *dae_; > > > > > > }; > > > > > > > > ////////////////////////////////////////////////////////////////////////// > > / > > > > > > osgDB::ReaderWriter::ReadResult > > > ReaderWriterDAE::readNode(const std::string& fname, > > > const osgDB::ReaderWriter::Options* options) const > > > { > > > std::string ext( osgDB::getLowerCaseFileExtension(fname) ); > > > if( ! acceptsExtension(ext) ) return ReadResult::FILE_NOT_HANDLED; > > > > > > std::string fileName( osgDB::findDataFile( fname, options ) ); > > > if( fileName.empty() ) return ReadResult::FILE_NOT_FOUND; > > > > > > osg::notify(osg::INFO) << "ReaderWriterDAE( \"" << fileName << "\" > > )" << std::endl; > > > > > > if (dae_ == NULL) > > > const_cast<ReaderWriterDAE *>(this)->dae_ = new DAE(); > > > > > > osgdae::daeReader daeReader(dae_); > > > std::string fileURI( osgDB::convertFileNameToUnixStyle(fileName) ); > > > if ( ! daeReader.convert( fileURI ) ) > > > { > > > osg::notify( osg::WARN ) << "Load failed in COLLADA DOM > > conversion" << std::endl; > > > return ReadResult::ERROR_IN_READING_FILE; > > > } > > > > > > osg::Node* rootNode( daeReader.getRootNode() ); > > > return rootNode; > > > } > > > > > > > > ////////////////////////////////////////////////////////////////////////// > > / > > > > > > osgDB::ReaderWriter::WriteResult > > > ReaderWriterDAE::writeNode( const osg::Node& node, > > > const std::string& fname, const osgDB::ReaderWriter::Options* > > options ) const > > > { > > > std::string ext( osgDB::getLowerCaseFileExtension(fname) ); > > > if( ! acceptsExtension(ext) ) return WriteResult::FILE_NOT_HANDLED; > > > > > > // Process options > > > bool usePolygon(false); > > > if( options ) > > > { > > > std::istringstream iss( options->getOptionString() ); > > > std::string opt; > > > > > > while( std::getline( iss, opt, ',' ) ) > > > { > > > if( opt == "polygon") usePolygon = true; > > > else > > > { > > > osg::notify(osg::WARN) > > > << "\n" "COLLADA dae plugin: unrecognized option \"" << > > opt << "\"\n" > > > << "comma-delimited options:\n" > > > << "\tpolygon = use polygons instead of polylists for > > element\n" > > > << "example: osgviewer -O polygon bar.dae" "\n" > > > << std::endl; > > > } > > > } > > > } > > > > > > if (dae_ == NULL) > > > const_cast<ReaderWriterDAE *>(this)->dae_ = new DAE(); > > > > > > osgdae::daeWriter daeWriter(dae_, fname, usePolygon ); > > > daeWriter.setRootNode( node ); > > > const_cast<osg::Node*>(&node)->accept( daeWriter ); > > > > > > osgDB::ReaderWriter::WriteResult retVal( > > WriteResult::ERROR_IN_WRITING_FILE ); > > > if ( daeWriter.isSuccess() ) > > > { > > > if ( daeWriter.writeFile() ) > > > { > > > retVal = WriteResult::FILE_SAVED; > > > } > > > } > > > > > > return retVal; > > > } > > > > > > > > ////////////////////////////////////////////////////////////////////////// > > / > > > // Add ourself to the Registry to instantiate the reader/writer. > > > > > > osgDB::RegisterReaderWriterProxy<ReaderWriterDAE> > > g_readerWriter_DAE_Proxy; > > > > > > // vim: set sw=4 ts=8 et ic ai: > > > > > > > > > ------------------------------------------------------------------------ > > > > > > _______________________________________________ > > > osg-users mailing list > > > [email protected] > > > http://openscenegraph.net/mailman/listinfo/osg-users > > > http://www.openscenegraph.org/ > > > > _______________________________________________ > > osg-users mailing list > > [email protected] > > http://openscenegraph.net/mailman/listinfo/osg-users > > http://www.openscenegraph.org/ > > > _______________________________________________ > osg-users mailing list > [email protected] > http://openscenegraph.net/mailman/listinfo/osg-users > http://www.openscenegraph.org/ > _______________________________________________ osg-users mailing list [email protected] http://openscenegraph.net/mailman/listinfo/osg-users http://www.openscenegraph.org/
