# Licencias de los recursos de terceros del campus

Todo lo que está aquí se usa con permiso de su licencia y con la aprobación de Raúl (24-sep-2026).
Nada se descarga en tiempo de ejecución desde otro sitio: los ficheros viven en `public/assets` y el
origen de cada uno queda registrado con su huella (sha256) en
`3D-MESHY/descargas/MANIFIESTO.json` (fuera de este repositorio) y, para las texturas, en
`textures/ORIGEN.json`.

**CC0 1.0** (dominio público): se puede usar, modificar y redistribuir sin pedir permiso y sin
obligación de atribuir. Se atribuye igual, por orden y para poder responder si un colegio pregunta
de dónde sale cada cosa. El autor de cada recurso de Poly Haven figura en su ficha (el enlace de
la columna «Fuente»); el manifiesto de descarga no lo recoge, así que aquí no se escribe de memoria.

## Cielos (HDRI) — `assets/hdri/`

Copias exactas de los ficheros descargados (el sello del nombre son los primeros 8 caracteres de su
sha256, el mismo que el del manifiesto). Los usa `components/3d/Cielo.tsx`; el activo se elige en
`PALETA.cielo.hdri.activo` (`config/paleta.ts`).

| Archivo | Fuente | Autor | Licencia | Uso |
|---|---|---|---|---|
| `kloofendal_48d_partly_cloudy_puresky_1k.fd94c849.hdr` | Poly Haven — polyhaven.com/a/kloofendal_48d_partly_cloudy_puresky | Poly Haven (ver ficha) | CC0 1.0 | Cielo por defecto: nubes, reflejos y luz rebotada |
| `kloofendal_overcast_puresky_1k.5f98aa01.hdr` | Poly Haven — polyhaven.com/a/kloofendal_overcast_puresky | Poly Haven (ver ficha) | CC0 1.0 | Alternativa configurable: cielo cubierto |
| `qwantani_dusk_2_puresky_1k.56dc9cb6.hdr` | Poly Haven — polyhaven.com/a/qwantani_dusk_2_puresky | Poly Haven (ver ficha) | CC0 1.0 | Alternativa configurable: atardecer |

## Modelos — `assets/props/exterior/`

Derivados de los glTF de 1K de Poly Haven por `scripts/preparar-mundo-exterior.mjs`: geometría
simplificada con meshoptimizer (dos niveles de detalle) y texturas reescaladas a 1024, 512 y 256 px
dentro de cada GLB. CC0 permite modificarlos.

| Archivo | Fuente | Autor | Licencia | Uso |
|---|---|---|---|---|
| `farola-{256,512,1024}.<sello>.glb` | Poly Haven — polyhaven.com/a/street_lamp_01 | Poly Haven (ver ficha) | CC0 1.0 | Farolas de la explanada y del claustro |
| `arbusto-{256,512,1024}.<sello>.glb` | Poly Haven — polyhaven.com/a/shrub_04 | Poly Haven (ver ficha) | CC0 1.0 | Arbustos de las jardineras (sus cuatro ramas) |

La silla escolar (`SchoolChair_01`) y el escritorio (`metal_office_desk`) aprobados el mismo día son
del equipo del aula y no están en esta carpeta.

## Texturas — `assets/textures/`

Las de ambientCG se convierten con `scripts/importar-texturas-ambientcg.mjs` (color, normal y un ARM
empaquetado a mano: oclusión, rugosidad y metalidad), a 1024 y 512 px. Las de Poly Haven las bajó
`scripts/bajar-texturas.mjs`, con su autor en `textures/ORIGEN.json`.

