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:
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Support\Configuratore\Media;
|
||||
use App\Support\Configuratore\Modelli3d;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
@@ -46,6 +48,9 @@ class Modello extends Model
|
||||
'attivo' => 'boolean',
|
||||
'moduli' => 'array',
|
||||
'listino_aggiornato_at' => 'datetime',
|
||||
'modello_3d_dimensione' => 'integer',
|
||||
'modello_3d_draco_dimensione' => 'integer',
|
||||
'modello_3d_aggiornato_at' => 'datetime',
|
||||
];
|
||||
|
||||
public function sistema(): BelongsTo
|
||||
@@ -97,10 +102,19 @@ class Modello extends Model
|
||||
return $query->where('attivo', true)->orderBy('ordine')->orderBy('id');
|
||||
}
|
||||
|
||||
/** Modelli mostrati nel configuratore: attivi e con un listino (senza prezzi non si possono vendere). */
|
||||
/**
|
||||
* Modelli mostrati nel configuratore: attivi, con un listino (senza prezzi non si possono
|
||||
* vendere) e con il modello 3D caricato.
|
||||
*/
|
||||
public function scopeNelConfiguratore(Builder $query): Builder
|
||||
{
|
||||
return $query->attivi()->whereHas('listino');
|
||||
return $query->attivi()->whereNotNull('modello_3d_draco')->whereHas('listino');
|
||||
}
|
||||
|
||||
/** URL del modello 3D compresso (Draco) letto dal configuratore. */
|
||||
public function getModello3dUrlAttribute(): ?string
|
||||
{
|
||||
return Media::url($this->modello_3d_draco);
|
||||
}
|
||||
|
||||
public function getIconaUrlAttribute(): ?string
|
||||
@@ -150,6 +164,7 @@ class Modello extends Model
|
||||
if ($modello->icona) {
|
||||
Storage::disk('public')->delete($modello->icona);
|
||||
}
|
||||
app(Modelli3d::class)->elimina($modello);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user