Skip to content

Commit

Permalink
Cleanup Tile3Dlayer
Browse files Browse the repository at this point in the history
  • Loading branch information
Xintong Xia committed Aug 25, 2019
1 parent d824b40 commit ba2ca4a
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 29 deletions.
1 change: 1 addition & 0 deletions examples/3d-tiles/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"start": "webpack-dev-server --progress --hot --open",
"start-local": "webpack-dev-server --env.local --progress --hot --open",
"start-local-deck": "webpack-dev-server --env.local --env.deck --progress --hot --open",
"start-local-math": "webpack-dev-server --env.local --env.math --progress --hot --open",
"generate": "node ./generate-index/index.js"
},
"dependencies": {
Expand Down
48 changes: 19 additions & 29 deletions examples/3d-tiles/tile-3d-layer/tile-3d-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ export default class Tile3DLayer extends CompositeLayer {
const {tileset3d, layerMap} = this.state;
const {selectedTiles} = tileset3d;

const tilesWithoutLayer = selectedTiles.filter(tile => !(tile.contentUri in layerMap));
const tilesWithoutLayer = selectedTiles.filter(tile => !layerMap[tile.contentUri]);

for (const tile of tilesWithoutLayer) {
this._unpackTile(tile);
Expand All @@ -166,7 +166,6 @@ export default class Tile3DLayer extends CompositeLayer {
if (content) {
switch (content.type) {
case 'pnts':
this._unpackPointCloud3DTile(tileHeader);
break;
case 'i3dm':
this._unpackInstanced3DTile(tileHeader);
Expand All @@ -182,27 +181,15 @@ export default class Tile3DLayer extends CompositeLayer {
}
}

_unpackPointCloud3DTile(tileHeader) {
const {pointCount, positions} = tileHeader.content;

tileHeader.userData = {
pointCount,
positions
};
}

_unpackInstanced3DTile(tileHeader) {
if (tileHeader.content.gltfArrayBuffer) {
tileHeader.userData = {gltfUrl: parse(tileHeader.content.gltfArrayBuffer)};
}

if (tileHeader.content.gltfUrl) {
const gltfUrl = tileHeader.tileset.getTileUrl(tileHeader.content.gltfUrl);
tileHeader.userData = {gltfUrl};
}
this._extractGltfUrl(tileHeader);
}

_unpackBatched3DTile(tileHeader) {
this._extractGltfUrl(tileHeader);
}

_extractGltfUrl(tileHeader) {
if (tileHeader.content.gltfArrayBuffer) {
tileHeader.userData = {gltfUrl: parse(tileHeader.content.gltfArrayBuffer)};
}
Expand All @@ -213,7 +200,7 @@ export default class Tile3DLayer extends CompositeLayer {
}

_create3DTileLayer(tileHeader) {
if (!tileHeader.content || !tileHeader.userData) {
if (!tileHeader.content) {
return null;
}

Expand All @@ -228,9 +215,11 @@ export default class Tile3DLayer extends CompositeLayer {
break;
default:
}

if (!layer) {
throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);
}

return layer;
}

Expand Down Expand Up @@ -260,10 +249,14 @@ export default class Tile3DLayer extends CompositeLayer {
}

_createPointCloud3DTileLayer(tileHeader) {
const {positions, normals, colors} = tileHeader.content.attributes;
const {pointCount} = tileHeader.content;
const {colorRGBA} = tileHeader.userData;
const {cartographicOrigin, modelMatrix} = tileHeader.content;
const {
attributes,
pointCount,
constantRGBA,
cartographicOrigin,
modelMatrix
} = tileHeader.content;
const {positions, normals, colors} = attributes;

return (
positions &&
Expand All @@ -283,7 +276,7 @@ export default class Tile3DLayer extends CompositeLayer {
coordinateOrigin: cartographicOrigin,
modelMatrix,

getColor: colorRGBA || this.props.color,
getColor: constantRGBA || this.props.color,
pickable: true,
numInstances: pointCount,
opacity: 0.8,
Expand All @@ -293,10 +286,7 @@ export default class Tile3DLayer extends CompositeLayer {
}

renderLayers() {
// TODO - reuse the same layer list
const layers = Object.values(this.state.layerMap).map(layer => layer.layer);
// const {layers} = this.state;
return layers;
return this.state.layers;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
*/
} else if (tile.eastNorthUp) {
Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
// TODO fix rotation matrix
instanceTransform.getRotation(instanceRotation);
} else {
instanceRotation.identity();
Expand Down

0 comments on commit ba2ca4a

Please sign in to comment.