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

Gltf 2.0 #5641

Merged
merged 140 commits into from
Aug 1, 2017
Merged
Show file tree
Hide file tree
Changes from 120 commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
97c1a0d
Update CHANGES.md
pjcozzi Aug 30, 2016
2471b03
Update CHANGES.md
pjcozzi Aug 30, 2016
a8afa5e
Added support for normalized accessors
lasalvavida Aug 30, 2016
2170ac5
Modified Box-Color to use normalized property
lasalvavida Aug 30, 2016
20cef47
Clarified normalized in test
lasalvavida Aug 30, 2016
e4f4240
SCISSOR_TEST is no longer required in glTF 1.0.1
lasalvavida Aug 31, 2016
34b63c1
Merge pull request #4247 from lasalvavida/gltf-1.0.1-normalized
pjcozzi Aug 31, 2016
b20e8c4
Merge branch 'gltf-1.0.1' of github.com:AnalyticalGraphicsInc/cesium …
lasalvavida Aug 31, 2016
ad83614
Merge pull request #4248 from lasalvavida/gltf-1.0.1-remove-scissor-test
pjcozzi Aug 31, 2016
246a848
Added uint32 indices support for glTF 1.0.1
lasalvavida Sep 1, 2016
b4fd22a
Fix jsHint error
lasalvavida Sep 1, 2016
c143152
Test glTF for required extensions.
emackey Sep 26, 2016
9d8f635
Merge pull request #4371 from AnalyticalGraphicsInc/required-extensio…
pjcozzi Nov 10, 2016
ff84031
Merge branch 'master' of https://github.com/lasalvavida/cesium into g…
lasalvavida Nov 11, 2016
b9f304c
Merge branch 'gltf-1.0.1' of https://github.com/lasalvavida/cesium in…
lasalvavida Nov 11, 2016
12b18cb
Made suggested changes
lasalvavida Nov 11, 2016
8383f57
Merge pull request #4636 from lasalvavida/gltf-1.0.1
lilleyse Nov 11, 2016
07f9f44
Merge branch 'gltf-1.0.1' of https://github.com/AnalyticalGraphicsInc…
lasalvavida Nov 11, 2016
48aa89d
Check for _elementIndexUint before testing
lasalvavida Nov 11, 2016
95e541e
Merge pull request #4249 from lasalvavida/gltf-1.0.1-uint32-indices
pjcozzi Nov 11, 2016
47f3631
Added initial pipeline build
lasalvavida Jan 2, 2017
3355a84
Merge branch 'gltf-1.0.1' of https://github.com/AnalyticalGraphicsInc…
lasalvavida Jan 2, 2017
56cea8c
Added amdifyed pipeline files
lasalvavida Jan 3, 2017
ee2fca2
Some of the model changes (not done yet)
lasalvavida Jan 3, 2017
9d4fbde
Checkpoint: Geometry only models render
Jan 4, 2017
8c0c7e4
Fixed promise code
Jan 4, 2017
92a9696
Fixed textures and skinning
lasalvavida Jan 4, 2017
2d337b4
Removed getBinaryAccessor
lasalvavida Jan 4, 2017
e6aafe4
Enabled gltf-1.1
lasalvavida Jan 4, 2017
cf05283
Removed gltfDefaults from ThirdParty
lasalvavida Jan 4, 2017
80c9786
Reverting model changes
Jan 10, 2017
5901bde
Switch workspaces
Jan 12, 2017
860d56f
Fixed skeleton hierarchy issues
Jan 12, 2017
ebb29ca
Merge branch 'master' of https://github.com/AnalyticalGraphicsInc/ces…
lasalvavida Jan 13, 2017
b70b357
addDefaults and processModelMaterialsCommon post-updateVersion
lasalvavida Jan 13, 2017
d959f46
Merge branch 'master' of github.com:AnalyticalGraphicsInc/cesium into…
Jan 26, 2017
a7ec3c8
Pulled latest changes from gltf-pipeline
Jan 26, 2017
8135029
Create runtimeNodes from skeleton nodes even if they aren't part of
Jan 26, 2017
c912f87
Update from small pipeline changes
Jan 26, 2017
4c0054b
RemovePipelineExtras
Jan 26, 2017
6ec4ed8
Last pull of changes from gltf-pipeline
Jan 26, 2017
cad8794
A few test fixes
Jan 27, 2017
b4a4b16
Added back some lost 1.0.1 changes and fixes for tests
lasalvavida Jan 27, 2017
5ed44c3
Update from pipeline changes
Mar 22, 2017
298a203
Merge branch 'master' of github.com:AnalyticalGraphicsInc/cesium into…
Mar 22, 2017
b1e7f89
A few fixes from the merge
Mar 22, 2017
c9c20a6
Added missing pipeline files
Mar 22, 2017
29149db
Fix most failing tests, still a few left
Mar 22, 2017
b6a1d9d
A few more fixed tests
lasalvavida Mar 26, 2017
b99554d
Added KHR_technique_webgl to supported extensions
Apr 3, 2017
39514ee
Updated GltfPipeline built files
Apr 3, 2017
a69ffd1
Merge branch 'gltf-1.1' of github.com:lasalvavida/cesium into gltf-1.1
Apr 3, 2017
2d6aac6
Fix all failing tests
Apr 3, 2017
99ad146
Merge branch 'master' of github.com:AnalyticalGraphicsInc/cesium into…
Apr 3, 2017
fec6a0b
Added new Bing Maps API key
moneimne Jun 9, 2017
878ba35
Began porting pbr shader from gltf-1.1 to 2.0. Reading baseColor from…
moneimne Jun 9, 2017
7e80149
Fixes to reading textures from glTF 2.0. Shaders now use textures for…
moneimne Jun 12, 2017
daa974c
Added additional material attributes without scale factors or normal …
moneimne Jun 12, 2017
f6307d5
Added check to make sure standardDerivatives is supported
moneimne Jun 12, 2017
9abcc68
Added capabilities to read tangent data and doubleSided parameters. A…
moneimne Jun 13, 2017
de9563b
Added czm_cubeMap and more test models
moneimne Jun 14, 2017
543b3e5
Set up framework for creating the BRDF LUT. Shader not compiling yet.
moneimne Jun 15, 2017
e010cbe
Finished computing BRDF LUT and hooked it up as an automatic uniform
moneimne Jun 15, 2017
b78fb0e
Fixed brdfLUT lookup and doubleSided normal flip. Updated damagedHelm…
moneimne Jun 16, 2017
3525ec0
Added clear blue skybox and updated metalRough textures to conform to…
moneimne Jun 19, 2017
e2cab40
Added horizon as environment map
moneimne Jun 21, 2017
8b829f8
Merge remote-tracking branch 'origin/master' into gltf-2.0
emackey Jun 21, 2017
1a76302
Merge remote-tracking branch 'moneimne/gltf-2.0' into gltf-1.99
emackey Jun 21, 2017
52b0a9a
Delete file that was supposed to be ignored.
emackey Jun 21, 2017
f4115d3
Cleanup errors
emackey Jun 21, 2017
01ebf75
Merge pull request #1 from emackey/gltf-1.99
moneimne Jun 22, 2017
a26e072
Updated glTF pipeline build and added some default functionality that…
moneimne Jun 22, 2017
d4c90c6
Added rest of glTF 2.0 samples
moneimne Jun 22, 2017
4664d52
Can now read models with vec4 baseColor and joints. Still need to add…
moneimne Jun 23, 2017
74480a8
Added animation to vertex shader, but entire model is moving based on…
moneimne Jun 23, 2017
1dd1339
Finished implementing skeletal animations
moneimne Jun 26, 2017
b8d0642
Can read morph data from accessors. Shaders used fixed weights for now
moneimne Jun 28, 2017
a9df1e6
Initial morph target implementation finished
moneimne Jul 10, 2017
0eb4d68
Removed print statement
moneimne Jul 10, 2017
531408c
Updated shader math to support perceptual roughness changes
moneimne Jul 10, 2017
fc4bc50
Added fake LOD change that looks a little better for specular irradiance
moneimne Jul 11, 2017
991efd9
Removed extraneous functions from processPbrMetallicRoughness that ar…
moneimne Jul 11, 2017
720fedd
Cleaned up generateTechnique comments and ordering
moneimne Jul 11, 2017
d8cc327
Updated models
moneimne Jul 18, 2017
8b01cfa
Merge branch 'master' into gltf-2.0
moneimne Jul 18, 2017
38f36ab
Resolved merge conflicts
moneimne Jul 18, 2017
18ba7c0
Fixed eslint errors
moneimne Jul 18, 2017
2edfe41
Updated parseTextures function
moneimne Jul 18, 2017
93a9f96
Model specs pass many more tests now
moneimne Jul 19, 2017
d28da9d
Fixed test case for moving byteStrides from accessors to bufferViews
moneimne Jul 20, 2017
5f4d86c
Added new gltf-pipeline build
moneimne Jul 21, 2017
b472302
Fixed material updates that should not change values to arrays
moneimne Jul 21, 2017
daaaaf6
Updated gltf-pipeline to fix tests from changes
moneimne Jul 21, 2017
5d10c5c
Added optimizeForCesium input
moneimne Jul 21, 2017
b6e2556
Merge branch 'master' into gltf-2.0
lilleyse Jul 24, 2017
c1e63cd
Fix deprecation warning
lilleyse Jul 24, 2017
1596185
Properly loading materialsCommon models with textures
moneimne Jul 24, 2017
817c659
Merge branch 'gltf-2.0' of github.com:moneimne/cesium into gltf-2.0
moneimne Jul 24, 2017
1d4598c
moveByteStrideToBufferView now handles accessors with byteStride of 0
moneimne Jul 24, 2017
182cafe
Added ambient color to models for testing purposes
moneimne Jul 24, 2017
79dad91
Fixed inferBufferViewTargets to include morph targets
moneimne Jul 24, 2017
50cf9cb
Fixed CRN and KTX
lilleyse Jul 25, 2017
09307af
Fixed morph target to handle generic number of targets and doubled su…
moneimne Jul 25, 2017
bc2a37b
Merge branch 'gltf-2.0' of github.com:moneimne/cesium into gltf-2.0
moneimne Jul 25, 2017
7731c77
Fix for loading glb v2
lilleyse Jul 25, 2017
8b542e6
Fixed transparency in materialsCommon
moneimne Jul 25, 2017
63991bf
Merge branch 'gltf-2.0' of github.com:moneimne/cesium into gltf-2.0
moneimne Jul 25, 2017
255f236
Fix RTC and Batch Ids for b3dms using KHR_materials_common
lilleyse Jul 25, 2017
0a51bcf
Added alphaMode implementation to shaders
moneimne Jul 25, 2017
8bb50eb
Merge branch 'gltf-2.0' of github.com:moneimne/cesium into gltf-2.0
moneimne Jul 25, 2017
6db39c5
Remove .slice and .fill occurences so IE works
lilleyse Jul 25, 2017
61b53e9
Style fix from eslint
moneimne Jul 25, 2017
4a4dbc1
Merge branch 'gltf-2.0' of github.com:moneimne/cesium into gltf-2.0
moneimne Jul 25, 2017
e828f02
Removed print statement
moneimne Jul 26, 2017
e2fca85
Fix for cmpt tiles and some simplification
lilleyse Jul 26, 2017
90fdc47
Deleted output/output.gltf
lilleyse Jul 26, 2017
613c403
Wrote test cases for 2.0 and added weights/skinning fix
moneimne Jul 27, 2017
9c04df0
Removed old GLTF_SPEC comments
lilleyse Jul 27, 2017
8387389
Added procedural environment changes from glTF pipeline PR
moneimne Jul 28, 2017
9f73909
Removed old GLTF_SPEC comments
lilleyse Jul 27, 2017
516e7b2
Added procedural environment changes from glTF pipeline PR
moneimne Jul 28, 2017
b0186b6
Rounded out tests and added test models
lilleyse Jul 28, 2017
f8f432c
Updated per PR reviews
moneimne Jul 30, 2017
9c2f5d1
Iniital merge conflict fixes. Tests fail.
moneimne Jul 30, 2017
611b5c7
Made fixes to destroy
moneimne Jul 30, 2017
b61b5a8
Updated CHANGES.md and LICENSE.md
moneimne Jul 30, 2017
2a7e727
Fixes for a variety of tilesets
lilleyse Jul 31, 2017
1e0ecef
Fix LICENSE.md spacing
lilleyse Jul 31, 2017
40a1c04
Small fixes throughout
lilleyse Jul 31, 2017
ccd55dd
Fix tests and Sandcastle
lilleyse Jul 31, 2017
e006283
Merge branch 'master' into gltf-2.0
lilleyse Jul 31, 2017
516d18c
Added sandcastle demo for PBR
moneimne Jul 31, 2017
67ea9ad
Some Sandcastle demo cleanup
lilleyse Jul 31, 2017
97fc4ec
Removed gltfDefaults.js
lilleyse Jul 31, 2017
1ec3181
Fixed interleaved models and added test
lilleyse Jul 31, 2017
f73cb3c
Fix ClassificationPrimitive working on b3dm/i3dm
lilleyse Jul 31, 2017
8610991
Fix skeleton and joint issues in updateVersion
lilleyse Jul 31, 2017
40835a6
Use scene.skyBox instead of copy of default starmap.
emackey Jul 31, 2017
14abad1
Fix some issues with LICENSE.md
emackey Aug 1, 2017
7996f7c
Fix failing tests when running with webgl stub
lilleyse Aug 1, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 165 additions & 0 deletions Source/Core/WeightSpline.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
/*global define*/
define([
'./defaultValue',
'./defined',
'./defineProperties',
'./DeveloperError',
'./Spline'
], function(
defaultValue,
defined,
defineProperties,
DeveloperError,
Spline) {
'use strict';
Copy link
Contributor

Choose a reason for hiding this comment

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

Fix the indentation to be consistent with other files like:

define([
        './defaultValue',
        './defined',
        './defineProperties',
        './DeveloperError',
        './Spline'
], function(
        defaultValue,
        defined,
        defineProperties,
        DeveloperError,
        Spline) {
    'use strict';

Also remove /*global define*/ which is no longer used.


/**
* A spline that uses piecewise linear interpolation to create a curve.
Copy link
Contributor

Choose a reason for hiding this comment

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

The description should be tweaked to mentioned that its linear interpolation over an array of weight values used by morph targets.

*
* @alias WeightSpline
* @constructor
*
* @param {Object} options Object with the following properties:
* @param {Number[]} options.times An array of strictly increasing, unit-less, floating-point times at each point.
* The values are in no way connected to the clock time. They are the parameterization for the curve.
* @param {Number[]} options.points The array of floating-point control points given
Copy link
Contributor

Choose a reason for hiding this comment

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

options.points should be renamed to options.weights and the description tweaked. The description should also specify how the elements of the array are ordered.

*
* @exception {DeveloperError} points.length must be greater than or equal to 2.
* @exception {DeveloperError} times.length must be a factor of points.length.
*
*
* @example
* var times = [ 0.0, 1.5, 3.0, 4.5, 6.0 ];
* var spline = new Cesium.WeightSpline({
* times : times,
* points : [
* [0.0, -1.0, 1.0],
* [0.5, -0.5, 0.5],
* [1.0, 0.0, 0.0],
* [0.5, 0.5, -0.5],
* [0.0, 1.0, -1.0]
* ]
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't this example be a contiguous array?

* });
*
* var p0 = spline.evaluate(times[0]);
*
* @see LinearSpline
* @see HermiteSpline
* @see CatmullRomSpline
* @see QuaternionSpline
Copy link
Contributor

Choose a reason for hiding this comment

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

Add @see WeightSpline to the doc of all these others.

*/
function WeightSpline(options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);

var points = options.points;
var times = options.times;

//>>includeStart('debug', pragmas.debug);
if (!defined(points) || !defined(times)) {
throw new DeveloperError('points and times are required.');
}
Copy link
Contributor

Choose a reason for hiding this comment

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

For all new code use Check.defined.

if (points.length < 2) {
throw new DeveloperError('points.length must be greater than or equal to 2.');
Copy link
Contributor

Choose a reason for hiding this comment

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

Use Check.typeOf.number.greaterThanOrEquals

}
if (points.length % times.length !== 0) {
throw new DeveloperError('times.length must be a factor of points.length.');
}
//>>includeEnd('debug');

this._times = times;
this._points = points;
this._count = points.length / times.length;

this._lastTimeIndex = 0;
}

defineProperties(WeightSpline.prototype, {
/**
* An array of times for the control points.
*
* @memberof WeightSpline.prototype
*
* @type {Number[]}
* @readonly
*/
times : {
get : function() {
return this._times;
}
},

/**
* An array of floating-point array control points.
*
* @memberof WeightSpline.prototype
*
* @type {Number[][]}
* @readonly
*/
points : {
get : function() {
return this._points;
}
},

/**
* The number of control point sets provided
*
* @memberof WeightSpline.prototype
*
* @type {Number}
* @readonly
*/
count: {
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 getter used externally? If not remove this and use this._count instead.

get: function() {
return this._count;
}
}
});

/**
* Finds an index <code>i</code> in <code>times</code> such that the parameter
* <code>time</code> is in the interval <code>[times[i], times[i + 1]]</code>.
* @function
*
* @param {Number} time The time.
* @returns {Number} The index for the element at the start of the interval.
*
* @exception {DeveloperError} time must be in the range <code>[t<sub>0</sub>, t<sub>n</sub>]</code>, where <code>t<sub>0</sub></code>
* is the first element in the array <code>times</code> and <code>t<sub>n</sub></code> is the last element
* in the array <code>times</code>.
*/
WeightSpline.prototype.findTimeInterval = Spline.prototype.findTimeInterval;

/**
* Evaluates the curve at a given time.
*
* @param {Number} time The time at which to evaluate the curve.
* @param {Number[]} [result] The object onto which to store the result.
* @returns {Number[]} The modified result parameter or a new instance of the point on the curve at the given time.
*
* @exception {DeveloperError} time must be in the range <code>[t<sub>0</sub>, t<sub>n</sub>]</code>, where <code>t<sub>0</sub></code>
* is the first element in the array <code>times</code> and <code>t<sub>n</sub></code> is the last element
* in the array <code>times</code>.
*/
WeightSpline.prototype.evaluate = function(time, result) {
var points = this.points;
var times = this.times;

var i = this._lastTimeIndex = this.findTimeInterval(time, this._lastTimeIndex);
var u = (time - times[i]) / (times[i + 1] - times[i]);

if (!defined(result)) {
result = [];
Copy link
Contributor

Choose a reason for hiding this comment

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

While the code will still work, it is better to allocate the array with the correct size: new Array(this.count).

}

for (var j = 0; j < this.count; j++) {
var index = (i * this.count) + j;
result[j] = points[index] * (1.0 - u) + points[index + this.count] * (u);
Copy link
Contributor

Choose a reason for hiding this comment

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

The parentheses around u are not needed.

}

return result;
};

return WeightSpline;
});
17 changes: 17 additions & 0 deletions Source/Renderer/AutomaticUniforms.js
Original file line number Diff line number Diff line change
Expand Up @@ -1436,6 +1436,23 @@ define([
}
}),