| Carpeta | Fuente | Autor | Licencia | Uso |
|---|---|---|---|---|
| `adoquin/` | ambientCG — ambientcg.com/view?id=PavingStones150 (`PavingStones150_1K-JPG.zip`) | ambientCG (Lennart Demes) | CC0 1.0 | Explanada y camino central |
| `hormigon/` | ambientCG — ambientcg.com/view?id=Concrete034 (`Concrete034_1K-JPG.zip`) | ambientCG (Lennart Demes) | CC0 1.0 | Zócalos, jardineras y remates (`concrete`) |
| `revoque/` | ambientCG — ambientcg.com/view?id=PaintedPlaster017 (`PaintedPlaster017_1K-JPG.zip`) | ambientCG (Lennart Demes) | CC0 1.0 | Muros exteriores (`exteriorWall`) |
| `terrazo/` | ambientCG — ambientcg.com/view?id=Terrazzo013 (`Terrazzo013_1K-JPG.zip`) | ambientCG (Lennart Demes) | CC0 1.0 | Suelo interior (`floor`) |
| `pradera/` | ambientCG — ambientcg.com/view?id=Grass005 (`Grass005_1K-JPG.zip`) | ambientCG (Lennart Demes) | CC0 1.0 | Césped del terreno |
| `piedra/` | Poly Haven — polyhaven.com/a/grey_plaster_02 | Rob Tuytel | CC0 1.0 | Desde el 19-oct: muro del malecón, escaleras, estribo y rocas de la costa (solo color y relieve) |
| `pulido/` | Poly Haven — polyhaven.com/a/concrete_floor_02 | Rob Tuytel | CC0 1.0 | Sin uso desde el 25-sep (se conserva) |
| `acera/` | Poly Haven — polyhaven.com/a/concrete_floor_worn_02 | Dimitrios Savva | CC0 1.0 | Sin uso desde el 25-sep (se conserva) |
| `cesped/` | Poly Haven — polyhaven.com/a/leafy_grass | Charlotte Baglioni | CC0 1.0 | Sin uso desde el 25-sep (se conserva) |
| `ladrillo/` | Poly Haven — polyhaven.com/a/brick_wall_006 | Jan Burghardt | CC0 1.0 | Sin uso (se conserva) |
| `vegetacion/` | Atlas montado por el proyecto (`npm run follaje:generar`) a partir de hojas sueltas CC0; las fuentes están en `assets-fuente/follaje/` | Proyecto (hojas: ver fuentes) | CC0 1.0 las hojas | Copas de los árboles y matas de hierba |

## Estatuas — `assets/estatuas/`

Procedencia completa (con bytes y sha256) en `assets/estatuas/MANIFIESTO.json`. Las referencias fotográficas de cada
persona NUNCA entran al juego: se citan en `docs/estatuas/FUENTES.md`.

| Recurso | Fuente | Autor | Licencia | Uso |
|---|---|---|---|---|
| Malla base, macros, esqueleto y pesos | MPFB2 (`makehumancommunity/mpfb2`, datos de `src/mpfb/data`) | MakeHuman Community | CC0 1.0 | Cuerpo de cada estatua (la geometría deriva de la malla base) |
| Máscara de uñas | MPFB2 `textures/mpfb_fingernails.jpg` | MakeHuman Community | CC0 1.0 | Horneada en el color de la piel |
| Ropa, zapatos, banda presidencial, escudo bordado, pedestal y texturas de tela y piel | Obra propia, por procedimiento (`scripts/estatuas/`) | Proyecto | CC0 1.0 | Cuerpo, material y pedestal |
| Transcodificador KTX2 (`decodificadores/basis_transcoder.*`) | three.js r185 (`examples/jsm/libs/basis`) | Binomial LLC / three.js | Apache-2.0 / MIT | Leer las texturas KTX2 en el navegador, sin CDN |
| Cabezas (`cabezas/<id>.glb`) | Pipeline de rostro (`scripts/estatuas/rostro/`) | Proyecto | ver `docs/estatuas/FUENTES.md` | Rostro ajustado por medición |

Herramientas npm solo de desarrollo (no van al juego): `@gltf-transform/*` (MIT), `meshoptimizer` (MIT),
`ktx2-encoder` (MIT, con Basis Universal, Apache-2.0) y `pngjs` (MIT).

## Centro de Rescate — `assets/centro/` (E2, 20-oct-2026)

La ambulancia (con su interior), el maniquí de entrenamiento, las manos en primera persona y los
nueve objetos del botiquín. Los empaqueta `npm run centro:empaquetar` (`scripts/centro/`), que
además les pone la rotulación Academy Priority y el emblema propio.

