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=0

The 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.dll
plugin : h:\win32\vc71\opensg-2.0\lib\debug/ OSGContribBackgroundLoader.dll
plugin : 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.dae

load failed Backend IO
WARNING: could not read
WARNING: FILE INTERFACE NOT IMPLEMENTED!
WARNING: could not read
Assertion failed: OSG::NullFC != *this && "Can't dereference NULL field container.", file h:\win32\vc71\opensg-2.0\include\opensg \OSGFieldContainerPtr.inl, line 800

This 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/

Attachment: 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

Reply via email to