Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Personnalisation</title> | |
| <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> | |
| <link href="/dist/tailwind.css" rel="stylesheet"> | |
| </head> | |
| <body class="bg-bg text-textDark font-sans"> | |
| <div id="dashboard-layout" class="flex flex-col h-screen"> | |
| <div id="content" class="flex flex-col flex-1 p-6"> | |
| <!-- Error Message --> | |
| <div id="error" class="hidden text-red-600"></div> | |
| <!-- Viewspace Container --> | |
| <div id="viewspacecontainer" class="bg-white p-6 rounded-lg shadow-md"> | |
| <div class="view aspect-w-16 aspect-h-9 rounded-xl border border-yellow-300 bg-gray-100 flex items-center justify-center"> | |
| <!-- Loading Animation --> | |
| <div id="Loading" class="absolute"> | |
| <h4 class="text-lg font-bold text-gray-700"> | |
| <span id="image-progress">Loading images: 0/?</span> | |
| </h4> | |
| </div> | |
| <!-- Benchmark Stats --> | |
| <textarea readonly id="benchmark-stats" rows="10" cols="40" | |
| class="absolute top-4 left-4 border rounded p-2 text-gray-600 bg-white shadow"> | |
| Click me to start benchmarking when the frame-rate is behaving reasonably. | |
| </textarea> | |
| <!-- Loading Indicators --> | |
| <div id="loading-container" class="absolute flex space-x-4"> | |
| <div id="topleft" class="loading-bgbox w-8 h-8 bg-gray-300 rounded-full"></div> | |
| <div id="bottomleft" class="loading-bgbox w-8 h-8 bg-gray-300 rounded-full"></div> | |
| <div id="topright" class="loading-bgbox w-8 h-8 bg-gray-300 rounded-full"></div> | |
| <div id="bottomright" class="loading-bgbox w-8 h-8 bg-gray-300 rounded-full"></div> | |
| <div id="loading-indicator" class="w-8 h-8 bg-gray-500 rounded-full animate-spin"></div> | |
| </div> | |
| <!-- Viewer Canvas --> | |
| <canvas id="viewerCanvas" class="w-full h-full rounded-xl"></canvas> | |
| </div> | |
| </div> | |
| <!-- Toolbar --> | |
| <div id="toolbar" class="flex flex-wrap items-center mt-6 space-x-4"> | |
| <button id="addSphereButton" class="bg-blue-600 text-white px-4 py-2 rounded">Ajouter une pièce</button> | |
| <button id="toggleGizmoButton" class="bg-gray-300 text-black px-4 py-2 rounded">Guizmo inactif</button> | |
| <button id="togglePlanButton" class="bg-green-600 text-white px-4 py-2 rounded">Plan visible</button> | |
| <button id="toggleNewPlaneGizmoButton" class="bg-gray-300 text-black px-4 py-2 rounded">Gizmo Plan2 Inactif</button> | |
| <button id="createNewPlaneButton" class="bg-blue-600 text-white px-4 py-2 rounded">Créer un Nouveau Plan</button> | |
| <button id="verifyButton" class="bg-yellow-500 text-white px-4 py-2 rounded">Vérifier</button> | |
| <button id="boundingBoxButton" class="bg-purple-500 text-white px-4 py-2 rounded">Créer la bounding box</button> | |
| <input type="text" id="folderPathInput" placeholder="Nom du dossier" | |
| class="border rounded px-4 py-2 focus:outline-none"> | |
| <button id="uploadButton" class="bg-gray-400 text-white px-4 py-2 rounded" disabled>Téléverser vers GCS</button> | |
| </div> | |
| <!-- Video Maker Bar --> | |
| <div id="videoMakerBar" class="flex flex-wrap items-center mt-6 space-x-4"> | |
| <button id="saveCameraPosition" class="bg-green-600 text-white px-4 py-2 rounded">Enregistrer Position Caméra</button> | |
| <button id="stopAnimationButton" class="bg-red-600 text-white px-4 py-2 rounded">Arrêter l'Animation</button> | |
| <button id="startAnimationButton" class="bg-blue-600 text-white px-4 py-2 rounded">Démarrer Animation Caméra</button> | |
| <button id="captureButton" class="bg-purple-500 text-white px-4 py-2 rounded">Capturer Vidéo</button> | |
| </div> | |
| <!-- Status Message --> | |
| <div id="statusMessage" class="status-message mt-4 text-gray-700"></div> | |
| <!-- Figure Cards Container --> | |
| <div id="figureCardsContainer" class="grid grid-cols-3 gap-4 mt-6"> | |
| <!-- Dynamic content will be added here --> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Charger dynamiquement les scripts avec logs --> | |
| <script src="/js/layout.js"></script> | |
| <script src="/js/sidebar.js"></script> | |
| <script src="/js/topbar.js"></script> | |
| <script> | |
| const scriptsToLoad = [ | |
| 'https://unpkg.com/three@0.113.1/build/three.js', | |
| 'https://unpkg.com/three@0.113.1/examples/js/controls/OrbitControls.js', | |
| 'https://unpkg.com/three@0.113.1/examples/js/controls/PointerLockControls.js', | |
| 'https://unpkg.com/three@0.113.1/examples/js/controls/TransformControls.js', | |
| 'https://unpkg.com/stats-js@1.0.1/build/stats.min.js', | |
| 'https://cdn.jsdelivr.net/npm/ccapture.js@1.0.9/build/CCapture.all.min.js', | |
| 'https://unpkg.com/file-saver@2.0.0-rc.2/dist/FileSaver.min.js', | |
| '/dashboard/personnalisation/deps/zlib.js', | |
| '/dashboard/personnalisation/deps/png.js', | |
| '/dashboard/personnalisation/scene_spec.js', | |
| '/dashboard/personnalisation/fetch_asset.js', | |
| '/dashboard/personnalisation/create_texture.js', | |
| '/dashboard/personnalisation/prepare_payload.js', | |
| '/dashboard/personnalisation/populate_texture.js', | |
| '/dashboard/personnalisation/texture_manager.js', | |
| '/dashboard/personnalisation/worker_pool.js', | |
| '/dashboard/personnalisation/globals.js', | |
| '/dashboard/personnalisation/utils.js', | |
| '/dashboard/personnalisation/progressive.js', | |
| '/dashboard/personnalisation/viewdependency.js', | |
| '/dashboard/personnalisation/defaultposes.js', | |
| '/dashboard/personnalisation/input.js', | |
| '/dashboard/personnalisation/benchmark.js', | |
| '/dashboard/personnalisation/custom/objects.js', | |
| '/dashboard/personnalisation/custom/boutons_sb.js', | |
| '/dashboard/personnalisation/custom/mouseHover.js', | |
| '/dashboard/personnalisation/custom/addSphereOnClick.js', | |
| '/dashboard/personnalisation/custom/selectFigure.js', | |
| '/dashboard/personnalisation/custom/extrude.js', | |
| '/dashboard/personnalisation/local_script.js', | |
| '/dashboard/personnalisation/videoMaker/cameraCapture.js', | |
| '/dashboard/personnalisation/index.js' | |
| ]; | |
| async function loadScriptsInOrder(scripts) { | |
| for (const script of scripts) { | |
| await new Promise((resolve, reject) => { | |
| const scriptEl = document.createElement('script'); | |
| scriptEl.src = script; | |
| scriptEl.onload = resolve; | |
| scriptEl.onerror = reject; | |
| document.body.appendChild(scriptEl); | |
| }); | |
| } | |
| } | |
| loadScriptsInOrder(scriptsToLoad); | |
| </script> | |
| </body> | |
| </html> | |