@@ -112,6 +112,7 @@ class Popup{
112
112
document . getElementById ( "setup-target-overlap" ) . classList . add ( "hidden" ) ;
113
113
document . getElementById ( "setup-target-overlap-wall" ) . classList . add ( "hidden" ) ;
114
114
sceneManager . heightDetectedObservable . set ( 0.25 ) ;
115
+ //sceneManager.sceneElevation = 0.75;
115
116
break ;
116
117
case 'human-tracking' :
117
118
document . getElementById ( "setup-target-overlap" ) . classList . remove ( "hidden" ) ;
@@ -236,7 +237,6 @@ class Popup{
236
237
237
238
document . getElementById ( 'dimensions-length' ) . classList . remove ( 'hidden' ) ;
238
239
document . getElementById ( 'dimensions-distance-text-default' ) . classList . remove ( 'hidden' ) ;
239
- document . getElementById ( 'dimensions-distance-text-hand-tracking' ) . classList . add ( 'hidden' ) ;
240
240
document . getElementById ( 'dimensions-distance-text-wall-tracking' ) . classList . add ( 'hidden' ) ;
241
241
document . getElementById ( 'dimensions-distance-input' ) . placeholder = `Sensor height` ;
242
242
@@ -246,25 +246,20 @@ class Popup{
246
246
document . getElementById ( 'dimensions-width-input' ) . addEventListener ( 'change' , onChangeDimensionsInput ) ;
247
247
document . getElementById ( 'dimensions-length-input' ) . addEventListener ( 'change' , onChangeDimensionsInput ) ;
248
248
document . getElementById ( 'dimensions-distance-input' ) . addEventListener ( 'change' , onChangeDimensionsInput ) ;
249
-
250
- document . getElementById ( 'sensor-height-infos' ) . addEventListener ( 'mouseover' , ( e ) =>
251
- {
252
- const infosText = document . getElementById ( 'sensor-height-infos-text' ) ;
253
- infosText . style . left = ( e . clientX - 180 ) . toString ( ) + "px" ;
254
- infosText . style . top = ( e . clientY - 130 ) . toString ( ) + "px" ;
255
- infosText . classList . remove ( 'hidden' ) ;
256
- } ) ;
257
- document . getElementById ( 'sensor-height-infos' ) . addEventListener ( 'mouseleave' , ( ) => document . getElementById ( 'sensor-height-infos-text' ) . classList . add ( 'hidden' ) ) ;
249
+ document . getElementById ( 'dimensions-table-height-input' ) . addEventListener ( 'change' , onChangeDimensionsInput ) ;
258
250
259
251
function onChangeDimensionsInput ( )
260
252
{
261
253
const inputSceneWidth = parseFloat ( document . getElementById ( 'dimensions-width-input' ) . value ) ;
262
254
const inputSceneLength = parseFloat ( document . getElementById ( 'dimensions-length-input' ) . value ) ;
263
255
const inputSceneHeight = parseFloat ( document . getElementById ( 'dimensions-distance-input' ) . value ) ;
256
+ const inputSceneElevation = parseFloat ( document . getElementById ( 'dimensions-table-height-input' ) . value ) || 0 ;
264
257
265
258
const givenSceneWidth = Math . floor ( parseFloat ( inputSceneWidth ) / sceneManager . currentUnit . value * 100 ) / 100 ;
266
259
const givenSceneLength = Math . floor ( parseFloat ( inputSceneLength ) / sceneManager . currentUnit . value * 100 ) / 100 ;
267
260
const givenSceneHeight = Math . floor ( parseFloat ( inputSceneHeight ) / sceneManager . currentUnit . value * 100 ) / 100 ;
261
+
262
+ main . uiManager . changeTrackingMode ( trackingMode ) ;
268
263
269
264
//CHECK INPUT COHERENCE
270
265
if ( trackingMode === "wall-tracking" && inputSceneWidth && inputSceneHeight )
@@ -274,7 +269,7 @@ class Popup{
274
269
document . getElementById ( 'dimensions-negative-values-warning' ) . classList . add ( 'hidden' ) ;
275
270
if ( checkLidarCoherence ( givenSceneWidth , givenSceneHeight , getMaxFarFromSensors ( getLidarsTypes ( ) . filter ( l => l . recommended ) , trackingMode ) ) )
276
271
{
277
- sceneManager . updateWallYAugmentaSceneBorder ( inputSceneWidth , inputSceneHeight ) ;
272
+ sceneManager . updateWallYAugmentaSceneBorder ( inputSceneWidth , inputSceneHeight , 0 ) ;
278
273
279
274
// update inspector infos
280
275
document . getElementById ( 'input-wall-y-scene-width-inspector' ) . value = inputSceneWidth ;
@@ -302,7 +297,8 @@ class Popup{
302
297
if ( inputSceneWidth > 0 && inputSceneLength > 0 )
303
298
{
304
299
document . getElementById ( 'dimensions-negative-values-warning' ) . classList . add ( 'hidden' ) ;
305
- sceneManager . updateFloorAugmentaSceneBorder ( inputSceneWidth , inputSceneLength ) ;
300
+ sceneManager . sceneElevation = ( trackingMode === "human-tracking" ) ? 0 : inputSceneElevation ;
301
+ sceneManager . updateFloorAugmentaSceneBorder ( inputSceneWidth , inputSceneLength , sceneManager . sceneElevation ) ;
306
302
//update inspector
307
303
document . getElementById ( 'input-scene-width-inspector' ) . value = inputSceneWidth ;
308
304
document . getElementById ( 'input-scene-length-inspector' ) . value = inputSceneLength ;
@@ -320,10 +316,9 @@ class Popup{
320
316
const maxFar = getMaxFarFromSensors ( camerasTypesRecommended , trackingMode ) ;
321
317
const minNear = getMinNearFromSensors ( camerasTypesRecommended ) ;
322
318
323
- if ( checkCameraCoherence ( givenSceneHeight , overlapHeightDetection , maxFar , minNear ) )
319
+ if ( checkCameraCoherence ( givenSceneHeight - sceneManager . sceneElevation , overlapHeightDetection , maxFar , minNear ) )
324
320
{
325
- const convertedSceneHeight = inputSceneHeight / sceneManager . currentUnit . value ;
326
- sceneManager . sceneSensorHeight = convertedSceneHeight ;
321
+ sceneManager . sceneSensorHeight = givenSceneHeight ;
327
322
const warningElem = document . getElementById ( 'warning-hook-height' ) ;
328
323
if ( warningElem ) document . getElementById ( 'surface-warning-message' ) . classList . add ( 'hidden' ) ;
329
324
//update inspector
@@ -341,7 +336,25 @@ class Popup{
341
336
const newWarningElem = document . createElement ( "p" ) ;
342
337
newWarningElem . classList . add ( "warning-text" ) ;
343
338
newWarningElem . id = 'warning-hook-height' ;
344
- newWarningElem . innerHTML = `The camera(s) you chose cannot see your tracking surface at this distance (min = <span data-unit=` + sceneManager . currentUnit . value + `>` + ( Math . round ( ( ( minNear + overlapHeightDetection ) * sceneManager . currentUnit . value ) * 100 ) / 100.0 ) + `</span> <span data-unittext=` + sceneManager . currentUnit . label + `>` + sceneManager . currentUnit . label + `</span>, max = <span data-unit=` + sceneManager . currentUnit . value + `>` + ( Math . round ( ( maxFar * sceneManager . currentUnit . value ) * 100 ) / 100.0 ) + `</span> <span data-unittext=` + sceneManager . currentUnit . label + `>` + sceneManager . currentUnit . label + `</span>)` ;
339
+ //newWarningElem.innerHTML = `The camera(s) you chose cannot see your tracking surface at this distance (min = <span data-unit=` + sceneManager.currentUnit.value + `>` + (Math.round(((minNear + overlapHeightDetection) * sceneManager.currentUnit.value) * 100) / 100.0) + `</span> <span data-unittext=` + sceneManager.currentUnit.label + `>` + sceneManager.currentUnit.label + `</span>, max = <span data-unit=` + sceneManager.currentUnit.value + `>` + (Math.round((maxFar * sceneManager.currentUnit.value) * 100) / 100.0) + `</span> <span data-unittext=` + sceneManager.currentUnit.label + `>` + sceneManager.currentUnit.label + `</span>)`;
340
+ newWarningElem . innerHTML = `
341
+ The camera(s) you chose cannot see your tracking surface at this distance
342
+ (min =
343
+ <span data-unit="${ sceneManager . currentUnit . value } ">
344
+ ${ ( ( minNear + overlapHeightDetection ) * sceneManager . currentUnit . value ) . toFixed ( 2 ) }
345
+ </span>
346
+ <span data-unittext="${ sceneManager . currentUnit . label } ">
347
+ ${ sceneManager . currentUnit . label }
348
+ </span>,
349
+ max =
350
+ <span data-unit="${ sceneManager . currentUnit . value } ">
351
+ ${ ( maxFar * sceneManager . currentUnit . value ) . toFixed ( 2 ) }
352
+ </span>
353
+ <span data-unittext="${ sceneManager . currentUnit . label } ">
354
+ ${ sceneManager . currentUnit . label }
355
+ </span>
356
+ )
357
+ ` ;
345
358
document . getElementById ( 'surface-warning-message' ) . appendChild ( newWarningElem ) ;
346
359
}
347
360
resetWarnings ( ) ;
@@ -363,10 +376,15 @@ class Popup{
363
376
364
377
function initDimensionsSection ( )
365
378
{
379
+ if ( trackingMode === "human-tracking" )
380
+ {
381
+ document . getElementById ( 'dimensions-table-height' ) . classList . add ( 'hidden' ) ;
382
+ }
383
+
366
384
if ( trackingMode === "hand-tracking" )
367
385
{
368
- document . getElementById ( 'dimensions-distance-text-default' ) . classList . add ( 'hidden' ) ;
369
- document . getElementById ( 'dimensions-distance-text-hand-tracking ' ) . classList . remove ( 'hidden' ) ;
386
+ document . getElementById ( 'dimensions-distance-text-default' ) . classList . remove ( 'hidden' ) ;
387
+ document . getElementById ( 'dimensions-table-height ' ) . classList . remove ( 'hidden' ) ;
370
388
}
371
389
372
390
if ( trackingMode === "wall-tracking" )
@@ -375,6 +393,7 @@ class Popup{
375
393
document . getElementById ( 'dimensions-distance-text-default' ) . classList . add ( 'hidden' ) ;
376
394
document . getElementById ( 'dimensions-distance-text-wall-tracking' ) . classList . remove ( 'hidden' ) ;
377
395
document . getElementById ( 'dimensions-distance-input' ) . placeholder = `Height` ;
396
+ document . getElementById ( 'dimensions-table-height' ) . classList . add ( 'hidden' ) ;
378
397
}
379
398
380
399
if ( trackingMode )
@@ -383,19 +402,20 @@ class Popup{
383
402
if ( sceneInfos )
384
403
{
385
404
const sceneSize = JSON . parse ( sceneInfos ) . sceneSize ;
405
+ const sceneElevation = JSON . parse ( sceneInfos ) . sceneElevation ;
386
406
switch ( trackingMode )
387
407
{
388
408
case 'wall-tracking' :
389
409
document . getElementById ( 'dimensions-width-input' ) . value = Math . floor ( sceneSize [ 0 ] * sceneManager . currentUnit . value * 100 ) / 100 ;
390
410
document . getElementById ( 'dimensions-distance-input' ) . value = Math . floor ( sceneSize [ 1 ] * sceneManager . currentUnit . value * 100 ) / 100 ;
391
411
break ;
392
412
case 'hand-tracking' :
413
+ document . getElementById ( 'dimensions-table-height-input' ) . value = Math . floor ( sceneElevation * sceneManager . currentUnit . value * 100 ) / 100 ;
393
414
case 'human-tracking' :
394
415
document . getElementById ( 'dimensions-width-input' ) . value = Math . floor ( sceneSize [ 0 ] * sceneManager . currentUnit . value * 100 ) / 100 ;
395
416
document . getElementById ( 'dimensions-length-input' ) . value = Math . floor ( sceneSize [ 1 ] * sceneManager . currentUnit . value * 100 ) / 100 ;
396
417
const nodes = JSON . parse ( sceneInfos ) . objects . nodes ;
397
- //The value 4.5 for hand-tracking is just to address the fact that the sensor is by default the human-tracking one
398
- if ( nodes . length > 0 ) document . getElementById ( 'dimensions-distance-input' ) . value = Math . floor ( ( nodes [ 0 ] . p_z - ( trackingMode === 'hand-tracking' ? 4.5 : 0 ) ) * sceneManager . currentUnit . value * 100 ) / 100 ;
418
+ if ( nodes . length > 0 ) document . getElementById ( 'dimensions-distance-input' ) . value = Math . floor ( ( nodes [ 0 ] . p_z ) * sceneManager . currentUnit . value * 100 ) / 100 ;
399
419
else document . getElementById ( 'dimensions-distance-input' ) . value = '' ;
400
420
break ;
401
421
default :
@@ -520,8 +540,14 @@ class Popup{
520
540
{
521
541
getCamerasTypes ( ) . filter ( c => c . recommended ) . forEach ( c => {
522
542
const overlapHeightDetection = trackingMode === 'human-tracking' ? heightDetected : SceneManager . HAND_TRACKING_OVERLAP_HEIGHT ;
523
- if ( checkCameraCoherence ( givenHeight , overlapHeightDetection , trackingMode === 'hand-tracking' ? c . handFar : c . rangeFar , c . rangeNear ) )
524
- { sensorsCompatible . push ( c ) }
543
+ if ( trackingMode === "hand-tracking" )
544
+ {
545
+ if ( checkCameraCoherence ( givenHeight - sceneManager . sceneElevation , overlapHeightDetection , c . handFar , c . rangeNear ) )
546
+ { sensorsCompatible . push ( c ) }
547
+ } else {
548
+ if ( checkCameraCoherence ( givenHeight , overlapHeightDetection , c . rangeFar , c . rangeNear ) )
549
+ { sensorsCompatible . push ( c ) }
550
+ }
525
551
} )
526
552
}
527
553
@@ -713,13 +739,13 @@ class Popup{
713
739
{
714
740
const sensor = getCamerasTypes ( ) . find ( sensorType => sensorType . textId === sensorTextId ) ;
715
741
const overlapHeightDetection = trackingMode === 'human-tracking' ? heightDetected : SceneManager . HAND_TRACKING_OVERLAP_HEIGHT ;
716
- const config = calculateCameraConfig ( trackingMode , sensor , givenWidth , givenLength , givenHeight , overlapHeightDetection ) ;
742
+ const config = calculateCameraConfig ( trackingMode , sensor , givenWidth , givenLength , givenHeight - sceneManager . sceneElevation , overlapHeightDetection ) ;
717
743
if ( ! config ) {
718
744
console . error ( 'no config found with this setup' ) ;
719
745
return ;
720
746
}
721
747
sceneManager . objects . removeSensors ( ) ;
722
- createSceneFromCameraConfig ( config , trackingMode , givenWidth , givenLength , givenHeight + sceneManager . sceneElevation , sceneManager ) ;
748
+ createSceneFromCameraConfig ( config , trackingMode , givenWidth , givenLength , givenHeight , sceneManager ) ;
723
749
break ;
724
750
}
725
751
default :
0 commit comments