Okay, I'm sure I'll have something to submit. Just don't expect it anytime soon. I've got a vacation coming up :) and I want to consider switching to zlib (just to save my game an extra dependency) and figure out a fix for the shaders not loading....and fix whatever other problems I come across... -- Terry Welsh mogumbo 'at' gmail.com www.reallyslick.com
> > Message: 25 > Date: Tue, 6 Sep 2011 11:17:01 -0400 > From: Jason Beverage <[email protected]> > To: OpenSceneGraph Users <[email protected]> > Subject: Re: [osg-users] tight integration of virtual file system > Message-ID: > <CAMcxSMt=gtyqugofedwsy8y16gavoijqwm_rbewg52+hkjm...@mail.gmail.com> > Content-Type: text/plain; charset=ISO-8859-1 > > Hi Terry, > > On Sun, Sep 4, 2011 at 9:29 PM, Terry Welsh <[email protected]> wrote: >> Excellent ZipFS plugin Jason. ?Thank you for the help. ?I think that >> was the hardest part of the problem. ?I finally got around to working >> on this more and I have the other half of the problem mostly solved. > Thanks, glad it worked for you. We don't use it anymore for osgEarth > but I think in general it's pretty useful. > >> It looks like OSG uses zlib for all its compression/decompression. >> Just out of curiosity, how did you pick libzip instead? ?Or did you >> not write ZipFS? > I did write the ZipFS plugin, we chose libzip over just using zlib b/c > it had easy access to dealing with zip archives. If zlib itself has > something in there that we can use instead of having another > dependency that would be great but I didn't really look that hard > since libzip worked so well. > > If you have a submission for the osgEarth that you need integrated > just send along the whole modified file or do a pull request on github > and I'll take a look at it. > > Jason > >> To recap, I'm trying to set an OSG_FILE_PATH such as >> mydirectory/data.zip and load files out of the specified archive. ?At >> first I discovered the Registry class's FindFileCallback. ?I thought I >> could just make one of those and have it search inside of zip files. >> However, the work that I really needed to replace happened when the >> default Registry::findDataFileImplementation would call >> osgDB::findFileInPath in FileUtils. ?So I decided to override >> findFileInPath so that would look for paths containing ".zip" and try >> to locate the desired file inside the zip file. >> >> That almost worked. ?I also had to modify ReaderWriterZipFS::readFile >> so that it uses OSG's directory searching. ?At the beginning of the >> function I added >> >> std::string filenameWithPath = >> osgDB::Registry::instance()->findDataFile(fullFileName, options, >> CASE_SENSITIVE); >> >> and then I use filenameWithPath instead of fullFileName where appropriate. >> >> So now I can load almost all my game resources from one .zip file >> instead of a directory full of files. ?I haven't tested performance >> yet, but there's no noticeable change. ?.osg files load with all their >> textures. >> >> Here's the catch: .osg files don't get loaded with their shaders. ?I >> believe this is because shaders don't use the standard OSG plugin >> loading paradigm. ?Instead they simply use >> Shader::loadShaderSourceFromFile(). ?I haven't put any thought into >> this last detail yet (I hope it's not too messy), but I need a >> programming break.... >> -- >> Terry Welsh >> mogumbo 'at' gmail.com >> www.reallyslick.com >> >>> >>> Message: 9 >>> Date: Fri, 5 Aug 2011 08:50:10 -0400 >>> From: Jason Beverage <[email protected]> >>> To: OpenSceneGraph Users <[email protected]> >>> Subject: Re: [osg-users] tight integration of virtual file system >>> Message-ID: >>> ? ? ? ?<camcxsmsly2m20aoa5z7tubjob1xyrqqkmnz9z9lslzmmkqu...@mail.gmail.com> >>> Content-Type: text/plain; charset=ISO-8859-1 >>> >>> Hi Terry, >>> >>> osgEarth has a generic zip based plugin called ZipFS that is >>> implemented as an osgDB plugin and isn't dependent on osgEarth. ?We >>> originally developed it to support using a zip file of imagery tiles >>> for a cache. >>> >>> It allows you to load files like: >>> osgDB::readNodeFile("c:/data/models.zip/cow.osg"); >>> >>> I haven't used it for quite awhile but last I checked it was working >>> just fine. ?You can get the osgearth source code from github at >>> https://github.com/gwaldron/osgearth >>> >>> If anything it could be a start to what you're looking for. >>> >>> Thanks, >>> >>> Jason >>> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

