diff --git a/example/object.py b/example/object.py index 90fc324..b177132 100644 --- a/example/object.py +++ b/example/object.py @@ -13,7 +13,7 @@ from yacv_server import show, export_all # Check out other exported methods for # Create a simple object with BuildPart() as example: Box(10, 10, 5) - Cylinder(3, 5, mode=Mode.SUBTRACT) + Cylinder(4, 5, mode=Mode.SUBTRACT) # Show it in the frontend with hot-reloading show(example) diff --git a/frontend/App.vue b/frontend/App.vue index b41e4ad..73589b4 100644 --- a/frontend/App.vue +++ b/frontend/App.vue @@ -1,6 +1,6 @@ - diff --git a/frontend/misc/Sidebar.vue b/frontend/misc/Sidebar.vue index 27bc911..9785f25 100644 --- a/frontend/misc/Sidebar.vue +++ b/frontend/misc/Sidebar.vue @@ -1,4 +1,4 @@ - - - + + - + - + - + diff --git a/frontend/misc/scene.ts b/frontend/misc/scene.ts index e6fab8f..beb7f57 100644 --- a/frontend/misc/scene.ts +++ b/frontend/misc/scene.ts @@ -37,19 +37,6 @@ export class SceneMgr { return document; } - private static async reloadHelpers(sceneUrl: Ref, document: Document, reloadScene: boolean): Promise { - let bb = SceneMgr.getBoundingBox(document); - if (!bb) return document; - - // Create the helper axes and grid box - let helpersDoc = new Document(); - let transform = (new Matrix4()).makeTranslation(bb.getCenter(new Vector3())); - newAxes(helpersDoc, bb.getSize(new Vector3()).multiplyScalar(0.5), transform); - newGridBox(helpersDoc, bb.getSize(new Vector3()), transform); - let helpersUrl = URL.createObjectURL(new Blob([await toBuffer(helpersDoc)])); - return await SceneMgr.loadModel(sceneUrl, document, extrasNameValueHelpers, helpersUrl, false, reloadScene); - } - static getBoundingBox(document: Document): Box3 | null { if (document.getRoot().listNodes().length === 0) return null; // Get bounding box of the model and use it to set the size of the helpers @@ -91,6 +78,19 @@ export class SceneMgr { return document; } + private static async reloadHelpers(sceneUrl: Ref, document: Document, reloadScene: boolean): Promise { + let bb = SceneMgr.getBoundingBox(document); + if (!bb) return document; + + // Create the helper axes and grid box + let helpersDoc = new Document(); + let transform = (new Matrix4()).makeTranslation(bb.getCenter(new Vector3())); + newAxes(helpersDoc, bb.getSize(new Vector3()).multiplyScalar(0.5), transform); + newGridBox(helpersDoc, bb.getSize(new Vector3()), transform); + let helpersUrl = URL.createObjectURL(new Blob([await toBuffer(helpersDoc)])); + return await SceneMgr.loadModel(sceneUrl, document, extrasNameValueHelpers, helpersUrl, false, reloadScene); + } + /** Serializes the current document into a GLB and updates the viewerSrc */ private static async showCurrentDoc(sceneUrl: Ref, document: Document): Promise { // Make sure the document is fully loaded and ready to be shown diff --git a/frontend/misc/settings.ts b/frontend/misc/settings.ts index 91ee5ad..54d4eaf 100644 --- a/frontend/misc/settings.ts +++ b/frontend/misc/settings.ts @@ -18,8 +18,11 @@ export const settings = { monitorEveryMs: 100, monitorOpenTimeoutMs: 1000, // ModelViewer settings - autoplay: true, + autoplay: true, // Global animation toggle arModes: 'webxr scene-viewer quick-look', + zoomSensitivity: 0.25, + orbitSensitivity: 1, + panSensitivity: 1, exposure: 1, shadowIntensity: 0, background: '', diff --git a/frontend/models/Model.vue b/frontend/models/Model.vue index bed4354..7ef4d29 100644 --- a/frontend/models/Model.vue +++ b/frontend/models/Model.vue @@ -1,4 +1,4 @@ - - - + + Toggle Faces ({{ faceCount }}) - + Toggle Edges ({{ edgeCount }}) - + Toggle Vertices ({{ vertexCount }}) - + {{ modelName }} Remove - + - + Change opacity - + Wireframe - + - + Edge and vertex sizes - + - + Clip plane X - + X Swap clip plane X - + - + - + Clip plane Y - + Y Swap clip plane Y - + - + - + Clip plane Z - + Z Swap clip plane Z - + - + diff --git a/frontend/models/Models.vue b/frontend/models/Models.vue index 8637338..9fd8856 100644 --- a/frontend/models/Models.vue +++ b/frontend/models/Models.vue @@ -1,4 +1,4 @@ - - + {{ selectionEnabled ? 'Disable (s)election mode' : 'Enable (s)election mode' }} - + - + - + - + (H)ighlight the next clicked element in the models list - + - + {{ showBoundingBox ? 'Hide selection (b)ounds' : 'Show selection (b)ounds' }} - + - + {{ showDistances ? 'Hide selection (d)istances' : 'Show (d)istances (when a pair of features is selected)' }} - + diff --git a/frontend/tools/Tools.vue b/frontend/tools/Tools.vue index 99fcf23..0bdd9dc 100644 --- a/frontend/tools/Tools.vue +++ b/frontend/tools/Tools.vue @@ -1,4 +1,4 @@ - - + Camera {{ toggleProjectionText }} Toggle (P)rojection(currently {{ toggleProjectionText === 'PERSP' ? 'perspective' : 'orthographic' }}) - + Re(c)enter Camera - + Selection ({{ selectionFaceCount() }}F {{ selectionEdgeCount() }}E {{ selectionVertexCount() }}V) - emit('findModel', name)"/> Extras (D)ownload Scene - + Show Licenses - + @@ -165,7 +164,7 @@ window.addEventListener('keydown', (event) => { - + @@ -176,7 +175,7 @@ window.addEventListener('keydown', (event) => { Open (G)itHub - + diff --git a/frontend/viewer/ModelViewerWrapper.vue b/frontend/viewer/ModelViewerWrapper.vue index 5d99019..43c8aba 100644 --- a/frontend/viewer/ModelViewerWrapper.vue +++ b/frontend/viewer/ModelViewerWrapper.vue @@ -1,8 +1,9 @@ - - + - - - Trying to load models from... - - {{ src }} - - - - - - - + + + - + - - - + + {{ line.centerText }} @@ -242,17 +272,6 @@ watch(disableTap, (value) => { pointer-events: none; } -.initial-load-banner { - width: 300px; - margin: auto; - margin-top: 3em; - overflow: hidden; -} - -.initial-load-banner .v-list-item { - overflow: hidden; -} - .progress-bar { display: block; pointer-events: none;