Converted Collada to glTF model has no scenes

Hi,

For our application we are trying to get good looking DAE/GLTF ship models that perform good in Cesium (the model we used with google earth are too complex). We had someone create a Collada ship model for us with -hopefully- a minimal complexity (most likely he used autodesk with collada export).

When using the online glTF converter, I do get a .gltf file but displaying the results fails. Same result for the offline converter. On my system I get the following message for the model:

An error occurred while rendering. Rendering has stopped.

undefined

TypeError: Cannot read property ‘nodes’ of undefined

TypeError: Cannot read property ‘nodes’ of undefined

at computeBoundingSphere (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:93067:48)

at Model.update (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:94813:36)

at PrimitiveCollection.update (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:134977:27)

at updatePrimitives (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:140351:27)

at render (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:140404:9)

at Scene.render (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:140445:13)

at CesiumWidget.render (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:149817:25)

at render (http://localhost:8077/Cesium/Build/CesiumUnminified/Cesium.js:149237:32)

The code in computeBoundingSphere() is:

var rootNodes = gltf.scenes[gltf.scene].nodes;

Looking into the .gltf file, I can see that gltf.scene and gltf.scenes are both not present. So it is clear why the code crashes.

In the Collada file, I do see scene data:

<library_visual_scenes>

<visual_scene id=“RootNode” name=“RootNode”>

and

<instance_visual_scene url="#RootNode"/>

Any idea what is going wrong here?

The collada file can be viewed without problems in Visual Studio 2013.

(I can’t share the model on the forum, but I could send the .dea and .gltf files via email.)

Thanks, Willem

Anyone?

Sorry for re-posting, but I noticed the forum on cesiumjs.org/forum.html is not working anymore, so the question may have gotten out of view (error in firefox console: Load denied by X-Frame-Options: https://groups.google.com/ does not permit framing by http://cesiumjs.org/forum.html.). Using groups.google.com/forum now.

Thanks, Willem

Willem, sorry for the delay in reply. We just posted an update to the ModelConverter that fixes a large class of models. Can you give it a try and let us know if it works. It turns out that some products generate technically invalid DAE files, but they are popular enough that tools like Visual Studio work around them and load them anyway. If you are still having problems, let us know.

The forum problem has also been fixed and was broken due to a chance on Google’s end.

Hi Matthew, my collegue checked that the converter no longer gives an error, so that looks promising. I'll be able to check the details coming Wednesday.
Thanks, Willem

Hi Matthew,

Although the on-line converter no longer gives an error message, the resulting model does not seem to be correct. It looks like a huge triangle shaped plane, which is only visible after zooming out and looking at the right angle (see screenshot).

I would appreciate if you or Tom File could take a look at this model.

I also tried the off-line converter, but it gives the ‘old’ error about the nodes, so the off-line version seems to be a little behind.

I will send you the Collada and glTF files per email.

Thanks, Willem

Hi Matthew,

it seems that the online collada2glTF converter is much more stable.

Is it possible for Cesium-team to give us the current version of the binary off-line converter that is currently running behind the online converter?

thanks,

Zhihang

Zhihang,

Unfortunately not. The online converter has some additional proprietary code that we aren’t allowed to redistribute. That being said, if you do find problems in the offline converter, I would recommend you submit issues to its GitHub project so that they can be addressed: https://github.com/KhronosGroup/glTF

Some of the issues reported on the forum are actually things we end up fixing in the offline converter and contributing back.

Hi Matthew,

thanks very much for your reply. Actually, I'm currently trying to convert one collada model to glTF format on Windows 7 OS. The result of the online-converter looks fine. But the offline-converter gives a very bad result. You can download the original collada file and screenshots of the gltf model via the dropbox-link below:
https://dl.dropboxusercontent.com/u/69071139/BugReport.zip

thanks,

Zhihang

Willem,

Your model was exposing a bug in the converter, which Tom has now fixed. We pushed out a new update to the online converter and everything appears to work now. Thanks again for the bug report.

Zhihang, for the offline converter, please submit isues to https://github.com/KhronosGroup/glTF/issues, it’s a separate from Cesium and the online converter.

Hello Matthew, Tom,

Thanks for updating the converter!

Although the model is shown, it has some strange behaviour when zooming in, and the image is distorted. I am not sure if it is a model or a Cesium issue, although I do not see it with the Cesium_Ground.gltf model. See attached screenshot.

Any idea what the cause can be?

Thanks, Willem

below is some code that exposes the issue when zooming in.

var viewer = new Cesium.Viewer(‘cesiumContainer’, {

infoBox : false,

selectionIndicator : false

});

// Add Cesium Inspector

// viewer.extend(Cesium.viewerCesiumInspectorMixin);

var entity;

function createModel(url, height) {

viewer.entities.removeAll();

var position = Cesium.Cartesian3.fromDegrees(7, 43, height);

var heading = Cesium.Math.toRadians(0.0);

var pitch = 0;

var roll = 0;

var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, heading, pitch, roll);

entity = viewer.entities.add({

name : url,

position : position,

orientation : orientation,

model : {

uri : url,

minimumPixelSize : 64

}

});

// viewer.trackedEntity = entity;

}

// create

createModel(’…/…/SampleData/models/Test/pA164_OC.gltf’, 0.0);

// createModel(’…/…/SampleData/models/CesiumGround/Cesium_Ground.gltf’, 0.0);

// and fly to

setTimeout(function() {

viewer.flyTo(entity, { duration: 10,

offset: new Cesium.HeadingPitchRange(Cesium.Math.toRadians(0.0),

Cesium.Math.toRadians(-30),

  1. });

viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);

}, 10000);

Sorry for re-posting, but has anyone seen the effect shown in the screenshot.

Thanks, Willem