Я пытаюсь отобразить файл GLB в Xeokit Viewer и переключить некоторые из его элементов с помощью Treeviewplugin . Мой html -файл выглядит так: < /p>
Model
/*ommited for simplicity*/
< /code>
и мой файл main.js выглядит так: < /p>
onload = async () => {
const viewer = new Viewer({
canvasId: "xeokit_canvas",
transparent: true
});
viewer.camera.eye = [-2.56, 8.38, 8.27];
viewer.camera.look = [13.44, 3.31, -14.83];
viewer.camera.up = [0.10, 0.98, -0.14];
viewer.cameraControl.panRightClick = false; // Prevents right-click-drag panning interfering with ContextMenus
viewer.scene.xrayMaterial.fill = true;
viewer.scene.xrayMaterial.fillAlpha = 0.1;
viewer.scene.xrayMaterial.fillColor = [0, 0, 0];
viewer.scene.xrayMaterial.edgeAlpha = 0.3;
viewer.scene.xrayMaterial.edgeColor = [0, 0, 0];
viewer.scene.highlightMaterial.fill = true;
viewer.scene.highlightMaterial.edges = true;
viewer.scene.highlightMaterial.fillAlpha = 0.1;
viewer.scene.highlightMaterial.edgeAlpha = 0.1;
viewer.scene.highlightMaterial.edgeColor = [1, 1, 0];
viewer.scene.selectedMaterial.fill = true;
viewer.scene.selectedMaterial.edges = true;
viewer.scene.selectedMaterial.fillAlpha = 0.5;
viewer.scene.selectedMaterial.edgeAlpha = 0.6;
viewer.scene.selectedMaterial.edgeColor = [0, 1, 1];
viewer.cameraControl.followPointer = true;
const treeView = new TreeViewPlugin(viewer, {
containerElement: document.getElementById("treeViewContainer"),
autoExpandDepth: 3,
hierarchy: "containment"
});
treeView.on("nodeTitleClicked", (e) => {
const scene = viewer.scene;
const objectIds = [];
e.treeViewPlugin.withNodeTree(e.treeViewNode, (treeViewNode) => {
if (treeViewNode.objectId) {
objectIds.push(treeViewNode.objectId);
}
});
e.treeViewPlugin.unShowNode();
scene.setObjectsXRayed(scene.objectIds, true);
scene.setObjectsVisible(scene.objectIds, true);
scene.setObjectsXRayed(objectIds, false);
viewer.cameraFlight.flyTo({
aabb: scene.getAABB(objectIds),
duration: 0.5
}, () => {
setTimeout(function () {
scene.setObjectsVisible(scene.xrayedObjectIds, false);
scene.setObjectsXRayed(scene.xrayedObjectIds, false);
}, 500);
});
});
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const src = urlParams.get("load");
const tokens = src.split('.');
const extension = tokens[1];
const gltfLoader = new GLTFLoaderPlugin(viewer);
gltfLoader.load({
id: "myModel",
src: src,
metaModelSrc: src.replace('glb', 'json'),
edges: true,
excludeUnclassifiedObjects: false
});
gltfLoader.on("loaded", (model) => {
treeView.setModel(model);
});
window.viewer = viewer;
}
< /code>
Однако, когда я запускаю его, я вижу, что элементы TreeViewPanel не проверяются по умолчанию, как и должно быть. И если я их проверю, ничего не произойдет. Что не так с этим и как я могу это исправить?>
Подробнее здесь: https://stackoverflow.com/questions/785 ... -glb-model