On May 15, 2008, at 2:27 PM, Patrick Hartling wrote:
Has anyone tried using the COLLADA loader on Windows? I am having quite a bit of trouble with it, and I have not had much luck tracking down the problems. The model that I am trying to load can be found using this link:http://sketchup.google.com/3dwarehouse/download?mid=70810e8a7655f01accdb27701aa1253f&rtyp=zip&fn=whitehouse&ctyp=other&prevstart=0The model uses version 1.4.1 of the schema, and as far as I can tell, that is what is supported by the OpenSG 2 COLLADA loader.I am testing with a debug build of OpenSG made from the fcptr_stable_jun07 branch of the repository. I have merged changes to the COLLADA loader from the trunk up through r829 in an effort to be as close to the trunk version as possible. I compiled with Visual C++ 7.1 and linked against COLLADA DOM installed using the version in the installer named COLLADA_DOM_FX_RT_1.3.0_VC71.exe. Note that I am using the Visual C++ release runtime with debug symbols compiled in to OpenSG and the applications rather than using the debug runtime.When I try to load the model, I get this output: Tutorials>10loading_d.exe whitehouse/models/whitehouse.dae Get Plugins *.dll from ...\opensg-2.0\lib\debug plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGBase.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGCluster.dllplugin : h:\win32\vc71\opensg-2.0\lib\debug/ OSGContribBackgroundLoader.dllplugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGContribGUI.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGDrawable.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGFileIO.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGGroup.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGImageFileIO.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGRenderTraversal.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGState.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGSystem.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGText.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGUtil.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGWindow.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGWindowGLUT.dll plugin : h:\win32\vc71\opensg-2.0\lib\debug/OSGWindowWIN32.dll WARNING: FCType CubeTextureChunk has 66 (>64) fields!Read H:\src\OpenSG\opensg-2.0-svn-win32\Tutorials\whitehouse\models \whitehouse.dae Error: Failed to open file:///H:/src/OpenSG/opensg-2.0-svn-win32/Tutorials/H :\src\OpenSG\opensg-2.0-svn-win32\Tutorials\whitehouse\models \whitehouse.daeload failed Backend IO WARNING: could not read WARNING: FILE INTERFACE NOT IMPLEMENTED! WARNING: could not readAssertion failed: OSG::NullFC != *this && "Can't dereference NULL field container.", file h:\win32\vc71\opensg-2.0\include\opensg \OSGFieldContainerPtr.inl, line 800This application has requested the Runtime to terminate it in an unusual way.Please contact the application's support team for more information.The crashing can be fixed by modifying 10loading to check whether the scene was loaded successfully before trying to use NamedNodeFinder. What is leaving me stumped is how the COLLADA DOM software appears to be trying to load file:///H:/src/OpenSG/opensg-2.0-svn-win32/Tutorials/H :\src\OpenSG\opensg-2.0-svn-win32\Tutorials\whitehouse\models \whitehouse.dae. At this point, I think that the problem is in COLLADA DOM rather than in OpenSG, and my next move is to trace through the COLLADA DOM software to see if I can figure out what is generating the error and why. In the meantime, my hope is that someone has seen this before and has an "a ha!" sort of solution/ workaround.
I figured out what was going wrong. There are two major problems on Windows:
1. The pre-packaged version of COLLADA DOM 1.3.0 is compiled without RTTI enabled, thus preventing dynamic_cast operations in OpenSG on their
objects from working. I had to rebuild COLLADA DOM after changing
project settings. Visual C++ 7.1 project defaults stink.
2. DAE::load() expects file paths to be valid URIs, and something
such as
C:\models\whitehouse.dae is not. COLLADA DOM 2.1 includes a
helper
function (cdom::nativePathToUri()) for translating such a path
into a
form that can be given directly to DAE::load(). I incorporated
this
function into the OpenSG COLLADA loader, and things started
working. I
committed my change to the fcptr_stable_jun07 branch as r1222:
http://opensg.vrsource.org/trac/changeset/1222
Are there any plans to migrate to COLLADA DOM 2.x? I know that the
COLLADA DOM 2.1 source does not include a Visual C++ 7.1 project file,
but very little effort is required for a user to downgrade the Visual C
++ 8.0 project file for 7.1 use. (I only bring that up because I am
stuck using Visual C++ 7.1 for the foreseeable future, and others may
be in the same boat.)
-Patrick -- Patrick L. Hartling Senior Software Engineer, Priority 5 http://www.priority5.com/
PGP.sig
Description: This is a digitally signed message part
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ Opensg-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensg-users
