Compare commits
5 commits
Author | SHA1 | Date | |
---|---|---|---|
676a4e6cc1 | |||
ec68fccaa3 | |||
5a5656109e | |||
b8468a8afb | |||
c3b5e954a0 |
2 changed files with 21 additions and 21 deletions
|
@ -400,7 +400,7 @@ export class SceneView extends EventTarget {
|
||||||
this._resetClippingBox();
|
this._resetClippingBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 1; i < this._model.children.length; i++) {
|
for (let i = 0; i < this._model.children.length; i++) {
|
||||||
const mesh = this._model.children[i];
|
const mesh = this._model.children[i];
|
||||||
|
|
||||||
if (explode) {
|
if (explode) {
|
||||||
|
@ -452,12 +452,14 @@ async function init(container: HTMLElement, modelId = MODEL_ID) {
|
||||||
|
|
||||||
const { renderer, scene, camera, controls } = buildScene(container, extent);
|
const { renderer, scene, camera, controls } = buildScene(container, extent);
|
||||||
|
|
||||||
|
// Start render loop
|
||||||
|
renderer.setAnimationLoop(animate(() => {}));
|
||||||
|
|
||||||
// Build the 3D model
|
// Build the 3D model
|
||||||
const meshes = await buildMeshes(mappedFeatures);
|
|
||||||
const model = new Group();
|
const model = new Group();
|
||||||
model.add(...meshes);
|
|
||||||
model.name = "geologic-model";
|
model.name = "geologic-model";
|
||||||
scene.add(model);
|
scene.add(model);
|
||||||
|
await buildMeshes(mappedFeatures, model);
|
||||||
|
|
||||||
// Add a coordinate grid to the scene
|
// Add a coordinate grid to the scene
|
||||||
const { gridHelper, annotations } = buildCoordinateGrid(extent);
|
const { gridHelper, annotations } = buildCoordinateGrid(extent);
|
||||||
|
@ -489,14 +491,11 @@ async function init(container: HTMLElement, modelId = MODEL_ID) {
|
||||||
map.visible = false;
|
map.visible = false;
|
||||||
scene.add(map);
|
scene.add(map);
|
||||||
|
|
||||||
|
// Update render loop to include topography
|
||||||
const topography = scene.getObjectByName("Topography") as Mesh;
|
const topography = scene.getObjectByName("Topography") as Mesh;
|
||||||
if (topography) {
|
renderer.setAnimationLoop(
|
||||||
renderer.setAnimationLoop(
|
animate(rendererCallback(camera, renderer, scene, map, extent, topography))
|
||||||
animate(
|
);
|
||||||
rendererCallback(camera, renderer, scene, map, extent, topography)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
scene,
|
scene,
|
||||||
|
@ -514,10 +513,10 @@ function rendererCallback(
|
||||||
scene: Scene,
|
scene: Scene,
|
||||||
map: MapView,
|
map: MapView,
|
||||||
extent: Extent,
|
extent: Extent,
|
||||||
topography: Mesh
|
topography: Mesh | undefined
|
||||||
) {
|
) {
|
||||||
return () => {
|
return () => {
|
||||||
if (topography.visible) {
|
if (topography && topography.visible) {
|
||||||
map.lod.updateLOD(map, camera, renderer, scene);
|
map.lod.updateLOD(map, camera, renderer, scene);
|
||||||
const tiles: TileData[] = [];
|
const tiles: TileData[] = [];
|
||||||
traverse(map.root, extent, tiles);
|
traverse(map.root, extent, tiles);
|
||||||
|
|
|
@ -2,6 +2,7 @@ import {
|
||||||
BufferAttribute,
|
BufferAttribute,
|
||||||
BufferGeometry,
|
BufferGeometry,
|
||||||
DoubleSide,
|
DoubleSide,
|
||||||
|
Group,
|
||||||
Mesh,
|
Mesh,
|
||||||
MeshStandardMaterial,
|
MeshStandardMaterial,
|
||||||
} from "three";
|
} from "three";
|
||||||
|
@ -17,18 +18,18 @@ interface MappedFeature {
|
||||||
preview: { legend_color: string; legend_text: string };
|
preview: { legend_color: string; legend_text: string };
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function buildMeshes(mappedFeatures: MappedFeature[]) {
|
export async function buildMeshes(
|
||||||
const meshes = [];
|
mappedFeatures: MappedFeature[],
|
||||||
for (let i = 0; i < mappedFeatures.length; i++) {
|
model: Group
|
||||||
const layerData = mappedFeatures[i];
|
) {
|
||||||
const mesh = await buildMesh(layerData);
|
for (const mappedFeature of mappedFeatures) {
|
||||||
if (layerData.name === "Topography") {
|
const mesh = await buildMesh(mappedFeature);
|
||||||
|
if (mappedFeature.name === "Topography") {
|
||||||
mesh.visible = false;
|
mesh.visible = false;
|
||||||
}
|
}
|
||||||
meshes.push(mesh);
|
|
||||||
}
|
|
||||||
|
|
||||||
return meshes;
|
model.add(mesh);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function buildMesh(layerData: MappedFeature) {
|
async function buildMesh(layerData: MappedFeature) {
|
||||||
|
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue