feat: integrate Draco compression for 3D models in backoffice

- Added support for uploading and compressing GLB models using Draco in the backoffice.
- Implemented commands for importing and re-compressing 3D models.
- Updated model resource to handle 3D model uploads and validations.
- Introduced a new script for compressing GLB files with Draco.
- Modified Vite configuration to remove GLB files from the build output.
- Updated package dependencies to include GLTF-transform libraries for handling 3D models.
- Added tests to ensure proper functionality of 3D model handling and compression.
This commit is contained in:
2026-11-01 10:35:50 +01:00
parent 24f9e59654
commit 1208187a17
32 changed files with 895 additions and 52 deletions
@@ -0,0 +1,38 @@
<?php
namespace App\Console\Commands;
use App\Models\Modello;
use App\Support\Configuratore\Modelli3d;
use App\Support\Configuratore\Modello3dNonValido;
use Illuminate\Console\Command;
/** Rigenera le copie Draco dagli originali, ad esempio dopo un cambio di scripts/comprimi-glb.mjs. */
class RicomprimiModelli3d extends Command
{
protected $signature = 'modelli3d:ricomprimi {codice?* : Codici dei modelli (default: tutti)}';
protected $description = 'Ricomprime con Draco i modelli 3D a partire dagli originali archiviati';
public function handle(Modelli3d $modelli3d): int
{
$errori = 0;
$modelli = Modello::with('sistema')
->whereNotNull('modello_3d')
->when($this->argument('codice'), fn ($q, $codici) => $q->whereIn('codice', $codici))
->get();
foreach ($modelli as $modello) {
try {
$modelli3d->ricomprimi($modello);
$this->info(" {$modello->sistema->codice}/{$modello->codice}: ricompresso");
} catch (Modello3dNonValido $e) {
$errori++;
$this->error(" {$modello->sistema->codice}/{$modello->codice}: {$e->getMessage()}");
}
}
return $errori ? self::FAILURE : self::SUCCESS;
}
}