From ba031571ce089de25523adfcc7c781892b6770cf Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Wed, 15 Apr 2026 08:16:12 +0200 Subject: [PATCH 1/2] avoid white blinkinng squares --- examples/butterflies/butterflies4.kf.csv | 15 ++++++++++++ vest/static/viewer.js | 29 +++++++++++++++--------- 2 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 examples/butterflies/butterflies4.kf.csv diff --git a/examples/butterflies/butterflies4.kf.csv b/examples/butterflies/butterflies4.kf.csv new file mode 100644 index 0000000..f548cc7 --- /dev/null +++ b/examples/butterflies/butterflies4.kf.csv @@ -0,0 +1,15 @@ +keyframe,pos_x,pos_y,pos_z,quat_x,quat_y,quat_z,quat_w +0,23.20122996509486,2.9620331416725656,12.03044590913655,0.051294167169933375,0.36264818019771217,-0.01999544815454364,0.9302985477075247 +1,20.79474735329627,3.3085413339530034,8.475264653517614,0.04122401974777789,0.28922627050415756,-0.012468029256781286,0.9562914267588845 +2,19.187920908631625,3.557491648456518,6.020817151208465,0.04034005539419244,0.2834954290312818,-0.01193697278520714,0.9580503798495611 +3,16.805862106196386,4.006381919876927,2.1421867828057786,0.05803191994648935,0.2563263964538294,-0.015419043640149722,0.9647234463003073 +4,16.034384285581528,4.194052878041096,0.7928902029263153,0.05803191994648935,0.2563263964538294,-0.015419043640149722,0.9647234463003073 +5,15.40846385582783,4.34631530691142,-0.3018299206804056,0.05803191994648935,0.2563263964538294,-0.015419043640149722,0.9647234463003073 +6,14.846513002641396,4.483016391817034,-1.2846687580438623,0.1632250924370266,0.7609157432447838,-0.2098374172506691,0.5918893977786145 +7,13.922950258942723,5.134037616505923,-0.9558477780739308,0.1646675306808787,0.7993654425697466,-0.25348884179949216,0.5192715095668999 +8,13.41007499221373,5.529859209002749,-0.7276713174052062,0.1646675306808787,0.7993654425697466,-0.25348884179949216,0.5192715095668999 +9,13.089752628857115,6.095308363379365,-0.3769967517153457,0.15245345847528843,0.8454358048430982,-0.39294656262434924,0.32800799046659607 +10,13.089752628857115,6.095308363379365,-0.3769967517153457,0.004422054179526836,0.9904801970862397,-0.03277857385395523,0.13362256438542808 +11,12.580046363881541,6.097529027064892,1.3468958061479348,-0.008843999025552099,0.9862418148984412,0.0561960595234999,0.15521233559577685 +12,12.580046363881541,6.097529027064892,1.3468958061479348,-0.1757038131712238,-0.5316955529391972,-0.11383751328185511,0.8206515884293264 +13,15.146558070639456,4.797193269080457,0.17316973713305256,-0.18191279609739966,-0.5276038257630413,-0.1168298481431052,0.8215185477145889 diff --git a/vest/static/viewer.js b/vest/static/viewer.js index 8c8eb8b..aa310d6 100644 --- a/vest/static/viewer.js +++ b/vest/static/viewer.js @@ -1267,6 +1267,11 @@ class ImageViewer { // Update material sprite.material.color.setHex(color); sprite.material.opacity = opacity; + + // Make sprite visible now that color is set (prevents white flash on load) + if (!sprite.visible) { + sprite.visible = true; + } } // Face camera (sprites automatically billboard, meshes need manual update) @@ -1298,6 +1303,9 @@ class ImageViewer { sprite.userData.imageLoadPending = true; sprite.userData.isImage = true; sprite.userData.isSprite = false; + + // Hide the sprite while the image is loading to prevent white square flash + sprite.visible = false; const isRequestStillValid = () => { const current = this.getRenderableByPointIndex(pointIndex); @@ -1353,19 +1361,13 @@ class ImageViewer { const aspect = canvas.width / canvas.height; currentObj.userData.aspect = aspect; - // Calculate initial size with distance-based scaling to match render loop logic - const distance = this.camera.position.distanceTo(currentObj.position); - const baseHeight = this.imageSize; + // Match the original sprite size (0.5 units) + // Use the sprite's scale as base to ensure smooth transition + const spriteBaseSize = 0.5; // matches the initial sprite scale + const baseHeight = spriteBaseSize; const baseWidth = baseHeight * aspect; - // Apply distance-based scaling (matching the logic in updateSprites) - const minDistance = 5.0; // Reference distance - const distanceScale = Math.sqrt(distance / minDistance); - - const finalHeight = baseHeight * distanceScale; - const finalWidth = baseWidth * distanceScale; - - const newGeometry = new THREE.PlaneGeometry(finalWidth, finalHeight); + const newGeometry = new THREE.PlaneGeometry(baseWidth, baseHeight); const imageMaterial = new THREE.MeshBasicMaterial({ map: framedTexture, transparent: true, @@ -1385,6 +1387,7 @@ class ImageViewer { mesh.userData.isImage = true; mesh.userData.isSprite = false; mesh.userData.imageLoadPending = false; + mesh.visible = true; // Ensure mesh is visible // Replace in array const index = this.imageSprites.indexOf(currentObj); @@ -1402,6 +1405,7 @@ class ImageViewer { currentObj.userData.isImage = true; currentObj.userData.isSprite = false; currentObj.userData.imageLoadPending = false; + currentObj.visible = true; // Ensure mesh is visible } // Clean up original texture @@ -1414,6 +1418,7 @@ class ImageViewer { currentObj.userData.imageLoadPending = false; currentObj.userData.isImage = false; currentObj.userData.isSprite = true; + currentObj.visible = true; // Make sprite visible again on error } console.warn(`Failed to load image: ${sprite.userData.filename}`, error); } @@ -1456,6 +1461,7 @@ class ImageViewer { newSprite.userData.isImage = false; newSprite.userData.isSprite = true; newSprite.userData.imageLoadPending = false; + newSprite.visible = false; // Hide initially to prevent white flash // Replace in array const index = this.imageSprites.indexOf(sprite); @@ -1475,6 +1481,7 @@ class ImageViewer { sprite.userData.isImage = false; sprite.userData.isSprite = true; sprite.userData.imageLoadPending = false; + sprite.visible = false; // Hide initially to prevent white flash } } From 4fc6a030d53c9dd81eb0992f620a0586b9951ea7 Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Wed, 15 Apr 2026 08:17:19 +0200 Subject: [PATCH 2/2] removed test file again --- examples/butterflies/butterflies4.kf.csv | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 examples/butterflies/butterflies4.kf.csv diff --git a/examples/butterflies/butterflies4.kf.csv b/examples/butterflies/butterflies4.kf.csv deleted file mode 100644 index f548cc7..0000000 --- a/examples/butterflies/butterflies4.kf.csv +++ /dev/null @@ -1,15 +0,0 @@ -keyframe,pos_x,pos_y,pos_z,quat_x,quat_y,quat_z,quat_w -0,23.20122996509486,2.9620331416725656,12.03044590913655,0.051294167169933375,0.36264818019771217,-0.01999544815454364,0.9302985477075247 -1,20.79474735329627,3.3085413339530034,8.475264653517614,0.04122401974777789,0.28922627050415756,-0.012468029256781286,0.9562914267588845 -2,19.187920908631625,3.557491648456518,6.020817151208465,0.04034005539419244,0.2834954290312818,-0.01193697278520714,0.9580503798495611 -3,16.805862106196386,4.006381919876927,2.1421867828057786,0.05803191994648935,0.2563263964538294,-0.015419043640149722,0.9647234463003073 -4,16.034384285581528,4.194052878041096,0.7928902029263153,0.05803191994648935,0.2563263964538294,-0.015419043640149722,0.9647234463003073 -5,15.40846385582783,4.34631530691142,-0.3018299206804056,0.05803191994648935,0.2563263964538294,-0.015419043640149722,0.9647234463003073 -6,14.846513002641396,4.483016391817034,-1.2846687580438623,0.1632250924370266,0.7609157432447838,-0.2098374172506691,0.5918893977786145 -7,13.922950258942723,5.134037616505923,-0.9558477780739308,0.1646675306808787,0.7993654425697466,-0.25348884179949216,0.5192715095668999 -8,13.41007499221373,5.529859209002749,-0.7276713174052062,0.1646675306808787,0.7993654425697466,-0.25348884179949216,0.5192715095668999 -9,13.089752628857115,6.095308363379365,-0.3769967517153457,0.15245345847528843,0.8454358048430982,-0.39294656262434924,0.32800799046659607 -10,13.089752628857115,6.095308363379365,-0.3769967517153457,0.004422054179526836,0.9904801970862397,-0.03277857385395523,0.13362256438542808 -11,12.580046363881541,6.097529027064892,1.3468958061479348,-0.008843999025552099,0.9862418148984412,0.0561960595234999,0.15521233559577685 -12,12.580046363881541,6.097529027064892,1.3468958061479348,-0.1757038131712238,-0.5316955529391972,-0.11383751328185511,0.8206515884293264 -13,15.146558070639456,4.797193269080457,0.17316973713305256,-0.18191279609739966,-0.5276038257630413,-0.1168298481431052,0.8215185477145889