Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Batch Table Binary and other updates #125

Merged
merged 11 commits into from
Sep 6, 2016
Merged

Batch Table Binary and other updates #125

merged 11 commits into from
Sep 6, 2016

Conversation

lilleyse
Copy link
Contributor

This is a little rough at the moment, but ready for at least a first look. I still need to work on the batch table schema.

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 1, 2016

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 1, 2016

This is a little rough at the moment

I thought it was actually in pretty good shape. I made several edits. Please review.

I did not look at the JSON schema. Let me know when it is ready. Make sure to validate the examples: https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/schema#usage

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 1, 2016

Fixes #103 and #32.

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 1, 2016

Cesium implementation: CesiumGS/cesium#4183

@lilleyse
Copy link
Contributor Author

lilleyse commented Sep 1, 2016

All your edits look fine to me.

@lilleyse
Copy link
Contributor Author

lilleyse commented Sep 2, 2016

Alright batch table schema is updated. I also made some changes to the feature table schema - @lasalvavida and @pjcozzi let me know if I changed something incorrectly.

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 2, 2016

When running http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Specs/SpecRunner.html in Firefox, I get one related test failure:

Scene/PointCloud3DTileContent BATCH_ID semantic uses componentType of UNSIGNED_SHORT by default
TypeError: invalid arguments in http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/Scene/PointCloud3DTileContent.js (line 405)
PointCloud3DTileContent.prototype.initialize@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/Scene/PointCloud3DTileContent.js:405:32
Cesium3DTilesTester.loadTile@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Specs/Cesium3DTilesTester.js:122:9
@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Specs/Scene/PointCloud3DTileContentSpec.js:162:23
window.it/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Specs/spec-main.js:144:30
attemptAsync@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1793:9
QueueRunner.prototype.run@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1746:26
QueueRunner.prototype.execute@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1732:5
Env/queueRunnerFactory@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:620:7
Spec.prototype.execute@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:357:5
wrapChildAsAsync/<.fn@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:2095:37
attemptAsync@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1793:9
QueueRunner.prototype.run@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1746:26
QueueRunner.prototype.execute@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1732:5
Env/queueRunnerFactory@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:620:7
Suite.prototype.execute@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:2077:5
wrapChildAsAsync/<.fn@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:2095:37
attemptAsync@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1793:9
QueueRunner.prototype.run@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1746:26
attemptAsync/next@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1781:15
complete@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:2090:9
clearStack@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:606:9
QueueRunner.prototype.run@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1758:7
attemptAsync/next@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1781:15
complete@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:370:9
clearStack@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:606:9
QueueRunner.prototype.run@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1758:7
attemptAsync/next@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/ThirdParty/jasmine-2.2.0/jasmine.js:1781:15
window.it/</<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Specs/spec-main.js:146:21
fulfilled/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:196:34
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseResolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:359:11
fulfilled/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:196:34
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseResolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:359:11
fulfilled/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:196:34
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseReject@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:366:11
rejected/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:217:33
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseReject@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:366:11
Instanced3DModel3DTileContent.prototype.request/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/Scene/Instanced3DModel3DTileContent.js:196:13
rejected/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:217:33
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseReject@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:366:11
rejected/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:217:33
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseResolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:359:11
fulfilled/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:196:34
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseResolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:359:11
fulfilled/p<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:196:34
defer/_then/<@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:297:5
processQueue@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:647:4
defer/_resolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:333:4
promiseResolve@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/ThirdParty/when.js:359:11
loadWithXhr.load/xhr.onload@http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/pnts-updates/Source/Core/loadWithXhr.js:166:17

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 2, 2016

When running in Chrome - now with a clean cache - I did not get any 3D Tiles failures.

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 2, 2016

Whoops, the above two comments are for CesiumGS/cesium#4183.

"patternProperties" : {
".*" : {
"additionalProperties" : {
"anyOf": [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure about this? The Feature Table properties could be anything: strings, numbers, arrays, objects with their schema, etc. It is up to the tile format to limit it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, I just removed the additionalProperties section.

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 2, 2016

Just that one comment and this is ready to merge!

Great work here.

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 2, 2016

Posted the breaking b3dm changes to the forum: https://groups.google.com/forum/#!topic/cesium-dev/jY3wj0RVASM

@lasalvavida
Copy link
Contributor

Why are we using strings for componentType instead of the WebGL constants like we do in glTF?

@@ -40,6 +43,9 @@
},
"CONSTANT_RGBA" : {
"$ref" : "featureTable.schema.json#/definitions/globalPropertyCartesian3"
},
"BATCH_LENGTH" : {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this property necessary? Can't we just assume that the batchIds provided are correct?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's needed because we expect multiple points to map to the same batchId. In the case of per-point properties, both BATCH_ID and BATCH_LENGTH can be omitted.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, should we add it to i3dm.featureTable as well? I think that can have a similar use case: where multiple instances are part of the same batch.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that seems like a good idea to me.

@lilleyse
Copy link
Contributor Author

lilleyse commented Sep 2, 2016

Why are we using strings for componentType instead of the WebGL constants like we do in glTF?

Overall I think it helps with clarity, and 3D Tiles isn't tied to WebGL as much as glTF is (even though tiles contain glTF....).

@lilleyse
Copy link
Contributor Author

lilleyse commented Sep 5, 2016

Is this ready to merge?

@pjcozzi
Copy link
Contributor

pjcozzi commented Sep 6, 2016

Yeap, any tweaks can go into a separate PR.

@pjcozzi pjcozzi merged commit a202d31 into master Sep 6, 2016
@pjcozzi pjcozzi deleted the batch-table-binary branch September 6, 2016 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants