From dc600c3f6ce04a8bc43cf2a89b8d7ad6bd5dab2c Mon Sep 17 00:00:00 2001 From: Yeicor <4929005+Yeicor@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:08:46 +0100 Subject: [PATCH] lots of selection fixes and nicer tools interface --- .gitignore | 3 +- src/App.vue | 2 +- src/tools/OrientationGizmo.vue | 2 +- src/tools/Selection.vue | 100 +++++++++++++++++++++++------- src/tools/Tools.vue | 35 +++++++++-- src/viewer/ModelViewerWrapper.vue | 6 ++ 6 files changed, 115 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index b5129a1..990e632 100644 --- a/.gitignore +++ b/.gitignore @@ -10,9 +10,8 @@ # TODO: Figure out which assets to keep in the repo /assets/fox.glb -/assets/logo.glbs +/assets/fox.glb.license /assets/logo.glb -/assets/logo.stl *.iml venv/ diff --git a/src/App.vue b/src/App.vue index 55b03bf..a5e2f8c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,7 +9,7 @@ import Models from "./models/Models.vue"; import {VLayout, VMain, VToolbarTitle} from "vuetify/lib/components"; import {settings} from "./misc/settings"; import {NetworkManager, NetworkUpdateEvent} from "./misc/network"; -import {SceneManagerData, SceneMgr} from "./misc/scene"; +import {SceneMgr} from "./misc/scene"; // NOTE: The ModelViewer library is big (THREE.js), so we split it and import it asynchronously const ModelViewerWrapper = defineAsyncComponent({ diff --git a/src/tools/OrientationGizmo.vue b/src/tools/OrientationGizmo.vue index 7d318a8..f7291a0 100644 --- a/src/tools/OrientationGizmo.vue +++ b/src/tools/OrientationGizmo.vue @@ -3,7 +3,7 @@ import {onMounted, onUpdated, ref} from "vue"; import type {ModelScene} from "@google/model-viewer/lib/three-components/ModelScene"; import * as OrientationGizmoRaw from "three-orientation-gizmo/src/OrientationGizmo"; -// Optimized minimal dependencies from three to avoid more async imports +// Optimized minimal dependencies from three import {Vector3} from "three/src/math/Vector3.js"; import {Matrix4} from "three/src/math/Matrix4.js"; diff --git a/src/tools/Selection.vue b/src/tools/Selection.vue index bf11db5..56821eb 100644 --- a/src/tools/Selection.vue +++ b/src/tools/Selection.vue @@ -1,20 +1,26 @@ \ No newline at end of file +
+ + + + +
+ + + \ No newline at end of file diff --git a/src/tools/Tools.vue b/src/tools/Tools.vue index 3c8ff2f..0f7fd95 100644 --- a/src/tools/Tools.vue +++ b/src/tools/Tools.vue @@ -1,20 +1,25 @@ diff --git a/src/viewer/ModelViewerWrapper.vue b/src/viewer/ModelViewerWrapper.vue index 75550cb..6d1f01f 100644 --- a/src/viewer/ModelViewerWrapper.vue +++ b/src/viewer/ModelViewerWrapper.vue @@ -21,6 +21,11 @@ let viewer = ref(null); onMounted(() => { viewer.value.addEventListener('load', () => { if (viewer.value) { + // Delete the initial load banner + // TODO: Replace with an actual poster? + let banner = viewer.value.querySelector('.initial-load-banner'); + if (banner) banner.remove(); + // Emit the load event emit('load', { viewer: viewer.value, scene: viewer.value[$scene] as ModelScene, @@ -39,6 +44,7 @@ onMounted(() => { :autoplay="settings.autoplay" :ar="settings.arModes.length > 0" :ar-modes="settings.arModes" :skybox-image="settings.background" :environment-image="settings.background"> +
Loading models...