Skip to content

Commit 46b1548

Browse files
committed
Adjusted ZIP logic
1 parent d55ce84 commit 46b1548

File tree

6 files changed

+573
-7
lines changed

6 files changed

+573
-7
lines changed

ZIP_SUPPORT.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Soporte para Archivos ZIP en el glTF Viewer
2+
3+
## Descripción
4+
5+
El viewer ahora soporta archivos ZIP que contienen modelos glTF con sus assets asociados (archivos .bin, texturas, etc.). Esto permite cargar modelos complejos que están distribuidos en múltiples archivos desde URLs de S3.
6+
7+
## Funcionalidades Implementadas
8+
9+
### 1. Detección Automática de Archivos ZIP
10+
- El sistema detecta automáticamente si una URL apunta a un archivo ZIP (extensión .zip)
11+
- Se integra con el sistema existente de detección de URLs S3
12+
13+
### 2. Descarga y Extracción
14+
- Descarga el archivo ZIP completo desde S3
15+
- Extrae todos los archivos del ZIP usando JSZip
16+
- Crea un mapa de archivos extraídos para referencia rápida
17+
18+
### 3. Carga de Modelos glTF
19+
- Busca automáticamente el archivo .gltf principal en el ZIP
20+
- Carga el modelo usando el GLTFLoader de Three.js
21+
- Maneja assets relativos (archivos .bin, texturas) desde los archivos extraídos
22+
23+
### 4. Manejo de Assets
24+
- Los archivos .bin, texturas (.jpg, .png, .webp) y otros assets se cargan desde el ZIP
25+
- Se crean blob URLs temporales para cada asset
26+
- Limpieza automática de memoria al finalizar la carga
27+
28+
## Flujo de Carga
29+
30+
```
31+
URL ZIP S3 → Fetch ZIP → JSZip.extract() → Encontrar .gltf → GLTFLoader → Visualización
32+
```
33+
34+
## Tipos de Archivo Soportados
35+
36+
### Archivos Requeridos
37+
- **.gltf**: Archivo principal del modelo (requerido)
38+
39+
### Archivos Opcionales
40+
- **.bin**: Datos binarios de geometría
41+
- **.jpg/.jpeg**: Texturas en formato JPEG
42+
- **.png**: Texturas en formato PNG
43+
- **.webp**: Texturas en formato WebP
44+
- **.ktx2**: Texturas comprimidas
45+
- **.draco**: Geometría comprimida
46+
47+
## Manejo de Errores
48+
49+
El sistema incluye manejo específico de errores para archivos ZIP:
50+
51+
- **No GLTF file found**: Si el ZIP no contiene archivos .gltf
52+
- **CORS errors**: Problemas de configuración CORS en S3
53+
- **Network errors**: Problemas de conectividad
54+
- **Invalid ZIP**: Archivos ZIP corruptos o inválidos
55+
56+
## Compatibilidad
57+
58+
- Funciona con URLs S3 firmadas (signed URLs)
59+
- Compatible con el sistema existente de carga de archivos GLB
60+
- Mantiene compatibilidad con drag & drop de archivos locales
61+
- Soporta todos los formatos de textura y compresión existentes
62+
63+
## Ejemplo de Uso
64+
65+
```javascript
66+
// URL de ejemplo para un archivo ZIP en S3
67+
const zipUrl = "https://bucket.s3.amazonaws.com/model.zip?AWSAccessKeyId=...&Signature=...";
68+
69+
// El viewer detectará automáticamente que es un ZIP y lo procesará
70+
viewer.load(zipUrl, '', new Map());
71+
```
72+
73+
## Limitaciones
74+
75+
- El archivo ZIP debe contener al menos un archivo .gltf
76+
- Se usa el primer archivo .gltf encontrado como archivo principal
77+
- Los archivos deben estar en la raíz del ZIP (no en subcarpetas)
78+
- Tamaño máximo recomendado: 100MB (limitación de S3 signed URLs)
79+
80+
## Dependencias
81+
82+
- **JSZip**: Para extracción de archivos ZIP
83+
- **Three.js GLTFLoader**: Para carga de modelos glTF
84+
- **Fetch API**: Para descarga de archivos desde S3

0 commit comments

Comments
 (0)