← BibliotecaObjetomormon/medieval-sets
Medieval: pueblo, utilería y naturaleza
Obra original de Quaternius ↗
Clonar
fogon pieces add medieval-setsgit clone https://git.fogon.gg/mormon/medieval-sets.gitfogon new medieval-sets --from medieval-setshttps://fogon.gg/piece/36/medieval-pueblo-utileria-y-naturalezaMedieval: pueblo, utilería y naturaleza
474 piezas 3D low-poly de Quaternius, en dominio público (CC0), listas para three.js: un pueblo que se arma por módulos, la utilería para llenarlo y la naturaleza que lo rodea. Más cinco texturas de suelo. Son las mismas con las que está hecho Medival.

En la demo: elegí un kit arriba, buscá por nombre y tocá una pieza para verla (arrastrá para girar, la rueda acerca; las flechas ↑↓ recorren la lista). Abajo quedan su tamaño en metros y la línea de código que la pone en tu escena (un clic la copia). En «Escena» hay una calle armada solo con estas piezas. La luz (estudio, día, atardecer), el giro y la grilla de 1 m están en los controles.
Los kits
| Kit | Piezas | Qué hay |
|---|---|---|
village (pueblo) | 176 | paredes de revoque y de piedra (lisas, con puerta, con ventana), esquinas, pisos, techos de tejas de 4×4 a 8×14 m y sus frentes, balcones, aleros, escaleras, puertas, ventanas y postigos, chimeneas, cercos, enredaderas, un carro |
props (utilería) | 132 | yunque, barriles, cajones, bolsas, estandartes, camas, mesas, sillas, estantes, libros, velas, candelabros, faroles, armas, escudo, ollas, pociones, monedas, puestos de mercado, una fogata, platos de comida, pescados, minerales y vetas, un árbol gigante |
nature (naturaleza) | 166 | árboles (comunes, arces, abedules, pinos, cerezos, retorcidos, secos), cada uno con su versión _LOD; arbustos con y sin flores, pasto, tréboles, flores, helechos, hongos, rocas, piedritas, losas de camino |
| suelos | 5 | dirt (tierra), grass (pasto), grass_dry (pasto seco), rock (piedra), snow (nieve): color + mapa de normales, 1024 px, se repiten |
Todo en metros, +Y arriba. Las piezas del pueblo encajan en una grilla de 2 m: una pared mide 2 m de ancho y 3,1 m de alto, centrada en x = 0, su cara de afuera mirando a +Z. Un piso de la casa son 3 m.
Cómo se usa en un juego
fogon pieces add medieval-sets
Eso trae client/medieval-sets/kits.ts (el cargador, solo código: unos pocos KB) y agrega three.js al package.json. Los modelos no viajan con el juego: se cargan desde la demo publicada de esta pieza (https://play.fogon.page/medieval-sets/medieval/), que los sirve a cualquier juego de Fogón.
import * as THREE from "three";
import { loadKits, piece, pieceNow, pieceLOD, bounds, groundPlane } from "./medieval-sets/kits";
// Una pared con puerta. `piece` baja su kit la primera vez (village.glb: 2,8 MB) y después clona al instante.
scene.add(await piece("village", "Wall_Plaster_Door_Round"));
// Para muchas: primero los kits que vas a usar, de una, y después pieceNow (sin await) en un bucle.
await loadKits(["props", "nature"], { onProgress: (f) => console.log(`${Math.round(f * 100)}%`) });
for (let i = 0; i < 20; i++) {
const barrel = pieceNow("props", "Barrel");
barrel.position.set(i * 0.8, 0, 0);
barrel.rotation.y = Math.random() * Math.PI * 2;
scene.add(barrel);
}
// Un árbol que de lejos (más de 45 m) pasa a su versión liviana.
scene.add(await pieceLOD("nature", "U_PineTree_2", 45));
// Un suelo de 40 × 40 m de pasto (la textura se repite cada 4 m), y la caja de una pieza para chocar contra ella.
scene.add(groundPlane("grass", 40));
const box = bounds("props", "Stall_Cart_Empty"); // { min: [x, y, z], max: [x, y, z] }
Para que se vean bien: sombras prendidas (renderer.shadowMap.enabled = true y una DirectionalLight con castShadow) y algo de luz ambiente (HemisphereLight, o scene.environment con RoomEnvironment). Las piezas ya vienen con castShadow y receiveShadow.
Lo que exporta kits.ts
loadKits(kits?, { base?, onProgress?, shadows? }) | baja los kits (los tres si no decís cuáles) en paralelo. Llamarla de nuevo no baja nada |
piece(kit, name) | una copia nueva de la pieza (Promise<Object3D>); si su kit no estaba, lo baja |
pieceNow(kit, name) | lo mismo, sin esperar: el kit tiene que estar cargado |
pieceLOD(kit, name, far = 45) | un THREE.LOD con la pieza y su _LOD desde far metros |
pieceNames(kit) · bounds(kit, name) · size(kit, name) | los nombres de A a Z, la caja y el tamaño en metros (del catálogo: no hace falta bajar los modelos) |
groundTexture(name) · groundPlane(name, size, tile) | las texturas de suelo (compartidas) o un plano ya armado |
loadCatalog() · setBase(url) · isLoaded(kit) | el catálogo solo, de dónde se cargan los archivos, si un kit ya está |
disposeGround(mesh) · disposeKits() | liberar un suelo, o todo lo que el cargador tiene |
Las copias comparten geometría y materiales con el kit: mil barriles cuestan un barril de memoria, y sacar uno de la escena no necesita nada más. Si cambiás el material de una copia cambian todas: cloná el material primero para un color propio.
Usar los archivos sin depender de la demo
Para tenerlos dentro de tu juego (sin conexión, o servidos por vos), bajalos a public/medieval/ y decíselo al cargador una vez, antes de cargar nada:
mkdir -p public/medieval/textures && cd public/medieval
B=https://play.fogon.page/medieval-sets/medieval
for f in catalog.json village.glb props.glb nature.glb; do curl -fO $B/$f; done
for t in dirt dirt_n grass grass_n grass_dry rock rock_n snow snow_n; do curl -fo textures/ground_$t.webp $B/textures/ground_$t.webp; done
await loadKits(undefined, { base: "./medieval/" });
Son unos 15 MB (village 2,8 · props 3,7 · nature 7,4 · texturas 1,9). Si usás un solo kit, bajá solo ese .glb y el catálogo.
Límites
- Son mallas estáticas: no hay física ni colisiones. Para chocar, usá
bounds(una caja por pieza) o armá tus formas. - No hay animaciones ni personajes: eso no viene en esta pieza.
- Los árboles tienen dos versiones: la normal y la
_LOD(menos triángulos), para lo que está lejos. - Algunas piezas cuelgan de su punto de apoyo (las armas, de su empuñadura; los arbustos tienen raíces bajo el suelo): mirá su caja (
bounds) antes de apoyarlas. - Las hojas usan texturas recortadas (alpha test). El cargador les arregla un borde blanco que traen de fábrica: si cargás los
.glbcon tu propio código, las hojas van a tener ese borde. - Los archivos vienen comprimidos con meshopt: el cargador ya lo resuelve; con otro motor hace falta su decodificador.
Créditos y licencia
Modelos de Quaternius (quaternius.com), de sus packs Medieval Village MegaKit, Fantasy Props MegaKit, Stylized Nature MegaKit y Ultimate Stylized Nature, en dominio público (CC0). Unas pocas piezas de la utilería se hicieron para Medival (la fogata, la leña, los platos y guisos, los pescados, la caña, los minerales y sus vetas, el árbol gigante, la espada de fresno) y las versiones _LOD de los árboles las armó su compilación de modelos: todo eso también es CC0. Publicadas desde Medival. No hace falta dar crédito, pero se agradece.
Elegí un archivo.
| Versión | Cuándo | Peso | Commit |
|---|---|---|---|
| v1 en la demo | 11 de nov de 2026 | 16.5 MB | 38814c3 |
Todavía nadie publicó una versión hecha a partir de esta pieza.
Armá el pedido para tu agente
Elegí qué querés hacer, copiá el pedido y pegáselo a tu IA (Claude, ChatGPT, Codex…). Ella hace el resto.