2022-11-04 11:39:56 +08:00
|
|
|
<html>
|
|
|
|
|
|
|
|
<head>
|
2022-11-28 09:51:30 +08:00
|
|
|
<link rel="icon" href="./demo/favicon.ico">
|
|
|
|
<link rel="stylesheet" type="text/css" href="./demo/global.css">
|
2023-05-15 19:30:47 +08:00
|
|
|
<style>
|
2022-11-04 11:39:56 +08:00
|
|
|
#myCanvas {
|
2023-05-15 19:30:47 +08:00
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
2022-11-04 11:39:56 +08:00
|
|
|
}
|
2023-05-15 19:30:47 +08:00
|
|
|
</style>
|
2022-11-04 11:39:56 +08:00
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
2023-01-05 10:51:54 +08:00
|
|
|
<div id="app">
|
|
|
|
<div id="myCanvas" class="container"></div>
|
2022-11-04 11:39:56 +08:00
|
|
|
</div>
|
|
|
|
<script type="module">
|
2022-11-28 09:51:30 +08:00
|
|
|
import { BimViewer, ToolbarMenuId } from "./demo/libs/gemini-viewer.esm.min.js";
|
2022-11-04 11:39:56 +08:00
|
|
|
|
|
|
|
const project = {
|
|
|
|
"id": "rac_basic_sample_project",
|
2022-11-06 13:58:43 +08:00
|
|
|
"name": "Rac basic sample project",
|
2022-11-04 11:39:56 +08:00
|
|
|
"camera": {
|
|
|
|
"eye": [-70, 25, 50],
|
|
|
|
"look": [-35, 0, 35],
|
|
|
|
"up": [0, 1, 0],
|
|
|
|
"far": 10000
|
|
|
|
},
|
|
|
|
"models": [{
|
2022-11-06 13:58:43 +08:00
|
|
|
"name": "Rac basic sample project",
|
2022-11-28 09:51:30 +08:00
|
|
|
"src": "./demo/models/gltf/rac_basic_sample_project.gltf",
|
2022-11-04 11:39:56 +08:00
|
|
|
"position": [0, 0, 0],
|
|
|
|
"rotation": [0, 0, 0],
|
|
|
|
"scale": [1, 1, 1],
|
|
|
|
"edges": true,
|
|
|
|
"visible": true
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
const viewer = new BimViewer({
|
|
|
|
containerId: "myCanvas",
|
|
|
|
}, project.camera);
|
|
|
|
const toolbar = viewer.toolbar;
|
|
|
|
toolbar.updateMenu(ToolbarMenuId.BimTree, { visible: false });
|
|
|
|
|
2023-04-10 17:23:36 +08:00
|
|
|
// draco decoder path is needed to load draco encoded models.
|
|
|
|
// gemini-viewer js sdk user maintains draco decoder code somewhere, and provides the path here.
|
|
|
|
const decoderPath = "demo/three/js/libs/draco/gltf/";
|
|
|
|
viewer.setDracoDecoderPath(decoderPath);
|
|
|
|
|
2022-11-04 11:39:56 +08:00
|
|
|
// loadProjectModel
|
|
|
|
let counter = 0; // to indicate how many models are loading
|
|
|
|
project.models.forEach((modelCfg) => {
|
|
|
|
if (modelCfg.visible === false) {
|
|
|
|
// visible is true by default
|
|
|
|
return; // only load visible ones
|
|
|
|
}
|
|
|
|
counter++;
|
|
|
|
viewer.loadModel(modelCfg, (event) => {
|
|
|
|
console.log(`[Demo] Loading model ${modelCfg.src}`);
|
|
|
|
}, (event) => {
|
2022-11-06 13:58:43 +08:00
|
|
|
console.error("[Demo] Failed to load " + modelCfg.src + ". " + event.message);
|
2022-11-04 11:39:56 +08:00
|
|
|
}).then(() => {
|
|
|
|
console.log(`[Demo] Loaded model ${modelCfg.src}`);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
|
|
|
|
</html>
|