| Recurso | Fuente | Autor | Licencia | Uso |
|---|---|---|---|---|
| Modelos (geometría, materiales, esqueletos y posturas) | Obra propia, modelada por script en Blender (agosto-septiembre de 2026); registro de autoría y de recursos de su proyecto de origen: «ningún asset externo» | Marketing Virtual Planet | Propia (todos los derechos) | `vehiculos/`, `medico/`, `personajes/` |
| Rotulación («AMBULANCIA», «ACADEMY PRIORITY», «AP-01») y emblema (corazón con pulso sobre disco) | Obra propia, por procedimiento (`scripts/centro/lib/rotulos.mjs`) | Proyecto | Propia | Calcomanías planas en la ambulancia |
| Letra de la rotulación: Helvetiker Bold | three.js `examples/fonts/helvetiker_bold.typeface.json` (MgOpen Moderna) | Magenta Ltd. | Licencia MgOpen (libre; texto en `scripts/centro/fuentes/LICENCIA-MgOpen.txt`) | Convertida en triángulos dentro del GLB; la fuente no se sirve al navegador |

El emblema sustituye a la «Estrella de la vida» (marca registrada) y no lleva ninguna cruz roja
(emblema protegido). El símbolo verde con cruz blanca del maletín es el de primeros auxilios de la
norma ISO 7010, no la cruz roja.

## La costa con muelle — `assets/costa/` (19-oct-2026)

### Barcos y faro: Sketchfab, CC BY 4.0 (atribución obligatoria)

