Appearance
模型裁剪
ts
import { Viewer, TilesetCut } from "joDVF";
import { Pane } from "tweakpane";
import { Cesium3DTileset, HeadingPitchRange } from "joCesium";
const { mapContainer, uiContainer } = createContainer();
const viewer = new Viewer(mapContainer);
const dataBaseURL = "./assets/3dtilesets/dayanta/tileset.json";
let tilesetCut;
Cesium3DTileset.fromUrl(dataBaseURL).then((tile) => {
const boundingSphere = tile.boundingSphere;
const radius = boundingSphere.radius;
viewer.scene.primitives.add(tile);
viewer.zoomTo(tile, new HeadingPitchRange(-1.2, -0.6, radius * 4.0));
tilesetCut = new TilesetCut(viewer, {
layer: tile,
clampToGround: true
});
});
addUI(uiContainer);
function createContainer() {
const container = document.createElement("div");
container.style.width = "100%";
container.style.height = "100%";
const uiContainer = document.createElement("div");
uiContainer.style.position = "fixed";
uiContainer.style.top = "5px";
uiContainer.style.left = "5px";
document.body.appendChild(container);
document.body.appendChild(uiContainer);
return {
mapContainer: container,
uiContainer
};
}
function addUI(uiContainer) {
const pane = new Pane({
container: uiContainer,
title: "参数"
});
const startBtn = pane.addButton({
title: "start",
label: "模型裁剪" // optional
});
startBtn.on("click", () => {
tilesetCut.start();
});
const clearBtn = pane.addButton({
title: "clear",
label: "清除"
});
clearBtn.on("click", () => {
tilesetCut.clear();
});
}
