{"data":{"id":"144","slug":"medieval-tournament-and-jousting-ground","title":"Tournament Ground On The Day","summary":"Walk a full medieval tournament ground: the tilt with its barrier and grandstands down both sides, a royal box and herald platform, an archery range, a melee ring, an armoury corner and a camp of open pavilions.","url":"https://3dassets.dev/demos/medieval-tournament-and-jousting-ground","coverUrl":"https://cdn.3dassets.dev/media/medieval-tournament-and-jousting-ground-demo-1.png","featured":true,"pack":{"slug":"medieval-tournament-and-jousting-ground","title":"Medieval Tournament and Jousting Ground","url":"https://3dassets.dev/packs/medieval-tournament-and-jousting-ground","summary":"A whole jousting ground: the tilt and the lists, grandstands and a royal box, blank heraldry, tourney arms, a quintain and a tournament camp. Every shield and banner ships blank; no people and no animals.","assetCount":66,"totalBytes":2405384,"starterScene":{"slug":"medieval-tournament-and-jousting-ground--10f3fa4c-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/37252/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground--10f3fa4c-starter-scene","fileSize":1199224}},"placementCount":464,"assetCount":65,"spawn":{"position":[-19.6,0,0],"yaw":90},"publishedAt":"2026-09-12T05:07:18.110Z","updatedAt":"2026-09-12T05:07:18.111Z","description":"A 56 by 44 m tournament ground inside a closed fence of lists, laid out for the day of the meeting.\n\nThe tilt runs the whole length of the middle on churned mud, eight barrier sections between two end posts, with a lance rack at each end and whole and shattered lances lying along the run. Six grandstands face it from each side, open fronted so you can walk in and sit down, with the royal box open on three sides under its canopy at the centre of the south rail and the herald platform facing it from the north. Banner poles and pennant lines run the whole enclosure, gonfalon frames flank the rails, and torch posts and braziers line the tilt.\n\nThe head of the lists at the west end holds the challengers shields and lance racks, a dressed harness, the marshals platform, the quintain and two pells. An archery range sets four straw butts against marker posts along the north west fence. A ring of hurdles at the east end is the melee ground, with blunted weapon racks and pells beside it. The armoury and farrier corner fills the south west band with armour stands, helms, shield and lance racks, the anvil, the tool chest and the whetstone wheel. The camp runs along the north: four pavilions standing open with a harness or a bench in each doorway, tack racks, barding stands, saddle trestles, squires benches, hay and feed. The crowd side behind the south stands trades from three stalls, a cook fire, trestle tables with bread and ale, a coin table and the stocks.\n\n**What moves.** The quintain arm spins on its post and its sandbag swings from the arm as a child node. The lists gates swing on their hinge posts. The whetstone wheels turn, the cook fire spit turns, the stocks board lifts, the chest and crate lids lift, and the baggage cart wheels roll. Clips play as you come within a few metres.\n\n**What does not move, and why.** Banner and tent fabric, guy ropes, pennant lines, awnings, and the flames in every brazier, torch and cook fire are static: flexible material needs a joint per element and fire needs a shader, and neither is reachable with one rigid node transform. There are no people and no animals anywhere in it, because this library has no skinned meshes; the barding stands and saddle trestles carry the tack on frames instead.\n\n**Heraldry.** Every shield, banner, gonfalon and pennant in the pack is blank, apart from one shield carrying an invented abstract chevron. Nothing here bears the arms of any real family, order or institution, so you can letter your own.\n\nIt places all 65 models of the pack, so the first load pulls the whole pack down. That is the trade for a ground that reads as a place rather than a lineup.","scene":{"version":1,"spawn":{"position":[-19.6,0,0],"yaw":90},"bounds":{"min":[-28.5,0,-24.5],"max":[28.5,9,24.5]},"ground":{"style":"none"},"environment":{"preset":"outdoor","light":"day","shadows":true},"placements":[{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-24,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-24,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[-24,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[-24,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-24,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-24,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-16,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-16,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[-16,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[-16,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-16,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-16,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-8,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-8,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[-8,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[-8,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-8,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[-8,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[0,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[0,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[0,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[0,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[0,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[0,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[8,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[8,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[8,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[8,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[8,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[8,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[16,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[16,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[16,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[16,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[16,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[16,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[24,0,-20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[24,0,-12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[24,0,-4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","position":[24,0,4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[24,0,12],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","position":[24,0,20],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[-16,0,-2.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[-14,0,1.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[-9,0,-1.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[-4,0,2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[1,0,-1.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[6,0,1.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[11,0,-2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","position":[15,0,1.5],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","position":[-27.15,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","position":[27.15,0,-21.65],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","position":[27.15,0,21.65],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","position":[-27.15,0,21.65],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-25.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-25.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-22.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-22.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-19.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-19.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-16.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-16.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-13.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-13.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-10.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-10.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-7.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-7.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","position":[-4.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","position":[-4.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-1.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-1.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[1.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[1.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","position":[4.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","position":[4.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[7.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[7.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[10.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[10.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[13.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[13.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[16.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[16.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[19.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[19.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[22.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[22.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[25.5,0,-21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[25.5,0,21.65],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,-19.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,-19.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,-16.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,-16.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-27.15,0,-13.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[27.15,0,-13.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,-10.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,-10.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,-7.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,-7.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-27.15,0,-4.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[27.15,0,-4.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,-1.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,-1.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,1.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,1.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-27.15,0,4.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[27.15,0,4.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,7.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,7.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,10.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,10.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[-27.15,0,13.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","position":[27.15,0,13.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,16.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,16.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[-27.15,0,19.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","position":[27.15,0,19.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[-14,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[-10,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[-6,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[-2,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[2,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[6,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[10,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","position":[14,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-e-54dde689","position":[-16.8,0,0],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-tilt-barrier-e-54dde689","position":[16.8,0,0],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[-19,0,-9.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[-19,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[-19,0,9.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[-19,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[-13,0,-9.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[-13,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[-13,0,9.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[-13,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[-7,0,-9.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[-7,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[-7,0,9.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[-7,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[7,0,-9.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[7,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[7,0,9.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[7,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[13,0,-9.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[13,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[13,0,9.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[13,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[19,0,-9.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[19,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","position":[19,0,9.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","position":[19,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","position":[-22.66,0,-11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","position":[22.66,0,-11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","position":[-22.66,0,11.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","position":[22.66,0,11.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-royal-box-2748e366","position":[0,0,-10.5],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-heralds-platfo-c66eb977","position":[0,0,10.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-19,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-19,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-16,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-16,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-13,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-13,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-10,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-10,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[10,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[10,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[13,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[13,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[16,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[16,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[19,0,-6.7],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[19,0,6.7],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-21,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-21,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","position":[-14,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","position":[-14,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-7,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-7,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","position":[0,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","position":[0,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[7,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[7,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","position":[14,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","position":[14,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[21,0,-20.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[21,0,20.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-25.9,0,-17],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-25.9,0,-10],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-25.9,0,-3],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-25.9,0,4],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-25.9,0,11],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[-25.9,0,18],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[25.9,0,-18],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[25.9,0,-11],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[25.9,0,11],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","position":[25.9,0,18],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-17.5,0,-19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-17.5,0,19.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-10.5,0,-19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-10.5,0,19.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-3.5,0,-19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-3.5,0,19.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[3.5,0,-19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[3.5,0,19.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[10.5,0,-19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[10.5,0,19.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[17.5,0,-19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[17.5,0,19.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-26.4,0,-14.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-26.4,0,-7.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-26.4,0,0.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-26.4,0,7.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-26.4,0,14.5],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[26.4,0,-14.5],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[26.4,0,-7.5],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[26.4,0,7.5],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[26.4,0,14.5],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-13.5,0,-7.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-13.5,0,7.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-6.5,0,-7.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[-6.5,0,7.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[6.5,0,-7.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[6.5,0,7.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[13.5,0,-7.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","position":[13.5,0,7.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","position":[-5,0,-6.7],"rotation":12},{"asset":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","position":[5,0,-6.7],"rotation":-12},{"asset":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","position":[-5,0,6.7],"rotation":168},{"asset":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","position":[5,0,6.7],"rotation":-168},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-15,0,-5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-15,0,5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-9,0,-5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-9,0,5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-3,0,-5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-3,0,5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[3,0,-5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[3,0,5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[9,0,-5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[9,0,5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[15,0,-5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[15,0,5.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[-8.2,0,-7.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[8.2,0,-7.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[-8.2,0,7.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[8.2,0,7.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-shield-rack-02af235a","position":[-18.7,0,4],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-shield-rack-02af235a","position":[-18.7,0,-4],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lance-rack-661cfa58","position":[-20.6,0,3.1],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lance-rack-661cfa58","position":[-20.6,0,-3.1],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lance-rack-661cfa58","position":[20.6,0,2.3],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-lance-rack-661cfa58","position":[20.6,0,-2.3],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-shield-on-stan-17962b13","position":[-18.6,0,6.2],"rotation":70},{"asset":"medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","position":[-18.8,0,-6.4],"rotation":110},{"asset":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","position":[-22.9,0,3.6],"rotation":70},{"asset":"medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","position":[-24.6,0,4.4],"rotation":40},{"asset":"medieval-tournament-and-jousting-ground-quintain-9452f23b","position":[-22.6,0,8.2],"rotation":40},{"asset":"medieval-tournament-and-jousting-ground-pell-post-06bcf469","position":[-25.4,0,6.2],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pell-post-06bcf469","position":[-24.8,0,10.8],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-pla-9d62299e","position":[-22.9,0,-2.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-pla-9d62299e","position":[-22.9,0,0.4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-tournament-pla-9d27e039","position":[-24.95,0,-2.6],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-22.9,0.6,-3.2],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-tally-board-ad137794","position":[-22.9,0.6,1.3],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-shield-rack-em-75a89c26","position":[-21.6,0,-6],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-whetstone-whee-2100d4db","position":[-25.6,0,1.4],"rotation":-40},{"asset":"medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","position":[-25.8,0,-6.4],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[26.418,0,0],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[25.534,0,2.134],"rotation":45},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[23.4,0,3.018],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[21.266,0,2.134],"rotation":-45},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[20.382,0,0],"rotation":-90},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[21.266,0,-2.134],"rotation":-135},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[23.4,0,-3.018],"rotation":-180},{"asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","position":[25.534,0,-2.134],"rotation":-225},{"asset":"medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","position":[23.4,0,5.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pell-post-06bcf469","position":[25.9,0,7.4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","position":[23.4,0,-5.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-pell-post-06bcf469","position":[25.9,0,-7.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[18.2,0,6.2],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[18.2,0,-6.2],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","position":[-25.8,0,9.6],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","position":[-25.8,0,13.2],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","position":[-25.8,0,16.8],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","position":[-25.8,0,20.4],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","position":[-12.6,0,14.2],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","position":[-12.6,0,17.8],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","position":[-16.4,0,15.6],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","position":[-16.4,0,19.4],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-9.2,0,14.6],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-9.2,0,17],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-pavilion-tent--1b262451","position":[-3.2,0,18.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pavilion-tent--ba3331ba","position":[5.6,0,19],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pavilion-tent--1b262451","position":[14,0,18.6],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-pavilion-tent--ba3331ba","position":[22.6,0,19],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","position":[-3.2,0,17.2],"rotation":172},{"asset":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","position":[14,0,17.2],"rotation":188},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[5.6,0,18.3],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","position":[22.6,0,18.1],"rotation":176},{"asset":"medieval-tournament-and-jousting-ground-hay-rick-65892841","position":[-8.8,0,19.6],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-baggage-cart-ee564549","position":[-6,0,14.2],"rotation":100},{"asset":"medieval-tournament-and-jousting-ground-baggage-cart-ee564549","position":[9.6,0,14],"rotation":250},{"asset":"medieval-tournament-and-jousting-ground-baggage-cart-ee564549","position":[-3.6,0,-13.8],"rotation":80},{"asset":"medieval-tournament-and-jousting-ground-baggage-cart-ee564549","position":[24.4,0,-13.6],"rotation":260},{"asset":"medieval-tournament-and-jousting-ground-merchant-stall-9a839369","position":[-2.4,0,-15.4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-merchant-stall-9a839369","position":[7.2,0,-15.4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-merchant-stall-9a839369","position":[17.8,0,-15.4],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-coin-table-ffee51b3","position":[12.6,0,-15.6],"rotation":15},{"asset":"medieval-tournament-and-jousting-ground-stocks-6c592363","position":[22.8,0,-15],"rotation":-20},{"asset":"medieval-tournament-and-jousting-ground-cook-fire-spit-f45c7b48","position":[2.6,0,-18.8],"rotation":20},{"asset":"medieval-tournament-and-jousting-ground-trestle-table-103bebd0","position":[-4,0,-19],"rotation":5},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[-4.09,0,-18.1],"rotation":5},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[-3.91,0,-19.9],"rotation":5},{"asset":"medieval-tournament-and-jousting-ground-bread-and-pie--92128462","position":[-4,0.79,-19],"rotation":5},{"asset":"medieval-tournament-and-jousting-ground-trestle-table-103bebd0","position":[8.8,0,-19],"rotation":-6},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[8.71,0,-18.1],"rotation":-6},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[8.89,0,-19.9],"rotation":-6},{"asset":"medieval-tournament-and-jousting-ground-bread-and-pie--92128462","position":[8.8,0.79,-19],"rotation":-6},{"asset":"medieval-tournament-and-jousting-ground-trestle-table-103bebd0","position":[15,0,-18.8],"rotation":8},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[14.91,0,-17.9],"rotation":8},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[15.09,0,-19.7],"rotation":8},{"asset":"medieval-tournament-and-jousting-ground-bread-and-pie--92128462","position":[15,0.79,-18.8],"rotation":8},{"asset":"medieval-tournament-and-jousting-ground-trestle-table-103bebd0","position":[21,0,-18.6],"rotation":-4},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[20.91,0,-17.7],"rotation":-4},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[21.09,0,-19.5],"rotation":-4},{"asset":"medieval-tournament-and-jousting-ground-bread-and-pie--92128462","position":[21,0.79,-18.6],"rotation":-4},{"asset":"medieval-tournament-and-jousting-ground-farriers-anvil-b82c546f","position":[-13.6,0,-15.6],"rotation":40},{"asset":"medieval-tournament-and-jousting-ground-farriers-tool--6215e868","position":[-15.2,0,-17.4],"rotation":15},{"asset":"medieval-tournament-and-jousting-ground-whetstone-whee-2100d4db","position":[-11.4,0,-17.8],"rotation":-30},{"asset":"medieval-tournament-and-jousting-ground-squires-work-b-50b50539","position":[-12.2,0,-13.4],"rotation":20},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-7.4,0,-14.8],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-7.4,0,-17.2],"rotation":90},{"asset":"medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","position":[-10.969,0,1.595],"rotation":352},{"asset":"medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","position":[12.358,0,4.102],"rotation":331},{"asset":"medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","position":[8.025,0,1.877],"rotation":339},{"asset":"medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","position":[2.214,0,-3.334],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-lance-shattere-864af08e","position":[15.594,0,-2.397],"rotation":242},{"asset":"medieval-tournament-and-jousting-ground-lance-shattere-864af08e","position":[-14.063,0,-2.16],"rotation":22},{"asset":"medieval-tournament-and-jousting-ground-lance-shattere-864af08e","position":[-15.152,0,2.677],"rotation":293},{"asset":"medieval-tournament-and-jousting-ground-lance-shattere-864af08e","position":[5.625,0,-3.865],"rotation":1},{"asset":"medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","position":[-24.374,0,-7.169],"rotation":104},{"asset":"medieval-tournament-and-jousting-ground-lance-shattere-864af08e","position":[-19.482,0,-17.213],"rotation":214},{"asset":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","position":[-24.588,0,-16.098],"rotation":288},{"asset":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","position":[-25.139,0,-18.388],"rotation":271},{"asset":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","position":[-24.426,0,-20.432],"rotation":245},{"asset":"medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","position":[-16.222,0,-13.984],"rotation":9},{"asset":"medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","position":[-9.029,0,-19.515],"rotation":354},{"asset":"medieval-tournament-and-jousting-ground-shield-rack-02af235a","position":[-22.164,0,-19.369],"rotation":14},{"asset":"medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","position":[-17.243,0,-20.235],"rotation":203},{"asset":"medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","position":[-17.975,0,-14.321],"rotation":118},{"asset":"medieval-tournament-and-jousting-ground-lance-rack-661cfa58","position":[-22.104,0,-14.674],"rotation":14},{"asset":"medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","position":[-11.453,0,-20.41],"rotation":339},{"asset":"medieval-tournament-and-jousting-ground-water-trough-cc49903b","position":[-8.721,0,-16.171],"rotation":82},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-13.772,0,-19.269],"rotation":308},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-23.6,0,-17.786],"rotation":192},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-11.339,0,-15.54],"rotation":95},{"asset":"medieval-tournament-and-jousting-ground-feed-sack-stac-f6ad1489","position":[-25.256,0,-13.568],"rotation":359},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-21.96,0,-17.427],"rotation":161},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-16.784,0,-16.528],"rotation":112},{"asset":"medieval-tournament-and-jousting-ground-tally-board-ad137794","position":[-15.641,0,-19.698],"rotation":293},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-17.445,0,-18.993],"rotation":29},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-26.226,0,-14.561],"rotation":323},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[-19.8,0,-19.536],"rotation":271},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[-19.484,0,-14.589],"rotation":167},{"asset":"medieval-tournament-and-jousting-ground-tack-rack-0a9e68a1","position":[1.803,0,13.115],"rotation":169},{"asset":"medieval-tournament-and-jousting-ground-tack-rack-0a9e68a1","position":[0.979,0,16.055],"rotation":173},{"asset":"medieval-tournament-and-jousting-ground-tack-rack-0a9e68a1","position":[16.697,0,14.305],"rotation":185},{"asset":"medieval-tournament-and-jousting-ground-barding-stand-650755e5","position":[25.037,0,15.298],"rotation":185},{"asset":"medieval-tournament-and-jousting-ground-barding-stand-650755e5","position":[20.987,0,13.974],"rotation":182},{"asset":"medieval-tournament-and-jousting-ground-saddle-trestle-7741271f","position":[9.851,0,19.421],"rotation":172},{"asset":"medieval-tournament-and-jousting-ground-saddle-trestle-7741271f","position":[19.73,0,18.044],"rotation":172},{"asset":"medieval-tournament-and-jousting-ground-squires-work-b-50b50539","position":[-0.859,0,14.529],"rotation":180},{"asset":"medieval-tournament-and-jousting-ground-squires-work-b-50b50539","position":[2.786,0,14.633],"rotation":176},{"asset":"medieval-tournament-and-jousting-ground-whetstone-whee-2100d4db","position":[13.018,0,14.699],"rotation":207},{"asset":"medieval-tournament-and-jousting-ground-farriers-anvil-b82c546f","position":[9.026,0,16.988],"rotation":349},{"asset":"medieval-tournament-and-jousting-ground-farriers-tool--6215e868","position":[25.838,0,13.188],"rotation":1},{"asset":"medieval-tournament-and-jousting-ground-water-trough-cc49903b","position":[19.204,0,15.254],"rotation":86},{"asset":"medieval-tournament-and-jousting-ground-water-trough-cc49903b","position":[2.583,0,18.613],"rotation":100},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-stack-187a267e","position":[5.403,0,14.739],"rotation":258},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-stack-187a267e","position":[18.299,0,20.091],"rotation":9},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[22.995,0,14.646],"rotation":82},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-2.606,0,12.87],"rotation":336},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[17.938,0,18.131],"rotation":360},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[25.816,0,19.406],"rotation":241},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-3.083,0,14.701],"rotation":265},{"asset":"medieval-tournament-and-jousting-ground-feed-sack-stac-f6ad1489","position":[14.451,0,14.662],"rotation":262},{"asset":"medieval-tournament-and-jousting-ground-feed-sack-stac-f6ad1489","position":[24.43,0,12.709],"rotation":87},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[0.983,0,18.754],"rotation":318},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[17.417,0,16.407],"rotation":137},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-0.881,0,13.1],"rotation":332},{"asset":"medieval-tournament-and-jousting-ground-shield-rack-em-75a89c26","position":[21.751,0,16.063],"rotation":171},{"asset":"medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","position":[2.937,0,16.049],"rotation":174},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[0.474,0,17.653],"rotation":181},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[-7.398,0,16.11],"rotation":179},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[10.956,0,16.762],"rotation":28},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[8.396,0,18.385],"rotation":302},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[3.665,0,13.559],"rotation":5},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[8.323,0,20.564],"rotation":257},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[25.707,0,16.898],"rotation":190},{"asset":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","position":[1.545,0,20.795],"rotation":191},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-7.388,0,16.892],"rotation":2},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-6.187,0,18.951],"rotation":267},{"asset":"medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","position":[17.885,0,-20.298],"rotation":309},{"asset":"medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","position":[9.876,0,-15.325],"rotation":307},{"asset":"medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","position":[1.7,0,-15.756],"rotation":335},{"asset":"medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","position":[-0.755,0,-19.092],"rotation":69},{"asset":"medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","position":[24.458,0,-17.493],"rotation":199},{"asset":"medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","position":[12.226,0,-18.026],"rotation":341},{"asset":"medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","position":[-5.134,0,-15.959],"rotation":165},{"asset":"medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","position":[19.06,0,-13.72],"rotation":104},{"asset":"medieval-tournament-and-jousting-ground-bread-and-pie--92128462","position":[4.208,0,-15.395],"rotation":224},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[12.465,0,-20.442],"rotation":139},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[26.131,0,-20.045],"rotation":253},{"asset":"medieval-tournament-and-jousting-ground-tally-board-ad137794","position":[6.148,0,-17.061],"rotation":185},{"asset":"medieval-tournament-and-jousting-ground-tally-board-ad137794","position":[18.337,0,-17.995],"rotation":230},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[25.647,0,-15.968],"rotation":125},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[13.947,0,-14.021],"rotation":272},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[9.817,0,-16.911],"rotation":27},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-6.466,0,-19.365],"rotation":17},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[0.717,0,-13.608],"rotation":131},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[20.621,0,-16.344],"rotation":82},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[6.155,0,-19.187],"rotation":14},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[23.736,0,-19.071],"rotation":158},{"asset":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","position":[20.6,0,-14.023],"rotation":287},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-6.251,0,-16.836],"rotation":93},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[6.896,0,-14.057],"rotation":360},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-2.479,0,-17.085],"rotation":172},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[14.897,0,-15.978],"rotation":338},{"asset":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","position":[16.125,0,-13.917],"rotation":196},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-18.743,0,18.639],"rotation":357},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-23.626,0,17.707],"rotation":345},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-10.308,0,14.506],"rotation":225},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-stack-187a267e","position":[-19.398,0,14.787],"rotation":103},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-14.33,0,18.32],"rotation":356},{"asset":"medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","position":[-22.534,0,15.22],"rotation":150},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-14.593,0,15.987],"rotation":3},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[-21.602,0,18.589],"rotation":48},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[-18.192,0,20.244],"rotation":285},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-17.147,0,16.683],"rotation":3},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-15.906,0,17.553],"rotation":98},{"asset":"medieval-tournament-and-jousting-ground-tally-board-ad137794","position":[-12.763,0,20.242],"rotation":91},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-22.343,0,5.595],"rotation":123},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-22.966,0,-7.347],"rotation":98},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[-20.362,0,5.252],"rotation":102},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[-23.861,0,6.019],"rotation":92},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[-25.352,0,-0.316],"rotation":301},{"asset":"medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","position":[-23.045,0,-5.135],"rotation":92},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[21.229,0,-6.486],"rotation":327},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[23.379,0,-7.18],"rotation":317},{"asset":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","position":[25.791,0,4.345],"rotation":165},{"asset":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","position":[18.678,0,2.489],"rotation":151},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[23.733,0,-1.21],"rotation":287},{"asset":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","position":[20.696,0,4.716],"rotation":239},{"asset":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","position":[18.76,0,-0.82],"rotation":101},{"asset":"medieval-tournament-and-jousting-ground-water-trough-cc49903b","position":[24.358,0,-9.942],"rotation":87},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[2.024,0,-7.41],"rotation":-9},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-0.924,0,-7.467],"rotation":0},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-6.76,0,5.29],"rotation":-4},{"asset":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","position":[-12.487,0,4.748],"rotation":6},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[16.997,0,-5.429],"rotation":343},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-1.22,0,-4.932],"rotation":21},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-0.067,0,7.847],"rotation":311},{"asset":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","position":[-1.17,0,5.151],"rotation":71}],"points":[{"position":[-17.6,0,-1.6],"title":"The head of the lists","text":"The tilt runs the whole length of the ground on churned mud, closed by an end post with a lance rack beside it at each end. Broken lances lie where they fell. Every shield and banner here is blank on purpose.","asset":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614"},{"position":[0,0,-7.7],"title":"The royal box and the stands","text":"Six grandstands a side face the tilt, open fronted so you can walk straight in and sit down. The royal box is open on three sides under its canopy, with the herald platform facing it across the run.","asset":"medieval-tournament-and-jousting-ground-royal-box-2748e366"},{"position":[-21.4,0,7.4],"title":"The quintain","text":"Come within a few metres and the arm turns: the target board swings round the post and the sandbag rides with it as a child node. Two pells stand beside it for foot practice.","asset":"medieval-tournament-and-jousting-ground-quintain-9452f23b"},{"position":[-22.6,0,15.4],"title":"The archery range","text":"Four straw butts on raking trestles along the north west fence, with marker posts setting the shooting line. The rings on each boss are plain circles, not a badge or a device.","asset":"medieval-tournament-and-jousting-ground-archery-butt-d93ed48c"},{"position":[5.4,0,15.4],"title":"The competitors camp","text":"Four pavilions stand with their door flaps rolled and tied open, a harness on a stand or a bench inside each. Tack racks, barding stands, saddle trestles and the farrier corner fill the ground behind them.","asset":"medieval-tournament-and-jousting-ground-pavilion-tent--1b262451"},{"position":[2.6,0,-16.6],"title":"The crowd side","text":"The spit turns over the cook fire, trestle tables run behind the south stands with bread boards and ale, and three stalls trade under their awnings. The stocks stand at the end of the row with a board that lifts.","asset":"medieval-tournament-and-jousting-ground-cook-fire-spit-f45c7b48"},{"position":[19.8,0,0],"title":"The melee ring","text":"A ring of hurdles at the east end for foot combat, with a blunted weapon rack and a pell on each side. The arms on the racks are rebated: no point and no edge.","asset":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc"}],"poster":{"position":[18,1.85,-1.9],"lookAt":[-4,1.05,-0.6]}},"bounds":{"min":[-28.5,0,-24.5],"max":[28.5,9,24.5]},"assets":[{"id":"37187","slug":"medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","title":"Tournament Ground Module (Medieval Tournament and Jousting Ground)","summary":"Eight metre square turf tile with worn earth patches and grass tufts, the tiling floor of a tournament field.","description":"An 8 m square ground tile, 120 mm thick, carrying nine worn earth patches and ten grass tufts raised proud of the turf. Tiles butt edge to edge on an 8 m grid with no gap, so a plot of any size is a rectangle of them. Dimensions 8.00 × 0.28 × 8.00 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","cdnUrl":"https://cdn.3dassets.dev/assets/37187/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tournament-gro-a09cb837","thumbnailUrl":"https://cdn.3dassets.dev/assets/37187/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37187/v1/poster.webp","blurhash":"U6BDo{%M00RRxaf5R*fk00My_LbYM{kDxFae","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13224,"triangles":240,"vertices":560,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-4,-0.000060427989866981835,-4],"max":[4,0.28006956011871376,4]},"sizeMeters":[8,0.28,8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:36.570Z","updatedAt":"2026-09-12T04:48:36.668Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37187/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TournamentGroundModuleMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37187/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37187/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37187/v1/model.glb\" alt=\"Tournament Ground Module (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37187/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37187/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37190","slug":"medieval-tournament-and-jousting-ground-tournament-gro-736353db","title":"Tournament Ground Module Mud (Medieval Tournament and Jousting Ground)","summary":"Eight metre square tile of churned mud with dried ruts, for the run of the tilt and the gateways.","description":"The same 8 m tile with the turf gone: bare earth, eight dried ruts and nine trodden patches. Drop it into a field of turf tiles wherever the ground is worked. Dimensions 8.00 × 0.20 × 8.00 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Functional variant of tournament-ground-module.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tournament-gro-736353db","cdnUrl":"https://cdn.3dassets.dev/assets/37190/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tournament-gro-736353db","thumbnailUrl":"https://cdn.3dassets.dev/assets/37190/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37190/v1/poster.webp","blurhash":"U6Bfwt%L00tR%Lj[NGj?00M|~oM{9baextah","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8540,"triangles":216,"vertices":504,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-4,-0.0001592338994697018,-4],"max":[4,0.19515922674691233,4]},"sizeMeters":[8,0.195,8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:35.755Z","updatedAt":"2026-09-12T04:48:35.852Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37190/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TournamentGroundModuleMudMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37190/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37190/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37190/v1/model.glb\" alt=\"Tournament Ground Module Mud (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37190/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37190/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37188","slug":"medieval-tournament-and-jousting-ground-churned-ground-a455698c","title":"Churned Ground Patch (Medieval Tournament and Jousting Ground)","summary":"Four metre patch of churned earth with six hoof cut ruts, for laying over turf where the running is heaviest.","description":"A 4 m square of churned earth 100 mm thick with six cut ruts and five spoil heaps raised on it. Lay it on top of a turf tile at the ends of the tilt and in front of the gates. Dimensions 4.00 × 0.18 × 4.00 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-churned-ground-a455698c","cdnUrl":"https://cdn.3dassets.dev/assets/37188/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-churned-ground-a455698c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37188/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37188/v1/poster.webp","blurhash":"U5BMi6-o01Rk%2WCRkof00IV~9WU9bt6s,Rj","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":6256,"triangles":144,"vertices":336,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.000090636396865032,-2],"max":[2,0.1800906435494224,2]},"sizeMeters":[4,0.18,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:36.587Z","updatedAt":"2026-09-12T04:48:36.746Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37188/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChurnedGroundPatchMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37188/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37188/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37188/v1/model.glb\" alt=\"Churned Ground Patch (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37188/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37188/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37195","slug":"medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","title":"Lists Fence Corner Post (Medieval Tournament and Jousting Ground)","summary":"Right angle corner newel for the lists fence, with a stone pad, a finial and a blank canvas strip.","description":"The newel that turns the lists fence through 90 degrees: a 300 mm oak post on a stone pad with an iron finial and a blank canvas strip. East and north ports take a fence bay on each arm; rotate it in quarter turns for the other three corners. Dimensions 0.46 × 1.60 × 0.46 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","cdnUrl":"https://cdn.3dassets.dev/assets/37195/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lists-fence-co-480a147b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37195/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37195/v1/poster.webp","blurhash":"U6CsEa_M0000DjkC.7jE0LIU~A?c4nM_-;%g","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":9260,"triangles":124,"vertices":316,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.23000000417232513,0,-0.23000000417232513],"max":[0.23000000417232513,1.600000023841858,0.23000000417232513]},"sizeMeters":[0.46,1.6,0.46],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:40.190Z","updatedAt":"2026-09-12T04:48:40.287Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37195/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ListsFenceCornerPostMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37195/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37195/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37195/v1/model.glb\" alt=\"Lists Fence Corner Post (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37195/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37195/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37192","slug":"medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","title":"Lists Fence Panel (Medieval Tournament and Jousting Ground)","summary":"Three metre post and rail panel that encloses the lists, with capped oak posts and a ground sill.","description":"A 3 m bay of the fence that rings the lists: two capped oak posts, two rails and a ground sill, open enough to watch through from outside. West and east ports meet on the 3 m fence grid. Dimensions 3.12 × 1.26 × 0.26 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","cdnUrl":"https://cdn.3dassets.dev/assets/37192/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lists-fence-pa-23344aa8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37192/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37192/v1/poster.webp","blurhash":"UGD+PDtP%M%KtQ~Bxtt60Mt7xZjbe=EMoLfk","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5660,"triangles":84,"vertices":196,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.559999942779541,-0.000008221657365581336,-0.13006744113509647],"max":[1.559999942779541,1.2600082121206224,0.13006744113509647]},"sizeMeters":[3.12,1.26,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:39.283Z","updatedAt":"2026-09-12T04:48:39.399Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37192/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ListsFencePanelMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37192/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37192/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37192/v1/model.glb\" alt=\"Lists Fence Panel (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37192/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37192/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37193","slug":"medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","title":"Lists Fence Panel Draped (Medieval Tournament and Jousting Ground)","summary":"Lists fence bay dressed for the day with a blank valance and four plain pennants on the top rail.","description":"The same 3 m bay dressed for a tournament: a blank blue valance with five tails hung under the top rail and four plain canvas pennants along it. No charge, badge or device is painted on either; the cloth ships blank for a consumer to letter. Dimensions 3.12 × 1.38 × 0.26 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Cosmetic variant of lists-fence-panel.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","cdnUrl":"https://cdn.3dassets.dev/assets/37193/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lists-fence-pa-60d0affc","thumbnailUrl":"https://cdn.3dassets.dev/assets/37193/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37193/v1/poster.webp","blurhash":"UEDlvMtk$J%Kct~Vs8n#00XVtSVYiGE3b{NK","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11032,"triangles":168,"vertices":396,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.559999942779541,-0.000008221657365581336,-0.13006744113509647],"max":[1.559999942779541,1.379929519990804,0.13006744113509647]},"sizeMeters":[3.12,1.38,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:39.383Z","updatedAt":"2026-09-12T04:48:39.489Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37193/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ListsFencePanelDrapedMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37193/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37193/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37193/v1/model.glb\" alt=\"Lists Fence Panel Draped (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37193/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37193/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37194","slug":"medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","title":"Lists Fence Gate (Medieval Tournament and Jousting Ground)","summary":"Three metre lists gate with a braced oak leaf that swings clear on its own hinge post.","description":"The way into the lists on the 3 m fence grid: two coned gate posts, a ground sill and a braced 2.6 m oak leaf with an iron latch, hinged on the west post. The leaf is one node on the hinge line. Dimensions 3.18 × 1.76 × 0.28 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips open, close turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","cdnUrl":"https://cdn.3dassets.dev/assets/37194/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lists-fence-ga-1369e268","thumbnailUrl":"https://cdn.3dassets.dev/assets/37194/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37194/v1/poster.webp","blurhash":"UBDbyPE39a58Sd~Abc9b01-n?G%1%2Iqe.-n","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11592,"triangles":168,"vertices":374,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.590000033378601,0.00005796192715890047,-0.13858577518018997],"max":[1.590000033378601,1.759942028536098,0.13858577518018997]},"sizeMeters":[3.18,1.76,0.277],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:38.485Z","updatedAt":"2026-09-12T04:48:38.644Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37194/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ListsFenceGateMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37194/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37194/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37194/v1/model.glb\" alt=\"Lists Fence Gate (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37194/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37194/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37189","slug":"medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","title":"Tilt Barrier Section (Medieval Tournament and Jousting Ground)","summary":"Four metre section of the tilt: a cloth faced barrier on oak posts with rear braces and foot sills.","description":"One 4 m bay of the barrier that separates the two runs of a joust. A cloth covered board 980 mm high sits between oak posts on a kicking rail, with three face battens, a foot sill and a raked brace behind each post. West and east ports meet on the 4 m tilt grid. Dimensions 4.04 × 1.24 × 1.12 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","cdnUrl":"https://cdn.3dassets.dev/assets/37189/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tilt-barrier-s-11f47614","thumbnailUrl":"https://cdn.3dassets.dev/assets/37189/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37189/v1/poster.webp","blurhash":"U7C6fJ_M00%JIp~V?aIV009F_3o#xt0KDitS","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15036,"triangles":264,"vertices":616,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.0199999809265137,0.000047003272964585285,-0.9988482119985364],"max":[2.0199999809265137,1.2399530062637787,0.12008911291375007]},"sizeMeters":[4.04,1.24,1.119],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:36.685Z","updatedAt":"2026-09-12T04:48:36.794Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37189/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TiltBarrierSectionMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37189/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37189/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37189/v1/model.glb\" alt=\"Tilt Barrier Section (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37189/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37189/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37191","slug":"medieval-tournament-and-jousting-ground-tilt-barrier-e-54dde689","title":"Tilt Barrier End Post (Medieval Tournament and Jousting Ground)","summary":"Capped end post for the tilt with a stone pad, an iron finial and a blank canvas panel.","description":"The post that closes each end of the tilt: a 400 mm oak newel on a stone pad with a rear brace, an iron ball finial and a blank canvas panel hung on the field side for a marshal to letter. Its single port meets a barrier section on the tilt grid; rotate it a half turn for the far end. Dimensions 0.62 × 2.10 × 1.26 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tilt-barrier-e-54dde689","cdnUrl":"https://cdn.3dassets.dev/assets/37191/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tilt-barrier-e-54dde689","thumbnailUrl":"https://cdn.3dassets.dev/assets/37191/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37191/v1/poster.webp","blurhash":"UDB:KZ~V00004.M|-:%257M{-T-pR4M{t8%M","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11056,"triangles":148,"vertices":366,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.3100000023841858,-0.000009460978351624738,-0.9500051520934341],"max":[0.3100000023841858,2.0999999046325684,0.3100000023841858]},"sizeMeters":[0.62,2.1,1.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:38.858Z","updatedAt":"2026-09-12T04:48:38.955Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37191/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TiltBarrierEndPostMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37191/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37191/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37191/v1/model.glb\" alt=\"Tilt Barrier End Post (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37191/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37191/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37200","slug":"medieval-tournament-and-jousting-ground-spectator-stan-554097b3","title":"Spectator Stand Lower Tier (Medieval Tournament and Jousting Ground)","summary":"Six metre open fronted stand of two bench tiers on a braced timber frame, the front row of a tournament grandstand.","description":"The ground tier of a grandstand: 6 m of planked footway and two bench tiers at 750 and 1,300 mm on a braced frame, open to the field with a low back board. West and east ports meet on a 6 m grid, and an upper tier sits directly behind it. Dimensions 6.00 × 2.50 × 2.41 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-spectator-stan-554097b3","cdnUrl":"https://cdn.3dassets.dev/assets/37200/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-spectator-stan-554097b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/37200/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37200/v1/poster.webp","blurhash":"U3F5HNo|00RjIB~AOW0N009a^*Om~pRQIVb[","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14464,"triangles":288,"vertices":672,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-3,-0.000007629627368999081,-1.219916992038411],"max":[3,2.500007629627369,1.1898352095855729]},"sizeMeters":[6,2.5,2.41],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:42.281Z","updatedAt":"2026-09-12T04:48:42.388Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37200/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SpectatorStandLowerTierMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37200/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37200/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37200/v1/model.glb\" alt=\"Spectator Stand Lower Tier (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37200/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37200/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37201","slug":"medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","title":"Spectator Stand Upper Tier (Medieval Tournament and Jousting Ground)","summary":"Six metre raised stand of two bench tiers at 1.85 and 2.4 m with a front breast board, standing behind the lower tier.","description":"The raised tier of a grandstand: two bench rows at 1,850 and 2,400 mm on a cross braced frame, with a breast board along the open front and a back board behind the top row. West and east ports meet on the same 6 m grid as the lower tier. Dimensions 6.00 × 3.90 × 2.42 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","cdnUrl":"https://cdn.3dassets.dev/assets/37201/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-spectator-stan-99d4b2c9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37201/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37201/v1/poster.webp","blurhash":"U5GRO[9H02rv=r~U590M00IoIpE%W.aOM|t7","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15928,"triangles":324,"vertices":749,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-3,0.00003514396961334931,-1.2300894001592784],"max":[3,3.8999330847245766,1.190089438306251]},"sizeMeters":[6,3.9,2.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:42.487Z","updatedAt":"2026-09-12T04:48:42.579Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37201/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SpectatorStandUpperTierMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37201/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37201/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37201/v1/model.glb\" alt=\"Spectator Stand Upper Tier (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37201/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37201/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37202","slug":"medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","title":"Spectator Stand Stair (Medieval Tournament and Jousting Ground)","summary":"Five tread access stair with handrails that closes the end of a stand run at deck height.","description":"The way up into a grandstand: five treads between stringers with a rail each side, rising 1.45 m to the upper tier footway. Its east port meets a stand end on the 6 m grid; mirror it with a half turn for the other end of the run. Dimensions 1.32 × 1.70 × 2.01 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","cdnUrl":"https://cdn.3dassets.dev/assets/37202/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-spectator-stan-86ad5269","thumbnailUrl":"https://cdn.3dassets.dev/assets/37202/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37202/v1/poster.webp","blurhash":"U7G[4P#G00DS?[030M?G01I,9d%d$*?E%1-S","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13532,"triangles":264,"vertices":616,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6599807897787577,-0.000003503846137009603,-0.8100000023841858],"max":[0.6599807897787577,1.6999608192279188,1.2000000476837158]},"sizeMeters":[1.32,1.7,2.01],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:44.388Z","updatedAt":"2026-09-12T04:48:44.495Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37202/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SpectatorStandStairMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37202/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37202/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37202/v1/model.glb\" alt=\"Spectator Stand Stair (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37202/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37202/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37203","slug":"medieval-tournament-and-jousting-ground-royal-box-2748e366","title":"Royal Box (Medieval Tournament and Jousting Ground)","summary":"Six metre raised box open on three sides under a canvas canopy, with three chairs, a carpeted deck and blank shields on the breast rail.","description":"The seat of honour above the lists: a planked deck a metre up on six posts, carpeted, with three armed chairs facing the field and a breast rail hung with five blank shields. Four posts carry a canvas gabled canopy 3.5 m up with plain pennants along its eaves. The sides are open to the ground so the interior reads from outside and from a walkable camera. Dimensions 6.60 × 4.78 × 4.60 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. The canopy, the carpet and the shield faces are static: fabric needs a joint per fold, and every shield here is blank.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-royal-box-2748e366","cdnUrl":"https://cdn.3dassets.dev/assets/37203/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-royal-box-2748e366","thumbnailUrl":"https://cdn.3dassets.dev/assets/37203/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37203/v1/poster.webp","blurhash":"UMG+8dof00xt_NofM_of00k9kXR+4Ta#xtjs","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":46376,"triangles":968,"vertices":2268,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-3.299999952316284,-0.0001648476348863337,-2.3000396408276402],"max":[3.299999952316284,4.780086118115473,2.3000396408276402]},"sizeMeters":[6.6,4.78,4.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:43.707Z","updatedAt":"2026-09-12T04:48:43.881Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37203/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoyalBoxMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37203/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37203/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37203/v1/model.glb\" alt=\"Royal Box (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37203/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37203/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37204","slug":"medieval-tournament-and-jousting-ground-heralds-platfo-c66eb977","title":"Heralds Platform (Medieval Tournament and Jousting Ground)","summary":"Raised 2.6 m platform with a rail, a three tread stair and a reading desk, where the herald calls the courses.","description":"A planked platform 1.1 m up on four posts with a rail on three sides, a three tread stair on the field side and a sloped reading desk on a stem. A blank canvas cloth hangs from the stair face for a consumer to letter. Nothing on it moves. Dimensions 2.63 × 2.46 × 2.90 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-heralds-platfo-c66eb977","cdnUrl":"https://cdn.3dassets.dev/assets/37204/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-heralds-platfo-c66eb977","thumbnailUrl":"https://cdn.3dassets.dev/assets/37204/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37204/v1/poster.webp","blurhash":"UDG*i*-.02JC~UNGIW%L01IVIor?NGxsaKE2","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30668,"triangles":636,"vertices":1480,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.300074759659872,-0.00007642872016933033,-1.2999999523162842],"max":[1.3249885679331814,2.4599798667451616,1.600000023841858]},"sizeMeters":[2.625,2.46,2.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:43.897Z","updatedAt":"2026-09-12T04:48:44.006Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37204/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HeraldsPlatformMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37204/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37204/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37204/v1/model.glb\" alt=\"Heralds Platform (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37204/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37204/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37205","slug":"medieval-tournament-and-jousting-ground-spectator-benc-a870601e","title":"Spectator Bench (Medieval Tournament and Jousting Ground)","summary":"Loose 2.4 m plank bench on trestle feet, for the standing ground beside the lists.","description":"A 2.4 m oak plank on two trestle feet with a stretcher, 440 mm to the seat. Loose seating for the ground outside the stands. Dimensions 2.40 × 0.54 × 0.40 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-spectator-benc-a870601e","cdnUrl":"https://cdn.3dassets.dev/assets/37205/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-spectator-benc-a870601e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37205/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37205/v1/poster.webp","blurhash":"UBC6GPtQM|%1~V~BRkM|02?G-oE20258?G%0","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5124,"triangles":72,"vertices":168,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.00002625585329973923,-0.1999572820323218],"max":[1.2000000476837158,0.5399527078319972,0.1999572820323218]},"sizeMeters":[2.4,0.54,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:44.155Z","updatedAt":"2026-09-12T04:48:44.249Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37205/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SpectatorBenchMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37205/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37205/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37205/v1/model.glb\" alt=\"Spectator Bench (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37205/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37205/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37206","slug":"medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","title":"Banner Pole Blank (Medieval Tournament and Jousting Ground)","summary":"Five metre banner pole on a stone pad carrying a blank hanging banner with a weighted hem.","description":"A 5 m oak pole on a stepped stone pad with an iron finial and a cross yard, carrying a blank 900 by 2,400 mm banner with a weighted hem. The field is plain: no charge, badge or device of any real family or order is painted on it. Dimensions 1.16 × 5.53 × 0.78 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. The banner is static geometry. Cloth needs a joint per fold or a shader, and this library animates rigid nodes only.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","cdnUrl":"https://cdn.3dassets.dev/assets/37206/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-banner-pole-bl-ebd0312f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37206/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37206/v1/poster.webp","blurhash":"U58|@b%2009FEla}-PoKD%ay-poe4Tae?woz","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":27968,"triangles":532,"vertices":1317,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.5774627407502222,0.000011600471905015564,-0.38999998569488525],"max":[0.5774627407502222,5.53000020980835,0.38999998569488525]},"sizeMeters":[1.155,5.53,0.78],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:46.511Z","updatedAt":"2026-09-12T04:48:46.635Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37206/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BannerPoleBlankMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37206/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37206/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37206/v1/model.glb\" alt=\"Banner Pole Blank (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37206/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37206/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37207","slug":"medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","title":"Banner Pole Tall (Medieval Tournament and Jousting Ground)","summary":"Seven metre banner pole with a wider blank banner, for the corners of the lists and the royal enclosure.","description":"The same pole at 7 m with a 1,200 by 3,200 mm blank banner, tall enough to read over a grandstand. The field is plain, as on every banner in this pack. Dimensions 1.46 × 7.53 × 0.78 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Functional variant of banner-pole-blank.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","cdnUrl":"https://cdn.3dassets.dev/assets/37207/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-banner-pole-ta-a6fa568f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37207/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37207/v1/poster.webp","blurhash":"U48;Y^xu00D%TMkCv{V?9aj]-.V@8^f6.Aa~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":27948,"triangles":532,"vertices":1317,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.727700773563013,0.000011600471905015564,-0.38999998569488525],"max":[0.727700773563013,7.53000020980835,0.38999998569488525]},"sizeMeters":[1.455,7.53,0.78],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:45.587Z","updatedAt":"2026-09-12T04:48:45.690Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37207/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BannerPoleTallMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37207/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37207/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37207/v1/model.glb\" alt=\"Banner Pole Tall (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37207/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37207/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37208","slug":"medieval-tournament-and-jousting-ground-pennant-line-95642bba","title":"Pennant Line (Medieval Tournament and Jousting Ground)","summary":"Six metre line of eight plain triangular pennants slung between two poles, for dressing the lists fence.","description":"Two 3.1 m poles on stone pads with a slack line between them carrying eight plain triangular pennants, alternately canvas and blue. Every pennant is blank: there is no device on any of them. Dimensions 6.70 × 3.48 × 0.50 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. The line and the pennants are static geometry, because a hanging line bends at every point and this library animates rigid nodes only.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-pennant-line-95642bba","cdnUrl":"https://cdn.3dassets.dev/assets/37208/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-pennant-line-95642bba","thumbnailUrl":"https://cdn.3dassets.dev/assets/37208/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37208/v1/poster.webp","blurhash":"UDC6cBxa=x$*-:~CIBnO4oRkbw9a0LS~.7OZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14460,"triangles":240,"vertices":560,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-3.3499999046325684,0.00003144020225420707,-0.2498672373705862],"max":[3.3499999046325684,3.480154420992102,0.2498672373705862]},"sizeMeters":[6.7,3.48,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:45.830Z","updatedAt":"2026-09-12T04:48:46.004Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37208/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PennantLineMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37208/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37208/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37208/v1/model.glb\" alt=\"Pennant Line (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37208/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37208/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37209","slug":"medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","title":"Gonfalon Frame (Medieval Tournament and Jousting Ground)","summary":"Freestanding braced frame hanging a blank three tailed gonfalon, for marking an entrance to the lists.","description":"A braced oak frame 2.8 m high on sled feet carrying a blank three tailed gonfalon 1.3 m across. The field is plain and no arms are shown; the frame stands on its own feet, so it needs no wall. Dimensions 1.94 × 2.92 × 1.10 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. The gonfalon is static geometry: fabric is not reachable with one rigid node transform.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","cdnUrl":"https://cdn.3dassets.dev/assets/37209/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-gonfalon-frame-bd568b09","thumbnailUrl":"https://cdn.3dassets.dev/assets/37209/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37209/v1/poster.webp","blurhash":"U7B:Qs%f00IA?u%29F9Z4TVt.TXle8xZtmEj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":9388,"triangles":132,"vertices":312,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.970006434231379,0,-0.5499963318202539],"max":[0.970006434231379,2.9200000762939453,0.5499963318202539]},"sizeMeters":[1.94,2.92,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:45.983Z","updatedAt":"2026-09-12T04:48:46.101Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37209/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GonfalonFrameMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37209/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37209/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37209/v1/model.glb\" alt=\"Gonfalon Frame (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37209/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37209/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37239","slug":"medieval-tournament-and-jousting-ground-torch-post-d85b6549","title":"Torch Post (Medieval Tournament and Jousting Ground)","summary":"Standing torch post with an iron cresset basket of faggots on a stone pad, unlit.","description":"A 2.6 m oak post on a stone pad carrying an iron cresset basket of faggots on two brackets. Unlit, for the same reason as the brazier: flame is not geometry. Dimensions 0.70 × 2.66 × 0.50 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-torch-post-d85b6549","cdnUrl":"https://cdn.3dassets.dev/assets/37239/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-torch-post-d85b6549","thumbnailUrl":"https://cdn.3dassets.dev/assets/37239/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37239/v1/poster.webp","blurhash":"U78X2uxu00D*00WB~Vt8?cj]Dhadacj[kDWU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15896,"triangles":280,"vertices":649,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.3481825584349104,0.0000033552479030141136,-0.25],"max":[0.3481825584349104,2.6599911712736475,0.25]},"sizeMeters":[0.696,2.66,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:00.481Z","updatedAt":"2026-09-12T04:49:00.667Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37239/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TorchPostMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37239/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37239/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37239/v1/model.glb\" alt=\"Torch Post (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37239/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37239/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37238","slug":"medieval-tournament-and-jousting-ground-brazier-e42a7f2c","title":"Brazier (Medieval Tournament and Jousting Ground)","summary":"Iron brazier on three splayed legs with a charcoal bed and a poker, unlit.","description":"A riveted iron fire basket 920 mm across on three splayed legs with foot plates, a bed of charcoal and a poker leaned on the rim, 1.05 m to the lip. It ships unlit: fire and smoke need a shader or a particle system, neither of which is geometry. Dimensions 1.15 × 1.26 × 0.97 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-brazier-e42a7f2c","cdnUrl":"https://cdn.3dassets.dev/assets/37238/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-brazier-e42a7f2c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37238/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37238/v1/poster.webp","blurhash":"U14Ld#?w009E_NxvDiIU9FRi%gxv4mV??cxu","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15376,"triangles":312,"vertices":717,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.470043740458301,0,-0.4853265692394101],"max":[0.6808873333404574,1.2643765211105347,0.4853265692394101]},"sizeMeters":[1.151,1.264,0.971],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:59.601Z","updatedAt":"2026-09-12T04:48:59.721Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37238/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BrazierMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37238/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37238/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37238/v1/model.glb\" alt=\"Brazier (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37238/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37238/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37210","slug":"medieval-tournament-and-jousting-ground-shield-rack-02af235a","title":"Shield Rack (Medieval Tournament and Jousting Ground)","summary":"Standing rack of five blank heater shields, the rack a challenger touches to call a course.","description":"A braced oak rack 2.1 m wide holding five blank heater shields on its front rail, alternately canvas and blue. Every face is plain: no arms, badge or device is painted on any of them, which is deliberate so a consumer can letter their own. Dimensions 2.40 × 1.35 × 0.70 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-shield-rack-02af235a","cdnUrl":"https://cdn.3dassets.dev/assets/37210/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-shield-rack-02af235a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37210/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37210/v1/poster.webp","blurhash":"UBELyqxu9F%0?u~VE19a00g2%hE18_r;?axv","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15800,"triangles":264,"vertices":616,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.0000272992965733021,-0.349998487982216],"max":[1.2000000476837158,1.3500273231384312,0.349998487982216]},"sizeMeters":[2.4,1.35,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:47.201Z","updatedAt":"2026-09-12T04:48:47.300Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37210/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShieldRackMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37210/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37210/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37210/v1/model.glb\" alt=\"Shield Rack (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37210/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37210/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37214","slug":"medieval-tournament-and-jousting-ground-lance-rack-661cfa58","title":"Lance Rack (Medieval Tournament and Jousting Ground)","summary":"Standing rack of six tourney lances with coronel heads, upright in a floor trough behind a braced frame.","description":"A 1.9 m rack holding six 3.2 m tourney lances butt down in a timber trough, steadied by two rails on a braced frame. Every head is a blunt four pointed coronel, which is what a lance of peace carries. Dimensions 1.90 × 3.54 × 1.18 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lance-rack-661cfa58","cdnUrl":"https://cdn.3dassets.dev/assets/37214/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lance-rack-661cfa58","thumbnailUrl":"https://cdn.3dassets.dev/assets/37214/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37214/v1/poster.webp","blurhash":"U6Bp2oIv00nN0NxW={NI02-m~BD-XNIY-n-m","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":45400,"triangles":1068,"vertices":2260,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.949999988079071,0,-0.5899990770412029],"max":[0.949999988079071,3.5399999618530273,0.5899990770412029]},"sizeMeters":[1.9,3.54,1.18],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:49.166Z","updatedAt":"2026-09-12T04:48:49.274Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37214/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanceRackMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37214/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37214/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37214/v1/model.glb\" alt=\"Lance Rack (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37214/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37214/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37213","slug":"medieval-tournament-and-jousting-ground-shield-on-stan-17962b13","title":"Shield On Stand Chevron (Medieval Tournament and Jousting Ground)","summary":"The same stand carrying an invented abstract charge: a chevron over a bar, raised proud of the field.","description":"The shield stand with a made up device on it, a chevron above a bar, raised 20 mm proud of the field rather than painted into it. The charge is invented geometry and is not the arms of any real family, house or order. Dimensions 0.83 × 1.21 × 0.72 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Cosmetic variant of shield-on-stand.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-shield-on-stan-17962b13","cdnUrl":"https://cdn.3dassets.dev/assets/37213/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-shield-on-stan-17962b13","thumbnailUrl":"https://cdn.3dassets.dev/assets/37213/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37213/v1/poster.webp","blurhash":"U6AJl{tR009G%gt79ZRi00s8~qNyZ#V[%MN{","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":12364,"triangles":184,"vertices":420,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.41300270785657317,0,-0.2601415754073081],"max":[0.41300270785657317,1.2127704892335829,0.4552956164591727]},"sizeMeters":[0.826,1.213,0.715],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:48.322Z","updatedAt":"2026-09-12T04:48:48.587Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37213/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShieldOnStandChevronMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37213/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37213/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37213/v1/model.glb\" alt=\"Shield On Stand Chevron (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37213/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37213/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37212","slug":"medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","title":"Shield On Stand (Medieval Tournament and Jousting Ground)","summary":"Single blank heater shield on a timber tripod, for a challenger to set at the head of the lists.","description":"One blank heater shield 620 mm across on a lashed timber tripod with an iron hanging ring, 1.2 m to the head. The field is plain so a consumer can paint their own device on it. Dimensions 0.83 × 1.21 × 0.72 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","cdnUrl":"https://cdn.3dassets.dev/assets/37212/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-shield-on-stan-38907aa8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37212/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37212/v1/poster.webp","blurhash":"U49s-if-00D%.9xu4oVr00$#_N9wq]aK%gJC","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":10044,"triangles":148,"vertices":344,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.41300270785657317,0,-0.2601415754073081],"max":[0.41300270785657317,1.2127704892335829,0.4552956164591727]},"sizeMeters":[0.826,1.213,0.715],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:47.731Z","updatedAt":"2026-09-12T04:48:48.163Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37212/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShieldOnStandMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37212/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37212/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37212/v1/model.glb\" alt=\"Shield On Stand (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37212/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37212/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37218","slug":"medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","title":"Armour Stand Harness (Medieval Tournament and Jousting Ground)","summary":"Full tournament harness dressed on a timber stand: breast and back plate, pauldrons, vambraces, tassets and a great helm.","description":"A complete harness hung on a stand rather than worn: breast and back plates, rounded pauldrons, upper and lower arm defences, tassets and a great helm with a cross slot, 1.9 m to the crest. There is no figure inside it and no skinning anywhere in this library, so it is a dressed stand and nothing more. Dimensions 1.06 × 2.02 × 0.90 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","cdnUrl":"https://cdn.3dassets.dev/assets/37218/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-armour-stand-h-c8e55f55","thumbnailUrl":"https://cdn.3dassets.dev/assets/37218/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37218/v1/poster.webp","blurhash":"U98;6{xt00IV03NH~Axt?Ds:E4Rjn$f5t7og","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23916,"triangles":460,"vertices":1094,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5317136086906669,0,-0.4500030670872678],"max":[0.5317136086906669,2.0199999809265137,0.4500030670872678]},"sizeMeters":[1.063,2.02,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:50.838Z","updatedAt":"2026-09-12T04:48:50.932Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37218/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ArmourStandHarnessMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37218/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37218/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37218/v1/model.glb\" alt=\"Armour Stand Harness (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37218/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37218/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37219","slug":"medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","title":"Helm On Block (Medieval Tournament and Jousting Ground)","summary":"Great helm resting on an oak block with its crest ring, as a helm is shown before a course.","description":"A great helm with a cross slot and a crest ring, set on a padded oak block on a turned stump, 1.05 m to the ring. The crest itself is left off so a consumer can fit their own. Dimensions 0.68 × 1.11 × 0.65 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","cdnUrl":"https://cdn.3dassets.dev/assets/37219/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-helm-on-block-5a8402f4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37219/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37219/v1/poster.webp","blurhash":"U6BC=2^%000L0RM}}:%101M|^*xt,,oHAHR:","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":11720,"triangles":180,"vertices":422,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.3400000035762787,-0.00001954411781462939,-0.32335642907338397],"max":[0.3400000035762787,1.1100000143051147,0.32335642907338397]},"sizeMeters":[0.68,1.11,0.647],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:51.529Z","updatedAt":"2026-09-12T04:48:51.708Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37219/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HelmOnBlockMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37219/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37219/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37219/v1/model.glb\" alt=\"Helm On Block (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37219/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37219/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37220","slug":"medieval-tournament-and-jousting-ground-quintain-9452f23b","title":"Quintain (Medieval Tournament and Jousting Ground)","summary":"Training quintain with a free turning arm, a target board on one end and a sandbag swinging from the other.","description":"The mark a rider practises the lance on: a braced post 2.8 m to the swivel carrying a 2.9 m arm that turns freely, with a struck target board on one end and a sandbag hanging from the other. The arm spins on the post and the bag hangs from the arm as a child node, so a spin carries the bag round and its own swing rides on top of it. Dimensions 3.26 × 3.26 × 1.60 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips spin, swing turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-quintain-9452f23b","cdnUrl":"https://cdn.3dassets.dev/assets/37220/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-quintain-9452f23b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37220/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37220/v1/poster.webp","blurhash":"U5B{x;yF00Dj_MER$k-U00M]=@r_00$vWUI;","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31832,"triangles":616,"vertices":1431,"meshes":5,"materials":4,"textures":0,"animations":["spin","swing"],"boundingBox":{"min":[-1.5000256474685068,0.000012201605766648527,-0.800000011920929],"max":[1.7599999904632568,3.2600822029014958,0.800000011920929]},"sizeMeters":[3.26,3.26,1.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:51.757Z","updatedAt":"2026-09-12T04:48:51.851Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37220/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function QuintainMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37220/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37220/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37220/v1/model.glb\" alt=\"Quintain (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37220/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37220/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37221","slug":"medieval-tournament-and-jousting-ground-pell-post-06bcf469","title":"Pell Post (Medieval Tournament and Jousting Ground)","summary":"Hacked oak pell set in a stone socket with a strawed head, the post a fighter trains cuts against.","description":"A 2.5 m oak post set in a stone socket, cut and hacked over its working height, with a strawed and corded head to take the blows. Static: the pell is the one thing on a practice ground that is meant not to move. Dimensions 1.44 × 2.70 × 1.40 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-pell-post-06bcf469","cdnUrl":"https://cdn.3dassets.dev/assets/37221/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-pell-post-06bcf469","thumbnailUrl":"https://cdn.3dassets.dev/assets/37221/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37221/v1/poster.webp","blurhash":"U7B|1y%M004:00WA_4kDI^WX$_s,%fj]aKof","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22460,"triangles":444,"vertices":1015,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7200000286102295,0.000020747620214589535,-0.7019818998996247],"max":[0.7200000286102295,2.700000047683716,0.7019818998996247]},"sizeMeters":[1.44,2.7,1.404],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:52.454Z","updatedAt":"2026-09-12T04:48:52.561Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37221/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PellPostMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37221/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37221/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37221/v1/model.glb\" alt=\"Pell Post (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37221/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37221/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37198","slug":"medieval-tournament-and-jousting-ground-tournament-pla-9d62299e","title":"Tournament Platform Deck (Medieval Tournament and Jousting Ground)","summary":"Three metre square timber deck 600 mm up on stub legs, the module stands and boxes are built out of.","description":"A 3 m square planked deck 600 mm above the turf on four stub legs and three joists. Ports on all four edges sit at deck height, so decks tile into a stage of any size and a step module runs up to any edge. Dimensions 3.00 × 0.60 × 2.98 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tournament-pla-9d62299e","cdnUrl":"https://cdn.3dassets.dev/assets/37198/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tournament-pla-9d62299e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37198/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37198/v1/poster.webp","blurhash":"UBD9Ccxt02ae~Uj[IWf700NH-.WV01WX%KWn","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8780,"triangles":156,"vertices":364,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.5011999607086182,0.00006410079082852516,-1.4899288918729208],"max":[1.5011999607086182,0.6011541496959921,1.4899288918729208]},"sizeMeters":[3.002,0.601,2.98],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:42.049Z","updatedAt":"2026-09-12T04:48:42.147Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37198/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TournamentPlatformDeckMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37198/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37198/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37198/v1/model.glb\" alt=\"Tournament Platform Deck (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37198/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37198/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37199","slug":"medieval-tournament-and-jousting-ground-tournament-pla-9d27e039","title":"Tournament Platform Step (Medieval Tournament and Jousting Ground)","summary":"Three tread timber step run that meets a platform deck at 600 mm, with stringers and a ground sill.","description":"A three tread stair 1.26 m deep rising 600 mm to meet a platform deck edge. Its single deck port sits on the top nosing, so a run of steps attaches to any deck edge with a quarter turn. Dimensions 2.90 × 1.30 × 1.45 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tournament-pla-9d27e039","cdnUrl":"https://cdn.3dassets.dev/assets/37199/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tournament-pla-9d27e039","thumbnailUrl":"https://cdn.3dassets.dev/assets/37199/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37199/v1/poster.webp","blurhash":"U8Eo6#%101I[57-UxZ5800NG?aWA~AR,S3-n","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":9888,"triangles":180,"vertices":420,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.4500000476837158,-0.000015304472556598725,-0.6798894073543912],"max":[1.4500000476837158,1.3000152567888408,0.7698893811283475]},"sizeMeters":[2.9,1.3,1.45],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:41.799Z","updatedAt":"2026-09-12T04:48:41.892Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37199/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TournamentPlatformStepMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37199/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37199/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37199/v1/model.glb\" alt=\"Tournament Platform Step (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37199/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37199/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37250","slug":"medieval-tournament-and-jousting-ground-tally-board-ad137794","title":"Tally Board (Medieval Tournament and Jousting Ground)","summary":"Standing slate tally board ruled into columns with chalk strokes, where the courses are scored.","description":"A braced oak frame 2 m high carrying a slate board ruled into four chalk columns with eight strokes marked on it. The marks are plain strokes, not a name, a device or the arms of anybody real. Dimensions 1.64 × 2.02 × 0.80 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tally-board-ad137794","cdnUrl":"https://cdn.3dassets.dev/assets/37250/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tally-board-ad137794","thumbnailUrl":"https://cdn.3dassets.dev/assets/37250/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37250/v1/poster.webp","blurhash":"U8C$isl900vf?w%34.9G0Jr=.8NeR2-N-;ET","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13976,"triangles":240,"vertices":560,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.8199999928474426,-0.000011242739896055731,-0.40002746316923643],"max":[0.8199999928474426,2.0199999809265137,0.40002746316923643]},"sizeMeters":[1.64,2.02,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:05.886Z","updatedAt":"2026-09-12T04:49:06.008Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37250/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TallyBoardMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37250/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37250/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37250/v1/model.glb\" alt=\"Tally Board (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37250/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37250/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37211","slug":"medieval-tournament-and-jousting-ground-shield-rack-em-75a89c26","title":"Shield Rack Empty (Medieval Tournament and Jousting Ground)","summary":"The same standing rack with no shields on it, for a ground being set up or struck.","description":"The shield rack with its rail clear, for a tournament ground before the shields are hung or after they come down. Dimensions 2.40 × 1.35 × 0.70 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Functional variant of shield-rack.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-shield-rack-em-75a89c26","cdnUrl":"https://cdn.3dassets.dev/assets/37211/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-shield-rack-em-75a89c26","thumbnailUrl":"https://cdn.3dassets.dev/assets/37211/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37211/v1/poster.webp","blurhash":"UCEeiAxaIq-o^*~BE29u03oyxZ9a9aof?Fsl","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5664,"triangles":84,"vertices":196,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.0000272992965733021,-0.349998487982216],"max":[1.2000000476837158,1.3500273231384312,0.349998487982216]},"sizeMeters":[2.4,1.35,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:47.647Z","updatedAt":"2026-09-12T04:48:48.121Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37211/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShieldRackEmptyMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37211/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37211/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37211/v1/model.glb\" alt=\"Shield Rack Empty (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37211/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37211/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37236","slug":"medieval-tournament-and-jousting-ground-whetstone-whee-2100d4db","title":"Whetstone Wheel (Medieval Tournament and Jousting Ground)","summary":"Treadle grindstone on a timber frame with a water tray under the wheel, for rebating tournament arms.","description":"A sandstone grinding wheel 840 mm across turning on an iron spindle in an oak frame, with a water tray beneath it and a rest at the working side. The wheel is one node on the spindle line; the frame and the tray do not move. Dimensions 1.20 × 1.42 × 1.08 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips spin turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-whetstone-whee-2100d4db","cdnUrl":"https://cdn.3dassets.dev/assets/37236/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-whetstone-whee-2100d4db","thumbnailUrl":"https://cdn.3dassets.dev/assets/37236/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37236/v1/poster.webp","blurhash":"U7Dlfs%g00D%Y7WBDhV[00jD~VS$8wNH_3?G","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14340,"triangles":228,"vertices":508,"meshes":5,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.6000000238418579,0.000017085398931929174,-0.5400128392321614],"max":[0.6000000238418579,1.4199999976158142,0.5400128392321614]},"sizeMeters":[1.2,1.42,1.08],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:59.439Z","updatedAt":"2026-09-12T04:48:59.628Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37236/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function WhetstoneWheelMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37236/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37236/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37236/v1/model.glb\" alt=\"Whetstone Wheel (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37236/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37236/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37217","slug":"medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","title":"Weapon Rack Blunted (Medieval Tournament and Jousting Ground)","summary":"Rack of rebated tourney arms: four blunt swords, two padded maces and a rebated axe, standing in a floor trough.","description":"A 1.8 m two sided rack: four rebated swords with no point and no edge on the front rail, two padded maces and a rebated axe behind. These are arms of peace for a foot combat, not war weapons, which is why every head is blunt. Dimensions 1.92 × 1.54 × 0.90 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","cdnUrl":"https://cdn.3dassets.dev/assets/37217/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-weapon-rack-bl-408e4379","thumbnailUrl":"https://cdn.3dassets.dev/assets/37217/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37217/v1/poster.webp","blurhash":"U9ELf[^~4o?EE#~A-U9u01IXWWMzn49b$*WB","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24584,"triangles":500,"vertices":1167,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.9599999785423279,-0.000027770518339798045,-0.45004302103911553],"max":[0.9599999785423279,1.5400277323713671,0.45004302103911553]},"sizeMeters":[1.92,1.54,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:50.170Z","updatedAt":"2026-09-12T04:48:50.268Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37217/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WeaponRackBluntedMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37217/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37217/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37217/v1/model.glb\" alt=\"Weapon Rack Blunted (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37217/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37217/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37197","slug":"medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","title":"Melee Ring Fence Panel (Medieval Tournament and Jousting Ground)","summary":"Heavy 2.5 m ring fence bay with three posts, three rails and rear raking braces for the foot combat ring.","description":"The stout fence that holds a foot melee ring: three posts on a continuous sill, three rails on the ring face and a raking brace behind each end post. West and east ports meet on a 2.5 m grid, so eight bays close a ring twenty metres round. Dimensions 2.56 × 1.35 × 0.81 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","cdnUrl":"https://cdn.3dassets.dev/assets/37197/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-melee-ring-fen-8998bedc","thumbnailUrl":"https://cdn.3dassets.dev/assets/37197/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37197/v1/poster.webp","blurhash":"UEFhhQ~B0M-.Nf^%-oIp01E3?GR*RQIVS1oM","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":6712,"triangles":108,"vertices":252,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.2799999713897705,-0.00004043697012057201,-0.6619051151498541],"max":[1.2799999713897705,1.3499424694444269,0.14996353318536126]},"sizeMeters":[2.56,1.35,0.812],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:40.896Z","updatedAt":"2026-09-12T04:48:40.995Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37197/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MeleeRingFencePanelMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37197/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37197/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37197/v1/model.glb\" alt=\"Melee Ring Fence Panel (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37197/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37197/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37196","slug":"medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","title":"Hurdle Fence Run (Medieval Tournament and Jousting Ground)","summary":"Woven hazel hurdle 2.4 m long for penning the camp and the practice ground off the lists.","description":"A 2.4 m woven hurdle: seven rods sprung alternately in front of and behind four uprights, the light fence a tournament camp is divided with. West and east ports meet on a 2.4 m grid. Dimensions 2.44 × 1.30 × 0.14 m (X × Y × Z). Pivot on the grid origin with named connector ports. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","cdnUrl":"https://cdn.3dassets.dev/assets/37196/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-hurdle-fence-r-1d806650","thumbnailUrl":"https://cdn.3dassets.dev/assets/37196/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37196/v1/poster.webp","blurhash":"UFFX-Ms:I=xu$%~AjbRk03sl-TR*RkNdt7bG","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":9884,"triangles":180,"vertices":424,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.2200000286102295,-0.000006447972153211801,-0.0700521851988785],"max":[1.2200000286102295,1.3000064002884373,0.0700521851988785]},"sizeMeters":[2.44,1.3,0.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:40.517Z","updatedAt":"2026-09-12T04:48:40.696Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37196/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HurdleFenceRunMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37196/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37196/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37196/v1/model.glb\" alt=\"Hurdle Fence Run (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37196/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37196/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37222","slug":"medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","title":"Archery Butt (Medieval Tournament and Jousting Ground)","summary":"Straw boss on a timber trestle with three plain concentric rings and a straw kicker at its foot.","description":"A 1.24 m straw boss on a raking timber trestle, 1.9 m to the head, faced with three plain concentric rings and backed by a straw kicker along the ground. The rings are abstract circles, not a badge or a device. Dimensions 1.90 × 1.96 × 1.34 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","cdnUrl":"https://cdn.3dassets.dev/assets/37222/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-archery-butt-d93ed48c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37222/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37222/v1/poster.webp","blurhash":"UAD]F,~p000002WAx@NG01IU%Nx]sRxt?aW@","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":56104,"triangles":1312,"vertices":2791,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9500387621568037,0,-0.5899513290530686],"max":[0.9500387621568037,1.9572608470916748,0.7499618535801345]},"sizeMeters":[1.9,1.957,1.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:52.547Z","updatedAt":"2026-09-12T04:48:52.659Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37222/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ArcheryButtMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37222/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37222/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37222/v1/model.glb\" alt=\"Archery Butt (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37222/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37222/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37223","slug":"medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","title":"Archery Line Marker (Medieval Tournament and Jousting Ground)","summary":"Low marker post with a blank board and a ground rope, for setting a shooting line or a run out.","description":"A 1.4 m marker post on a stone pad with a blank canvas board under an oak cap and a rope run stretched from it, for marking a shooting line, a run out or the head of the lists. The board is blank on purpose. Dimensions 2.49 × 1.40 × 0.40 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","cdnUrl":"https://cdn.3dassets.dev/assets/37223/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-archery-line-m-eab2b04c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37223/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37223/v1/poster.webp","blurhash":"UEB3sQ9FIp-;00-;xtM{9aRQWBbH~UtQM}Rj","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8780,"triangles":112,"vertices":258,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-2.25,-0.0000033577811504453825,-0.20000000298023224],"max":[0.2399777234385989,1.4000021323221052,0.20000000298023224]},"sizeMeters":[2.49,1.4,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:54.378Z","updatedAt":"2026-09-12T04:48:54.475Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37223/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ArcheryLineMarkerMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37223/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37223/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37223/v1/model.glb\" alt=\"Archery Line Marker (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37223/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37223/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37232","slug":"medieval-tournament-and-jousting-ground-pavilion-tent--1b262451","title":"Pavilion Tent Large (Medieval Tournament and Jousting Ground)","summary":"Five metre round pavilion with the door flaps rolled open, a centre pole, six guy ropes and a plain finial pennant.","description":"A 5 m round canvas pavilion 2.1 m to the eaves and 3.8 m to the finial, with a two panel doorway standing open, the flaps rolled and tied on their posts, six guy ropes to driven pegs and a plain pennant at the peak. Open and empty inside, so a bench and an armour stand placed in it read from the ground. Dimensions 6.79 × 4.46 × 7.28 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. The canvas, the rolled flaps, the guy ropes and the pennant are static: flexible material needs a joint per element or a shader, and this library animates rigid nodes only.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-pavilion-tent--1b262451","cdnUrl":"https://cdn.3dassets.dev/assets/37232/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-pavilion-tent--1b262451","thumbnailUrl":"https://cdn.3dassets.dev/assets/37232/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37232/v1/poster.webp","blurhash":"UGC%1}t700RjD%j[%Ma#00Rj~qof-;WBRit6","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":42652,"triangles":864,"vertices":2018,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-3.3946749514778474,-0.00011990956363394645,-3.6394762992858887],"max":[3.3946749514778474,4.460000038146973,3.6394762992858887]},"sizeMeters":[6.789,4.46,7.279],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:57.713Z","updatedAt":"2026-09-12T04:48:57.830Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37232/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PavilionTentLargeMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37232/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37232/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37232/v1/model.glb\" alt=\"Pavilion Tent Large (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37232/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37232/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37235","slug":"medieval-tournament-and-jousting-ground-pavilion-tent--ba3331ba","title":"Pavilion Tent Small (Medieval Tournament and Jousting Ground)","summary":"Three and a half metre round pavilion with an open doorway, for a squire, a marshal or an armourer.","description":"The smaller pavilion at 3.5 m across and 3 m to the finial, built the same way: an open two panel doorway with the flaps tied back, a centre pole, six guys and a plain pennant. Open and empty inside. Dimensions 5.41 × 3.81 × 5.79 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Functional variant of pavilion-tent-large.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-pavilion-tent--ba3331ba","cdnUrl":"https://cdn.3dassets.dev/assets/37235/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-pavilion-tent--ba3331ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/37235/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37235/v1/poster.webp","blurhash":"UECP*9oy00jZ9GjZ%MR*00V[~qof?GbaV@t6","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37524,"triangles":744,"vertices":1742,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-2.7036396244256413,-0.00002204160008978384,-2.895197868347168],"max":[2.7036396244256413,3.809999942779541,2.895197868347168]},"sizeMeters":[5.407,3.81,5.79],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:58.788Z","updatedAt":"2026-09-12T04:48:58.887Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37235/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PavilionTentSmallMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37235/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37235/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37235/v1/model.glb\" alt=\"Pavilion Tent Small (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37235/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37235/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37234","slug":"medieval-tournament-and-jousting-ground-hay-rick-65892841","title":"Hay Rick (Medieval Tournament and Jousting Ground)","summary":"Thatched hay rick on a staddle stone base with a ladder up its side, four metres to the finial.","description":"A hay rick built on five staddle stones and a timber platform, 3.1 m square with a conical thatched cap and an oak finial, 4 m to the top, with a ladder leaned against one face. The largest single piece in the pack and the right thing to close the back of a camp with. Dimensions 4.70 × 4.50 × 4.47 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-hay-rick-65892841","cdnUrl":"https://cdn.3dassets.dev/assets/37234/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-hay-rick-65892841","thumbnailUrl":"https://cdn.3dassets.dev/assets/37234/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37234/v1/poster.webp","blurhash":"UCD]VO-;00D*D*WAxat700Mx~Ut6xrogxtRj","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19776,"triangles":384,"vertices":871,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.3499999046325684,-0.00004059259714409014,-2.2349634396821414],"max":[2.3499999046325684,4.5,2.2349634396821414]},"sizeMeters":[4.7,4.5,4.47],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:57.748Z","updatedAt":"2026-09-12T04:48:57.891Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37234/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HayRickMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37234/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37234/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37234/v1/model.glb\" alt=\"Hay Rick (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37234/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37234/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37249","slug":"medieval-tournament-and-jousting-ground-baggage-cart-ee564549","title":"Baggage Cart (Medieval Tournament and Jousting Ground)","summary":"Two wheel baggage cart with shafts, a boarded body, a barrel, sacks and a straw load, wheels that roll.","description":"The cart a company brings its camp on: a boarded body 2.3 m long on two spoked wheels 1.24 m across, with draught shafts, a barrel lashed at the head, sacks and a straw load. Both wheels are nodes on the axle line and roll. No animal is harnessed to it: there are none in this pack. Dimensions 1.89 × 1.70 × 3.81 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips roll turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-baggage-cart-ee564549","cdnUrl":"https://cdn.3dassets.dev/assets/37249/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-baggage-cart-ee564549","thumbnailUrl":"https://cdn.3dassets.dev/assets/37249/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37249/v1/poster.webp","blurhash":"UGC6Poj?4:ob~UIpD+xZ03IWxZxa0Mxs-.oc","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":35384,"triangles":924,"vertices":1944,"meshes":9,"materials":5,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.8799952577677478,-4.768371586472142e-9,-1.2000000476837158],"max":[1.009995252999376,1.6999786572180302,2.6079812049865723]},"sizeMeters":[1.89,1.7,3.808],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:05.898Z","updatedAt":"2026-09-12T04:49:06.027Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37249/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function BaggageCartMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37249/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37249/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37249/v1/model.glb\" alt=\"Baggage Cart (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37249/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37249/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37246","slug":"medieval-tournament-and-jousting-ground-merchant-stall-9a839369","title":"Merchant Stall (Medieval Tournament and Jousting Ground)","summary":"Two and a half metre trader stall with a raking canvas awning, a counter of goods, a pot shelf and pennant bunting.","description":"The stall a tournament crowd buys from: a 2.5 m counter with a boarded front and cloth bolts on it, a back shelf of glazed pots, a raking canvas awning 2.3 m up and plain pennants along the front rail. The awning is fixed to its frame and nothing on the stall moves. Dimensions 2.90 × 2.36 × 1.48 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-merchant-stall-9a839369","cdnUrl":"https://cdn.3dassets.dev/assets/37246/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-merchant-stall-9a839369","thumbnailUrl":"https://cdn.3dassets.dev/assets/37246/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37246/v1/poster.webp","blurhash":"UHHBST^k01$g~qx[M{Rk02JAT0S#DixZbwNH","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":39796,"triangles":752,"vertices":1878,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1.4500000476837158,-0.00009132363658204135,-0.7800341854554367],"max":[1.4500000476837158,2.360091218732407,0.7000342021447372]},"sizeMeters":[2.9,2.36,1.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:03.945Z","updatedAt":"2026-09-12T04:49:04.147Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37246/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MerchantStallMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37246/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37246/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37246/v1/model.glb\" alt=\"Merchant Stall (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37246/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37246/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37247","slug":"medieval-tournament-and-jousting-ground-coin-table-ffee51b3","title":"Coin Table (Medieval Tournament and Jousting Ground)","summary":"Cloth covered counting table with a strongbox, a pair of scales, coin stacks and tally sticks.","description":"The table wagers and prize money are counted at: a 1.4 m top under a blue cloth with an iron bound strongbox, a balance on a stand, four stacks of coin and three tally sticks. Static; the scale pans do not swing. Dimensions 1.41 × 1.34 × 0.90 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-coin-table-ffee51b3","cdnUrl":"https://cdn.3dassets.dev/assets/37247/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-coin-table-ffee51b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/37247/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37247/v1/poster.webp","blurhash":"U3CG0+_N00S71A~A=q0M004:.T,-@X0Ltm~V","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21196,"triangles":412,"vertices":946,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.699999988079071,-0.00003202314703099063,-0.4500320367709498],"max":[0.7099999785423279,1.3400036780688382,0.4500320367709498]},"sizeMeters":[1.41,1.34,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:04.023Z","updatedAt":"2026-09-12T04:49:04.166Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37247/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CoinTableMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37247/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37247/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37247/v1/model.glb\" alt=\"Coin Table (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37247/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37247/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37248","slug":"medieval-tournament-and-jousting-ground-stocks-6c592363","title":"Stocks (Medieval Tournament and Jousting Ground)","summary":"Camp stocks with a hinged upper board that lifts, a bench behind and stone footings.","description":"The rough justice of a fair ground: two oak posts on stone pads carrying a fixed lower board and a hinged upper board with an iron strap and a latch, with a bench behind. The upper board is one node on the hinge line and lifts clear. Dimensions 2.30 × 1.35 × 1.09 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips open, close turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-stocks-6c592363","cdnUrl":"https://cdn.3dassets.dev/assets/37248/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-stocks-6c592363","thumbnailUrl":"https://cdn.3dassets.dev/assets/37248/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37248/v1/poster.webp","blurhash":"UEEob*~U57^*aJ^%%L9a019a$%WZN0ERxvxa","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13388,"triangles":204,"vertices":476,"meshes":6,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.149999976158142,-0.000019531975235020926,-0.839988222339741],"max":[1.149999976158142,1.3500150998332776,0.2500259355495042]},"sizeMeters":[2.3,1.35,1.09],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:04.864Z","updatedAt":"2026-09-12T04:49:04.953Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37248/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function StocksMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37248/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37248/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37248/v1/model.glb\" alt=\"Stocks (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37248/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37248/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37240","slug":"medieval-tournament-and-jousting-ground-cook-fire-spit-f45c7b48","title":"Cook Fire With Spit And Cauldron (Medieval Tournament and Jousting Ground)","summary":"Stone ringed cook fire with a turning spit on two forks and a cauldron on an iron tripod beside it.","description":"The camp kitchen: a nine stone fire ring on an ash bed with five logs laid in, a spit on two forked uprights with a crank handle and two bread cages on the bar, and an iron cauldron hanging in a tripod alongside. The spit is one node on the bar line and turns; the fire is unlit. Dimensions 3.45 × 1.51 × 1.76 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips spin turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data. There is no flame or smoke mesh: fire needs a shader or particles, which no rigid node transform provides.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-cook-fire-spit-f45c7b48","cdnUrl":"https://cdn.3dassets.dev/assets/37240/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-cook-fire-spit-f45c7b48","thumbnailUrl":"https://cdn.3dassets.dev/assets/37240/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37240/v1/poster.webp","blurhash":"UDA^5i~V0K4:xBxYozR.00D*?a%MT1R:RPnh","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":32164,"triangles":620,"vertices":1380,"meshes":7,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-1.149999976158142,0,-0.8793569803237915],"max":[2.3036237792234293,1.5106941216013356,0.8793569803237915]},"sizeMeters":[3.454,1.511,1.759],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:01.187Z","updatedAt":"2026-09-12T04:49:01.292Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37240/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function CookFireWithSpitAndCauldronMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37240/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37240/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37240/v1/model.glb\" alt=\"Cook Fire With Spit And Cauldron (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37240/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37240/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37241","slug":"medieval-tournament-and-jousting-ground-trestle-table-103bebd0","title":"Trestle Table (Medieval Tournament and Jousting Ground)","summary":"Two and a half metre board on splayed trestles, the table a tourney camp eats and works at.","description":"A 2.4 m oak board 740 mm up on two splayed trestles with a stretcher. The board lifts off in life; here it is one piece. Dimensions 2.62 × 0.85 × 0.86 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-trestle-table-103bebd0","cdnUrl":"https://cdn.3dassets.dev/assets/37241/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-trestle-table-103bebd0","thumbnailUrl":"https://cdn.3dassets.dev/assets/37241/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37241/v1/poster.webp","blurhash":"UEDSErxZ0Ns:~U={IpIW02%2-oIp02Ip%1so","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":7712,"triangles":132,"vertices":308,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.309999942779541,-0.000022030785867654945,-0.4299814007951447],"max":[1.309999942779541,0.8522327272094965,0.4299814007951447]},"sizeMeters":[2.62,0.852,0.86],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:01.204Z","updatedAt":"2026-09-12T04:49:01.317Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37241/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrestleTableMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37241/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37241/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37241/v1/model.glb\" alt=\"Trestle Table (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37241/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37241/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37242","slug":"medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","title":"Trestle Bench (Medieval Tournament and Jousting Ground)","summary":"Short 1.8 m camp bench on splayed trestle feet, to go with the trestle table.","description":"A 1.8 m oak bench 440 mm to the seat on two splayed trestle feet with a stretcher. Two of them make up a table setting. Dimensions 1.98 × 0.55 × 0.34 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","cdnUrl":"https://cdn.3dassets.dev/assets/37242/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-trestle-bench-fbfd8f9f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37242/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37242/v1/poster.webp","blurhash":"UCDIm.xtE1%1~U^%RkIp02%2-oIW029b-oxZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":6156,"triangles":96,"vertices":224,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.9900000095367432,0.00005051957592119849,-0.16996367847122357],"max":[0.9900000095367432,0.5509256299247558,0.16996367847122357]},"sizeMeters":[1.98,0.551,0.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:02.322Z","updatedAt":"2026-09-12T04:49:02.435Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37242/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrestleBenchMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37242/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37242/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37242/v1/model.glb\" alt=\"Trestle Bench (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37242/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37242/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37243","slug":"medieval-tournament-and-jousting-ground-bread-and-pie--92128462","title":"Bread And Pie Board (Medieval Tournament and Jousting Ground)","summary":"Serving board of three loaves and two latticed pies on chocks, the food a tournament crowd is fed on.","description":"A 1.5 m oak serving board on two chocks carrying three round loaves and two latticed raised pies, with a cloth folded at one end. Food only: no animals appear anywhere in this pack. Dimensions 1.52 × 0.53 × 0.73 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-bread-and-pie--92128462","cdnUrl":"https://cdn.3dassets.dev/assets/37243/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-bread-and-pie--92128462","thumbnailUrl":"https://cdn.3dassets.dev/assets/37243/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37243/v1/poster.webp","blurhash":"U7Db_|.800$$_M^+My4;00Ri~UIV0001%e?Z","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":25404,"triangles":484,"vertices":1174,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.00002563726638428465,-0.32995855455226913],"max":[0.7699999809265137,0.5300029692822068,0.3996804023248674]},"sizeMeters":[1.52,0.53,0.73],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":1,"publishedAt":"2026-09-12T04:49:02.208Z","updatedAt":"2026-09-12T10:01:40.321Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37243/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BreadAndPieBoardMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37243/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37243/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37243/v1/model.glb\" alt=\"Bread And Pie Board (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37243/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37243/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37227","slug":"medieval-tournament-and-jousting-ground-farriers-anvil-b82c546f","title":"Farriers Anvil (Medieval Tournament and Jousting Ground)","summary":"Horned anvil on a stump with a tool bench, hammer, tongs, a rack of shoes and a quenching bucket.","description":"The farrier corner of a tourney camp: a horned iron anvil on an oak stump at 1.02 m, a tool bench with a hammer and tongs on it, four finished shoes hanging on the front and a water bucket for quenching. Nothing moves; the tools rest where they were put down. Dimensions 2.38 × 1.02 × 0.91 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-farriers-anvil-b82c546f","cdnUrl":"https://cdn.3dassets.dev/assets/37227/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-farriers-anvil-b82c546f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37227/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37227/v1/poster.webp","blurhash":"UCAvtR^*57WV9dj[%0S3029b$%xD~9xtIraK","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":29916,"triangles":636,"vertices":1403,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.350000023841858,-0.000016791140676264416,-0.39944538604872276],"max":[1.0299999713897705,1.0199831548515346,0.5100405783381603]},"sizeMeters":[2.38,1.02,0.909],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:55.185Z","updatedAt":"2026-09-12T04:48:55.276Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37227/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FarriersAnvilMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37227/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37227/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37227/v1/model.glb\" alt=\"Farriers Anvil (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37227/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37227/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37230","slug":"medieval-tournament-and-jousting-ground-farriers-tool--6215e868","title":"Farriers Tool Chest (Medieval Tournament and Jousting Ground)","summary":"Iron banded oak tool chest with a hinged lid that lifts, and a rolled cloth on top.","description":"A 1.1 m banded oak chest for a farrier or an armourer, with corner irons, a hasp and a hinged lid on its back edge. The lid is a single node on the hinge line; a rolled cloth rides on it. Dimensions 1.16 × 0.76 × 0.70 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips open, close turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-farriers-tool--6215e868","cdnUrl":"https://cdn.3dassets.dev/assets/37230/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-farriers-tool--6215e868","thumbnailUrl":"https://cdn.3dassets.dev/assets/37230/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37230/v1/poster.webp","blurhash":"U5F=Q*~p009a.7~TxtJ600n|%2-T01Ir%KM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":7784,"triangles":96,"vertices":224,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5799999833106995,-0.000010381170190365552,-0.33118991781664264],"max":[0.5799999833106995,0.7599914527313751,0.3699899189610518]},"sizeMeters":[1.16,0.76,0.701],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:55.976Z","updatedAt":"2026-09-12T04:48:56.080Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37230/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function FarriersToolChestMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37230/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37230/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37230/v1/model.glb\" alt=\"Farriers Tool Chest (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37230/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37230/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37237","slug":"medieval-tournament-and-jousting-ground-squires-work-b-50b50539","title":"Squires Work Bench (Medieval Tournament and Jousting Ground)","summary":"Two metre armourers bench with a vice, a tool rail, a half finished breastplate and rag bundles.","description":"The bench a squire works a harness on: 2 m of oak top at 820 mm with a leg vice, a hanging tool rail with four picks and punches, a half polished breastplate propped on the top and two rag bundles. Everything rests where it was put down; nothing on it moves. Dimensions 2.00 × 1.46 × 0.88 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-squires-work-b-50b50539","cdnUrl":"https://cdn.3dassets.dev/assets/37237/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-squires-work-b-50b50539","thumbnailUrl":"https://cdn.3dassets.dev/assets/37237/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37237/v1/poster.webp","blurhash":"U9Ex%:Nc01~A^+-o0M9b01EN9bM{V=WBtPkV","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13972,"triangles":240,"vertices":558,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.00005830942658546778,-0.42997528000732443],"max":[1,1.4599417287203873,0.44997557909479874]},"sizeMeters":[2,1.46,0.88],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:59.589Z","updatedAt":"2026-09-12T04:48:59.707Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37237/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SquiresWorkBenchMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37237/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37237/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37237/v1/model.glb\" alt=\"Squires Work Bench (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37237/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37237/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37215","slug":"medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","title":"Lance Whole (Medieval Tournament and Jousting Ground)","summary":"Single 3.4 m tourney lance with vamplate, grip and coronel head, resting on two chocks.","description":"One tourney lance laid along two timber chocks: a tapered ash shaft, an iron grip block, a conical vamplate and a four pointed coronel head. Ground contact origin under the chocks. Dimensions 3.58 × 0.45 × 0.50 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","cdnUrl":"https://cdn.3dassets.dev/assets/37215/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lance-whole-c0c35e0f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37215/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37215/v1/poster.webp","blurhash":"U58gW$$~4:~9tP?GxYEM00Rn^+9cIW03I@^j","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":10632,"triangles":188,"vertices":420,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.7000000476837158,-0.00000579873273925946,-0.24999786284050865],"max":[1.8799999952316284,0.45007354460667326,0.24999786284050865]},"sizeMeters":[3.58,0.45,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:50.863Z","updatedAt":"2026-09-12T04:48:50.971Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37215/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanceWholeMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37215/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37215/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37215/v1/model.glb\" alt=\"Lance Whole (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37215/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37215/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37216","slug":"medieval-tournament-and-jousting-ground-lance-shattere-864af08e","title":"Lance Shattered (Medieval Tournament and Jousting Ground)","summary":"Broken lance on the ground: the splintered butt half, a loose forward half and seven splinters.","description":"The aftermath of a good course: a lance broken behind the vamplate with five splinters sprung from the break, a loose forward half lying across the grass and seven scattered splinters. Ground contact origin, so it drops straight onto a ground tile. Dimensions 3.41 × 0.39 × 1.40 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-lance-shattere-864af08e","cdnUrl":"https://cdn.3dassets.dev/assets/37216/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-lance-shattere-864af08e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37216/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37216/v1/poster.webp","blurhash":"U98p}ma$02%0ahxtxZM|01oc~VNHjYIVIp%L","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14268,"triangles":300,"vertices":648,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.5109268426895142,0.000004567127459609299,-0.8021386655494168],"max":[1.899999976158142,0.39326206306512024,0.5949391516372159]},"sizeMeters":[3.411,0.393,1.397],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:49.854Z","updatedAt":"2026-09-12T04:48:49.965Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37216/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanceShatteredMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37216/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37216/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37216/v1/model.glb\" alt=\"Lance Shattered (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37216/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37216/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37229","slug":"medieval-tournament-and-jousting-ground-water-trough-cc49903b","title":"Water Trough (Medieval Tournament and Jousting Ground)","summary":"Hollowed stone water trough 2.2 m long with a still water surface and a pail beside it.","description":"A 2.2 m limestone trough on a plinth, hollowed out with a still water surface 500 mm up, and an oak pail standing at one end. The water is a flat surface: moving water needs a shader, not a node transform. Dimensions 2.70 × 0.72 × 0.86 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-water-trough-cc49903b","cdnUrl":"https://cdn.3dassets.dev/assets/37229/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-water-trough-cc49903b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37229/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37229/v1/poster.webp","blurhash":"UEFP7}_400%L.9_2xtM|00D*?bIoDh4.IVRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14252,"triangles":228,"vertices":531,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1.1299999952316284,-0.000012816587107694621,-0.43004548464156994],"max":[1.5700000524520874,0.7199530211639211,0.43004548464156994]},"sizeMeters":[2.7,0.72,0.86],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:55.959Z","updatedAt":"2026-09-12T04:48:56.078Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37229/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaterTroughMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37229/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37229/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37229/v1/model.glb\" alt=\"Water Trough (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37229/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37229/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37251","slug":"medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","title":"Supply Crate (Medieval Tournament and Jousting Ground)","summary":"Cross braced oak supply crate with corner battens and a hinged lid that lifts on its back edge.","description":"A metre long braced oak crate with corner battens, two girth boards and a hinged lid with an iron handle. The lid is a single node on the hinge line, so one channel opens the whole thing. Dimensions 1.06 × 0.87 × 0.90 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Rigid node-transform clips open, close turn named parts on their own pivots. No skinning, no skeleton, no collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","cdnUrl":"https://cdn.3dassets.dev/assets/37251/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-supply-crate-1ea0172d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37251/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37251/v1/poster.webp","blurhash":"U8GRO^~n00D+OZ$%$fk800M|t6sED*s;%2NH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":7492,"triangles":96,"vertices":224,"meshes":4,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5299999713897705,-0.00002684198322411291,-0.43003964727182536],"max":[0.5299999713897705,0.8700007633352773,0.46998319414217715]},"sizeMeters":[1.06,0.87,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:06.939Z","updatedAt":"2026-09-12T04:49:07.042Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37251/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function SupplyCrateMedievalTournamentAndJoustingGround(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37251/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37251/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37251/v1/model.glb\" alt=\"Supply Crate (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37251/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37251/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37233","slug":"medieval-tournament-and-jousting-ground-feed-sack-stac-f6ad1489","title":"Feed Sack Stack (Medieval Tournament and Jousting Ground)","summary":"Six tied canvas feed sacks stacked two courses high with the necks gathered and corded.","description":"Six canvas sacks of feed or meal, gathered and tied at the neck and corded round the body, stacked two courses high to 1.35 m. Dimensions 1.86 × 1.50 × 0.60 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-feed-sack-stac-f6ad1489","cdnUrl":"https://cdn.3dassets.dev/assets/37233/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-feed-sack-stac-f6ad1489","thumbnailUrl":"https://cdn.3dassets.dev/assets/37233/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37233/v1/poster.webp","blurhash":"UAHxsX?b00D*IV~qt74.00Io_2Rjj[R*t7D*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13016,"triangles":288,"vertices":648,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.9305145740509033,0.00001419582834649713,-0.24786575581347148],"max":[0.9305145740509033,1.5000062638848077,0.3478657647541682]},"sizeMeters":[1.861,1.5,0.596],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:57.729Z","updatedAt":"2026-09-12T04:48:57.850Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37233/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FeedSackStackMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37233/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37233/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37233/v1/model.glb\" alt=\"Feed Sack Stack (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37233/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37233/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37228","slug":"medieval-tournament-and-jousting-ground-hay-bale-14be885c","title":"Hay Bale (Medieval Tournament and Jousting Ground)","summary":"Single corded hay bale 1.2 m long, for the feed lines and for blocking off a corner of the camp.","description":"A corded rectangular hay bale 1.2 by 0.72 by 0.78 m with four binding cords. Stackable: the top face is flat. Dimensions 1.24 × 0.75 × 0.84 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-hay-bale-14be885c","cdnUrl":"https://cdn.3dassets.dev/assets/37228/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-hay-bale-14be885c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37228/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37228/v1/poster.webp","blurhash":"UAI56o~W00R+?H-:WBM}00IUMyNGV?ogWUD*","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":3248,"triangles":48,"vertices":112,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6200000047683716,1.153638284900893e-8,-0.41999998688697815],"max":[0.6200000047683716,0.7499839660749701,0.41999998688697815]},"sizeMeters":[1.24,0.75,0.84],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:55.978Z","updatedAt":"2026-09-12T04:48:56.094Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37228/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HayBaleMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37228/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37228/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37228/v1/model.glb\" alt=\"Hay Bale (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37228/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37228/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37226","slug":"medieval-tournament-and-jousting-ground-tack-rack-0a9e68a1","title":"Tack Rack (Medieval Tournament and Jousting Ground)","summary":"Standing rack of four bridles with stirrup irons and two girths, for the tourney camp lines.","description":"A braced oak rack 1.9 m wide and 1.75 m high hanging four bridles on pegs with stirrup irons below them and two girth cloths on the back rail. Tack only: there are no animals in this pack. Dimensions 2.04 × 1.75 × 0.86 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-tack-rack-0a9e68a1","cdnUrl":"https://cdn.3dassets.dev/assets/37226/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-tack-rack-0a9e68a1","thumbnailUrl":"https://cdn.3dassets.dev/assets/37226/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37226/v1/poster.webp","blurhash":"U6D+PG-.00xZ~T~A0g0g01ru%MEN9$-B};E2","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":52628,"triangles":1188,"vertices":2620,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.0199999809265137,-0.00003478159585634799,-0.4299832067793186],"max":[1.0199999809265137,1.7499627696495343,0.4299832067793186]},"sizeMeters":[2.04,1.75,0.86],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:54.185Z","updatedAt":"2026-09-12T04:48:54.402Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37226/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TackRackMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37226/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37226/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37226/v1/model.glb\" alt=\"Tack Rack (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37226/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37226/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37224","slug":"medieval-tournament-and-jousting-ground-barding-stand-650755e5","title":"Barding Stand (Medieval Tournament and Jousting Ground)","summary":"Trestle stand carrying a blank caparison and a padded roll, the way barding is aired between courses.","description":"An A frame trestle 1.4 m to the ridge with a blank caparison draped over both flanks, a scalloped valance on each side and a padded roll along the top. There is no animal under it: the pack has no creatures at all, because this library has no skinning and a posed beast would be dead weight. Dimensions 1.70 × 1.52 × 1.50 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. The caparison and the valance are static: cloth needs a joint per fold, which a rigid node transform cannot give it.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-barding-stand-650755e5","cdnUrl":"https://cdn.3dassets.dev/assets/37224/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-barding-stand-650755e5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37224/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37224/v1/poster.webp","blurhash":"U8DvDy?b00H=pI%1D*D*00Ri.TNg=yxt%0M|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14316,"triangles":248,"vertices":568,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.8500000238418579,-0.00005328554104022665,-0.75],"max":[0.8500000238418579,1.5239956361055556,0.75]},"sizeMeters":[1.7,1.524,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:53.367Z","updatedAt":"2026-09-12T04:48:53.458Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37224/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BardingStandMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37224/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37224/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37224/v1/model.glb\" alt=\"Barding Stand (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37224/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37224/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37225","slug":"medieval-tournament-and-jousting-ground-saddle-trestle-7741271f","title":"Saddle Trestle (Medieval Tournament and Jousting Ground)","summary":"War saddle with a high cantle on a timber trestle, with skirts, stirrup leathers and irons hanging.","description":"A tournament saddle set on a trestle: a padded seat on a tree with a high cantle and a raised pommel, a blue cloth beneath it, skirts each side and stirrup leathers with irons hanging free, 1.45 m to the pommel. No animal, here or anywhere in the pack. Dimensions 1.20 × 1.58 × 1.02 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-saddle-trestle-7741271f","cdnUrl":"https://cdn.3dassets.dev/assets/37225/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-saddle-trestle-7741271f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37225/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37225/v1/poster.webp","blurhash":"U6CFt+^%004=.6%K9a4=01Na?GaM4:n%~Bs.","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19352,"triangles":364,"vertices":848,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0,-0.5100241461682626],"max":[0.6000000238418579,1.5815349955887223,0.5100241461682626]},"sizeMeters":[1.2,1.582,1.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:54.145Z","updatedAt":"2026-09-12T04:48:54.322Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37225/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SaddleTrestleMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37225/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37225/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37225/v1/model.glb\" alt=\"Saddle Trestle (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37225/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37225/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37231","slug":"medieval-tournament-and-jousting-ground-hay-bale-stack-187a267e","title":"Hay Bale Stack (Medieval Tournament and Jousting Ground)","summary":"Six hay bales stacked three courses high with the courses turned against each other.","description":"Six corded bales stacked three courses high, each course turned slightly against the one below, 2.2 m to the top. One placement where six would do. Dimensions 2.77 × 2.23 × 1.89 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data. Functional variant of hay-bale.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-hay-bale-stack-187a267e","cdnUrl":"https://cdn.3dassets.dev/assets/37231/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-hay-bale-stack-187a267e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37231/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37231/v1/poster.webp","blurhash":"U8Eol7tR00-p-:~V9a4;009Z~UjYE102s,-o","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":10324,"triangles":288,"vertices":632,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.7589250206947327,-0.00008813489359105198,-0.4713611211347475],"max":[2.0122907161712646,2.2288180909454907,1.4229133035707369]},"sizeMeters":[2.771,2.229,1.894],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:48:56.796Z","updatedAt":"2026-09-12T04:48:56.969Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37231/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HayBaleStackMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37231/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37231/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37231/v1/model.glb\" alt=\"Hay Bale Stack (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37231/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37231/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37244","slug":"medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","title":"Ale Barrel (Medieval Tournament and Jousting Ground)","summary":"Hooped ale barrel laid on a timber stillage with a tap driven in and two cups on top.","description":"A 1.1 m hooped oak barrel on a wedge stillage, tapped at the head with a spile beside it and two cups standing on the belly, 1.4 m to the top. Nothing pours: the tap is geometry. Dimensions 1.32 × 1.38 × 1.10 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","cdnUrl":"https://cdn.3dassets.dev/assets/37244/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-ale-barrel-bf2e72bb","thumbnailUrl":"https://cdn.3dassets.dev/assets/37244/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37244/v1/poster.webp","blurhash":"UDE2RU~B029aE+s;afNG02Rj-.R-a0M|-V%1","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22344,"triangles":484,"vertices":1039,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.00001561753018664014,-0.549974081120951],"max":[0.7200000286102295,1.3800413683463844,0.549974081120951]},"sizeMeters":[1.32,1.38,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:02.880Z","updatedAt":"2026-09-12T04:49:02.983Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37244/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AleBarrelMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37244/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37244/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37244/v1/model.glb\" alt=\"Ale Barrel (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37244/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37244/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37245","slug":"medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","title":"Ale Jugs (Medieval Tournament and Jousting Ground)","summary":"Three glazed jugs and four turned cups on a low serving stool, for the ale line behind the stands.","description":"Three glazed pottery jugs and four turned wooden cups standing on a low oak stool 400 mm high. Static props for a serving line. Dimensions 0.90 × 0.87 × 0.64 m (X × Y × Z). Ground-contact origin under the footprint. Metre units, +Y up, +Z forward. Kingdom limestone, ashlar, timber, oak, iron, cloth, slate and straw with tournament grass, earth and canvas, flat shaded with no textures so the file loads in every engine. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","cdnUrl":"https://cdn.3dassets.dev/assets/37245/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-tournament-and-jousting-ground-ale-jugs-11c884d9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37245/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37245/v1/poster.webp","blurhash":"U8Fhkd^%00Ip03Vt$zoz019bM{xF};x@%MIo","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30432,"triangles":668,"vertices":1478,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.44999998807907104,-0.000017083434818210286,-0.320014030036882],"max":[0.44999998807907104,0.8700049646185334,0.320014030036882]},"sizeMeters":[0.9,0.87,0.64],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:04.092Z","updatedAt":"2026-09-12T04:49:04.314Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37245/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AleJugsMedievalTournamentAndJoustingGround(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37245/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37245/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37245/v1/model.glb\" alt=\"Ale Jugs (Medieval Tournament and Jousting Ground)\" camera-controls auto-rotate></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37245/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37245/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}