Bajados por Raúl con su cuenta de Sketchfab el 19-oct-2026 (con su permiso), en
`3D-MESHY/descargas/historicos/sketchfab/<modelo>/` con su `licencia.json`. Los prepara
`scripts/costa/preparar-sketchfab.mjs`, que no descarga ni ejecuta nada de los modelos. CC BY 4.0
(https://creativecommons.org/licenses/by/4.0/) exige citar título, autor, fuente y licencia, y decir qué
se cambió: todo eso está aquí, en `config/costa.ts` (`AMARRES[].licencia`, `MODELO_FARO.licencia`) y
**a la vista en el juego**: en la placa de créditos del estribo del muelle (`PlacaDeCreditos.tsx`, con páginas desde el 20-oct) y en la placa de amarre de cada barco (`PlacasDelPuerto.tsx`, `config/puerto.ts`).

| Archivo | Título y enlace | Autor | Licencia | Cambios |
|---|---|---|---|---|
| `barco-pinta.{pc,l1,movil}.glb` (desde el 20-oct; antes `barco-carabela`) | «Caravel Ship» — https://sketchfab.com/3d-models/c9819a0e8a57429f888b74978219fb7a | suttonj94 | CC BY 4.0 | Pasa a ser **la Pinta**: escalado a metros (×0,068 y ×1,12 en la config), sin la animación del gallardete, transparencias como recorte, **la vela mayor repintada** (fuera el emblema de las aves y la cruz de la Orden de Cristo, que son portugueses; dentro, una cruz roja castellana: `scripts/costa/velas-y-jarcia.mjs`), texturas a KTX2 (PC: las originales de 2048 y 1024 en UASTC). Lejos en PC (L1): 39.999 triángulos y un atlas de 2048 en UASTC. Celular: 15.894 triángulos y un atlas de 1024 |
| `barco-santa-maria.{pc,l1,movil}.glb` | «Santa Maria de Colombo» — https://sketchfab.com/3d-models/f7d1489031ce475084e3260a0d0ba289 | 9of9 | CC BY 4.0 | Centrado y apoyado en la flotación, sin los trozos sueltos del escaneo, normales calculadas, texturas a KTX2 (PC: las cuatro originales de 4096 en UASTC). **Reparada el 20-oct** (`scripts/costa/santa-maria.mjs`): fuera la lona y el cielo que el escaneo mezcló en las velas aferradas y su jarcia cortada; **revisión del 20-oct**: también las perchas que venían envueltas en esa lona en jirones (vergas, masteleros, bauprés, entena, asta de popa y crucetas) y el fondo roto de la cofa; y, de cerca aún se veían tiras rasgadas, los palos enteros desde la cubierta y los restos de la obencadura y de los brandales: unos 39.000 triángulos. Del escaneo, por encima de la borda, solo queda la pared del tonel de la cofa. Dentro, **obra propia por código** (`velas-y-jarcia.mjs`, sin licencia ajena): las perchas rehechas, los palos (con el grueso medido del escaneo), el fondo de la cofa, velas aferradas y desplegadas, jarcia, el estandarte de Castilla y León y la bandera de la expedición, con su lona de 2048. En el juego, el costado de estribor (gris por la luz del cielo horneada en la toma) se equilibra al tono pardo del otro y recibe un rebote cálido a la sombra (`luzHorneada`, sin tocar la textura). Lejos en PC (L1): 53.120 triángulos y un atlas de 2048 × 3072 en UASTC. Celular: 38.117 triángulos y un atlas de 1024 × 1536 |
| `faro-callao.{pc,movil}.glb` | «Callao lighthouse» — https://sketchfab.com/3d-models/95e32a01b4bc4bf29745b7b88101a0df | maigz | CC BY 4.0 | Girado 90° (la cola de la base hacia el muelle), texturas a KTX2 (PC: las originales en UASTC). Celular: sus seis materiales en un atlas de 1024 |

En los tres: transformaciones horneadas, cuantizado y comprimido con meshopt (sin pérdida visible).

### El fondeadero del puerto: Poly Haven, CC0 (20-oct-2026)

Bajados con el permiso de Raúl («todo lo que encuentres», 19-oct) en
`3D-MESHY/descargas/historicos/puerto/polyhaven/<modelo>/` (glTF de 4K, con su `licencia.json`). Los prepara
`scripts/costa/preparar-polyhaven.mjs`, que no descarga ni ejecuta nada. CC0 (https://polyhaven.com/license)
no obliga a citar, **pero se cita igual**, en la placa del fondeadero (punta este del cabezal) y en la página
«Fondeadero» de la placa de créditos. Autores: James Ray Cock (modelo, texturas y limpieza), Rico Cilliers
(velas y texturas) y Nicolò Zubbini (modelo original); en la pinaza, además, Yann Kervran (jarcia).

| Archivo | Título y enlace | Licencia | Cambios |
|---|---|---|---|
| `flota-holandesa.pc.gltf` (+ su `.bin` y 9 `.ktx2` sellados) | «Dutch Ship Medium» — https://polyhaven.com/a/dutch_ship_medium y «Dutch Ship Large 01» — https://polyhaven.com/a/dutch_ship_large_01, **juntos** | CC0 1.0 | Los dos en un paquete con dos nodos y UNA copia de sus nueve texturas (son las mismas, comprobado byte a byte): girados (proa a +Z), apoyados en la quilla, todos sus triángulos (179.778) y las nueve texturas originales de 4096 en UASTC |
| `flota-holandesa.lejos.gltf` (+ 9 `flota-holandesa-lejos.*.ktx2` sellados; el `.bin`, el del anterior) | ídem | CC0 1.0 | **El mismo L0 sin el nivel de 4096 de sus texturas** (desde el 20-oct, `scripts/costa/l0-lejano.mjs`): los mismos triángulos y los mismos bytes UASTC de cada mip de 2048 hacia abajo, sin recomprimir. Lo usan los barcos fondeados, que nunca quedan a menos de 70 m de un suelo: desde ahí la GPU no lee ese nivel y el dibujo es idéntico (medido en 4K: diferencia media 0,00) |
| `flota-holandesa.{l1,movil}.glb` | ídem | CC0 1.0 | Simplificados (L1: 49.122 el Large 01 y 30.682 el Medium; celular: 14.724 y 9.270), con el color (y la oclusión horneada) a 1024 en UASTC o a 512 en ETC1S |
| `pinaza.{l1,movil}.glb` | «Ship Pinnace» — https://polyhaven.com/a/ship_pinnace | CC0 1.0 | Apoyada en la quilla, sin el interior (no se ve desde fuera), simplificada (L1: 55.457; celular: 14.962) y con el color a 1024 o 512. Sin paquete de PC completo: sus 21 texturas de 4096 serían 448 MiB de memoria de vídeo, más que todo el cupo de barcos de la gama ultra (260) |

Los impostores del puerto (`impostores-puerto.{pc,movil}.ktx2`) son vistas de estos mismos barcos (y de la
Santa María y la Pinta) horneadas por `scripts/costa/hornear-impostores.mjs`: heredan sus licencias.

### Botes y rocas: Kenney, CC0

Derivados del **Pirate Kit 2.1 de Kenney** (www.kenney.nl, CC0 1.0: `assets-fuente/kenney/pirate-kit/License.txt`)
por `scripts/costa/preparar-barcos.mjs`: la paleta `colormap.png` metida dentro del GLB, los nodos unidos en
una malla, reordenados, cuantizados y comprimidos con meshopt; la paleta de los botes, envejecida (menos
saturación y brillo) por `preparar-sketchfab.mjs --solo=botes`. Del zip solo se extrajeron (con `tar`) los GLB
y la licencia; el zip, con su sha256, está en `3D-MESHY/descargas/MANIFIESTO.json`. CC0 permite modificarlos;
se atribuye igual (también en la placa).

| Archivo | Original del kit | Autor | Licencia | Uso |
|---|---|---|---|---|
| `bote-grande.glb`, `bote-chico.glb` | `boat-row-large.glb`, `boat-row-small.glb` | Kenney | CC0 1.0 | Botes del cabezal |
| `rocas.glb` | `rocks-a/b/c.glb` | Kenney | CC0 1.0 | Promontorios y escollera (con la textura `piedra`) |

Los barcos y el faro provisionales del kit (`ship-large`, `ship-medium`, `tower-complete-large`) se
retiraron el 19-oct-2026.

El mar, la arena, el adoquín del celular, la madera del muelle, las lomas lejanas y el oleaje no usan ningún
fichero de terceros: salen de código y de una semilla (`lib/agua/`, `lib/costa/materiales.ts`,
`lib/audio/recetas.ts`).

## Mobiliario — `assets/props/mobiliario/` (21-oct-2026)

`kit-mobiliario.<sello>.glb`: los muebles del hospital-escuela, el Centro de Desastres, el museo y las aulas del
Aulario, en un GLB sin texturas (color por vértice), hecho por `scripts/mobiliario/empaquetar.mjs` (catálogo en
`lib/mobiliario/catalogo.ts`). Dos orígenes:

- **Propios** (62 muebles: la cama hospitalaria, las camillas, el monitor, los carros, el quirófano, los equipos de
  imagen y de laboratorio, los pupitres, los mostradores, las bancas, las sillas…): hechos por código en
  `lib/mobiliario/propios.ts`, sin material de terceros.
- **Kenney, Furniture Kit 2.0** (www.kenney.nl/assets/furniture-kit, CC0 1.0, creado el 20-10-2018; licencia en
  `assets-fuente/kenney/furniture-kit/License.txt`, sha256 `bc0de1a0…8b29`). Zip descargado el 21-oct-2026,
  `kenney_furniture-kit.zip`, sha256 `e67652d0932cee41683f74711c03d3e192a2af9979ef8e6b237711f5482d46b0`. Se usan 9 de
  sus 140 modelos (sus GLB de origen, en `assets-fuente/kenney/furniture-kit/Models/GLTF format/`): recoloreados a la
  paleta del campus (su tapiz rojo pasa a azul: nada rojo en el Centro, Ley 31739), con los materiales pasados a
  color por vértice, unidos y llevados a medida real. CC0 permite modificarlos; se atribuye igual.

| Mueble del kit | Original de Kenney | Autor | Licencia |
|---|---|---|---|
| `silla` | `chairModernCushion.glb` | Kenney | CC0 1.0 |
| `sillon` | `loungeChair.glb` | Kenney | CC0 1.0 |
| `escritorio-pc` | `desk.glb`, `computerScreen.glb`, `computerKeyboard.glb` | Kenney | CC0 1.0 |
| `mesa` | `table.glb` | Kenney | CC0 1.0 |
| `refrigeradora` | `kitchenFridgeLarge.glb` | Kenney | CC0 1.0 |
| `planta` | `pottedPlant.glb` | Kenney | CC0 1.0 |
| `papelera` | `trashcan.glb` | Kenney | CC0 1.0 |

## Otros

- Avatares Rocketbox (`assets/characters/avatar-rb-*`): licencia MIT, texto completo en
  `assets/characters/LICENCIA-ROCKETBOX.txt`.
