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,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Modelli 3D caricati dal backoffice (vedi App\Support\Configuratore\Modelli3d).
|
||||
'modelli_3d' => [
|
||||
// Dimensione massima del .glb non compresso caricabile (MB).
|
||||
'max_mb' => (int) env('MODELLI_3D_MAX_MB', 200),
|
||||
|
||||
// La compressione Draco la fa uno script Node (le librerie Draco esistono solo in JS/C++).
|
||||
// In produzione PHP-FPM spesso non ha Node nel PATH: indicare il percorso completo,
|
||||
// es. NODE_BINARY=/opt/plesk/node/22/bin/node
|
||||
'node' => env('NODE_BINARY', 'node'),
|
||||
|
||||
// Script di compressione; usa le dipendenze installate da build.sh nella root del repository.
|
||||
'script' => env('MODELLI_3D_SCRIPT', base_path('../scripts/comprimi-glb.mjs')),
|
||||
|
||||
'timeout' => (int) env('MODELLI_3D_TIMEOUT', 300),
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
// Solo le chiavi personalizzate: il resto arriva dal config di Livewire (mergeConfigFrom è
|
||||
// superficiale, quindi il blocco temporary_file_upload va ripetuto per intero).
|
||||
return [
|
||||
'temporary_file_upload' => [
|
||||
'disk' => null,
|
||||
// I modelli 3D (.glb) non compressi superano il limite predefinito di 12 MB: il limite
|
||||
// del singolo campo resta quello impostato in Filament (maxSize).
|
||||
'rules' => ['required', 'file', 'max:'.((int) env('MODELLI_3D_MAX_MB', 200) * 1024)],
|
||||
'directory' => null,
|
||||
'middleware' => null,
|
||||
'preview_mimes' => [
|
||||
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
|
||||
'mov', 'avi', 'wmv', 'mp3', 'm4a',
|
||||
'jpg', 'jpeg', 'mpga', 'webp', 'wma',
|
||||
],
|
||||
'max_upload_time' => 15,
|
||||
'cleanup' => true,
|
||||
],
|
||||
];
|
||||
Reference in New Issue
Block a user