index.html 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <!doctype html>
  2. <html lang="pl">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no" />
  6. <meta name="theme-color" content="#0e1116" />
  7. <meta name="apple-mobile-web-app-capable" content="yes" />
  8. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
  9. <title>GenRecon — wideo → spacer 3D</title>
  10. <link rel="manifest" href="./manifest.webmanifest" />
  11. <link rel="icon" href="./icons/icon-192.png" />
  12. <link rel="apple-touch-icon" href="./icons/icon-192.png" />
  13. <link rel="stylesheet" href="./styles.css" />
  14. <script type="importmap">
  15. { "imports": { "three": "./vendor/three.module.js" } }
  16. </script>
  17. </head>
  18. <body>
  19. <header id="topbar"><span class="logo">◳</span> GenRecon <small>wideo → spacer 3D</small></header>
  20. <main id="app">
  21. <!-- 1. upload -->
  22. <section id="view-upload" class="view active">
  23. <div class="card">
  24. <h1>Nakręć wnętrze telefonem → wejdź do środka</h1>
  25. <p class="muted">Wgraj film z pokoju (powoli obejdź dookoła). Zrekonstruujemy scenę 3D, po której będziesz mógł chodzić w przeglądarce.</p>
  26. <label id="drop" for="file-input">
  27. <input id="file-input" type="file" accept="video/*" capture="camcorder" hidden />
  28. <div class="drop-inner">
  29. <div class="big">⬆</div>
  30. <div>Dotknij / upuść film</div>
  31. <div class="muted small">MP4 / MOV — najlepiej 10–40 s, wolny obrót</div>
  32. </div>
  33. </label>
  34. <button id="btn-demo" class="ghost">▶ Zobacz przykładową scenę 3D</button>
  35. </div>
  36. </section>
  37. <!-- 2. progress -->
  38. <section id="view-progress" class="view">
  39. <div class="card">
  40. <h2>Rekonstrukcja…</h2>
  41. <ul id="stages"></ul>
  42. <div class="bar"><div id="bar-fill"></div></div>
  43. <div id="progress-msg" class="muted small">…</div>
  44. <details><summary class="muted small">Log</summary><pre id="log"></pre></details>
  45. <button id="btn-cancel" class="ghost">← Nowy skan</button>
  46. </div>
  47. </section>
  48. <!-- 3. walkthrough -->
  49. <section id="view-viewer" class="view">
  50. <div id="viewer-canvas"></div>
  51. <div id="hud-help">Kliknij, by wejść — <b>WASD</b> + mysz, <b>spacja</b> skok. (telefon: dżojstik + przeciągnij)</div>
  52. <div id="joystick"><div id="joystick-knob"></div></div>
  53. <button id="btn-recenter" title="Wróć na start">⟲</button>
  54. <button id="btn-new" class="ghost">Nowy skan</button>
  55. </section>
  56. </main>
  57. <script type="module" src="./app.js"></script>
  58. </body>
  59. </html>