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:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user