czm_brdfLUT : new AutomaticUniform({
Copy link
Contributor

Choose a reason for hiding this comment

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

Reminder to write doc for this.

size : 1,
datatype : WebGLConstants.SAMPLER_2D,
getValue : function(uniformState) {
return uniformState.brdfLUT;
}
}),

// TODO: Docs
czm_cubeMap : new AutomaticUniform({
Copy link
Contributor

Choose a reason for hiding this comment

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

Given @emackey's work on procedural reflections, remove cubeMap from the code base. Try to keep the removal in a single commit so we can easily revert back if needed.

size : 1,
datatype : WebGLConstants.SAMPLER_CUBE,
getValue : function(uniformState) {
return uniformState.cubeMap;
}
}),

/**
* An automatic GLSL uniform representing a 3x3 rotation matrix that transforms
* from True Equator Mean Equinox (TEME) axes to the pseudo-fixed axes at the current scene time.
Expand Down
23 changes: 23 additions & 0 deletions Source/Renderer/UniformState.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
define([
'./Sampler',
'../Core/BoundingRectangle',
'../Core/Cartesian2',
'../Core/Cartesian3',
Expand All @@ -16,6 +17,7 @@ define([
'../Core/Transforms',
'../Scene/SceneMode'
], function(
Sampler,
BoundingRectangle,
Cartesian2,
Cartesian3,
Expand Down Expand Up @@ -150,6 +152,9 @@ define([
this._orthographicIn3D = false;
this._backgroundColor = new Color();

this._brdfLUT = new Sampler();
this._cubeMap = new Sampler();

this._fogDensity = undefined;

this._imagerySplitPosition = 0.0;
Expand Down Expand Up @@ -796,6 +801,20 @@ define([
}
},

// TODO: Docs
Copy link
Contributor

Choose a reason for hiding this comment

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

Reminder to write doc.

brdfLUT : {
get : function() {
return this._brdfLUT;
}
},

// TODO: Docs
cubeMap : {
get : function() {
return this._cubeMap;
}
},

/**
* @memberof UniformState.prototype
* @type {Number}
Expand Down Expand Up @@ -975,6 +994,10 @@ define([

setSunAndMoonDirections(this, frameState);

this._brdfLUT = frameState.brdfLUT;

this._cubeMap = frameState.cubeMap;

this._fogDensity = frameState.fog.density;

this._frameState = frameState;
Expand Down
4 changes: 2 additions & 2 deletions Source/Scene/Batched3DModel3DTileContent.js
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ define([
batchTableBinaryByteLength = 0;
featureTableJsonByteLength = 0;
featureTableBinaryByteLength = 0;
deprecationWarning('b3dm-legacy-header', 'This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/TileFormats/Batched3DModel/README.md.');
Batched3DModel3DTileContent._deprecationWarning('b3dm-legacy-header', 'This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/TileFormats/Batched3DModel/README.md.');
} else if (batchTableBinaryByteLength >= 570425344) {
// Second legacy check
byteOffset -= sizeOfUint32;
Expand All @@ -291,7 +291,7 @@ define([
batchTableBinaryByteLength = featureTableBinaryByteLength;
featureTableJsonByteLength = 0;
featureTableBinaryByteLength = 0;
deprecationWarning('b3dm-legacy-header', 'This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/TileFormats/Batched3DModel/README.md.');
Batched3DModel3DTileContent._deprecationWarning('b3dm-legacy-header', 'This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/TileFormats/Batched3DModel/README.md.');
}

var featureTableJson;
Expand Down
Loading