import {
|
Cartesian3,
|
defined,
|
ExperimentalFeatures,
|
GroupMetadata,
|
HeadingPitchRange,
|
MetadataClass,
|
} from "../../../Source/Cesium.js";
|
import Cesium3DTilesTester from "../../Cesium3DTilesTester.js";
|
import createScene from "../../createScene.js";
|
|
describe("Scene/ModelExperimental/ModelExperimental3DTileContent", function () {
|
var gltfContentUrl = "./Data/Cesium3DTiles/GltfContent/glTF/tileset.json";
|
var glbContentUrl = "./Data/Cesium3DTiles/GltfContent/glb/tileset.json";
|
var buildingsMetadataUrl =
|
"./Data/Cesium3DTiles/Metadata/FeatureMetadata/tileset.json";
|
var withBatchTableUrl =
|
"./Data/Cesium3DTiles/Batched/BatchedWithBatchTable/tileset.json";
|
var withoutBatchTableUrl =
|
"./Data/Cesium3DTiles/Batched/BatchedWithoutBatchTable/tileset.json";
|
var noBatchIdsUrl =
|
"Data/Cesium3DTiles/Batched/BatchedNoBatchIds/tileset.json";
|
|
var scene;
|
var centerLongitude = -1.31968;
|
var centerLatitude = 0.698874;
|
|
function setCamera(longitude, latitude, height) {
|
// One feature is located at the center, point the camera there
|
var center = Cartesian3.fromRadians(longitude, latitude);
|
scene.camera.lookAt(
|
center,
|
new HeadingPitchRange(0.0, -1.57, defined(height) ? height : 100.0)
|
);
|
}
|
|
beforeAll(function () {
|
ExperimentalFeatures.enableModelExperimental = true;
|
scene = createScene();
|
});
|
|
afterAll(function () {
|
ExperimentalFeatures.enableModelExperimental = false;
|
scene.destroyForSpecs();
|
});
|
|
beforeEach(function () {
|
setCamera(centerLongitude, centerLatitude);
|
});
|
|
afterEach(function () {
|
scene.primitives.removeAll();
|
});
|
|
it("resolves readyPromise with glb", function () {
|
return Cesium3DTilesTester.resolvesReadyPromise(scene, glbContentUrl);
|
});
|
|
it("resolves readyPromise with glTF", function () {
|
return Cesium3DTilesTester.resolvesReadyPromise(scene, gltfContentUrl);
|
});
|
|
it("resolves readyPromise with B3DM", function () {
|
setCamera(centerLongitude, centerLatitude, 15.0);
|
return Cesium3DTilesTester.resolvesReadyPromise(scene, withBatchTableUrl);
|
});
|
|
it("renders glTF content", function () {
|
return Cesium3DTilesTester.loadTileset(scene, buildingsMetadataUrl).then(
|
function (tileset) {
|
Cesium3DTilesTester.expectRender(scene, tileset);
|
}
|
);
|
});
|
|
it("renders B3DM content", function () {
|
setCamera(centerLongitude, centerLatitude, 15.0);
|
return Cesium3DTilesTester.loadTileset(scene, withBatchTableUrl).then(
|
function (tileset) {
|
Cesium3DTilesTester.expectRender(scene, tileset);
|
}
|
);
|
});
|
|
it("renders B3DM content without features", function () {
|
setCamera(centerLongitude, centerLatitude, 15.0);
|
return Cesium3DTilesTester.loadTileset(scene, noBatchIdsUrl).then(function (
|
tileset
|
) {
|
Cesium3DTilesTester.expectRender(scene, tileset);
|
});
|
});
|
|
it("picks from glTF", function () {
|
return Cesium3DTilesTester.loadTileset(scene, gltfContentUrl).then(
|
function (tileset) {
|
var content = tileset.root.content;
|
tileset.show = false;
|
expect(scene).toPickPrimitive(undefined);
|
tileset.show = true;
|
expect(scene).toPickAndCall(function (result) {
|
expect(result).toBeDefined();
|
expect(result.primitive).toBe(tileset);
|
expect(result.content).toBe(content);
|
expect(content.hasProperty(0, "id")).toBe(false);
|
expect(content.getFeature(0)).toBeUndefined();
|
});
|
}
|
);
|
});
|
|
it("picks from B3DM", function () {
|
setCamera(centerLongitude, centerLatitude, 15.0);
|
return Cesium3DTilesTester.loadTileset(scene, withoutBatchTableUrl).then(
|
function (tileset) {
|
var content = tileset.root.content;
|
tileset.show = false;
|
expect(scene).toPickPrimitive(undefined);
|
tileset.show = true;
|
expect(scene).toPickAndCall(function (result) {
|
expect(result).toBeDefined();
|
expect(result.primitive).toBe(tileset);
|
expect(result.content).toBe(content);
|
expect(content.hasProperty(0, "id")).toBe(false);
|
expect(content.getFeature(0)).toBeDefined();
|
});
|
}
|
);
|
});
|
|
it("picks from glTF feature table", function () {
|
return Cesium3DTilesTester.loadTileset(scene, buildingsMetadataUrl).then(
|
function (tileset) {
|
var content = tileset.root.content;
|
tileset.show = false;
|
expect(scene).toPickPrimitive(undefined);
|
tileset.show = true;
|
expect(scene).toPickAndCall(function (result) {
|
expect(result).toBeDefined();
|
expect(result.primitive).toBe(tileset);
|
expect(result.content).toBe(content);
|
expect(content.batchTable).toBeDefined();
|
expect(content.hasProperty(0, "id")).toBe(true);
|
expect(content.getFeature(0)).toBeDefined();
|
});
|
}
|
);
|
});
|
|
it("picks from B3DM batch table", function () {
|
setCamera(centerLongitude, centerLatitude, 15.0);
|
return Cesium3DTilesTester.loadTileset(scene, withBatchTableUrl).then(
|
function (tileset) {
|
var content = tileset.root.content;
|
tileset.show = false;
|
expect(scene).toPickPrimitive(undefined);
|
tileset.show = true;
|
expect(scene).toPickAndCall(function (result) {
|
expect(result).toBeDefined();
|
expect(result.primitive).toBe(tileset);
|
expect(result.content).toBe(content);
|
expect(content.batchTable).toBeDefined();
|
expect(content.hasProperty(0, "id")).toBe(true);
|
expect(content.getFeature(0)).toBeDefined();
|
});
|
}
|
);
|
});
|
|
it("destroys", function () {
|
return Cesium3DTilesTester.tileDestroys(scene, buildingsMetadataUrl);
|
});
|
|
describe("3DTILES_metadata", function () {
|
var metadataClass = new MetadataClass({
|
id: "test",
|
class: {
|
properties: {
|
name: {
|
type: "STRING",
|
},
|
height: {
|
type: "FLOAT32",
|
},
|
},
|
},
|
});
|
var groupMetadata = new GroupMetadata({
|
id: "testGroup",
|
group: {
|
properties: {
|
name: "Test Group",
|
height: 35.6,
|
},
|
},
|
class: metadataClass,
|
});
|
|
it("assigns groupMetadata", function () {
|
setCamera(centerLongitude, centerLatitude, 15.0);
|
return Cesium3DTilesTester.loadTileset(scene, withoutBatchTableUrl).then(
|
function (tileset) {
|
var content = tileset.root.content;
|
content.groupMetadata = groupMetadata;
|
expect(content.groupMetadata).toBe(groupMetadata);
|
}
|
);
|
});
|
});
|
});
|