feat: add perspective view toggle and update camera handling

This commit is contained in:
CNCKitchen
2026-04-07 12:00:05 +02:00
parent 03d55d2b5c
commit 0998e9ee00
10 changed files with 198 additions and 61 deletions
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "Hell/Dunkel-Modus wechseln",
"dropHint.text": "<strong>.stl</strong>-, <strong>.obj</strong>- oder <strong>.3mf</strong>-Datei hier ablegen<br/>oder <label for=\"stl-file-input\" class=\"link-label\">zum Durchsuchen klicken</label>",
"ui.wireframe": "Drahtgitter",
"ui.perspective": "Perspektivansicht",
"ui.controlsHint": "Linke Maustaste: Drehen  ·  Rechte Maustaste: Verschieben  ·  Mausrad: Zoomen",
"ui.meshInfo": "{n} Dreiecke · {mb} MB · {sx} × {sy} × {sz} mm",
"ui.loadStl": "Modell laden…",
"ui.localProcessingNote": "Alle Berechnungen laufen lokal in Ihrem Browser — keine Daten werden hochgeladen.",
"sections.displacementMap": "Textur",
"ui.uploadCustomMap": "Eigene Textur hochladen",
"ui.noMapSelected": "Keine Textur ausgewählt",
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "Toggle light/dark mode",
"dropHint.text": "Drop an <strong>.stl</strong>, <strong>.obj</strong> or <strong>.3mf</strong> file here<br/>or <label for=\"stl-file-input\" class=\"link-label\">click to browse</label>",
"ui.wireframe": "Wireframe",
"ui.perspective": "Perspective View",
"ui.controlsHint": "Left drag: orbit  ·  Right drag: pan  ·  Scroll: zoom",
"ui.meshInfo": "{n} triangles · {mb} MB · {sx} × {sy} × {sz} mm",
"ui.loadStl": "Load Model…",
"ui.localProcessingNote": "All processing runs locally in your browser — no data is uploaded.",
"sections.displacementMap": "Displacement Map",
"ui.uploadCustomMap": "Upload custom map",
"ui.noMapSelected": "No map selected",
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "Alternar modo claro/oscuro",
"dropHint.text": "Arrastra aquí un archivo <strong>.stl</strong>, <strong>.obj</strong> o <strong>.3mf</strong><br/>o <label for=\"stl-file-input\" class=\"link-label\">haz clic para explorar</label>",
"ui.wireframe": "Malla de alambre",
"ui.perspective": "Vista en perspectiva",
"ui.controlsHint": "Arrastrar izq.: orbitar  ·  Arrastrar der.: desplazar  ·  Rueda: zoom",
"ui.meshInfo": "{n} triángulos · {mb} MB · {sx} × {sy} × {sz} mm",
"ui.loadStl": "Cargar modelo…",
"ui.localProcessingNote": "Todo el procesamiento se realiza localmente en tu navegador — no se suben datos.",
"sections.displacementMap": "Mapa de desplazamiento",
"ui.uploadCustomMap": "Subir mapa personalizado",
"ui.noMapSelected": "Ningún mapa seleccionado",
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "Basculer mode clair/sombre",
"dropHint.text": "Déposez un fichier <strong>.stl</strong>, <strong>.obj</strong> ou <strong>.3mf</strong> ici<br/>ou <label for=\"stl-file-input\" class=\"link-label\">cliquez pour parcourir</label>",
"ui.wireframe": "Fil de fer",
"ui.perspective": "Vue en perspective",
"ui.controlsHint": "Bouton gauche : orbiter  ·  Bouton droit : panoramique  ·  Molette : zoom",
"ui.meshInfo": "{n} triangles · {mb} Mo · {sx} × {sy} × {sz} mm",
"ui.loadStl": "Charger un modèle…",
"ui.localProcessingNote": "Tout le traitement s'effectue localement dans votre navigateur — aucune donnée n'est envoyée.",
"sections.displacementMap": "Carte de déplacement",
"ui.uploadCustomMap": "Charger une carte personnalisée",
"ui.noMapSelected": "Aucune carte sélectionnée",
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "Attiva/disattiva modalità chiara/scura",
"dropHint.text": "Trascina qui un file <strong>.stl</strong>, <strong>.obj</strong> o <strong>.3mf</strong><br/>o <label for=\"stl-file-input\" class=\"link-label\">clicca per sfogliare</label>",
"ui.wireframe": "Wireframe",
"ui.perspective": "Vista prospettica",
"ui.controlsHint": "Trascina a sx: orbita  ·  Trascina a dx: sposta  ·  Scorri: zoom",
"ui.meshInfo": "{n} triangoli · {mb} MB · {sx} × {sy} × {sz} mm",
"ui.loadStl": "Carica Modello…",
"ui.localProcessingNote": "Tutta l'elaborazione avviene localmente nel browser — nessun dato viene caricato.",
"sections.displacementMap": "Mappa di Deformazione",
"ui.uploadCustomMap": "Carica mappa personalizzata",
"ui.noMapSelected": "Nessuna mappa selezionata",
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "ライト/ダークモードを切り替え",
"dropHint.text": "<strong>.stl</strong>、<strong>.obj</strong>、<strong>.3mf</strong> ファイルをここにドロップ<br/>または <label for=\"stl-file-input\" class=\"link-label\">クリックして参照</label>",
"ui.wireframe": "ワイヤーフレーム",
"ui.perspective": "透視投影ビュー",
"ui.controlsHint": "左ドラッグ: 回転  ·  右ドラッグ: パン  ·  スクロール: ズーム",
"ui.meshInfo": "{n} 三角形 · {mb} MB · {sx} × {sy} × {sz} mm",
"ui.loadStl": "モデルを読み込む…",
"ui.localProcessingNote": "すべての処理はブラウザ内でローカルに実行されます — データはアップロードされません。",
"sections.displacementMap": "ディスプレイスメントマップ",
"ui.uploadCustomMap": "カスタムマップをアップロード",
"ui.noMapSelected": "マップが選択されていません",
+2
View File
@@ -5,9 +5,11 @@ export default {
"theme.toggleAriaLabel": "Alternar modo claro/escuro",
"dropHint.text": "Arraste um arquivo <strong>.stl</strong>, <strong>.obj</strong> ou <strong>.3mf</strong> aqui<br/>ou <label for=\"stl-file-input\" class=\"link-label\">clique para procurar</label>",
"ui.wireframe": "Wireframe",
"ui.perspective": "Vista em perspectiva",
"ui.controlsHint": "Arrastar esq.: orbitar  ·  Arrastar dir.: deslocar  ·  Roda: zoom",
"ui.meshInfo": "{n} triângulos · {mb} MB · {sx} × {sy} × {sz} mm",
"ui.loadStl": "Carregar modelo…",
"ui.localProcessingNote": "Todo o processamento é feito localmente no seu navegador — nenhum dado é enviado.",
"sections.displacementMap": "Mapa de deslocamento",
"ui.uploadCustomMap": "Enviar mapa personalizado",
"ui.noMapSelected": "Nenhum mapa selecionado",