Spaces:
Running
Running
plugin works
Browse files- css/comparison-widget.css +5 -5
- index.html +6 -56
- js/comparison-widget.js +23 -85
css/comparison-widget.css
CHANGED
|
@@ -245,7 +245,7 @@
|
|
| 245 |
#ws-image-left,
|
| 246 |
#ws-image-right {
|
| 247 |
width: 100% !important;
|
| 248 |
-
height:
|
| 249 |
}
|
| 250 |
|
| 251 |
.twentytwenty-container {
|
|
@@ -368,8 +368,8 @@
|
|
| 368 |
#ws-image-right {
|
| 369 |
max-width: 100%;
|
| 370 |
max-height: 100%;
|
| 371 |
-
width:
|
| 372 |
-
height:
|
| 373 |
}
|
| 374 |
|
| 375 |
/* Ensure twentytwenty slider fits based on image dimensions */
|
|
@@ -406,8 +406,8 @@
|
|
| 406 |
vertical-align: bottom; /* Remove gaps */
|
| 407 |
}
|
| 408 |
|
| 409 |
-
#ws-image-
|
| 410 |
-
#ws-image-
|
| 411 |
border-radius: 12px;
|
| 412 |
display: block;
|
| 413 |
vertical-align: bottom; /* Remove inline element gap */
|
|
|
|
| 245 |
#ws-image-left,
|
| 246 |
#ws-image-right {
|
| 247 |
width: 100% !important;
|
| 248 |
+
height: 100% !important;
|
| 249 |
}
|
| 250 |
|
| 251 |
.twentytwenty-container {
|
|
|
|
| 368 |
#ws-image-right {
|
| 369 |
max-width: 100%;
|
| 370 |
max-height: 100%;
|
| 371 |
+
width: 100% !important;
|
| 372 |
+
height: 100% !important;
|
| 373 |
}
|
| 374 |
|
| 375 |
/* Ensure twentytwenty slider fits based on image dimensions */
|
|
|
|
| 406 |
vertical-align: bottom; /* Remove gaps */
|
| 407 |
}
|
| 408 |
|
| 409 |
+
#ws-image-left,
|
| 410 |
+
#ws-image-right {
|
| 411 |
border-radius: 12px;
|
| 412 |
display: block;
|
| 413 |
vertical-align: bottom; /* Remove inline element gap */
|
index.html
CHANGED
|
@@ -192,50 +192,6 @@
|
|
| 192 |
</div>
|
| 193 |
</section>
|
| 194 |
|
| 195 |
-
|
| 196 |
-
<!--<section class="section pt-0 pb-4">-->
|
| 197 |
-
<!-- <div class="container is-max-desktop">-->
|
| 198 |
-
<!-- <div class="columns is-centered has-text-centered">-->
|
| 199 |
-
<!-- <div class="column is-four-fifths">-->
|
| 200 |
-
<!-- <h2 class="title is-3">Gallery</h2>-->
|
| 201 |
-
<!-- </div>-->
|
| 202 |
-
<!-- </div>-->
|
| 203 |
-
<!-- </div>-->
|
| 204 |
-
<!--</section>-->
|
| 205 |
-
|
| 206 |
-
<!--<!– Results Carousel. –>-->
|
| 207 |
-
<!--<section class="hero is-light is-small mt-4">-->
|
| 208 |
-
<!-- <div class="hero-body">-->
|
| 209 |
-
<!-- <!– <div class="container"> –>-->
|
| 210 |
-
<!-- <div id="results-carousel-horizontal" class="carousel results-carousel">-->
|
| 211 |
-
|
| 212 |
-
<!-- <div class="twoitem">-->
|
| 213 |
-
<!-- <div class="twentytwenty-container twentytwenty-container-top">-->
|
| 214 |
-
<!-- <div class="cmpcontent">-->
|
| 215 |
-
<!-- <img src="./images/comparison/car/original.jpg">-->
|
| 216 |
-
<!-- </div>-->
|
| 217 |
-
<!-- <div class="cmpcontent">-->
|
| 218 |
-
<!-- <img src="./images/comparison/car/windowseat.png">-->
|
| 219 |
-
<!-- </div>-->
|
| 220 |
-
<!-- </div>-->
|
| 221 |
-
<!-- </div>-->
|
| 222 |
-
|
| 223 |
-
<!-- <div class="twoitem">-->
|
| 224 |
-
<!-- <div class="twentytwenty-container twentytwenty-container-top">-->
|
| 225 |
-
<!-- <div class="cmpcontent">-->
|
| 226 |
-
<!-- <img src="./images/comparison/airport/original.jpg">-->
|
| 227 |
-
<!-- </div>-->
|
| 228 |
-
<!-- <div class="cmpcontent">-->
|
| 229 |
-
<!-- <img src="./images/comparison/airport/windowseat.png">-->
|
| 230 |
-
<!-- </div>-->
|
| 231 |
-
<!-- </div>-->
|
| 232 |
-
<!-- </div>-->
|
| 233 |
-
|
| 234 |
-
<!-- </div>-->
|
| 235 |
-
<!-- <!– </div> –>-->
|
| 236 |
-
<!-- </div>-->
|
| 237 |
-
<!--</section>-->
|
| 238 |
-
|
| 239 |
<!-- Baseline Comparison Title -->
|
| 240 |
<section class="section pt-0 pb-4">
|
| 241 |
<div class=" is-max-desktop">
|
|
@@ -279,23 +235,23 @@
|
|
| 279 |
<div class="twentytwenty-container twentytwenty-container-top" id="ws-comparison-slider">
|
| 280 |
<div class="cmpcontent">
|
| 281 |
<img
|
| 282 |
-
id="ws-image-
|
| 283 |
src="./images/teaser_subfigures/215/tgt.png"
|
| 284 |
alt="Ground Truth"
|
| 285 |
/>
|
| 286 |
</div>
|
| 287 |
<div class="cmpcontent">
|
| 288 |
<img
|
| 289 |
-
id="ws-image-
|
| 290 |
src="./images/teaser_subfigures/215/stereospace.png"
|
| 291 |
-
alt="StereoSpace"
|
| 292 |
/>
|
| 293 |
</div>
|
| 294 |
</div>
|
| 295 |
|
| 296 |
<!-- Model selector for baseline comparison -->
|
| 297 |
<div class="ws-model-selector-overlay">
|
| 298 |
-
<button class="ws-model-pill is-active" data-model="stereospace">StereoSpace</button>
|
| 299 |
<button class="ws-model-pill" data-model="lyra">Lyra</button>
|
| 300 |
<button class="ws-model-pill" data-model="genstereo">GenStereo</button>
|
| 301 |
<button class="ws-model-pill" data-model="stereodiffusion">StereoDiffusion</button>
|
|
@@ -393,16 +349,10 @@
|
|
| 393 |
autoplay: true,
|
| 394 |
});
|
| 395 |
|
| 396 |
-
$(".twentytwenty-container-top").twentytwenty({
|
| 397 |
-
before_label: 'Input',
|
| 398 |
-
after_label: 'StereoSpace',
|
| 399 |
-
default_offset_pct: 0.4,
|
| 400 |
-
});
|
| 401 |
-
|
| 402 |
// Initialize comparison widget slider with different labels
|
| 403 |
$("#ws-comparison-slider").twentytwenty({
|
| 404 |
-
before_label: '
|
| 405 |
-
after_label: '
|
| 406 |
default_offset_pct: 0.5,
|
| 407 |
});
|
| 408 |
|
|
|
|
| 192 |
</div>
|
| 193 |
</section>
|
| 194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 195 |
<!-- Baseline Comparison Title -->
|
| 196 |
<section class="section pt-0 pb-4">
|
| 197 |
<div class=" is-max-desktop">
|
|
|
|
| 235 |
<div class="twentytwenty-container twentytwenty-container-top" id="ws-comparison-slider">
|
| 236 |
<div class="cmpcontent">
|
| 237 |
<img
|
| 238 |
+
id="ws-image-left"
|
| 239 |
src="./images/teaser_subfigures/215/tgt.png"
|
| 240 |
alt="Ground Truth"
|
| 241 |
/>
|
| 242 |
</div>
|
| 243 |
<div class="cmpcontent">
|
| 244 |
<img
|
| 245 |
+
id="ws-image-right"
|
| 246 |
src="./images/teaser_subfigures/215/stereospace.png"
|
| 247 |
+
alt="StereoSpace (ours)"
|
| 248 |
/>
|
| 249 |
</div>
|
| 250 |
</div>
|
| 251 |
|
| 252 |
<!-- Model selector for baseline comparison -->
|
| 253 |
<div class="ws-model-selector-overlay">
|
| 254 |
+
<button class="ws-model-pill is-active" data-model="stereospace">StereoSpace (ours)</button>
|
| 255 |
<button class="ws-model-pill" data-model="lyra">Lyra</button>
|
| 256 |
<button class="ws-model-pill" data-model="genstereo">GenStereo</button>
|
| 257 |
<button class="ws-model-pill" data-model="stereodiffusion">StereoDiffusion</button>
|
|
|
|
| 349 |
autoplay: true,
|
| 350 |
});
|
| 351 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 352 |
// Initialize comparison widget slider with different labels
|
| 353 |
$("#ws-comparison-slider").twentytwenty({
|
| 354 |
+
before_label: 'StereoSpace (ours)',
|
| 355 |
+
after_label: 'Ground Truth',
|
| 356 |
default_offset_pct: 0.5,
|
| 357 |
});
|
| 358 |
|
js/comparison-widget.js
CHANGED
|
@@ -30,7 +30,7 @@ function wsRenderHotspots() {
|
|
| 30 |
// Scene-based image mapping
|
| 31 |
const WS_SCENE_IMAGES = {
|
| 32 |
215: {
|
| 33 |
-
target: '/images/teaser_subfigures/215/tgt.
|
| 34 |
stereospace: '/images/teaser_subfigures/215/stereospace.png',
|
| 35 |
lyra: '/images/teaser_subfigures/215/lyra.png',
|
| 36 |
genstereo: '/images/teaser_subfigures/215/genstereo.png',
|
|
@@ -38,51 +38,39 @@ const WS_SCENE_IMAGES = {
|
|
| 38 |
zerostereo: '/images/teaser_subfigures/215/zerostereo.png',
|
| 39 |
},
|
| 40 |
249: {
|
| 41 |
-
target: '/images/teaser_subfigures/249/tgt.
|
| 42 |
stereospace: '/images/teaser_subfigures/249/stereospace.png',
|
| 43 |
-
lyra: '/images/teaser_subfigures/249/lyra.
|
| 44 |
genstereo: '/images/teaser_subfigures/249/genstereo.png',
|
| 45 |
stereodiffusion: '/images/teaser_subfigures/249/stereodiffusion.png',
|
| 46 |
zerostereo: '/images/teaser_subfigures/249/zerostereo.png',
|
| 47 |
},
|
| 48 |
252: {
|
| 49 |
-
target: '/images/teaser_subfigures/252/tgt.
|
| 50 |
stereospace: '/images/teaser_subfigures/252/stereospace.png',
|
| 51 |
-
lyra: '/images/teaser_subfigures/252/lyra.
|
| 52 |
genstereo: '/images/teaser_subfigures/252/genstereo.png',
|
| 53 |
stereodiffusion: '/images/teaser_subfigures/252/stereodiffusion.png',
|
| 54 |
zerostereo: '/images/teaser_subfigures/252/zerostereo.png',
|
| 55 |
},
|
| 56 |
285: {
|
| 57 |
-
target: '/images/teaser_subfigures/285/tgt.
|
| 58 |
stereospace: '/images/teaser_subfigures/285/stereospace.png',
|
| 59 |
-
lyra: '/images/teaser_subfigures/285/lyra.
|
| 60 |
genstereo: '/images/teaser_subfigures/285/genstereo.png',
|
| 61 |
stereodiffusion: '/images/teaser_subfigures/285/stereodiffusion.png',
|
| 62 |
zerostereo: '/images/teaser_subfigures/285/zerostereo.png',
|
| 63 |
},
|
| 64 |
297: {
|
| 65 |
-
target: '/images/teaser_subfigures/297/tgt.
|
| 66 |
stereospace: '/images/teaser_subfigures/297/stereospace.png',
|
| 67 |
-
lyra: '/images/teaser_subfigures/297/lyra.
|
| 68 |
genstereo: '/images/teaser_subfigures/297/genstereo.png',
|
| 69 |
stereodiffusion: '/images/teaser_subfigures/297/stereodiffusion.png',
|
| 70 |
zerostereo: '/images/teaser_subfigures/297/zerostereo.png',
|
| 71 |
},
|
| 72 |
};
|
| 73 |
|
| 74 |
-
function wsLoadScene(sceneName) {
|
| 75 |
-
const sceneData = WS_SCENE_IMAGES[sceneName];
|
| 76 |
-
if (!sceneData) return;
|
| 77 |
-
|
| 78 |
-
// Update left image (target input)
|
| 79 |
-
$('#ws-image-left').attr('src', sceneData.target);
|
| 80 |
-
|
| 81 |
-
// Update right image with current selected model
|
| 82 |
-
const activeModel = $('.ws-model-pill[data-model].is-active').data('model') || 'lyra';
|
| 83 |
-
$('#ws-image-right').attr('src', sceneData[activeModel]);
|
| 84 |
-
}
|
| 85 |
-
|
| 86 |
$(document).ready(function() {
|
| 87 |
// Initialize state
|
| 88 |
let currentScene = '215';
|
|
@@ -91,9 +79,9 @@ $(document).ready(function() {
|
|
| 91 |
|
| 92 |
// map model keys -> readable label shown on the slider
|
| 93 |
const WS_MODEL_LABELS = {
|
| 94 |
-
|
| 95 |
-
src: 'Source',
|
| 96 |
tgt: 'Ground Truth',
|
|
|
|
| 97 |
genstereo: 'GenStereo',
|
| 98 |
lyra: 'Lyra',
|
| 99 |
stereodiffusion: 'StereoDiffusion',
|
|
@@ -113,30 +101,10 @@ $(document).ready(function() {
|
|
| 113 |
});
|
| 114 |
}
|
| 115 |
|
| 116 |
-
// Initialize the twentytwenty slider
|
| 117 |
-
function initSlider(beforeLabel = 'Baseline') {
|
| 118 |
-
$("#ws-teaser_subfigures-slider").twentytwenty({
|
| 119 |
-
before_label: beforeLabel,
|
| 120 |
-
after_label: 'stereospace',
|
| 121 |
-
default_offset_pct: 0.5,
|
| 122 |
-
});
|
| 123 |
-
sliderInitialized = true;
|
| 124 |
-
// Clear any accidental zero clip applied by the plugin
|
| 125 |
-
setTimeout(() => {
|
| 126 |
-
$('.twentytwenty-overlay').css('clip', 'auto');
|
| 127 |
-
}, 50);
|
| 128 |
-
}
|
| 129 |
-
|
| 130 |
// Update labels on an already-initialized twentytwenty instance
|
| 131 |
function wsSetSliderLabels(beforeLabel, afterLabel) {
|
| 132 |
-
|
| 133 |
-
$('#ws-
|
| 134 |
-
$('#ws-teaser_subfigures-slider .twentytwenty-after-label').attr('data-content', beforeLabel);
|
| 135 |
-
// log that labels were updated
|
| 136 |
-
console.log('Updated slider labels to:', $wsSlider.find('.twentytwenty-before-label').attr('data-content'),
|
| 137 |
-
$wsSlider.find('.twentytwenty-after-label').attr('data-content'));
|
| 138 |
-
// log if $wsSlider exists
|
| 139 |
-
console.log('Slider element exists:', $wsSlider.length > 0);
|
| 140 |
}
|
| 141 |
|
| 142 |
// Function to update images
|
|
@@ -149,46 +117,30 @@ $(document).ready(function() {
|
|
| 149 |
|
| 150 |
// Preload all images we will use, then swap and (re)initialize slider.
|
| 151 |
const leftUrl = sceneData.target;
|
| 152 |
-
const
|
| 153 |
-
const baselineUrl = sceneData[model];
|
| 154 |
|
| 155 |
// show light loading state if you have CSS for it
|
| 156 |
-
$('#ws-
|
| 157 |
|
| 158 |
Promise.all([
|
| 159 |
wsPreloadImage(leftUrl),
|
| 160 |
-
wsPreloadImage(
|
| 161 |
-
wsPreloadImage(baselineUrl),
|
| 162 |
]).then(() => {
|
| 163 |
-
// swap sources only after loaded
|
| 164 |
$('#ws-image-left').attr('src', leftUrl);
|
| 165 |
-
$('#ws-image-
|
| 166 |
-
$('#ws-image-baseline').attr('src', baselineUrl);
|
| 167 |
|
| 168 |
const modelLabel = WS_MODEL_LABELS[model] || model;
|
| 169 |
-
// log sliderInitialized
|
| 170 |
-
// destroy only if already initialized
|
| 171 |
-
// if (sliderInitialized) {
|
| 172 |
-
// $('#ws-teaser_subfigures-slider').trigger('destroy');
|
| 173 |
-
// sliderInitialized = false;
|
| 174 |
-
// }
|
| 175 |
-
// small delay to allow browser layout, then init
|
| 176 |
setTimeout(() => {
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
wsSetSliderLabels('StereoSpace', modelLabel);
|
| 180 |
-
$('#ws-teaser_subfigures-container').removeClass('ws-loading');
|
| 181 |
}, 60);
|
| 182 |
}).catch((err) => {
|
| 183 |
console.warn('Image preload failed:', err);
|
| 184 |
-
// fallback: swap anyway and try init
|
| 185 |
$('#ws-image-left').attr('src', leftUrl);
|
| 186 |
-
$('#ws-image-
|
| 187 |
-
$('#ws-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
wsSetSliderLabels('StereoSpace', modelLabel);
|
| 191 |
-
$('#ws-teaser_subfigures-container').removeClass('ws-loading');
|
| 192 |
});
|
| 193 |
}
|
| 194 |
|
|
@@ -212,18 +164,4 @@ $(document).ready(function() {
|
|
| 212 |
|
| 213 |
// Initialize with default scene and model
|
| 214 |
updateImages(currentScene, currentModel);
|
| 215 |
-
|
| 216 |
-
// Remove or comment out hotspot code:
|
| 217 |
-
/*
|
| 218 |
-
// Hotspot toggle
|
| 219 |
-
let hotspotsVisible = false;
|
| 220 |
-
$('#ws-hotspots-toggle').on('click', function() {
|
| 221 |
-
hotspotsVisible = !hotspotsVisible;
|
| 222 |
-
if (hotspotsVisible) {
|
| 223 |
-
wsRenderHotspots();
|
| 224 |
-
} else {
|
| 225 |
-
$('#ws-hotspots-layer').empty();
|
| 226 |
-
}
|
| 227 |
-
});
|
| 228 |
-
*/
|
| 229 |
});
|
|
|
|
| 30 |
// Scene-based image mapping
|
| 31 |
const WS_SCENE_IMAGES = {
|
| 32 |
215: {
|
| 33 |
+
target: '/images/teaser_subfigures/215/tgt.png',
|
| 34 |
stereospace: '/images/teaser_subfigures/215/stereospace.png',
|
| 35 |
lyra: '/images/teaser_subfigures/215/lyra.png',
|
| 36 |
genstereo: '/images/teaser_subfigures/215/genstereo.png',
|
|
|
|
| 38 |
zerostereo: '/images/teaser_subfigures/215/zerostereo.png',
|
| 39 |
},
|
| 40 |
249: {
|
| 41 |
+
target: '/images/teaser_subfigures/249/tgt.png',
|
| 42 |
stereospace: '/images/teaser_subfigures/249/stereospace.png',
|
| 43 |
+
lyra: '/images/teaser_subfigures/249/lyra.png',
|
| 44 |
genstereo: '/images/teaser_subfigures/249/genstereo.png',
|
| 45 |
stereodiffusion: '/images/teaser_subfigures/249/stereodiffusion.png',
|
| 46 |
zerostereo: '/images/teaser_subfigures/249/zerostereo.png',
|
| 47 |
},
|
| 48 |
252: {
|
| 49 |
+
target: '/images/teaser_subfigures/252/tgt.png',
|
| 50 |
stereospace: '/images/teaser_subfigures/252/stereospace.png',
|
| 51 |
+
lyra: '/images/teaser_subfigures/252/lyra.png',
|
| 52 |
genstereo: '/images/teaser_subfigures/252/genstereo.png',
|
| 53 |
stereodiffusion: '/images/teaser_subfigures/252/stereodiffusion.png',
|
| 54 |
zerostereo: '/images/teaser_subfigures/252/zerostereo.png',
|
| 55 |
},
|
| 56 |
285: {
|
| 57 |
+
target: '/images/teaser_subfigures/285/tgt.png',
|
| 58 |
stereospace: '/images/teaser_subfigures/285/stereospace.png',
|
| 59 |
+
lyra: '/images/teaser_subfigures/285/lyra.png',
|
| 60 |
genstereo: '/images/teaser_subfigures/285/genstereo.png',
|
| 61 |
stereodiffusion: '/images/teaser_subfigures/285/stereodiffusion.png',
|
| 62 |
zerostereo: '/images/teaser_subfigures/285/zerostereo.png',
|
| 63 |
},
|
| 64 |
297: {
|
| 65 |
+
target: '/images/teaser_subfigures/297/tgt.png',
|
| 66 |
stereospace: '/images/teaser_subfigures/297/stereospace.png',
|
| 67 |
+
lyra: '/images/teaser_subfigures/297/lyra.png',
|
| 68 |
genstereo: '/images/teaser_subfigures/297/genstereo.png',
|
| 69 |
stereodiffusion: '/images/teaser_subfigures/297/stereodiffusion.png',
|
| 70 |
zerostereo: '/images/teaser_subfigures/297/zerostereo.png',
|
| 71 |
},
|
| 72 |
};
|
| 73 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
$(document).ready(function() {
|
| 75 |
// Initialize state
|
| 76 |
let currentScene = '215';
|
|
|
|
| 79 |
|
| 80 |
// map model keys -> readable label shown on the slider
|
| 81 |
const WS_MODEL_LABELS = {
|
| 82 |
+
src: 'Input',
|
|
|
|
| 83 |
tgt: 'Ground Truth',
|
| 84 |
+
stereospace: 'StereoSpace (ours)',
|
| 85 |
genstereo: 'GenStereo',
|
| 86 |
lyra: 'Lyra',
|
| 87 |
stereodiffusion: 'StereoDiffusion',
|
|
|
|
| 101 |
});
|
| 102 |
}
|
| 103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
// Update labels on an already-initialized twentytwenty instance
|
| 105 |
function wsSetSliderLabels(beforeLabel, afterLabel) {
|
| 106 |
+
$('#ws-comparison-slider .twentytwenty-before-label').attr('data-content', beforeLabel);
|
| 107 |
+
$('#ws-comparison-slider .twentytwenty-after-label').attr('data-content', afterLabel);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
}
|
| 109 |
|
| 110 |
// Function to update images
|
|
|
|
| 117 |
|
| 118 |
// Preload all images we will use, then swap and (re)initialize slider.
|
| 119 |
const leftUrl = sceneData.target;
|
| 120 |
+
const rightUrl = sceneData[model];
|
|
|
|
| 121 |
|
| 122 |
// show light loading state if you have CSS for it
|
| 123 |
+
$('#ws-comparison-container').addClass('ws-loading');
|
| 124 |
|
| 125 |
Promise.all([
|
| 126 |
wsPreloadImage(leftUrl),
|
| 127 |
+
wsPreloadImage(rightUrl),
|
|
|
|
| 128 |
]).then(() => {
|
|
|
|
| 129 |
$('#ws-image-left').attr('src', leftUrl);
|
| 130 |
+
$('#ws-image-right').attr('src', rightUrl);
|
|
|
|
| 131 |
|
| 132 |
const modelLabel = WS_MODEL_LABELS[model] || model;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
setTimeout(() => {
|
| 134 |
+
wsSetSliderLabels('Ground Truth', modelLabel);
|
| 135 |
+
$('#ws-comparison-container').removeClass('ws-loading');
|
|
|
|
|
|
|
| 136 |
}, 60);
|
| 137 |
}).catch((err) => {
|
| 138 |
console.warn('Image preload failed:', err);
|
|
|
|
| 139 |
$('#ws-image-left').attr('src', leftUrl);
|
| 140 |
+
$('#ws-image-right').attr('src', rightUrl);
|
| 141 |
+
if (sliderInitialized) $('#ws-comparison-slider').trigger('destroy');
|
| 142 |
+
wsSetSliderLabels('Ground Truth', modelLabel);
|
| 143 |
+
$('#ws-comparison-container').removeClass('ws-loading');
|
|
|
|
|
|
|
| 144 |
});
|
| 145 |
}
|
| 146 |
|
|
|
|
| 164 |
|
| 165 |
// Initialize with default scene and model
|
| 166 |
updateImages(currentScene, currentModel);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
});
|