Re: [osg-users] [osgPlugins] COLLADA Blender reading problem
Marco Cosentino wrote: Quote: � Select � � Expand � Quote: � Select � � Expand � Hi, I have a problem (maybe a bug?) in loading a .dae file made with Blender collada exporter. I'm writing a robot simulation software that uses collada to load both 3d and physics. The error I get is an exception : Unhandled exception at 0x0049fb10 (msvcr80d.dll) in RobotSimulator.exe: 0xC005: Access violation reading location 0x. This occours when I try to load the collada file. Here is the code I wrote: Code: bool VisualModel::CreateFromColladaFileAndFillDAE(std::string filename,DAE *dae) { osg::ref_ptrosgDB::ReaderWriter::Options rwoptions(new osgDB::ReaderWriter::Options()); rwoptions-setPluginData(DAE,dae); modelnode = osgDB::readNodeFile(filename,rwoptions); if(!modelnode) return false; return true; } Here is the stack trace: Code: Quote: � Select � msvcr80d.dll!strlen(unsigned char * buf=0x0012e760) Line 81 Asm msvcp80d.dll!std::char_traitschar::length(const char * _First=0x) Line 559 + 0x9 bytes C++ msvcp80d.dll!std::basic_stringchar,std::char_traitschar,std::allocatorchar ::assign(const char * _Ptr=0x) Line 1042 + 0x9 bytes C++ msvcp80d.dll!std::basic_stringchar,std::char_traitschar,std::allocatorchar ::operator=(const char * _Ptr=0x) Line 893 C++ osg55-osgd.dll!osg::Object::setName(const char * name=0x) Line 102 + 0x21 bytes C++ osgdb_daed.dll!osgdae::daeReader::processSinglePPrimitivedomTriangles(osg::Geode * geode=0x05c08620, domTriangles * group=0x05c1cbe8, std::mapdaeElement *,osgdae::domSourceReader,std::lessdaeElement *,std::allocatorstd::pairdaeElement * const,osgdae::domSourceReader sources=[2](...,...), unsigned int mode=4) Line 243 + 0x14 bytes C++ osgdb_daed.dll!osgdae::daeReader::processGeometry(domGeometry * geo=0x05c1a3e8) Line 219 C++ osgdb_daed.dll!osgdae::daeReader::processInstanceGeometry(domInstance_geometry * ig=0x05c1ee98) Line 47 + 0xc bytes C++ osgdb_daed.dll!osgdae::daeReader::processNode(domNode * node=0x05c1e310) Line 366 + 0x22 bytes C++ osgdb_daed.dll!osgdae::daeReader::processVisualScene(domVisual_scene * scene=0x05c1dd58) Line 156 + 0x23 bytes C++ osgdb_daed.dll!osgdae::daeReader::convert(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fileURI=./simpleworld.dae) Line 123 + 0xc bytes C++ osgdb_daed.dll!ReaderWriterDAE::readNode(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fname=.simpleworld.dae, const osgDB::ReaderWriter::Options * options=0x05c07100) Line 65 + 0x12 bytes C++ osg55-osgDBd.dll!osgDB::Registry::ReadNodeFunctor::doRead(osgDB::ReaderWriter rw={...}) Line 1399 + 0x40 bytes C++ osg55-osgDBd.dll!osgDB::Registry::read(const osgDB::Registry::ReadFunctor readFunctor={...}) Line 1537 + 0x22 bytes C++ osg55-osgDBd.dll!osgDB::Registry::readImplementation(const osgDB::Registry::ReadFunctor readFunctor={...}, bool useObjectCache=false) Line 1645 + 0x13 bytes C++ osg55-osgDBd.dll!osgDB::Registry::readNodeImplementation(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fileName=.simpleworld.dae, const osgDB::ReaderWriter::Options * options=0x05c07100) Line 1850 + 0x57 bytes C++ osg55-osgDBd.dll!osgDB::Registry::readNode(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fileName=.simpleworld.dae, const osgDB::ReaderWriter::Options * options=0x05c07100, bool buildKdTreeIfRequired=true) Line 237 + 0x98 bytes C++ osg55-osgDBd.dll!osgDB::readNodeFile(const std::basic_stringchar,std::char_traitschar,std::allocatorchar filename=.simpleworld.dae, const osgDB::ReaderWriter::Options * options=0x05c07100) Line 69 + 0x1f bytes C++ RobotSimulator.exe!RobotSimulator::VisualModel::CreateFromColladaFileAndFillDAE(std::basic_stringchar,std::char_traitschar,std::allocatorchar filename=.simpleworld.dae, DAE * dae=0x0012f958) Line 10 + 0x15 bytes C++ RobotSimulator.exe!RobotSimulator::Simulable::LoadModel(RobotSimulator::Model model={...}) Line 21 + 0x16 bytes C++ RobotSimulator.exe!RobotSimulator::Simulator::LoadSimulation(const char * pfilename=0x05b4d9c1) Line 93 + 0x28 bytes C++ RobotSimulator.exe!main(int argc=2, char * * argv=0x05b4d968) Line 54 + 0x20 bytes C++ RobotSimulator.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C RobotSimulator.exe!mainCRTStartup() Line 403 C kernel32.dll!7c817077() The collada model is made by Blender 2.48a using the default startup scene with the cube with assigned a green material and esported with Triangles option and DisablePhisics option (for testing). You can find it in attachments. Note that with collada-dom viewer the model is loaded adn displayed correctly and with osgviewer the model is loaded witout exceptions but nothing is displayed into the scene. I think the problem is related to the call (you can see in the stack trace)
Re: [osg-users] OSGSpotLight example on a GLSL material
Hi Bino, I can't see how many of us will be able divine what is up with your shaders as we have absolutely no knowledge of what you've put into your shader. You question is equivalent to I have a piece of string you can't see, but can you tell me exactly how long it is. Try including the vertex and fragment shaders you are using then others might have a chance of spotting what is up. Robert. On Fri, Jun 12, 2009 at 6:28 AM, Albino Rodriguesb...@vrspace.com.au wrote: Hi, I have been using the OSGSpotLight example as a starting base to simulate a flashlight with success. The scene I was using has now been updated to be drawn with a GLSL NormalMap shader (included as part of the .ive). The spotlight can no longer be seen. It does however appear to affect the general lighting of the area it’s in, but the spotlight and the texture image that goes with it can no longer be seen. Any ideas on how to get around this would be much appreciated. Cheers, Bino ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
[osg-users] Image file PagedLOD...
Hi All, Has anyone come across a scenario where they wished to have PagedLOD that instead of handling Nodes, handle images ? Essentially I find myself in a position where I have a model that references a texture, but that texture is quite large, and even with reducing the texture size with little compromise in quality, the time to stream over the web is too large. So, what I'm considering is replacing the image load call, with a similar concept to that of PagedLOD's whereby I could give the PagedImageLOD object a list of ordered image file names that I want it to progressively load - in much the same way that apps like google map appears to work. The first image file could be a 2x2 pixel image, whilst the nth image file would be the full-on image. I would want the PagedImageLOD to return a valid Image node immediately - perhaps a hard coded small default image - whilst in the background the specified image filesnames are being downloaded, and replace the content of the created image node. The reason for this sort of functionality would be that I could then intercept all image load requests via my own callback handler, replace with a PagedImageLOD request, and still permit most plugins to work happily on the assumption that a model plugin that loads an image is probably only trying to reference that image in some stateset context. Sorry for the thought dump, but has anyone tried/needed to do a similar thing, and if so is there an example available ? Alternatively, if you can think of a better way that would be good as well. Most obvious alternative - that of have an LOD node on the model - would be fine if I only had one or two models. However, I have thousands of different models, so can't really ask our modellers to redo all these. Many thanks for any help/thoughts. Kind regards Neil. .to whose content was progressively replaced by the downloaded images. In this way I could ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
[osg-users] Cursor problem under Windows
Hi all, Currently (the SVN version of OSG), hidding the cursor under Windows has no effect. Setting cursor to false on the traits or making something like : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { (*itr)-useCursor(false); } Doesn't work, I always see the cursor... Any idea on which modification has break things ? The same code was working for me some weeks ago, but I can't tell which revision it was... Thanks ! Best regards, -- Serge Lages http://www.tharsis-software.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Image file PagedLOD...
Hi Neil, The osgEarth project does essentially what you are looking for. Check it out at http://www.osgearth.org Thanks, Jason On Fri, Jun 12, 2009 at 5:08 AM, neil.hug...@tesco.net wrote: Hi All, Has anyone come across a scenario where they wished to have PagedLOD that instead of handling Nodes, handle images ? Essentially I find myself in a position where I have a model that references a texture, but that texture is quite large, and even with reducing the texture size with little compromise in quality, the time to stream over the web is too large. So, what I'm considering is replacing the image load call, with a similar concept to that of PagedLOD's whereby I could give the PagedImageLOD object a list of ordered image file names that I want it to progressively load - in much the same way that apps like google map appears to work. The first image file could be a 2x2 pixel image, whilst the nth image file would be the full-on image. I would want the PagedImageLOD to return a valid Image node immediately - perhaps a hard coded small default image - whilst in the background the specified image filesnames are being downloaded, and replace the content of the created image node. The reason for this sort of functionality would be that I could then intercept all image load requests via my own callback handler, replace with a PagedImageLOD request, and still permit most plugins to work happily on the assumption that a model plugin that loads an image is probably only trying to reference that image in some stateset context. Sorry for the thought dump, but has anyone tried/needed to do a similar thing, and if so is there an example available ? Alternatively, if you can think of a better way that would be good as well. Most obvious alternative - that of have an LOD node on the model - would be fine if I only had one or two models. However, I have thousands of different models, so can't really ask our modellers to redo all these. Many thanks for any help/thoughts. Kind regards Neil. .to whose content was progressively replaced by the downloaded images. In this way I could ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Image file PagedLOD...
Thanks Jason, I'll take a look later today. Jason Beverage jasonbever...@gmail.com wrote: Hi Neil, The osgEarth project does essentially what you are looking for. Check it out at http://www.osgearth.org Thanks, Jason On Fri, Jun 12, 2009 at 5:08 AM, neil.hug...@tesco.net wrote: Hi All, Has anyone come across a scenario where they wished to have PagedLOD that instead of handling Nodes, handle images ? Essentially I find myself in a position where I have a model that references a texture, but that texture is quite large, and even with reducing the texture size with little compromise in quality, the time to stream over the web is too large. So, what I'm considering is replacing the image load call, with a similar concept to that of PagedLOD's whereby I could give the PagedImageLOD object a list of ordered image file names that I want it to progressively load - in much the same way that apps like google map appears to work. The first image file could be a 2x2 pixel image, whilst the nth image file would be the full-on image. I would want the PagedImageLOD to return a valid Image node immediately - perhaps a hard coded small default image - whilst in the background the specified image filesnames are being downloaded, and replace the content of the created image node. The reason for this sort of functionality would be that I could then intercept all image load requests via my own callback handler, replace with a PagedImageLOD request, and still permit most plugins to work happily on the assumption that a model plugin that loads an image is probably only trying to reference that image in some stateset context. Sorry for the thought dump, but has anyone tried/needed to do a similar thing, and if so is there an example available ? Alternatively, if you can think of a better way that would be good as well. Most obvious alternative - that of have an LOD node on the model - would be fine if I only had one or two models. However, I have thousands of different models, so can't really ask our modellers to redo all these. Many thanks for any help/thoughts. Kind regards Neil. .to whose content was progressively replaced by the downloaded images. In this way I could ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
[osg-users] Some Fixes
Hi Robert, There is some fixes this is not critic, only for appearance ; osgpointsprites : there is needless inclusions #include osg/TexEnv #include osg/GLExtensions #include osg/TexEnv osgautocapture: Rendring time = should be Rendering time = Regards. -- Ümit Uzun ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] [osgPlugins] COLLADA Blender reading problem
Marco Cosentino wrote: Marco Cosentino wrote: Quote: � Select � � Expand � Quote: � Select � � Expand � Hi, I have a problem (maybe a bug?) in loading a .dae file made with Blender collada exporter. I'm writing a robot simulation software that uses collada to load both 3d and physics. The error I get is an exception : "Unhandled exception at 0x0049fb10 (msvcr80d.dll) in RobotSimulator.exe: 0xC005: Access violation reading location 0x." This occours when I try to load the collada file. Here is the code I wrote: Code: bool VisualModel::CreateFromColladaFileAndFillDAE(std::string filename,DAE *dae) { osg::ref_ptrosgDB::ReaderWriter::Options rwoptions(new osgDB::ReaderWriter::Options()); rwoptions-setPluginData("DAE",dae); modelnode = osgDB::readNodeFile(filename,rwoptions); if(!modelnode) return false; return true; } Here is the stack trace: Code: Quote: � Select � msvcr80d.dll!strlen(unsigned char * buf=0x0012e760) Line 81 Asm msvcp80d.dll!std::char_traitschar::length(const char * _First=0x) Line 559 + 0x9 bytes C++ msvcp80d.dll!std::basic_stringchar,std::char_traitschar,std::allocatorchar ::assign(const char * _Ptr=0x) Line 1042 + 0x9 bytes C++ msvcp80d.dll!std::basic_stringchar,std::char_traitschar,std::allocatorchar ::operator=(const char * _Ptr=0x) Line 893 C++ osg55-osgd.dll!osg::Object::setName(const char * name=0x) Line 102 + 0x21 bytes C++ osgdb_daed.dll!osgdae::daeReader::processSinglePPrimitivedomTriangles(osg::Geode * geode=0x05c08620, domTriangles * group=0x05c1cbe8, std::mapdaeElement *,osgdae::domSourceReader,std::lessdaeElement *,std::allocatorstd::pairdaeElement * const,osgdae::domSourceReadersources=[2](...,...), unsigned int mode=4) Line 243 + 0x14 bytes C++ osgdb_daed.dll!osgdae::daeReader::processGeometry(domGeometry * geo=0x05c1a3e8) Line 219 C++ osgdb_daed.dll!osgdae::daeReader::processInstanceGeometry(domInstance_geometry * ig=0x05c1ee98) Line 47 + 0xc bytes C++ osgdb_daed.dll!osgdae::daeReader::processNode(domNode * node=0x05c1e310) Line 366 + 0x22 bytes C++ osgdb_daed.dll!osgdae::daeReader::processVisualScene(domVisual_scene * scene=0x05c1dd58) Line 156 + 0x23 bytes C++ osgdb_daed.dll!osgdae::daeReader::convert(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fileURI="./simpleworld.dae") Line 123 + 0xc bytes C++ osgdb_daed.dll!ReaderWriterDAE::readNode(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fname=".simpleworld.dae", const osgDB::ReaderWriter::Options * options=0x05c07100) Line 65 + 0x12 bytes C++ osg55-osgDBd.dll!osgDB::Registry::ReadNodeFunctor::doRead(osgDB::ReaderWriter rw={...}) Line 1399 + 0x40 bytes C++ osg55-osgDBd.dll!osgDB::Registry::read(const osgDB::Registry::ReadFunctor readFunctor={...}) Line 1537 + 0x22 bytes C++ osg55-osgDBd.dll!osgDB::Registry::readImplementation(const osgDB::Registry::ReadFunctor readFunctor={...}, bool useObjectCache=false) Line 1645 + 0x13 bytes C++ osg55-osgDBd.dll!osgDB::Registry::readNodeImplementation(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fileName=".simpleworld.dae", const osgDB::ReaderWriter::Options * options=0x05c07100) Line 1850 + 0x57 bytes C++ osg55-osgDBd.dll!osgDB::Registry::readNode(const std::basic_stringchar,std::char_traitschar,std::allocatorchar fileName=".simpleworld.dae", const osgDB::ReaderWriter::Options * options=0x05c07100, bool buildKdTreeIfRequired=true) Line 237 + 0x98 bytes C++ osg55-osgDBd.dll!osgDB::readNodeFile(const std::basic_stringchar,std::char_traitschar,std::allocatorchar filename=".simpleworld.dae", const osgDB::ReaderWriter::Options * options=0x05c07100) Line 69 + 0x1f bytes C++ RobotSimulator.exe!RobotSimulator::VisualModel::CreateFromColladaFileAndFillDAE(std::basic_stringchar,std::char_traitschar,std::allocatorchar filename=".simpleworld.dae", DAE * dae=0x0012f958) Line 10 + 0x15 bytes C++ RobotSimulator.exe!RobotSimulator::Simulable::LoadModel(RobotSimulator::Model model={...}) Line 21 + 0x16 bytes C++ RobotSimulator.exe!RobotSimulator::Simulator::LoadSimulation(const char * pfilename=0x05b4d9c1) Line 93 + 0x28 bytes C++ RobotSimulator.exe!main(int argc=2, char * * argv=0x05b4d968) Line 54 + 0x20 bytes C++ RobotSimulator.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C RobotSimulator.exe!mainCRTStartup() Line 403 C kernel32.dll!7c817077() The collada model is made by Blender 2.48a using the default startup scene with the cube with assigned a green material and esported with Triangles option and DisablePhisics option (for testing). You can find it in attachments. Note that with collada-dom viewer the model is loaded adn displayed correctly and with osgviewer the model is loaded witout exceptions but nothing is displayed into the scene. I think the problem is related to the call (you can see in the stack trace) osg55-osgd.dll!osg::Object::setName(const char * name=0x)� Line 102 + 0x21 bytes Can you tell me why this appens and how to
Re: [osg-users] Image file PagedLOD...
I have a similar problem, some models with too heavvy texture to put on the web... The models were not so many so , for the ones with little geometry I just used a chain of PagedLOD with the same geometry but with texture of incresing resolution. I did the conversion by hand but I' m currently trying to do it in an automatic way. This approach has the problem of replicating geometry. I have also tried to putt al the geometry into ProxyNodes and then refernce them in the PageLOD structure... but this seem result in multiple loading of the same proxy... I thought all files were cached, as images do... Your approach seem interesting, but how you decide when the ImagePagedLOD switch? the PagedLOD inherit the switching from LOD Sorry for the long post.. but it is an interesting argument for me now... Thanks Luigi neil.hug...@tesco.net ha scritto: Hi All, Has anyone come across a scenario where they wished to have PagedLOD that instead of handling Nodes, handle images ? Essentially I find myself in a position where I have a model that references a texture, but that texture is quite large, and even with reducing the texture size with little compromise in quality, the time to stream over the web is too large. So, what I'm considering is replacing the image load call, with a similar concept to that of PagedLOD's whereby I could give the PagedImageLOD object a list of ordered image file names that I want it to progressively load - in much the same way that apps like google map appears to work. The first image file could be a 2x2 pixel image, whilst the nth image file would be the full-on image. I would want the PagedImageLOD to return a valid Image node immediately - perhaps a hard coded small default image - whilst in the background the specified image filesnames are being downloaded, and replace the content of the created image node. The reason for this sort of functionality would be that I could then intercept all image load requests via my own callback handler, replace with a PagedImageLOD request, and still permit most plugins to work happily on the assumption that a model plugin that loads an image is probably only trying to reference that image in some stateset context. Sorry for the thought dump, but has anyone tried/needed to do a similar thing, and if so is there an example available ? Alternatively, if you can think of a better way that would be good as well. Most obvious alternative - that of have an LOD node on the model - would be fine if I only had one or two models. However, I have thousands of different models, so can't really ask our modellers to redo all these. Many thanks for any help/thoughts. Kind regards Neil. .to whose content was progressively replaced by the downloaded images. In this way I could ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Intersections with Particle Effects
Hi Bill, From: Sause, William william.sa...@... I am trying to do intersections with particle effects, however I am not getting any hits returned since Particle system does not have intersection support. Robert suggested implementing the Drawable::accept(PrimtiveFunctor) method in osgParticle::ParticleSystem. For reference, I looked at the implementations of this method in Geometry and ShapeDrawable, but they were quite different from each other and a little confusing. Can anyone shed some light on this? Did you ever find a good solution for this? I need to be able to pick Particle Systems / Effects as well, and there seems to be 3 different routes for accomplishing this: 1) Implementing the Drawable::accept(PrimtiveFunctor) method in osgParticle::ParticleSystem as suggested above. 2) Add intersection support in ParticleSystem based on its defaultBoundingBox. 3) Adding custom geometry that is always culled, but can be used for intersection testing (Ref: the recent picking and custom active area thread) Any thoughts on what's the best approach? Best regards, John -- This email was Anti Virus checked by Astaro Security Gateway. http://www.astaro.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
[osg-users] Plugin extension registry
Hi Robert -- Correct me if I'm wrong, but right now OSG doesn't support multiple different file formats that just happen to share the same extension. For example, if three different developers came up with three plugins to load certain information, and all just happened to use extension "abc" for their file names, then the standard OSG interface for loading files wouldn't be able to gracefully support all three file formats. The app would need to explicitly load the plugins for each format, and then things should work well. Is my understanding correct? I'm creating some new plugins and would like to "reserve" the extension to avoid any conflicts with other development. In particular, the extensions I intend to use are: .osgb .skeleton .skel Seems like we need some kind of extension registry; the downside of this is that it is only useful if people use it. Alternatively, I wonder how much effort it would be to enhance the osgDB so that it can handle different file formats that share the same extension? PolyTrans, for example, identifies a plugin through not only the extension, but also a descriptive string that it queries from the DLL after load. Another way to do this would be to modify osgDB so that if the read fails with an error in reading file, the osgDB goes and searches for another plugin to support the extension. Thoughts? -- Paul Martz Skew Matrix Software LLC http://www.skew-matrix.com +1 303 859 9466 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Plugin extension registry
Hi Paul, The extension is only used by osgDB::Registry when no pre-existing plugin is able to load that file format as it uses the Chain of Responsibility Design Pattern with the plugins. The mechanism basically calls each registered (already loaded in memory) plugin with all read/write calls, leaving it up to the plugins whether they can handle it or not. This enables a single plugin to handle multiple file formats, or potentially as in your case multiple file formats with the same extension - all you require in this case is for the plugins to properly check the file type. Only if no plugins can handle the read/file attempt does th Registry then attempt to load a new plugin from disk based on the extension name. In your case you'd preload the Polytrans based plugin and let it handle all the file types it can. Robert. On Fri, Jun 12, 2009 at 5:54 PM, Paul Martzpma...@skew-matrix.com wrote: Hi Robert -- Correct me if I'm wrong, but right now OSG doesn't support multiple different file formats that just happen to share the same extension. For example, if three different developers came up with three plugins to load certain information, and all just happened to use extension abc for their file names, then the standard OSG interface for loading files wouldn't be able to gracefully support all three file formats. The app would need to explicitly load the plugins for each format, and then things should work well. Is my understanding correct? I'm creating some new plugins and would like to reserve the extension to avoid any conflicts with other development. In particular, the extensions I intend to use are: .osgb .skeleton .skel Seems like we need some kind of extension registry; the downside of this is that it is only useful if people use it. Alternatively, I wonder how much effort it would be to enhance the osgDB so that it can handle different file formats that share the same extension? PolyTrans, for example, identifies a plugin through not only the extension, but also a descriptive string that it queries from the DLL after load. Another way to do this would be to modify osgDB so that if the read fails with an error in reading file, the osgDB goes and searches for another plugin to support the extension. Thoughts? -- Paul Martz Skew Matrix Software LLC http://www.skew-matrix.com +1 303 859 9466 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Cursor problem under Windows
I have an update, using : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { //(*itr)-useCursor(false); (*itr)-setCursor(osgViewer::GraphicsWindow::MouseCursor::NoCursor); } Instead of setting useCursor(false) works, the cursor is invisible. On Fri, Jun 12, 2009 at 12:23 PM, Serge Lages serge.la...@gmail.com wrote: Hi all, Currently (the SVN version of OSG), hidding the cursor under Windows has no effect. Setting cursor to false on the traits or making something like : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { (*itr)-useCursor(false); } Doesn't work, I always see the cursor... Any idea on which modification has break things ? The same code was working for me some weeks ago, but I can't tell which revision it was... Thanks ! Best regards, -- Serge Lages http://www.tharsis-software.com -- Serge Lages http://www.tharsis-software.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Cursor problem under Windows
Hi Serge, Good to hear you got it working, useCursor(false) should still work though... so that is a bug. Can you say which versions of the OSG that useCursor(false) was still working on? Have you tried out other platforms? Robert. On Fri, Jun 12, 2009 at 7:22 PM, Serge Lagesserge.la...@gmail.com wrote: I have an update, using : osgViewer::ViewerBase::Windows windows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { //(*itr)-useCursor(false); (*itr)-setCursor(osgViewer::GraphicsWindow::MouseCursor::NoCursor); } Instead of setting useCursor(false) works, the cursor is invisible. On Fri, Jun 12, 2009 at 12:23 PM, Serge Lages serge.la...@gmail.com wrote: Hi all, Currently (the SVN version of OSG), hidding the cursor under Windows has no effect. Setting cursor to false on the traits or making something like : osgViewer::ViewerBase::Windows windows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { (*itr)-useCursor(false); } Doesn't work, I always see the cursor... Any idea on which modification has break things ? The same code was working for me some weeks ago, but I can't tell which revision it was... Thanks ! Best regards, -- Serge Lages http://www.tharsis-software.com -- Serge Lages http://www.tharsis-software.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Plugin extension registry
Only if no plugins can handle the read/file attempt does th Registry then attempt to load a new plugin from disk based on the extension name. ...and it attempts to load exactly one plugin, and if the IO operation fails, osgDB returns "failure" to the app. It does not go out looking for additional plugins to load. This is a problem if there are multiple plugins supporting multiple different formats that happen to share the same extension string. Unless the app preloads the plugins (which kind of defeats the purpose of plugins), current unmodified OSG will not support different plugins supporting different formats with the same extension. If you'd like to keep OSG as it stands, then it seems reasonable to have some kind of public "extension registry" such as a wiki page, where developers can lay claim to certain extension strings so that we avoid the situation described above. I'd like to lay claim to ".osgb", ".skel", and ".skeleton" for my own work, as it seems reasonable that someone could possibly try to make their own format with extensions like those somewhere down the road, and I want to avoid the conflict that would occur from multiple plugins supporting different formats with the same extension string. I realize this "claim" is only as good as the ether I'm writing in. :-) -Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Cursor problem under Windows
Hi Robert, I've only tried it on Windows, and about the version where it was working, maybe it was 2 or 3 weeks ago, but I am really not sure, I've made a fresh OSG compile last night from the SVN but I can't remember when I dit it the previous time... :/ I'm really sorry to not investigate further but I don't have time currently, I'll try to give it a look next week. Best regards, On Fri, Jun 12, 2009 at 8:34 PM, Robert Osfield robert.osfi...@gmail.comwrote: Hi Serge, Good to hear you got it working, useCursor(false) should still work though... so that is a bug. Can you say which versions of the OSG that useCursor(false) was still working on? Have you tried out other platforms? Robert. On Fri, Jun 12, 2009 at 7:22 PM, Serge Lagesserge.la...@gmail.com wrote: I have an update, using : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { //(*itr)-useCursor(false); (*itr)-setCursor(osgViewer::GraphicsWindow::MouseCursor::NoCursor); } Instead of setting useCursor(false) works, the cursor is invisible. On Fri, Jun 12, 2009 at 12:23 PM, Serge Lages serge.la...@gmail.com wrote: Hi all, Currently (the SVN version of OSG), hidding the cursor under Windows has no effect. Setting cursor to false on the traits or making something like : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { (*itr)-useCursor(false); } Doesn't work, I always see the cursor... Any idea on which modification has break things ? The same code was working for me some weeks ago, but I can't tell which revision it was... Thanks ! Best regards, -- Serge Lages http://www.tharsis-software.com -- Serge Lages http://www.tharsis-software.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- Serge Lages http://www.tharsis-software.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] VPB compile error
Hi all, Just a general comment... 'vpb::DataSet::addPatchedTerrain' : must return a value I've always been confused as to why gcc allows you to declare a function with a return value and then not have a return statement in it... This is not the first time a similar usage needed to be fixed on Windows (but compiled fine on gcc). It just seems nonsensical to me, it should be an error. Is there some logical reason why it allows this kind of thing? Thanks, J-S -- __ Jean-Sebastien Guayjean-sebastien.g...@cm-labs.com http://www.cm-labs.com/ http://whitestar02.webhop.org/ ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] picking and custom active area
So far so good. The culling works as expected. I can now define a custom active invisible area and the picking works with it. Unfortunately it did not quite tackle my problem with dragging. The question have now: How do I manually intersect a ray with the x/y-plane of geode? The problem I have is that when I drag an object, the mouse pointer (in my case it is actually one of multiple touches) momentarily leaves it within one frame and the move handler that adjusts the new location is never called. My first approach was to increase the active area so that this does not happen but this leads to all kinds of problems and is not fully robust, conceptually speaking. Instead I would like to do the following: Objects get clicked on, I do normal picking. On mouse drag and up I do manual ray intersection with the entire x/y plane of the object that got the mouse down previously. This way the object never miss out on the drag/up. So how do I manually intersect a ray with the x/y-plane of geode? /stefanix -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=13953#13953 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] picking and custom active area
So I found some code for intersecting a line with a plane. What I am missing is how do I translate the mouse pointer coordinates into a line expressed in local coordinates? Here the intersection code if anybody is interested: Code: bool getPlaneLineIntersection(const osg::Vec4d plane, const osg::Vec3d lineStart, const osg::Vec3d lineEnd, osg::Vec3d isect) { // intersects an infinite line with an infinite plane // in hesse normal form Ax + By + Cz + D = 0 // A,B,C is the normal vector of the plane, D the distance to the origin const double deltaX = lineEnd.x() - lineStart.x(); const double deltaY = lineEnd.y() - lineStart.y(); const double deltaZ = lineEnd.z() - lineStart.z(); const double denominator = (plane[0]*deltaX + plane[1]*deltaY + plane[2]*deltaZ); if (! denominator) return false; const double C = (plane[0]*lineStart.x() + plane[1]*lineStart.y() + plane[2]*lineStart.z() + plane[3]) / denominator; isect.x() = lineStart.x() - deltaX * C; isect.y() = lineStart.y() - deltaY * C; isect.z() = lineStart.z() - deltaZ * C; return true; } -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=13954#13954 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Cursor problem under Windows
Hi Robert Serge, Here is the offending line: void GraphicsWindowWin32::setCursorImpl( MouseCursor mouseCursor ) { if (_mouseCursor != mouseCursor) { _mouseCursor = mouseCursor; HCURSOR newCursor = getOrCreateCursor( mouseCursor); if (newCursor == _currentCursor) return; _currentCursor = newCursor; _traits-useCursor = (_currentCursor != NULL); // Problem: Changing useCursor when setCursorImpl is called if (_mouseCursor != InheritCursor) ::SetCursor(_currentCursor); } } It looks like this line isn't really necessary, but if it is desired to change the useCursor mode when a cursor is set, it should be done in setCursor, and not setCursorImpl. void GraphicsWindowWin32::setCursor( MouseCursor mouseCursor ) { _appMouseCursor = mouseCursor; setCursorImpl(mouseCursor); _traits-useCursor = (_currentCursor != NULL); // Line belongs here instead (if this behavior is desired). } From a design perspective, I think useCursor and setCursor methods should be orthogonal. Changing a cursor should not affect the useCursor state of the window. Orthogonal designs tend to be more flexible. So if it were up to me, I would simply delete the line with the result of a slight change in semantics of the setCursor function. Serge, try moving the indicated line to the indicated function. If that doesn't work, delete it entirely. Some other code may be calling setCursor behind your back and turning it back on. Regards, Mark Robert Osfield wrote: Hi Serge, Good to hear you got it working, useCursor(false) should still work though... so that is a bug. Can you say which versions of the OSG that useCursor(false) was still working on? Have you tried out other platforms? Robert. On Fri, Jun 12, 2009 at 7:22 PM, Serge Lagesserge.la...@gmail.com wrote: I have an update, using : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { //(*itr)-useCursor(false); (*itr)-setCursor(osgViewer::GraphicsWindow::MouseCursor::NoCursor); } Instead of setting useCursor(false) works, the cursor is invisible. On Fri, Jun 12, 2009 at 12:23 PM, Serge Lages serge.la...@gmail.com wrote: Hi all, Currently (the SVN version of OSG), hidding the cursor under Windows has no effect. Setting cursor to false on the traits or making something like : osgViewer::ViewerBase::Windowswindows; viewer.getWindows(windows); for (osgViewer::ViewerBase::Windows::iterator itr = windows.begin(); itr != windows.end(); ++itr) { (*itr)-useCursor(false); } Doesn't work, I always see the cursor... Any idea on which modification has break things ? The same code was working for me some weeks ago, but I can't tell which revision it was... Thanks ! Best regards, -- Serge Lages http://www.tharsis-software.com -- Serge Lages http://www.tharsis-software.com ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org