Files
gemini-viewer-examples/public/demo/empty_model_project.html

122 lines
4.2 KiB
HTML
Raw Normal View History

2022-11-04 11:39:56 +08:00
<html>
<head>
<link rel="icon" href="./demo/favicon.ico" />
<link rel="stylesheet" type="text/css" href="./demo/global.css" />
<style>
.upload-btn {
margin-top: 2em;
}
.upload-btn button {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.upload-btn label {
color: #353535;
border: 0;
border-radius: 3px;
transition: ease 0.2s;
transition-property: background;
font-size: 1rem;
font-weight: 700;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
display: inline-block;
overflow: hidden;
padding: 0.625rem 1.25rem;
}
.upload-btn label:hover {
background: #DDD;
}
.upload-btn svg {
width: 1em;
height: 1em;
vertical-align: middle;
fill: currentColor;
margin-top: -0.25em;
margin-right: 0.25em;
}
</style>
</head>
<body>
<div id="viewerContainer">
<div id="myBimViewerContainer" class="renderer-container"></div>
</div>
<div style="position: absolute; top: 10px; opacity: 0.6; width: 100%;text-align: center;">
<div class="upload-btn" id="uploadBtn">
<button id="uploadModelFile" type="button">点此上传本地模型文件</button>
<label for="uploadModelFile" title="支持 gltf, dxf, obj, stl, fbx, ifc, dae等。只支持单模型文件不支持链接文件。也就是几何体、材质都要内嵌在单一模型文件中。">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path d="M10 0l-5.2 4.9h3.3v5.1h3.8v-5.1h3.3l-5.2-4.9zm9.3 11.5l-3.2-2.1h-2l3.4 2.6h-3.5c-.1 0-.2.1-.2.1l-.8 2.3h-6l-.8-2.2c-.1-.1-.1-.2-.2-.2h-3.6l3.4-2.6h-2l-3.2 2.1c-.4.3-.7 1-.6 1.5l.6 3.1c.1.5.7.9 1.2.9h16.3c.6 0 1.1-.4 1.3-.9l.6-3.1c.1-.5-.2-1.2-.7-1.5z"></path></svg>
<span>Upload model</span>
</label>
</div>
</div>
<script type="module">
import { BimViewer, ToolbarMenuId, LocalModelUploader } from "./demo/libs/gemini-viewer.esm.min.js";
const project = {
id: "empty_project",
name: "Empty project",
thumbnail: "./demo/projects/empty_project/thumbnail.png",
camera: {
},
models: [{
"name": "model 01",
"src": "",
"rotation": [0, 0, 0],
"scale": [1, 1, 1],
"merge": false,
"visible": false
}],
};
const bimViewer = new BimViewer(
{
containerId: "myBimViewerContainer",
enableAxisGizmo: true,
enableStats: true,
toolbarMenuConfig: {
[ToolbarMenuId.BimTree]: { visible: false },
},
enableBottomBar: true,
enableNavCube: true,
enableContextMenu: true,
},
project.camera
);
// 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++;
bimViewer.loadModel(modelCfg, (event) => {
console.log(`[Demo] Loading model ${modelCfg.src}`);
}, (event) => {
console.error(`[Demo] Failed to load ${modelCfg.src}. " + event.message`);
}
).then(() => {
console.log(`[Demo] Loaded model ${modelCfg.src}`);
});
});
const modelUploader = new LocalModelUploader(bimViewer);
document.getElementById("uploadModelFile").onclick = function() {
modelUploader.openFileBrowserToUpload();
}
</script>
</body>
</html>