Modelos para la Educación Biomédica
LABIM3D es una plataforma web educativa desarrollada por TecMedHub (Universidad Austral de Chile, Puerto Montt) que funciona como repositorio curado de modelos anatómicos 3D para la enseñanza en ciencias de la salud.
La plataforma combina modelos alojados localmente —archivos STL originales o modificados— con enlaces a repositorios externos como Thingiverse y NIH 3D Print Exchange, presentándolos bajo una interfaz unificada con metadatos completos, información de licencias Creative Commons y visualización 3D directa en el navegador.
La filosofía central de LABIM3D es la innovación abierta: democratizar el acceso a herramientas educativas de calidad para la formación práctica en ciencias de la salud, sin barreras tecnológicas ni económicas.
LABIM3D es un sitio web estático: no requiere servidor de aplicaciones ni base de datos. Toda la lógica reside en el frontend (HTML + CSS + JavaScript) y el contenido se gestiona mediante archivos JSON.
| Tecnología | Función | Detalles |
|---|---|---|
| HTML / CSS / JS | Interfaz completa del catálogo, filtros y vistas de modelo | Vanilla JS, sin frameworks |
| Three.js | Visualización 3D interactiva de archivos STL en el navegador | OrbitControls incluido |
| JSON files | Gestión de contenido: modelos, metadatos, índice maestro | Sin base de datos |
| jsPDF | Generación de PDF para órdenes de impresión | Integrado en frontend |
| PHP 7 (opcional) | Script auxiliar para automatizar carga de archivos | Backend mínimo y prescindible |
| localStorage | Auto-guardado en el panel de administración | Estado temporal del editor |
LABIM3D/ ├── index.html ← Página principal ├── catalog.html ← Catálogo con filtros y búsqueda ├── model.html ← Vista detallada de modelo ├── about.html ← Esta página ├── admin.html ← Panel de administración ├── css/ │ ├── base.css ← Variables globales, nav, footer │ └── home.css ← Estilos específicos del home ├── js/ │ ├── catalog.js ← Lógica de filtrado y búsqueda │ ├── model-viewer.js ← Visualizador Three.js │ └── admin.js ← Gestor de modelos ├── models/ ← Datos JSON por modelo │ ├── index.json ← Índice maestro (listado completo) │ ├── oido-interno.json │ └── articulacion-rodilla.json └── images/ └── models/ ← Thumbnails e imágenes por modelo
El corazón del sistema es el enfoque JSON modular: cada modelo tiene su propio archivo JSON con todos sus metadatos, y un index.json centraliza las referencias para el catálogo. Este diseño permite agregar modelos sin modificar código HTML ni lógica JavaScript.
index.json con la entrada resumida.El panel admin.html automatiza los pasos 2 y 3: genera el JSON del modelo y actualiza el index.json mediante formularios con auto-completado, eliminando errores de escritura manual.
Cada modelo se describe completamente en su archivo JSON individual. A continuación la plantilla con todos los campos disponibles:
{
"id": "nombre-del-modelo",
"title": "Nombre Completo del Modelo",
"category": "Sistema Anatómico",
"subcategory": "Subsistema o región",
"tags": ["tag1", "tag2", "tag3"],
"type": "external | local | modified | original",
"status": "active | draft | review",
"files": [
{
"filename": "modelo.stl",
"label": "Pieza principal",
"path": "stl/models/nombre-modelo.stl"
}
],
"thumbnail": "images/models/nombre/thumb.jpg",
"images": ["images/models/nombre/img1.jpg"],
"description": "Descripción educativa del modelo.",
"educationalNotes": "Notas pedagógicas para el docente.",
"printSpecs": {
"material": "PLA",
"infill": "20%",
"supports": true,
"time": "4-6 horas",
"scale": "1:1"
},
"attribution": {
"originalCreator": "Nombre del autor original",
"originalSource": "https://url-fuente-original.com",
"license": "CC BY 4.0",
"labim3dModifications": "Descripción de cambios realizados"
},
"externalLink": "https://url-si-es-externo.com",
"dateAdded": "2025-01-15",
"addedBy": "fernanda.lopez"
}
| Campo | Descripción | Ejemplo / Valores |
|---|---|---|
| id | Identificador único, usado en URLs y referencias internas | oido-interno |
| type | Origen del modelo en el sistema | local / external / modified / original |
| tags | Etiquetas libres para búsqueda y filtrado en catálogo | ["coclea", "vestibulo", "orl"] |
| category | Sistema anatómico principal — define agrupación en catálogo | Sistema Auditivo |
| files[] | Array de STL — permite modelos multi-pieza | filename, label, path |
| printSpecs | Datos técnicos de impresión 3D para el usuario | material, infill, supports, time |
| attribution | Datos de autoría y licencia CC — cumplimiento obligatorio | creator, source, license, mods |
| educationalNotes | Contenido pedagógico adicional para el docente | Texto libre, HTML-compatible |
| externalLink | URL directa si el archivo no está alojado localmente | https://nih3d... |
El index.json contiene una versión resumida de cada modelo — solo los campos necesarios para renderizar las tarjetas del catálogo y ejecutar filtros. Esto evita cargar todos los JSON completos al iniciar.
{
"models": [
{
"id": "oido-interno",
"title": "Oído Interno - Cóclea y Vestíbulo",
"category": "Sistema Auditivo",
"tags": ["coclea", "vestibulo", "orl"],
"type": "modified",
"thumbnail": "images/models/oido-interno/thumb.jpg",
"license": "CC BY 4.0"
}
// ... demás modelos
],
"lastUpdated": "2025-03-15",
"totalModels": 3
}
La doble escritura —JSON individual + index.json— es la principal fuente de errores. El panel de administración sincroniza ambos automáticamente. Si se edita manualmente, ambos archivos deben actualizarse.
El sistema de organización del catálogo opera en dos niveles jerárquicos: categorías (agrupaciones por sistema anatómico) y etiquetas libres (tags) para búsqueda granular. No existe una lista cerrada de valores predefinidos; los términos se definen al crear cada modelo.
| Categoría | Modelos actuales |
|---|---|
| AUDITIVO | Oído Interno — Cóclea y Vestíbulo |
| ESQUELÉTICO | Vértebra Lumbar Completa |
| ARTICULAR | Articulación de Rodilla Funcional |
Las categorías son texto libre. La consistencia depende de usarlas idénticas entre modelos: cualquier variación en mayúsculas o tildes crea una categoría nueva en los filtros. Se recomienda definir un vocabulario controlado antes de escalar el catálogo.
coclea, no Cóclealumbar, vertebra, columnafuncional, articulado, seccionableorl, oft, traumatoEl panel admin.html provee una interfaz gráfica para agregar y editar modelos sin editar JSON manualmente. Implementa el patrón plantilla prellenada que garantiza campos consistentes y cumplimiento de atribución de licencias.
localStorage: el formulario no se pierde al cerrar el navegador.index.json integrada en el flujo de exportación.Si se prefiere crear el JSON sin usar el panel, copiar esta plantilla mínima:
{
"id": "",
"title": "",
"category": "",
"subcategory": "",
"tags": [],
"type": "local",
"status": "active",
"files": [{ "filename": "", "label": "Pieza única", "path": "" }],
"thumbnail": "",
"images": [],
"description": "",
"educationalNotes": "",
"printSpecs": {
"material": "PLA", "infill": "20%",
"supports": false, "time": "", "scale": "1:1"
},
"attribution": {
"originalCreator": "",
"originalSource": "",
"license": "CC BY 4.0",
"labim3dModifications": ""
},
"externalLink": null,
"dateAdded": "YYYY-MM-DD",
"addedBy": ""
}
index.json.images/models/[id]/thumb.jpg.models/[id].json y actualizar index.json.El patrón de plantilla prellenada es lo que permite mantener consistencia en los datos a medida que crece el repositorio: cada nuevo colaborador parte del mismo esquema, garantizando que todas las fichas tengan los mismos campos y el mismo nivel de detalle.
LABIM3D es un proyecto de TecMedHub, laboratorio de fabricación digital de la Escuela de Tecnología Médica, Universidad Austral de Chile, Puerto Montt. El equipo integra tecnología médica, ciencias biomédicas e ingeniería de software.
TecMedHub — Campus Costanera, Edificio 500, 3er piso. Av. Juan Soler Manfredini 1771, Puerto Montt, Los Lagos, Chile. Contacto: fernanda.lopez@uach.cl