{"data":{"id":"141","slug":"fish-market-and-trawler-quay","title":"Fish Market and Trawler Quay","summary":"Walk a working fish quay: a steel trawler alongside the wall, the crane and ice plant behind it, and an open fronted market hall of iced slabs, filleting benches and stacked boxes running the length of the landward side.","url":"https://3dassets.dev/demos/fish-market-and-trawler-quay","coverUrl":"https://cdn.3dassets.dev/media/fish-market-and-trawler-quay-demo.png","featured":true,"pack":{"slug":"fish-market-and-trawler-quay","title":"Fish Market and Trawler Quay","url":"https://3dassets.dev/packs/fish-market-and-trawler-quay","summary":"A working fish quay: a steel stern trawler in sections with a slipway, net drum and gantry, ported quay, water and market floor modules, an open fronted market hall of slabs, ice and benches, a crane, an ice plant, and the boxes, creels and nets a landing runs on.","assetCount":61,"totalBytes":3384756,"starterScene":{"slug":"fish-market-and-trawler-quay-fish-market-508675a8-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/37313/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-508675a8-starter-scene","fileSize":1447860}},"placementCount":376,"assetCount":60,"spawn":{"position":[3.2,0,-1.4],"yaw":288},"publishedAt":"2026-09-12T05:06:11.113Z","updatedAt":"2026-09-12T05:06:11.114Z","description":"## What is here\n\nA 50 by 40 metre harbour, laid from the pack's own quay, water and market floor modules so the sea meets the wall rather than opening into a hole. The quay runs the full length of the plot with bollards, ladder heads, rope coils and lamp columns, and the water carries on past it to the north.\n\nA steel stern trawler lies alongside in three hull sections with its wheelhouse, whaleback, mast gantry, net drum, trawl door rack and stern ramp, moored against fender runs with the gangway brow down. Her deck sits above quay level, so she is here as the thing you look at, not somewhere you walk: everything you can reach is on the quay.\n\nThe quay crane and the ice plant hopper and chute work the western end. Seven market hall bays run the landward side, six open fronted onto the quay and one with its shutter down, dressed with display slabs, crushed ice trays, blank price boards, hanging and bench scales, the lobster and crab tank, filleting benches, knife racks, gutting tables, offal bins, hose reels and the wash down point. Creels, net piles, bait barrels, buoy racks and a mending frame stack along the landward edge with the chandlery and harbour office fronts, the weighbridge plate and the fuel point. Barrows, a hand pallet truck, a forklift, pallet stacks and several hundred fish boxes clutter the rest, because a quay at landing time is not tidy.\n\n## What moves\n\nThe net drum spins on its pedestals. The quay crane slews and its hook lifts, and its cab door opens. The stern ramp, the deck hatch, the fish hold hatch, the crew cabin door, the wheelhouse door and the chill room door all open and close, and so does the market hall roller shutter. The forklift lifts its mast, opens its bonnet and rolls its wheels; the barrow and the hand pallet truck roll theirs. The hanging scale pan rocks, the hose reels turn, and the offal bin lid opens.\n\n## What does not move, and why\n\nNets, ropes, rigging, hoses, water and ice are static. Flexible material and fluid need a joint for every element or a shader, and neither is reachable with the one rigid node transform this library animates with, so they are modelled in a pose and left there.\n\nThere are no people and no rigged creatures anywhere in the pack: nothing here is skinned. The fish on the slabs and in the trays are display props laid on ice, not animals.\n\nEvery price board, hull name board, registration panel and crate stencil is blank on purpose. Nothing in this harbour names a real port, vessel, merchant or maker.","scene":{"version":1,"spawn":{"position":[3.2,0,-1.4],"yaw":288},"ground":{"style":"none"},"environment":{"preset":"outdoor","light":"day","shadows":true},"placements":[{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-20,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-12,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-4,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[4,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[12,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[20,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-20,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-12,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-4,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[4,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[12,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[20,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-18,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-14,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-10,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-6,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-2,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[2,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[6,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[10,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[14,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-18,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-14,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-10,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-6,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-2,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[2,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[6,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[10,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[14,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[18,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-18,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-14,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-10,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-6,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-2,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[2,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[6,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[10,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[14,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[18,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-18,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-14,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-10,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-6,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-2,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[2,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[6,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[10,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[14,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[18,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[6,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[10,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[14,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[18,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[6,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[10,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[14,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[18,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-18,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-14,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-10,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-6,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-2,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[2,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-18,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-14,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-10,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-6,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-2,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[2,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","position":[-16,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","position":[-12,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","position":[-8,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","position":[-4,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","position":[0,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-d73aa975","position":[9,0,-12],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7303a4c4","position":[15,0,-12],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-494c3976","position":[-7,0,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ecf3cc73","position":[0,0,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-70731fa7","position":[7,0,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-03369cf3","position":[1,2.3099999999999996,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-11d4d840","position":[7,2.48,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-41d76184","position":[-9.2,2.3,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-034abfb2","position":[-5,2.3,13.5],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fa2036d9","position":[-10.3,0.84,13.5],"rotation":-90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-04a93012","position":[-1.8,2.3,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-554a7c7a","position":[4.3,2.34,13.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-554a7c7a","position":[-4.2,2.3,15.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","position":[-5.5,1.84,10.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","position":[3.5,1.84,10.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fd2ec9d9","position":[-1.2,0,7.9],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83aa4421","position":[-12.5,0,1],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7a3a1335","position":[-12,0,8.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-010acf03","position":[-17,0,1.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cba5e139","position":[-17,0,4.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-17.5,0,5.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-16.7,0,5.7],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-17.2,0.18,5.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[-19.2,0,4.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-15.4,0,6.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-14.6,0,6.5],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-15,0,5.6],"rotation":-8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-13.4,0,6.2],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-12.6,0,6.1],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-12,0,6.5],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-13,0.24,6.15],"rotation":14.32},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-094c9548","position":[-9,0,3.4],"rotation":-90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-64d9943a","position":[-6.4,0,5.4],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","position":[-4.6,0,6],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","position":[1.8,0,6.2],"rotation":-22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[-16,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[-8,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[0,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[8,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[14,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[-6.9,0,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[1.3,0,8.5],"rotation":34.38},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[12.5,0,8.5],"rotation":-22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[-19,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[-3,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[13,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","position":[-5,0,6.2],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","position":[4.5,0,6.2],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7417c179","position":[-2.2,0,4.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7417c179","position":[5.6,0,4.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c6a3f344","position":[-19.6,0,-4.6],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c6a3f344","position":[3.6,0,-4.8],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","position":[8.2,0,3.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","position":[12.6,0,4.6],"rotation":40.11},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694","position":[10.6,0,0.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694","position":[14.6,0,1.4],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[16.6,0,-2.2],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[18.2,0,-0.8],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[6.2,0,1.4],"rotation":8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[7.4,0,0.2],"rotation":-20.05},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","position":[5.4,0,2.6],"rotation":28.65},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","position":[10.6,0,1.2],"rotation":-34.38},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-89b3d64d","position":[8.6,0,6.8],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-89b3d64d","position":[19.2,0,-4.2],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[4.4,0,0.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[5.1,0,-0.6],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[15.2,0,-3.6],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-bf6bb6e9","position":[18.4,0,1.8],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-87b57c9b","position":[10.5,0,-5.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-33f63b36","position":[19.6,0,10.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[13.4,0,-1.4],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[7,0,-2.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[-16,0,-8.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-17.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[-16,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-14.5,0,-11.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-17.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[-16,1.32,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[-12,0,-8.200000000000001],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-13.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[-12,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-10.5,0,-11.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-13.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[-12,1.32,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[-8,0,-8.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-9.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[-8,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-6.5,0,-11.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-9.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[-8,1.32,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[-4,0,-8.200000000000001],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-5.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[-4,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-2.5,0,-11.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-5.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[-4,1.32,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[0,0,-8.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-1.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[0,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[1.5,0,-11.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-1.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[0,1.32,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","position":[-17.4,0,-10.4],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","position":[1.5,0,-10.4],"rotation":-90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","position":[-10.2,0,-9.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0f93d634","position":[-12,2.4,-8.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0f93d634","position":[-4,2.4,-8.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-82f111a2","position":[-12,0.95,-11.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-82f111a2","position":[-4,0.95,-11.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-67d51656","position":[-14,0,-12.35],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-67d51656","position":[-2,0,-12.35],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-99a9bcb1","position":[-2.6,0,-9.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c216de0e","position":[-18.2,0,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-76b9d87b","position":[-15,0,-12.78],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-8.4,0.95,-11.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-16.4,0.95,-11.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[0.6,0,-8],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-6.6,0,-8],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-5.9,0,-8.2],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-1.2,0,-8.1],"rotation":28.65},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[1.2,0,-8.2],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-18.4,0,-8.2],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[2.2,0,-8.4],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-64d9943a","position":[-17,0,-6.2],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[3.4,0,-6.4],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-15.6,0,-4.6],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-14.6,0,-4.4],"rotation":-1.15},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-13.6,0,-4.6],"rotation":9.17},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-11.2,0,-4.5],"rotation":19.48},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-10.2,0,-4.3],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-7.4,0,-4.6],"rotation":-1.15},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-6.4,0,-4.4],"rotation":9.17},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-3.2,0,-4.5],"rotation":19.48},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-2.2,0,-4.7],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[0.6,0,-4.5],"rotation":-1.15},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-15.6,0.24,-4.6],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-13.6,0.24,-4.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-10.2,0.24,-4.3],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-6.4,0.24,-4.4],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-2.2,0.24,-4.7],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-19,0,-1.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-19.2,0,-2.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-9,0,-5.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-16.4,0,-1.8],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-16.4,0.24,-1.8],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-15.4,0,-1.6],"rotation":-8.02},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-15.4,0.24,-1.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-14.4,0,-1.8],"rotation":1.15},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-14.4,0.24,-1.8],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-13.4,0,-1.6],"rotation":10.31},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-13.4,0.24,-1.6],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-9.6,0,-1.7],"rotation":19.48},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-9.6,0.24,-1.7],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-8.6,0,-1.9],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-8.6,0.24,-1.9],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-7.6,0,-1.7],"rotation":-8.02},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-7.6,0.24,-1.7],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-6.6,0,-1.9],"rotation":1.15},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-6.6,0.24,-1.9],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-2.4,0,-1.8],"rotation":10.31},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-2.4,0.24,-1.8],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-1.4,0,-1.6],"rotation":19.48},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-1.4,0.24,-1.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-0.4,0,-1.8],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-0.4,0.24,-1.8],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[0.6,0,-1.6],"rotation":-8.02},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[0.6,0.24,-1.6],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[-11.8,0,-1.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[-4.6,0,-1.8],"rotation":-8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-12.8,0,-4.4],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-5.6,0,-4.4],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[1.8,0,-1.8],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-18.6,0,-4.4],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-10.8,0,-2.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-3.4,0,-2.6],"rotation":-22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-26,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-22,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[22,-0.12,5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-26,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-22,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[22,-0.12,1],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-26,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[-22,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[22,-0.12,-3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-26,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-22,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[22,-0.12,-7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-26,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","position":[-22,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","position":[22,-0.12,-11],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-26,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[-22,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[18,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","position":[22,-0.12,8.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-28,-0.12,14],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","position":[-28,-0.12,22],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","position":[-20,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-92a62e78","position":[-24,0,-10],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[-20,0,-8.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-21.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[-20,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[-20,1.3,-12.8],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-21.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","position":[-24,0,-8.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","position":[-25.4,0,-7.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","position":[-24,0,-11.4],"rotation":180},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","position":[-24,1.3,-12.8],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","position":[-25.5,0,-11.4],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","position":[-15.2,0,-6.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-67d51656","position":[-26,0,-12.3],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-82f111a2","position":[-20,0.95,-11.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0f93d634","position":[-20,2.4,-8.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c216de0e","position":[-22.2,0,-12.8],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c6a3f344","position":[-25.7,0,-9.2],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7417c179","position":[-23,0,-5.6],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-99a9bcb1","position":[-20.8,0,-6.4],"rotation":8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-27,0,-9],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-27,0.26,-9],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-27,0,-10.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-27,0.26,-10.2],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-27,0,-11.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-27,0.26,-11.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-19.2,0,-9.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-18.4,0,-9.5],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-22.4,0,-9.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-23.2,0,-9.5],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-26.2,0,-9.6],"rotation":9.17},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-21,0,-12.4],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-24,0,-12.4],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-16.9,0,-12.4],"rotation":19.48},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-23.6,0,-7.2],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-27,0,-7.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-26.6,0,-6.4],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-19.6,0,-12.5],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-24.6,0,-6.9],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-18.6,0,-6.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-21.6,0,-10.6],"rotation":8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-19.6,0,-5.2],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[-24,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[-20,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[-19.5,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[-4,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[4,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[11,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","position":[18,0,9.2],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[-17.5,0,8.5],"rotation":20},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[-22,0,8.5],"rotation":-30},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[5.5,0,8.5],"rotation":14.32},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","position":[17,0,8.5],"rotation":-40.11},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[-26.5,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[-7,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[5,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","position":[20,0,7],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","position":[-9.5,1.8,10.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","position":[7.5,1.8,10.4],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","position":[-14,0,6.2],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","position":[13,0,6.2],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","position":[21,0,-8],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","position":[-23,0,3.5],"rotation":-25.78},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694","position":[-26,0,0.6],"rotation":90},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[20.5,0,2.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[17.8,0,-2.6],"rotation":-14.32},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","position":[-25,0,-1.5],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","position":[19.4,0,4.4],"rotation":-22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","position":[-22.6,0,-0.2],"rotation":28.65},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[-24,0,0.5],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[18.6,0,-6.6],"rotation":20.05},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[2.8,0,0.6],"rotation":-14.32},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-89b3d64d","position":[-23,0,6.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","position":[-14,0,4.6],"rotation":-160},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","position":[5.4,0,-6.6],"rotation":200},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-64d9943a","position":[13.6,0,-2.4],"rotation":-100},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-17,0,6.9],"rotation":0},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","position":[-15.5,0,6.9],"rotation":20.05},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[-21,0,-2.5],"rotation":8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[16,0,-8.6],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[20,0,-10.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[-25,0,-3.5],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-13.8,0,2.6],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-12.8,0,2.4],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-11.8,0,2.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-10.6,0,2.4],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-8.2,0,5.8],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-9.2,0,6.4],"rotation":9.17},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[-2.8,0,2.4],"rotation":22.92},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[-1.8,0,2.6],"rotation":-8.02},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[0.4,0,5.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[2.9,0,4.6],"rotation":-17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[3.6,0,2.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[6,0,6],"rotation":-5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-13.2,0,3.6],"rotation":5.73},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-7.6,0,4.8],"rotation":-11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[0.8,0,4.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[4,0,3.4],"rotation":-8.02},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","position":[-19.4,0,6.3],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","position":[-0.6,0,3.4],"rotation":8.59},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","position":[2.2,0,2.6],"rotation":-20.05},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","position":[-3.4,0,5.4],"rotation":11.46},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","position":[1.2,0,3.6],"rotation":17.19},{"asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","position":[2,0,5],"rotation":-8.59}],"points":[{"position":[16,0,3],"title":"The landward end","text":"Creels, net piles and a mending frame stack where the quay runs out, with the fuel point and the buoy rack behind them. The weighbridge plate is set flush into the deck by the office.","asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694"},{"position":[2,0,6],"title":"Alongside","text":"The trawler lies against the fenders on the quay edge, bow to the east. Bollards, rope coils and a ladder head run the whole length of the wall, and the gangway brow lands just forward of the wheelhouse.","asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4"},{"position":[-6,0,6.5],"title":"The landing","text":"Boxes come off the deck and go straight down the quay in barrows and on pallets. The net drum turns on its pedestals aft, the stern ramp lifts, and the deck and fish hold hatches open.","asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-034abfb2"},{"position":[-14,0,4.5],"title":"Crane and ice","text":"The quay crane slews and its hook lifts. The ice plant hopper stands behind it with the chute down onto the quay, where trays of crushed ice are filled for the slabs.","asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7a3a1335"},{"position":[-8,0,-6],"title":"The market front","text":"Seven bays, open fronted onto the quay, one with its shutter down. Slabs of iced fish face the visitor with a blank price board at each, a hanging scale over two of them and the lobster and crab tank at the front.","asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091"},{"position":[-12,0,-10.2],"title":"Filleting and gutting","text":"Benches, knife racks and bench scales run the back of the hall, with gutting tables, offal bins on castors, hose reels and the wash down point. The floor is channel drained the whole way.","asset":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2"}],"poster":{"position":[3,1.7,-1],"lookAt":[-10.3,0.7,3.3]}},"bounds":{"min":[-34.90000009536743,-0.12006042798986698,-15],"max":[26.90000009536743,10.930000114440919,28.0003632481208]},"assets":[{"id":"37268","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","title":"Harbour water module, 8 m (Fish Market and Trawler Quay)","summary":"An 8 m square of harbour water with a faint swell worked into its surface, for laying the basin around a berth. Ported on all four edges, so the water tiles out to meet the quay rather than leaving a hole in the ground.","description":"An 8 m square of harbour water with a faint swell worked into its surface, for laying the basin around a berth. Ported on all four edges, so the water tiles out to meet the quay rather than leaving a hole in the ground. Overall 9.80 by 0.13 by 8.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is at the centre of the module; lay it at y=-0.12 so the water surface is the world zero plane, level with the quay. Static surface: the water is a plate with no waves, ripple animation or transparency, because a rigid node transform cannot make a sea and a GLB ships no shader. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","cdnUrl":"https://cdn.3dassets.dev/assets/37268/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-0b602eb7","thumbnailUrl":"https://cdn.3dassets.dev/assets/37268/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37268/v1/poster.webp","blurhash":"U5698;tR00VstlayRiog00V??^kCMKj]t7Vs","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":3408,"triangles":48,"vertices":112,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-4.900000095367432,0.0002020919315145614,-4.000363248120797],"max":[4.900000095367432,0.13179790735322972,4.000363248120797]},"sizeMeters":[9.8,0.132,8.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:14.418Z","updatedAt":"2026-09-12T04:49:14.518Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37268/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HarbourWaterModule8MFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37268/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37268/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37268/v1/model.glb\" alt=\"Harbour water module, 8 m (Fish Market and Trawler Quay)\" 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/37268/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/37268/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37269","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","title":"Quay edge module with ladder head (Fish Market and Trawler Quay)","summary":"The 4 m by 3 m edge of the quay: a steel faced coping along the lip, a yellow safety line set back from it, two recessed tie down pockets and the head of a wall ladder, with its curved grab stiles standing above the coping.","description":"The 4 m by 3 m edge of the quay: a steel faced coping along the lip, a yellow safety line set back from it, two recessed tie down pockets and the head of a wall ladder, with its curved grab stiles standing above the coping. Overall 4.00 by 1.28 by 3.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is at the centre of the footprint with the seaward lip toward +Z; lay it at y=-0.12 in line with the deck modules. Only the head of the ladder is modelled, because the pack keeps water and quay on one level so a walkable scene can reach the whole place. Static modular piece. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","cdnUrl":"https://cdn.3dassets.dev/assets/37269/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-8586e645","thumbnailUrl":"https://cdn.3dassets.dev/assets/37269/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37269/v1/poster.webp","blurhash":"UFCZbDxu00WC9FofxuWA00M{-;oe~qRjRkt7","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":58564,"triangles":192,"vertices":438,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.000060427989866981835,-1.49992370372631],"max":[2.001199960708618,1.2817287804403628,1.49992370372631]},"sizeMeters":[4.001,1.282,3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:14.438Z","updatedAt":"2026-09-12T04:49:14.559Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37269/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuayEdgeModuleWithLadderHeadFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37269/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37269/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37269/v1/model.glb\" alt=\"Quay edge module with ladder head (Fish Market and Trawler Quay)\" 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/37269/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/37269/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37267","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","title":"Quay deck module, 4 m (Fish Market and Trawler Quay)","summary":"The plain 4 m square of a working quay: power floated concrete with saw cut joints and a cast in drain channel under its grating, ported on all four edges so a quay tiles to any size.","description":"The plain 4 m square of a working quay: power floated concrete with saw cut joints and a cast in drain channel under its grating, ported on all four edges so a quay tiles to any size. Overall 4.00 by 0.13 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is at the centre of the tile footprint; lay tiles at y=-0.12 so the wearing surface is the world zero plane and everything else in the pack stands on y=0. Static modular piece; the joints are recessed and the grating is modelled. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","cdnUrl":"https://cdn.3dassets.dev/assets/37267/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-28f3e5ed","thumbnailUrl":"https://cdn.3dassets.dev/assets/37267/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37267/v1/poster.webp","blurhash":"U6CZbE-;00M{-;axRjof00D%~qof4nogt6M{","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":57292,"triangles":168,"vertices":392,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.000060427989866981835,-2],"max":[2,0.12990523817357438,2]},"sizeMeters":[4,0.13,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:13.884Z","updatedAt":"2026-09-12T04:49:14.157Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37267/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuayDeckModule4MFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37267/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37267/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37267/v1/model.glb\" alt=\"Quay deck module, 4 m (Fish Market and Trawler Quay)\" 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/37267/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/37267/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37282","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","title":"Market floor module with channel drain (Fish Market and Trawler Quay)","summary":"The 4 m square a fish market floor is laid from: a power floated slab falling to a central channel drain under its stainless grating, with a rodding eye in one corner, ported on the quay's own 4 m ground grid.","description":"The 4 m square a fish market floor is laid from: a power floated slab falling to a central channel drain under its stainless grating, with a rodding eye in one corner, ported on the quay's own 4 m ground grid. Overall 4.00 by 0.13 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is at the centre of the tile; lay it at y=-0.12 so the floor surface is the world zero plane, flush with the quay outside. Static modular piece. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","cdnUrl":"https://cdn.3dassets.dev/assets/37282/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-2f36f6a9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37282/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37282/v1/poster.webp","blurhash":"U6Ci~;-;00Rk-;j?Rjj]00IU~qWB4na}fiWA","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":59140,"triangles":204,"vertices":476,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2,0.000009797454820756335,-2],"max":[2,0.13158700972973753,2]},"sizeMeters":[4,0.132,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:21.434Z","updatedAt":"2026-09-12T04:49:21.622Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37282/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarketFloorModuleWithChannelDrainFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37282/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37282/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37282/v1/model.glb\" alt=\"Market floor module with channel drain (Fish Market and Trawler Quay)\" 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/37282/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/37282/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37281","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","title":"Market hall bay, shutter up (Fish Market and Trawler Quay)","summary":"The same bay with its shutter rolled into the head box: the drum and the bottom rail show at the head and the opening is clear onto the quay, which is how a market bay stands through a working morning.","description":"The same bay with its shutter rolled into the head box: the drum and the bottom rail show at the head and the opening is clear onto the quay, which is how a market bay stands through a working morning. Overall 4.03 by 4.92 by 7.53 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The open pose is baked into the geometry, so this variant ships no clip: use the canonical bay where the shutter has to move. Static variant. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","cdnUrl":"https://cdn.3dassets.dev/assets/37281/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-83767b83","thumbnailUrl":"https://cdn.3dassets.dev/assets/37281/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37281/v1/poster.webp","blurhash":"UGHoLD0K00%M~qIoM{t600oJRjxus,RPWB%M","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":19388,"triangles":348,"vertices":785,"meshes":6,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.015042524464083,-0.00009888508614741554,-3],"max":[2.015042524464083,4.919906899472612,4.530000162124634]},"sizeMeters":[4.03,4.92,7.53],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:20.887Z","updatedAt":"2026-09-12T04:49:21.065Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37281/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarketHallBayShutterUpFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37281/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37281/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37281/v1/model.glb\" alt=\"Market hall bay, shutter up (Fish Market and Trawler Quay)\" 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/37281/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/37281/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37292","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-d73aa975","title":"Chandlery shop front (Fish Market and Trawler Quay)","summary":"A 6 m timber shore front for a ship chandler: a stall riser, two glazed windows dressed with buoys and coiled line, a recessed glazed door, a blank fascia board, a parapet and an A frame board on the pavement.","description":"A 6 m timber shore front for a ship chandler: a stall riser, two glazed windows dressed with buoys and coiled line, a recessed glazed door, a blank fascia board, a parapet and an A frame board on the pavement. Overall 6.00 by 4.54 by 1.61 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the pavement at the centre of the front, the shop face toward +Z; run fronts at a 6 m pitch on their `shore-front-6m` ports. Static front; the door does not swing. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-d73aa975","cdnUrl":"https://cdn.3dassets.dev/assets/37292/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-d73aa975","thumbnailUrl":"https://cdn.3dassets.dev/assets/37292/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37292/v1/poster.webp","blurhash":"U8EM5o0L00xt_2?a9a4o4Tx[b_n$$f~U9u0M","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":93988,"triangles":900,"vertices":2071,"meshes":9,"materials":9,"textures":1,"animations":[],"boundingBox":{"min":[-3,-0.0001193464455377935,-0.15015043300081188],"max":[3,4.540119308298565,1.459212645706424]},"sizeMeters":[6,4.54,1.609],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:25.433Z","updatedAt":"2026-09-12T04:49:25.540Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37292/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChandleryShopFrontFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37292/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37292/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37292/v1/model.glb\" alt=\"Chandlery shop front (Fish Market and Trawler Quay)\" 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/37292/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/37292/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37293","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7303a4c4","title":"Harbour office front (Fish Market and Trawler Quay)","summary":"The same 6 m front rendered as a harbour office: painted blockwork, a glazed entrance, a blank notice case, upper floor windows, two condenser units on the parapet and a flagless signal mast beside the door.","description":"The same 6 m front rendered as a harbour office: painted blockwork, a glazed entrance, a blank notice case, upper floor windows, two condenser units on the parapet and a flagless signal mast beside the door. Overall 6.34 by 7.45 by 0.84 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static front. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-7303a4c4","cdnUrl":"https://cdn.3dassets.dev/assets/37293/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-7303a4c4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37293/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37293/v1/poster.webp","blurhash":"U9CP|tNH00-:4n%M-;IT00M{_Nxv9aV@%LR:","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":76972,"triangles":540,"vertices":1250,"meshes":8,"materials":8,"textures":1,"animations":[],"boundingBox":{"min":[-3.0002344964963386,-0.000046803738289469266,-0.15009544680830317],"max":[3.34023441066565,7.449999809265137,0.6900672837763285]},"sizeMeters":[6.34,7.45,0.84],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:25.839Z","updatedAt":"2026-09-12T04:49:25.931Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37293/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HarbourOfficeFrontFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37293/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37293/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37293/v1/model.glb\" alt=\"Harbour office front (Fish Market and Trawler Quay)\" 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/37293/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/37293/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37255","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-494c3976","title":"Steel trawler stern section with slipway (Fish Market and Trawler Quay)","summary":"The after 7 m of the hull, built the way a stern trawler really is: the deck is split by an open slipway trough running up from a raked transom, with rubbing rollers down its cheeks, a bulkhead at its head and the gallows posts and towing beam over the quarters.","description":"The after 7 m of the hull, built the way a stern trawler really is: the deck is split by an open slipway trough running up from a raked transom, with rubbing rollers down its cheeks, a bulkhead at its head and the gallows posts and towing beam over the quarters. Overall 7.29 by 4.05 by 6.02 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the waterline at the section joint plane. The trough is 2.7 m wide and open to the sea, which is what the stern ramp closes and what the net drum straddles: stand the drum across the side decks at y=2.3. Static hull piece. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-494c3976","cdnUrl":"https://cdn.3dassets.dev/assets/37255/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-494c3976","thumbnailUrl":"https://cdn.3dassets.dev/assets/37255/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37255/v1/poster.webp","blurhash":"U3Bp;E^Q00^,~UT|Ipm*00wZ~q010h+Gv2IT","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":36136,"triangles":744,"vertices":1727,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-3.787100076675415,0.00005069105910449068,-3.011514570764922],"max":[3.5,4.049734021695121,3.011514570764922]},"sizeMeters":[7.287,4.05,6.023],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:08.527Z","updatedAt":"2026-09-12T04:49:08.622Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37255/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SteelTrawlerSternSectionWithSlipwayFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37255/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37255/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37255/v1/model.glb\" alt=\"Steel trawler stern section with slipway (Fish Market and Trawler Quay)\" 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/37255/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/37255/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37253","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ecf3cc73","title":"Steel trawler midship section (Fish Market and Trawler Quay)","summary":"The 7 m midship of the same hull: parallel topsides with the boot topping and sheer stripe, bulwarks and capping rails both sides, pound coamings down the working deck and two deck sockets, ready to take the wheelhouse and the hold hatch.","description":"The 7 m midship of the same hull: parallel topsides with the boot topping and sheer stripe, bulwarks and capping rails both sides, pound coamings down the working deck and two deck sockets, ready to take the wheelhouse and the hold hatch. Overall 7.00 by 3.19 by 6.02 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the waterline at mid length; the deck is at y=2.3 and the capping rail at y=3.12. Repeat the section to lengthen the vessel: both joint planes are identical. Static hull piece. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-ecf3cc73","cdnUrl":"https://cdn.3dassets.dev/assets/37253/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-ecf3cc73","thumbnailUrl":"https://cdn.3dassets.dev/assets/37253/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37253/v1/poster.webp","blurhash":"U8B:mk,p00t8~US$I;tR00M_;_Os0irq+Zib","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":26036,"triangles":492,"vertices":1151,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-3.5,-0.000029965359745531828,-3.0112155522324286],"max":[3.5,3.1897767618715545,3.0112155522324286]},"sizeMeters":[7,3.19,6.022],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:07.625Z","updatedAt":"2026-09-12T04:49:07.743Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37253/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SteelTrawlerMidshipSectionFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37253/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37253/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37253/v1/model.glb\" alt=\"Steel trawler midship section (Fish Market and Trawler Quay)\" 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/37253/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/37253/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37254","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-70731fa7","title":"Steel trawler bow section (Fish Market and Trawler Quay)","summary":"The forward 7 m of a steel stern trawler, modelled from the waterline up: a raked stem with its stem band and bow roller, rising sheer, flared topsides, bulwarks with freeing ports, the windlass and warping ends, and a stowed anchor in its pocket.","description":"The forward 7 m of a steel stern trawler, modelled from the waterline up: a raked stem with its stem band and bow roller, rising sheer, flared topsides, bulwarks with freeing ports, the windlass and warping ends, and a stowed anchor in its pocket. Overall 8.15 by 3.97 by 6.02 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the waterline at the section joint plane, so the piece rests on y=0 and lies in the pack's water modules without a hole. Butt it to the midship section 7 m aft on the `trawler-hull` port; the working deck is 2.3 m above the waterline. Static hull piece; the windlass, anchor and chain are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-70731fa7","cdnUrl":"https://cdn.3dassets.dev/assets/37254/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-70731fa7","thumbnailUrl":"https://cdn.3dassets.dev/assets/37254/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37254/v1/poster.webp","blurhash":"U89amo.94TtS?^kCMdX900I9peRP4Tn%tSVY","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":42520,"triangles":860,"vertices":2030,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-3.5,0.00015189465988352246,-3.0115052540970884],"max":[4.649799823760986,3.9700482036042644,3.0115052540970884]},"sizeMeters":[8.15,3.97,6.023],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:07.671Z","updatedAt":"2026-09-12T04:49:07.788Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37254/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SteelTrawlerBowSectionFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37254/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37254/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37254/v1/model.glb\" alt=\"Steel trawler bow section (Fish Market and Trawler Quay)\" 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/37254/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/37254/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37256","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-03369cf3","title":"Trawler wheelhouse (Fish Market and Trawler Quay)","summary":"A two deck wheelhouse for a vessel of this size: a casing, raked front window band with mullions, side and after lights, bridge wings on their rails, a mast head with a lamp cluster and a radar bar, a ladder aft and a weathertight door that swings.","description":"A two deck wheelhouse for a vessel of this size: a casing, raked front window band with mullions, side and after lights, bridge wings on their rails, a mast head with a lamp cluster and a radar bar, a ladder aft and a weathertight door that swings. Overall 5.76 by 5.54 by 3.58 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the casing base at the centre of its footprint, so it stands directly on a deck: place it at y=2.3 on the midship section. The blank signband and the flank registration panels carry no lettering. The aerials, the radar bar and the lamp cluster are modelled solid. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-03369cf3","cdnUrl":"https://cdn.3dassets.dev/assets/37256/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-03369cf3","thumbnailUrl":"https://cdn.3dassets.dev/assets/37256/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37256/v1/poster.webp","blurhash":"UDE3SO?b00D%00Rk?bRj00M_TKf,~WxuS1j[","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":39312,"triangles":752,"vertices":1704,"meshes":9,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2.880000114440918,0,-1.8749168327843757],"max":[2.880000114440918,5.539989094398469,1.6998776878283794]},"sizeMeters":[5.76,5.54,3.575],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:09.335Z","updatedAt":"2026-09-12T04:49:09.534Z","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/37256/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 TrawlerWheelhouseFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37256/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/37256/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37256/v1/model.glb\" alt=\"Trawler wheelhouse (Fish Market and Trawler Quay)\" 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/37256/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/37256/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37257","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-11d4d840","title":"Trawler whaleback shelter (Fish Market and Trawler Quay)","summary":"The plated whaleback over the foredeck: a tapering curved shell with grab rails along its crown, bracing to the deck and an opening in its side, which is what keeps green water off the gear on a working trawler.","description":"The plated whaleback over the foredeck: a tapering curved shell with grab rails along its crown, bracing to the deck and an opening in its side, which is what keeps green water off the gear on a working trawler. Overall 4.26 by 1.88 by 5.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the deck at the centre of the shelter's footprint; place it at y=2.4 to 2.5 on the bow section, where the sheer has risen. Static shell. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-11d4d840","cdnUrl":"https://cdn.3dassets.dev/assets/37257/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-11d4d840","thumbnailUrl":"https://cdn.3dassets.dev/assets/37257/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37257/v1/poster.webp","blurhash":"UCD9#O?b00xu9FWBt7Rj00D%_3IU~qt7M|xu","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":14272,"triangles":248,"vertices":608,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.664984288330137,0.00003222500826427499,-2.75],"max":[2.600077762594519,1.8783672734343304,2.75]},"sizeMeters":[4.265,1.878,5.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:09.362Z","updatedAt":"2026-09-12T04:49:09.554Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37257/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrawlerWhalebackShelterFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37257/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37257/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37257/v1/model.glb\" alt=\"Trawler whaleback shelter (Fish Market and Trawler Quay)\" 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/37257/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/37257/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37258","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-41d76184","title":"Mast and rigging gantry (Fish Market and Trawler Quay)","summary":"The stern gantry: an A frame in tubular steel with raked legs and forward props, a head beam carrying the sheave blocks, a cross tube for the hanging gear and a masthead light, with the wire falls modelled solid.","description":"The stern gantry: an A frame in tubular steel with raked legs and forward props, a head beam carrying the sheave blocks, a cross tube for the hanging gear and a masthead light, with the wire falls modelled solid. Overall 1.85 by 6.63 by 5.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the deck between the legs; stand it at y=2.3 over a stern section, legs athwartships. The falls, blocks and rigging are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-41d76184","cdnUrl":"https://cdn.3dassets.dev/assets/37258/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-41d76184","thumbnailUrl":"https://cdn.3dassets.dev/assets/37258/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37258/v1/poster.webp","blurhash":"U28Nws?v00Mx9E4n4U_300?b_4D%8_D%?v%g","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":22492,"triangles":460,"vertices":982,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.5501085354885134,0,-2.949978582851836],"max":[0.300108595093158,6.630000114440918,2.949978582851836]},"sizeMeters":[1.85,6.63,5.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:10.427Z","updatedAt":"2026-09-12T04:49:10.601Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37258/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MastAndRiggingGantryFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37258/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37258/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37258/v1/model.glb\" alt=\"Mast and rigging gantry (Fish Market and Trawler Quay)\" 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/37258/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/37258/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37259","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-034abfb2","title":"Net drum on pedestals (Fish Market and Trawler Quay)","summary":"The trawl net drum: a wide barrel with end flanges and a wound net, carried on two bolted pedestals with a hydraulic motor and its guard on one end. The drum itself is rigged to spin.","description":"The trawl net drum: a wide barrel with end flanges and a wound net, carried on two bolted pedestals with a hydraulic motor and its guard on one end. The drum itself is rigged to spin. Overall 4.15 by 1.94 by 1.68 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the pedestal feet at the drum centreline; stand it across a stern section's side decks at y=2.3, axis athwartships. The motor and its guard stay still. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-034abfb2","cdnUrl":"https://cdn.3dassets.dev/assets/37259/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-034abfb2","thumbnailUrl":"https://cdn.3dassets.dev/assets/37259/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37259/v1/poster.webp","blurhash":"U48;Mm9G00%0IA?bIo9F00t2~WWZbt9F-;%f","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":16940,"triangles":424,"vertices":904,"meshes":10,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-2.299986195145162,0.00009839158653801583,-0.8384783901211675],"max":[1.850000023841858,1.9400000739097596,0.8384783901211675]},"sizeMeters":[4.15,1.94,1.677],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:10.129Z","updatedAt":"2026-09-12T04:49:10.221Z","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/37259/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 NetDrumOnPedestalsFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37259/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/37259/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37259/v1/model.glb\" alt=\"Net drum on pedestals (Fish Market and Trawler Quay)\" 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/37259/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/37259/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37261","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fa2036d9","title":"Stern ramp door (Fish Market and Trawler Quay)","summary":"The plated leaf that closes the slipway trough: a ribbed deck with side cheeks and hazard stripes, hung on a hinge tube in two brackets, lying aft when it is down and lifting to shut the stern.","description":"The plated leaf that closes the slipway trough: a ribbed deck with side cheeks and hazard stripes, hung on a hinge tube in two brackets, lying aft when it is down and lifting to shut the stern. Overall 3.18 by 0.66 by 2.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the hinge line at the centre of the leaf's width; place it at the transom with the leaf reaching aft. The hinge brackets and tube stay still; only the leaf swings. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-fa2036d9","cdnUrl":"https://cdn.3dassets.dev/assets/37261/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-fa2036d9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37261/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37261/v1/poster.webp","blurhash":"U56[%Igh4TIUyEo#RPs,00ix?]xsDNVq%MM{","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":9544,"triangles":148,"vertices":336,"meshes":9,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.590000033378601,0.00007141668752080887,0],"max":[1.590000033378601,0.6599307466509351,2.9000000953674316]},"sizeMeters":[3.18,0.66,2.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:11.153Z","updatedAt":"2026-09-12T04:49:11.275Z","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/37261/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 SternRampDoorFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37261/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/37261/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37261/v1/model.glb\" alt=\"Stern ramp door (Fish Market and Trawler Quay)\" 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/37261/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/37261/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37263","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-04a93012","title":"Fish hold hatch (Fish Market and Trawler Quay)","summary":"The big hatch over the hold: a deep coaming with insulated lining and yellow edge strips, and a stiffened lid with its lifting bar, hinged along the forward edge so it stands clear of the working deck.","description":"The big hatch over the hold: a deep coaming with insulated lining and yellow edge strips, and a stiffened lid with its lifting bar, hinged along the forward edge so it stands clear of the working deck. Overall 2.44 by 0.75 by 2.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The coaming and lining stay still; only the lid lifts. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-04a93012","cdnUrl":"https://cdn.3dassets.dev/assets/37263/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-04a93012","thumbnailUrl":"https://cdn.3dassets.dev/assets/37263/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37263/v1/poster.webp","blurhash":"U2AdAn~X00-MIv-:jpIB009sx_9brn4;%P%L","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":9176,"triangles":116,"vertices":264,"meshes":7,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.2200000286102295,0.00008146952237761407,-1.000042765651394],"max":[1.2200000286102295,0.750021673729179,1.000042765651394]},"sizeMeters":[2.44,0.75,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:12.175Z","updatedAt":"2026-09-12T04:49:12.288Z","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/37263/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 FishHoldHatchFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37263/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/37263/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37263/v1/model.glb\" alt=\"Fish hold hatch (Fish Market and Trawler Quay)\" 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/37263/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/37263/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37262","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-554a7c7a","title":"Deck hatch with a hinged leaf (Fish Market and Trawler Quay)","summary":"A flush deck hatch: a welded coaming on a painted surround, a gasketed leaf with hazard stripes and a lift handle, hinged along its forward edge. Fits a working deck or a quayside chamber.","description":"A flush deck hatch: a welded coaming on a painted surround, a gasketed leaf with hazard stripes and a lift handle, hinged along its forward edge. Fits a working deck or a quayside chamber. Overall 1.10 by 0.32 by 1.10 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The coaming and the dogs stay still; only the leaf swings. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-554a7c7a","cdnUrl":"https://cdn.3dassets.dev/assets/37262/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-554a7c7a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37262/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37262/v1/poster.webp","blurhash":"U5BpLY~B00E454ox-VV{00Ee=wVs}vV[Kix?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":6164,"triangles":72,"vertices":168,"meshes":6,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.550000011920929,0.00003539794966680998,-0.550000011920929],"max":[0.550000011920929,0.31499464892915774,0.550000011920929]},"sizeMeters":[1.1,0.315,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:11.877Z","updatedAt":"2026-09-12T04:49:11.976Z","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/37262/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 DeckHatchWithAHingedLeafFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37262/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/37262/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37262/v1/model.glb\" alt=\"Deck hatch with a hinged leaf (Fish Market and Trawler Quay)\" 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/37262/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/37262/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37265","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","title":"Hull fender run (Fish Market and Trawler Quay)","summary":"Four cylindrical rubber fenders on their lanyards under a common bar, with rope grommets round their feet, as a vessel hangs them over the side when it comes alongside.","description":"Four cylindrical rubber fenders on their lanyards under a common bar, with rope grommets round their feet, as a vessel hangs them over the side when it comes alongside. Overall 4.00 by 1.30 by 0.52 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is at the bottom of the lowest fender, with the hanging bar 1.28 m above it: place the bar at the height of the rail it hangs from, or stand the run against a quay face. The lanyards and grommets are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","cdnUrl":"https://cdn.3dassets.dev/assets/37265/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-49c351b4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37265/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37265/v1/poster.webp","blurhash":"U384b@?c9Gxv_N~qxuRj00%g?baJH=I9tRR*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":44456,"triangles":984,"vertices":2224,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.0000927871055124152,-0.2599688697116661],"max":[2,1.3000201136060248,0.2599688697116661]},"sizeMeters":[4,1.3,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:12.777Z","updatedAt":"2026-09-12T04:49:12.883Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37265/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HullFenderRunFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37265/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37265/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37265/v1/model.glb\" alt=\"Hull fender run (Fish Market and Trawler Quay)\" 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/37265/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/37265/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37266","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fd2ec9d9","title":"Aluminium gangway brow (Fish Market and Trawler Quay)","summary":"A 5 m brow from quay to vessel: a treaded deck on two side girders rising 1.9 m, with stanchions, a yellow top rail each side and non slip treads across the run.","description":"A 5 m brow from quay to vessel: a treaded deck on two side girders rising 1.9 m, with stanchions, a yellow top rail each side and non slip treads across the run. Overall 1.02 by 3.00 by 5.08 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the quay under the low end, at the centre of the run; the high end lands 1.9 m up and 2.5 m forward. Static piece; the brow does not articulate. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-fd2ec9d9","cdnUrl":"https://cdn.3dassets.dev/assets/37266/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-fd2ec9d9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37266/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37266/v1/poster.webp","blurhash":"U59%w_xu4|jF~m%LIuWB00jr-gW=02D%?7oy","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":32304,"triangles":700,"vertices":1568,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5098759896274918,0.0005000589130621513,-2.539073944091797],"max":[0.5098759896274918,2.999934679961839,2.539073944091797]},"sizeMeters":[1.02,2.999,5.078],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:13.594Z","updatedAt":"2026-09-12T04:49:13.769Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37266/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AluminiumGangwayBrowFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37266/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37266/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37266/v1/model.glb\" alt=\"Aluminium gangway brow (Fish Market and Trawler Quay)\" 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/37266/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/37266/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37260","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-83aa4421","title":"Trawl door pair in a deck rack (Fish Market and Trawler Quay)","summary":"Two otter boards stowed upright in their deck rack as they are carried alongside: timber and steel faced boards with shoe bars, bridle plates and back strops, held between four stanchions on a common base.","description":"Two otter boards stowed upright in their deck rack as they are carried alongside: timber and steel faced boards with shoe bars, bridle plates and back strops, held between four stanchions on a common base. Overall 2.40 by 1.60 by 1.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the base plate at its centre; the boards stand 1.25 m and lean out on their rack the way a stowed pair does. The bridles and chain are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-83aa4421","cdnUrl":"https://cdn.3dassets.dev/assets/37260/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-83aa4421","thumbnailUrl":"https://cdn.3dassets.dev/assets/37260/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37260/v1/poster.webp","blurhash":"U5E.;B%M00_24-tR%NoL00IA~9D%,[jExaRQ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":21288,"triangles":428,"vertices":974,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.00004884948531691524,-0.9500900673561401],"max":[1.2000000476837158,1.6000488733271747,0.9500900673561401]},"sizeMeters":[2.4,1.6,1.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:11.119Z","updatedAt":"2026-09-12T04:49:11.241Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37260/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TrawlDoorPairInADeckRackFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37260/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37260/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37260/v1/model.glb\" alt=\"Trawl door pair in a deck rack (Fish Market and Trawler Quay)\" 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/37260/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/37260/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37271","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7a3a1335","title":"Quay crane (Fish Market and Trawler Quay)","summary":"A slewing pedestal crane for working boxes out of a hold: a ballasted base and slew ring, a machinery house and counterweight, a lattice jib reaching 8.6 m, head sheaves, a glazed cab with a door and a hook block on the fall.","description":"A slewing pedestal crane for working boxes out of a hold: a ballasted base and slew ring, a machinery house and counterweight, a lattice jib reaching 8.6 m, head sheaves, a glazed cab with a door and a hook block on the fall. Overall 3.87 by 7.82 by 11.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the quay at the centre of the base, jib over +Z. The hook hoists on its own channel and the upperworks slew on theirs, so play one clip at a time: this kit parents nothing to a turning node. The hoist fall, the luffing gear and the cab glazing stay still. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Rigid node-transform clips: door-open, door-close, hoist-open, hoist-close and slew. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-7a3a1335","cdnUrl":"https://cdn.3dassets.dev/assets/37271/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-7a3a1335","thumbnailUrl":"https://cdn.3dassets.dev/assets/37271/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37271/v1/poster.webp","blurhash":"UC8z_gIA4n_NWYt6s:Rk00x]-=DiaJNHR+xZ","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":106324,"triangles":1368,"vertices":2954,"meshes":46,"materials":7,"textures":1,"animations":["door-open","door-close","hoist-open","hoist-close","slew"],"boundingBox":{"min":[-1.6199853420257568,-0.000006103701986143184,-2.399925242711435],"max":[2.249998495727732,7.820000076293946,9.100000381469727]},"sizeMeters":[3.87,7.82,11.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:15.841Z","updatedAt":"2026-09-12T04:49:15.944Z","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/37271/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 QuayCraneFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37271/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/37271/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37271/v1/model.glb\" alt=\"Quay crane (Fish Market and Trawler Quay)\" 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/37271/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/37271/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37274","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-010acf03","title":"Ice plant hopper (Fish Market and Trawler Quay)","summary":"The flake ice plant: a hoppered bin on four braced legs with a tapered chute outlet and a shut off, a plant house with its condenser and a blank control panel, a caged ladder up one leg and a rail round the bin top.","description":"The flake ice plant: a hoppered bin on four braced legs with a tapered chute outlet and a shut off, a plant house with its condenser and a blank control panel, a caged ladder up one leg and a rail round the bin top. Overall 5.15 by 6.65 by 3.60 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the quay at the centre of the leg square; the outlet is 2.4 m up, which clears a box on a pallet under it. The plant, the outlet valve and the pipework stay still. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-010acf03","cdnUrl":"https://cdn.3dassets.dev/assets/37274/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-010acf03","thumbnailUrl":"https://cdn.3dassets.dev/assets/37274/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37274/v1/poster.webp","blurhash":"U7Awk[%M008__4IU4n-p8wV[t.x]Ql-p-=9F","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"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":37576,"triangles":816,"vertices":1824,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-3.350067095545958,0,-1.7999466184213921],"max":[1.800176301579358,6.650000095367432,1.7999466184213921]},"sizeMeters":[5.15,6.65,3.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:17.050Z","updatedAt":"2026-09-12T04:49:17.143Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37274/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IcePlantHopperFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37274/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37274/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37274/v1/model.glb\" alt=\"Ice plant hopper (Fish Market and Trawler Quay)\" 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/37274/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/37274/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37275","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cba5e139","title":"Ice delivery chute (Fish Market and Trawler Quay)","summary":"The chute that takes flake ice from the plant down to the boxes: a raked trough with side cheeks on a two post frame, a header beam and a delivery sock at the bottom end.","description":"The chute that takes flake ice from the plant down to the boxes: a raked trough with side cheeks on a two post frame, a header beam and a delivery sock at the bottom end. Overall 1.50 by 2.66 by 2.82 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The sock is modelled solid, and the trough does not swing: it is a fixed delivery run. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-cba5e139","cdnUrl":"https://cdn.3dassets.dev/assets/37275/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-cba5e139","thumbnailUrl":"https://cdn.3dassets.dev/assets/37275/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37275/v1/poster.webp","blurhash":"UC9%-eIU00xu_NIUDi%gD%Mxt7-;a#WBxtt7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":11100,"triangles":212,"vertices":477,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500357933177151,0,-0.9500561328394774],"max":[0.7500357933177151,2.6646885871887207,1.8733436294555097]},"sizeMeters":[1.5,2.665,2.823],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:18.492Z","updatedAt":"2026-09-12T04:49:18.606Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37275/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IceDeliveryChuteFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37275/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37275/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37275/v1/model.glb\" alt=\"Ice delivery chute (Fish Market and Trawler Quay)\" 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/37275/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/37275/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37285","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","title":"Crushed ice tray (Fish Market and Trawler Quay)","summary":"A stackable tray of crushed flake ice as it comes off the plant, with a broken surface rather than a flat block, for topping a slab or packing a box.","description":"A stackable tray of crushed flake ice as it comes off the plant, with a broken surface rather than a flat block, for topping a slab or packing a box. Overall 0.69 by 0.26 by 0.49 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The ice is static geometry: melting and settling need a simulation, not a node transform. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","cdnUrl":"https://cdn.3dassets.dev/assets/37285/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-10f8c307","thumbnailUrl":"https://cdn.3dassets.dev/assets/37285/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37285/v1/poster.webp","blurhash":"U6HLl0~q00WB~q?bM{IU00D%?cIU009FflM{","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":17864,"triangles":384,"vertices":834,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.3429115116596222,2.9379258016659637e-7,-0.2428960901400748],"max":[0.3429115116596222,0.2617452281448519,0.2428960901400748]},"sizeMeters":[0.686,0.262,0.486],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:22.662Z","updatedAt":"2026-09-12T04:49:22.749Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37285/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CrushedIceTrayFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37285/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37285/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37285/v1/model.glb\" alt=\"Crushed ice tray (Fish Market and Trawler Quay)\" 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/37285/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/37285/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37298","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","title":"Pallet stack (Fish Market and Trawler Quay)","summary":"Six timber pallets stacked and strapped: full boards, bearers and bottom deck boards on each, with a strap over the top one. The thing every box on the quay ends up on.","description":"Six timber pallets stacked and strapped: full boards, bearers and bottom deck boards on each, with a strap over the top one. The thing every box on the quay ends up on. Overall 1.26 by 1.01 by 0.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static stack; the strap is modelled solid. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","cdnUrl":"https://cdn.3dassets.dev/assets/37298/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-cb41fa6c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37298/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37298/v1/poster.webp","blurhash":"UDJao$~p00aJ?HxuWAV[00NH4:NGxuxtRjIU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":37004,"triangles":804,"vertices":1876,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6299999952316284,-0.000002008538463438292,-0.4499771289983769],"max":[0.6299999952316284,1.0111978243372826,0.4499771289983769]},"sizeMeters":[1.26,1.011,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:28.596Z","updatedAt":"2026-09-12T04:49:28.700Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37298/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PalletStackFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37298/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37298/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37298/v1/model.glb\" alt=\"Pallet stack (Fish Market and Trawler Quay)\" 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/37298/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/37298/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37296","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","title":"Fish box stack (Fish Market and Trawler Quay)","summary":"Six empty fish boxes nested and stacked as they wait at the back of a stall: 1.2 m of boxes with their lugs interlocked and every stencil panel blank.","description":"Six empty fish boxes nested and stacked as they wait at the back of a stall: 1.2 m of boxes with their lugs interlocked and every stencil panel blank. Overall 0.86 by 1.24 by 0.48 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static stack. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","cdnUrl":"https://cdn.3dassets.dev/assets/37296/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-5ef1d67f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37296/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37296/v1/poster.webp","blurhash":"U6G+UM~q009F?c-;IU9G00ay?bIo-;%LM{D%","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":26180,"triangles":576,"vertices":1284,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.4299965603334785,0,-0.2358443011613107],"max":[0.4299965603334785,1.2419301271438599,0.2409755237698173]},"sizeMeters":[0.86,1.242,0.477],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:27.120Z","updatedAt":"2026-09-12T04:49:27.212Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37296/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FishBoxStackFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37296/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37296/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37296/v1/model.glb\" alt=\"Fish box stack (Fish Market and Trawler Quay)\" 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/37296/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/37296/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37297","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","title":"Fish box stack, blue (Fish Market and Trawler Quay)","summary":"The same six box stack in the second moulding colour, for breaking up a row of stacks along a quay.","description":"The same six box stack in the second moulding colour, for breaking up a row of stacks along a quay. Overall 0.86 by 1.24 by 0.48 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static stack. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","cdnUrl":"https://cdn.3dassets.dev/assets/37297/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-0771b9fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/37297/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37297/v1/poster.webp","blurhash":"U46]eFys00Hr.lkXIAi]L}VtoOs:yEo#R5V=","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":26216,"triangles":576,"vertices":1284,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.4299965603334785,0,-0.2358443011613107],"max":[0.4299965603334785,1.2419301271438599,0.2409755237698173]},"sizeMeters":[0.86,1.242,0.477],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:27.522Z","updatedAt":"2026-09-12T04:49:27.611Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37297/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FishBoxStackBlueFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37297/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37297/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37297/v1/model.glb\" alt=\"Fish box stack, blue (Fish Market and Trawler Quay)\" 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/37297/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/37297/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37294","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","title":"Fish box, iced (Fish Market and Trawler Quay)","summary":"A single moulded fish box with tapered sides, stacking lugs and a blank stencil panel, filled with crushed ice and two display fish. The unit the whole quay counts in.","description":"A single moulded fish box with tapered sides, stacking lugs and a blank stencil panel, filled with crushed ice and two display fish. The unit the whole quay counts in. Overall 0.86 by 0.24 by 0.48 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The fish are market display props laid on ice, not creatures: no skinning, no rig and nothing alive anywhere in this pack. The ice and the fish are static geometry. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","cdnUrl":"https://cdn.3dassets.dev/assets/37294/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-ca93f7d5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37294/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37294/v1/poster.webp","blurhash":"U4F$Y7~q00xu_M~qof4n00IT.94oMw004.t8","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"modern","title":"Modern"},{"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":16276,"triangles":300,"vertices":662,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.4300000071525574,0.000010747768679056358,-0.2358720703317382],"max":[0.4300000071525574,0.24191937937518082,0.24100237981516814]},"sizeMeters":[0.86,0.242,0.477],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:26.904Z","updatedAt":"2026-09-12T04:49:27.056Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37294/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FishBoxIcedFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37294/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37294/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37294/v1/model.glb\" alt=\"Fish box, iced (Fish Market and Trawler Quay)\" 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/37294/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/37294/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37295","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","title":"Fish box, iced, blue (Fish Market and Trawler Quay)","summary":"The same iced box moulded in the quay's second colour, so a stack of mixed boxes does not read as one repeated model.","description":"The same iced box moulded in the quay's second colour, so a stack of mixed boxes does not read as one repeated model. Overall 0.86 by 0.24 by 0.48 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The ice and the fish are static geometry. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","cdnUrl":"https://cdn.3dassets.dev/assets/37295/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-a8c73272","thumbnailUrl":"https://cdn.3dassets.dev/assets/37295/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37295/v1/poster.webp","blurhash":"U58YC.%~00J%_4pJIoM^00VY?cVr00v}-6sA","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"modern","title":"Modern"},{"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":16332,"triangles":300,"vertices":662,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.4300000071525574,0.000010747768679056358,-0.2358720703317382],"max":[0.4300000071525574,0.24191937937518082,0.24100237981516814]},"sizeMeters":[0.86,0.242,0.477],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:26.886Z","updatedAt":"2026-09-12T04:49:27.039Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37295/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FishBoxIcedBlueFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37295/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37295/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37295/v1/model.glb\" alt=\"Fish box, iced, blue (Fish Market and Trawler Quay)\" 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/37295/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/37295/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37301","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-094c9548","title":"Counterbalance forklift (Fish Market and Trawler Quay)","summary":"A yard forklift: a counterweighted chassis with an overhead guard and seat, a duplex mast whose carriage and forks lift, an engine bonnet that opens and four wheels rigged to roll.","description":"A yard forklift: a counterweighted chassis with an overhead guard and seat, a duplex mast whose carriage and forks lift, an engine bonnet that opens and four wheels rigged to roll. Overall 1.26 by 2.84 by 3.52 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The hydraulic rams, hoses and chains are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Rigid node-transform clips: lift-open, lift-close, bonnet-open, bonnet-close and wheel-roll. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-094c9548","cdnUrl":"https://cdn.3dassets.dev/assets/37301/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-094c9548","thumbnailUrl":"https://cdn.3dassets.dev/assets/37301/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37301/v1/poster.webp","blurhash":"UABz5zD,00^~kaITM^%O9Is+%Ibf~nIXD+^%","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":35848,"triangles":712,"vertices":1584,"meshes":17,"materials":3,"textures":0,"animations":["lift-open","lift-close","bonnet-open","bonnet-close","wheel-roll"],"boundingBox":{"min":[-0.630008207047961,-3.93390655606396e-8,-1.5499999523162842],"max":[0.630008207047961,2.8399999141693115,1.9700000762939454]},"sizeMeters":[1.26,2.84,3.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:29.157Z","updatedAt":"2026-09-12T04:49:29.248Z","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/37301/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 CounterbalanceForkliftFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37301/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/37301/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37301/v1/model.glb\" alt=\"Counterbalance forklift (Fish Market and Trawler Quay)\" 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/37301/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/37301/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37300","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-64d9943a","title":"Hand pallet truck (Fish Market and Trawler Quay)","summary":"A hand pallet truck with its forks, entry rollers, pump unit and tiller arm, in the yard's safety yellow. The steer wheel and both fork rollers are rigged to roll.","description":"A hand pallet truck with its forks, entry rollers, pump unit and tiller arm, in the yard's safety yellow. The steer wheel and both fork rollers are rigged to roll. Overall 0.62 by 1.47 by 1.89 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The forks stay at their lowered height: a pump lift is a linkage, not one rigid node. Rigid node-transform clips: roll. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-64d9943a","cdnUrl":"https://cdn.3dassets.dev/assets/37300/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-64d9943a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37300/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37300/v1/poster.webp","blurhash":"UHBf:+t20No#06D+-,%LM|xWxtM}~ma~D,s,","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":16952,"triangles":352,"vertices":763,"meshes":8,"materials":3,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.3099989181761157,-8.940696710757479e-9,-0.8600204633425217],"max":[0.3099989181761157,1.4700000286102295,1.0296181440353394]},"sizeMeters":[0.62,1.47,1.89],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:28.760Z","updatedAt":"2026-09-12T04:49:28.951Z","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/37300/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 HandPalletTruckFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37300/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/37300/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37300/v1/model.glb\" alt=\"Hand pallet truck (Fish Market and Trawler Quay)\" 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/37300/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/37300/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37299","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","title":"Fish barrow (Fish Market and Trawler Quay)","summary":"The two wheeled barrow a market runner moves boxes on: a flared stainless tray on a tube frame with handles and a stand leg, loaded with ice and three display fish. Both wheels are rigged to roll.","description":"The two wheeled barrow a market runner moves boxes on: a flared stainless tray on a tube frame with handles and a stand leg, loaded with ice and three display fish. Both wheels are rigged to roll. Overall 1.01 by 1.12 by 1.40 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The fish are market display props laid on ice, not creatures: no skinning, no rig and nothing alive anywhere in this pack. The tray does not tip: it is welded to the frame. Rigid node-transform clips: roll. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","cdnUrl":"https://cdn.3dassets.dev/assets/37299/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-2804ef77","thumbnailUrl":"https://cdn.3dassets.dev/assets/37299/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37299/v1/poster.webp","blurhash":"UDAwI~of00Rj~qWBITof4mM{x]xu00ay%Mj]","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"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":29800,"triangles":660,"vertices":1436,"meshes":8,"materials":4,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.5050063838655587,1.1920928966180355e-9,-0.8000158896736765],"max":[0.5050063838655587,1.1199780178951577,0.601891279220581]},"sizeMeters":[1.01,1.12,1.402],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:28.671Z","updatedAt":"2026-09-12T04:49:28.778Z","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/37299/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 FishBarrowFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37299/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/37299/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37299/v1/model.glb\" alt=\"Fish barrow (Fish Market and Trawler Quay)\" 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/37299/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/37299/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37272","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","title":"Mooring bollard (Fish Market and Trawler Quay)","summary":"A cast steel bollard on its bolted base plate: a tapered barrel with a thickened head and two horn pins, the plain quayside fitting a working boat ties to.","description":"A cast steel bollard on its bolted base plate: a tapered barrel with a thickened head and two horn pins, the plain quayside fitting a working boat ties to. Overall 0.62 by 0.80 by 0.62 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static fitting. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","cdnUrl":"https://cdn.3dassets.dev/assets/37272/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-86a2832c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37272/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37272/v1/poster.webp","blurhash":"U4CZkg?a00E1D$Rk4nM{9Fi|oJX4~qo|?vxb","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"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":9096,"triangles":188,"vertices":416,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.31000702387664403,0,-0.31000702387664403],"max":[0.31000702387664403,0.800000011920929,0.31000702387664403]},"sizeMeters":[0.62,0.8,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:16.036Z","updatedAt":"2026-09-12T04:49:16.130Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37272/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MooringBollardFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37272/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37272/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37272/v1/model.glb\" alt=\"Mooring bollard (Fish Market and Trawler Quay)\" 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/37272/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/37272/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37273","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","title":"Mooring rope coil (Fish Market and Trawler Quay)","summary":"A mooring line flaked down on the quay in three falling turns with a second smaller coil on top of it and a chafe block alongside, the way a line is left when a boat is alongside.","description":"A mooring line flaked down on the quay in three falling turns with a second smaller coil on top of it and a chafe block alongside, the way a line is left when a boat is alongside. Overall 1.38 by 0.33 by 1.14 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The rope is modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","cdnUrl":"https://cdn.3dassets.dev/assets/37273/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-4a61c415","thumbnailUrl":"https://cdn.3dassets.dev/assets/37273/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37273/v1/poster.webp","blurhash":"UFCi~;M{00t7D%ofxuay00xt~qWV_3WBIUWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":38464,"triangles":852,"vertices":1946,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.8106774404186453,-0.0000029537832119952423,-0.5613201710743947],"max":[0.5725021958351135,0.3273943588003472,0.5758327841758728]},"sizeMeters":[1.383,0.327,1.137],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:16.150Z","updatedAt":"2026-09-12T04:49:16.350Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37273/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MooringRopeCoilFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37273/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37273/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37273/v1/model.glb\" alt=\"Mooring rope coil (Fish Market and Trawler Quay)\" 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/37273/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/37273/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37278","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","title":"Quay lamp column (Fish Market and Trawler Quay)","summary":"A 6.2 m tapered lighting column on its base plate with twin raked heads on outriggers and a blank notice plate at eye level, the standard fitting along a working quay.","description":"A 6.2 m tapered lighting column on its base plate with twin raked heads on outriggers and a blank notice plate at eye level, the standard fitting along a working quay. Overall 2.74 by 6.36 by 0.60 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static column; the lamps do not emit light on their own. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","cdnUrl":"https://cdn.3dassets.dev/assets/37278/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-6d2aae87","thumbnailUrl":"https://cdn.3dassets.dev/assets/37278/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37278/v1/poster.webp","blurhash":"U57w?1%M009F_3t7D%M{~qxu4.D%-:xuIoD%","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"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":58112,"triangles":176,"vertices":377,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-1.3702082034233058,0.00001281404919895035,-0.30000001192092896],"max":[1.3702082034233058,6.3635406494140625,0.30000001192092896]},"sizeMeters":[2.74,6.364,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:19.848Z","updatedAt":"2026-09-12T04:49:20.038Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37278/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuayLampColumnFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37278/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37278/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37278/v1/model.glb\" alt=\"Quay lamp column (Fish Market and Trawler Quay)\" 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/37278/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/37278/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37279","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","title":"Gull deterrent line (Fish Market and Trawler Quay)","summary":"The wire run strung over a working quay to keep gulls off the catch: two braced posts with cross arms carrying six parallel lines, and a blank warning plate in the middle of the span.","description":"The wire run strung over a working quay to keep gulls off the catch: two braced posts with cross arms carrying six parallel lines, and a blank warning plate in the middle of the span. Overall 6.70 by 2.86 by 0.70 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The lines are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","cdnUrl":"https://cdn.3dassets.dev/assets/37279/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-9bd4948b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37279/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37279/v1/poster.webp","blurhash":"UFBWe~WED%t7~q-;D*M{4n-;%MD%00t8?bWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":15156,"triangles":292,"vertices":652,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-3.3499999046325684,0.00018409813247499685,-0.35005950112802253],"max":[3.3499999046325684,2.8600039717773966,0.35005950112802253]},"sizeMeters":[6.7,2.86,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:19.505Z","updatedAt":"2026-09-12T04:49:19.644Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37279/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GullDeterrentLineFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37279/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37279/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37279/v1/model.glb\" alt=\"Gull deterrent line (Fish Market and Trawler Quay)\" 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/37279/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/37279/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37305","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-7417c179","title":"Wash down point (Fish Market and Trawler Quay)","summary":"The quayside wash down station: a standpipe with its valve and blank gauge head, a lance in its clip, a hose tail and a bunded drain surround with a stainless grating.","description":"The quayside wash down station: a standpipe with its valve and blank gauge head, a lance in its clip, a hose tail and a bunded drain surround with a stainless grating. Overall 1.19 by 1.62 by 1.10 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The lance and hose are modelled solid and the valve does not turn. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-7417c179","cdnUrl":"https://cdn.3dassets.dev/assets/37305/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-7417c179","thumbnailUrl":"https://cdn.3dassets.dev/assets/37305/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37305/v1/poster.webp","blurhash":"U5AmuPoL00Io00s:~pR--oj[IpWB~WNGXAxt","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":60588,"triangles":240,"vertices":538,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.6399554247407492,-0.000019837370252108466,-0.550000011920929],"max":[0.550000011920929,1.6200000047683716,0.550000011920929]},"sizeMeters":[1.19,1.62,1.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:30.823Z","updatedAt":"2026-09-12T04:49:31.040Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37305/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WashDownPointFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37305/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37305/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37305/v1/model.glb\" alt=\"Wash down point (Fish Market and Trawler Quay)\" 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/37305/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/37305/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37304","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c6a3f344","title":"Wall hose reel (Fish Market and Trawler Quay)","summary":"A wall mounted wash down hose reel: a bracket plate and spindle carrying a drum wound with hose, a crank handle and the lead off to the standpipe. The drum is rigged to turn.","description":"A wall mounted wash down hose reel: a bracket plate and spindle carrying a drum wound with hose, a crank handle and the lead off to the standpipe. The drum is rigged to turn. Overall 0.70 by 1.22 by 0.74 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The hose is modelled solid on the drum. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-c6a3f344","cdnUrl":"https://cdn.3dassets.dev/assets/37304/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-c6a3f344","thumbnailUrl":"https://cdn.3dassets.dev/assets/37304/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37304/v1/poster.webp","blurhash":"U584rWMx00-=~qj?D$WC9FbH%Mae4nWB%MtR","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":17400,"triangles":400,"vertices":855,"meshes":8,"materials":2,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.33997771443964725,0,-0.11001036319294238],"max":[0.3600009259160639,1.220000022649765,0.6319919502952878]},"sizeMeters":[0.7,1.22,0.742],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:30.536Z","updatedAt":"2026-09-12T04:49:30.647Z","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/37304/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 WallHoseReelFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37304/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/37304/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37304/v1/model.glb\" alt=\"Wall hose reel (Fish Market and Trawler Quay)\" 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/37304/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/37304/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37310","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","title":"Net pile with floats (Fish Market and Trawler Quay)","summary":"A trawl net heaped on the quay: overlapping folds of solid netting about 3 m across with float clusters worked through it, a coil of line beside it and a ring of leadline on the ground.","description":"A trawl net heaped on the quay: overlapping folds of solid netting about 3 m across with float clusters worked through it, a coil of line beside it and a ring of leadline on the ground. Overall 3.90 by 1.14 by 2.59 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The net, floats and line are one static heap. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","cdnUrl":"https://cdn.3dassets.dev/assets/37310/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-4ee96670","thumbnailUrl":"https://cdn.3dassets.dev/assets/37310/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37310/v1/poster.webp","blurhash":"U49@9XdqDP$_E1-;ITIo00PUpbIu^,4T_4-q","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":50140,"triangles":1104,"vertices":2473,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.9349433183670044,0.000010785095480740636,-1.3554628278909941],"max":[1.964362621307373,1.1445478229959212,1.236709673716769]},"sizeMeters":[3.899,1.145,2.592],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:33.657Z","updatedAt":"2026-09-12T04:49:33.754Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37310/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NetPileWithFloatsFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37310/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37310/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37310/v1/model.glb\" alt=\"Net pile with floats (Fish Market and Trawler Quay)\" 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/37310/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/37310/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37311","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694","title":"Net mending frame (Fish Market and Trawler Quay)","summary":"The frame a net is mended on: two raking steel posts on foot plates, a timber head bar and a lower rail, a lattice panel of net laced across them and a needle box on the ground.","description":"The frame a net is mended on: two raking steel posts on foot plates, a timber head bar and a lower rail, a lattice panel of net laced across them and a needle box on the ground. Overall 3.30 by 2.20 by 1.19 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The net panel is modelled as solid bars. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694","cdnUrl":"https://cdn.3dassets.dev/assets/37311/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-499ff694","thumbnailUrl":"https://cdn.3dassets.dev/assets/37311/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37311/v1/poster.webp","blurhash":"U5C6u$4n00?GMy~pM^018^s.4:xtt8~W.74o","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":21028,"triangles":424,"vertices":962,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.649999976158142,-0.00007386083085125783,-0.4861196224308648],"max":[1.649999976158142,2.2000739085145673,0.6998929440742465]},"sizeMeters":[3.3,2.2,1.186],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:33.825Z","updatedAt":"2026-09-12T04:49:33.921Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37311/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NetMendingFrameFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37311/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37311/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37311/v1/model.glb\" alt=\"Net mending frame (Fish Market and Trawler Quay)\" 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/37311/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/37311/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37308","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","title":"Creel stack (Fish Market and Trawler Quay)","summary":"Four parlour creels stacked as they come off a boat: timber base frames with weighted bars, bowed steel hoops, a netted shell over each and a marker toggle, each pot turned a little on the one below.","description":"Four parlour creels stacked as they come off a boat: timber base frames with weighted bars, bowed steel hoops, a netted shell over each and a marker toggle, each pot turned a little on the one below. Overall 1.00 by 2.05 by 0.76 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The netting is modelled as a solid shell. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","cdnUrl":"https://cdn.3dassets.dev/assets/37308/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-edd4f58f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37308/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37308/v1/poster.webp","blurhash":"U3Ac#l~q000002RQ^%%K5QNGnQxa9HR.?Gs+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":42864,"triangles":960,"vertices":2160,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5011806206012386,0,-0.37954963223121496],"max":[0.5011806206012386,2.049999952316284,0.37954963223121496]},"sizeMeters":[1.002,2.05,0.759],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:32.150Z","updatedAt":"2026-09-12T04:49:32.240Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37308/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CreelStackFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37308/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37308/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37308/v1/model.glb\" alt=\"Creel stack (Fish Market and Trawler Quay)\" 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/37308/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/37308/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37309","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","title":"Single creel (Fish Market and Trawler Quay)","summary":"One parlour creel on its own, for dressing a corner or laying a run along a quay edge without a whole stack.","description":"One parlour creel on its own, for dressing a corner or laying a run along a quay edge without a whole stack. Overall 0.90 by 0.55 by 0.60 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The netting is modelled as a solid shell. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","cdnUrl":"https://cdn.3dassets.dev/assets/37309/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-3fd82dbb","thumbnailUrl":"https://cdn.3dassets.dev/assets/37309/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37309/v1/poster.webp","blurhash":"U7C~-l~V00oI03xa$*R.009t9vi^$w-:^*9t","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":13804,"triangles":240,"vertices":560,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.44999998807907104,-0.000018385828571845786,-0.30001830315791456],"max":[0.44999998807907104,0.550000011920929,0.30001830315791456]},"sizeMeters":[0.9,0.55,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:32.670Z","updatedAt":"2026-09-12T04:49:32.766Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37309/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SingleCreelFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37309/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37309/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37309/v1/model.glb\" alt=\"Single creel (Fish Market and Trawler Quay)\" 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/37309/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/37309/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37312","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-89b3d64d","title":"Buoy rack (Fish Market and Trawler Quay)","summary":"A steel rack of marker gear: four dan buoys with their staffs and flags in the rack's hoops, three spare floats on the lower rail and a bolted foot each end.","description":"A steel rack of marker gear: four dan buoys with their staffs and flags in the rack's hoops, three spare floats on the lower rail and a bolted foot each end. Overall 2.84 by 2.00 by 1.30 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The flags and lashings are modelled solid. Net, rope, rigging wire, chain and hose are modelled solid and stay still: a flexible run needs a joint per element, which one rigid node transform cannot give it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-89b3d64d","cdnUrl":"https://cdn.3dassets.dev/assets/37312/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-89b3d64d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37312/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37312/v1/poster.webp","blurhash":"U6C~^,o@01ss=o~p594o00IA~9T00VIq^JxB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":44600,"triangles":1144,"vertices":2443,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.4199999570846558,0.00005862575849646667,-0.6499142233466164],"max":[1.4199999570846558,1.9999413742415035,0.6499142233466164]},"sizeMeters":[2.84,2,1.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:34.261Z","updatedAt":"2026-09-12T04:49:34.358Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37312/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BuoyRackFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37312/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37312/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37312/v1/model.glb\" alt=\"Buoy rack (Fish Market and Trawler Quay)\" 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/37312/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/37312/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37306","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","title":"Bait barrel (Fish Market and Trawler Quay)","summary":"A coopered timber barrel with three steel hoops and a bellied stave profile, its lid leaning against it, as bait and salt are kept on a working quay.","description":"A coopered timber barrel with three steel hoops and a bellied stave profile, its lid leaning against it, as bait and salt are kept on a working quay. Overall 1.07 by 0.91 by 0.97 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static barrel; the lid is modelled where it leans. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","cdnUrl":"https://cdn.3dassets.dev/assets/37306/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-ccddeffe","thumbnailUrl":"https://cdn.3dassets.dev/assets/37306/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37306/v1/poster.webp","blurhash":"UADlyT^+009G~pxa9GM|00IV_2%2t7RjRks:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"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":38488,"triangles":868,"vertices":1943,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.40142911672592163,-0.000008256452966259875,-0.40142911672592163],"max":[0.6707494258880615,0.9100082826790099,0.5700010592188678]},"sizeMeters":[1.072,0.91,0.971],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:31.834Z","updatedAt":"2026-09-12T04:49:31.920Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37306/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BaitBarrelFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37306/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37306/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37306/v1/model.glb\" alt=\"Bait barrel (Fish Market and Trawler Quay)\" 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/37306/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/37306/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37276","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-bf6bb6e9","title":"Quayside fuel point (Fish Market and Trawler Quay)","summary":"A bunded fuel dispenser for small boats: a kerbed spill tray, a cabinet with a blank display and hose guides, a canopy plate over it and a delivery hose on its reel with the nozzle in its holster.","description":"A bunded fuel dispenser for small boats: a kerbed spill tray, a cabinet with a blank display and hose guides, a canopy plate over it and a delivery hose on its reel with the nozzle in its holster. Overall 2.44 by 1.98 by 1.80 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The hose, reel and nozzle are modelled solid. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-bf6bb6e9","cdnUrl":"https://cdn.3dassets.dev/assets/37276/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-bf6bb6e9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37276/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37276/v1/poster.webp","blurhash":"UGDmBb.84TVW03t6V@IVIBM~E6Io~oxt-.s:","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"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":62072,"triangles":260,"vertices":575,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-1.2200000286102295,0.00005584887456029641,-0.8999542579967538],"max":[1.2200000286102295,1.9800000190734863,0.8999542579967538]},"sizeMeters":[2.44,1.98,1.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:17.719Z","updatedAt":"2026-09-12T04:49:17.816Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37276/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuaysideFuelPointFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37276/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37276/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37276/v1/model.glb\" alt=\"Quayside fuel point (Fish Market and Trawler Quay)\" 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/37276/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/37276/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37277","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-87b57c9b","title":"Weighbridge plate (Fish Market and Trawler Quay)","summary":"A flush 6.4 m weighbridge deck set in its concrete surround: a ribbed steel plate with yellow kerb rails either side and a blank indicator head on a post at the driver's window.","description":"A flush 6.4 m weighbridge deck set in its concrete surround: a ribbed steel plate with yellow kerb rails either side and a blank indicator head on a post at the driver's window. Overall 7.62 by 1.68 by 3.40 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static piece; the deck does not move under load. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-87b57c9b","cdnUrl":"https://cdn.3dassets.dev/assets/37277/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-87b57c9b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37277/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37277/v1/poster.webp","blurhash":"U9CGPp-;00WA9F%M%MIU00D$_3o#~q9GIT-;","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"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":59436,"triangles":188,"vertices":437,"meshes":5,"materials":5,"textures":1,"animations":[],"boundingBox":{"min":[-3.5,-0.000005194115406670363,-1.6997436445204017],"max":[4.119999885559082,1.681187582698997,1.6997436445204017]},"sizeMeters":[7.62,1.681,3.399],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:19.122Z","updatedAt":"2026-09-12T04:49:19.225Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37277/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WeighbridgePlateFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37277/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37277/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37277/v1/model.glb\" alt=\"Weighbridge plate (Fish Market and Trawler Quay)\" 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/37277/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/37277/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37270","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-33f63b36","title":"Concrete slipway (Fish Market and Trawler Quay)","summary":"A 10 m ribbed concrete slip rising out of the water to its head: cast in cross ribs for grip, low side walls, a winch post with its drum at the top and yellow kerb blocks either side of the entry.","description":"A 10 m ribbed concrete slip rising out of the water to its head: cast in cross ribs for grip, low side walls, a winch post with its drum at the top and yellow kerb blocks either side of the entry. Overall 6.90 by 1.52 by 11.13 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the water surface at the centre of the slip, the low end toward +Z; the head of the slip stands 0.35 m above it, level with a quay laid on the pack's own modules. Static piece; the winch drum and its wire are modelled solid. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-33f63b36","cdnUrl":"https://cdn.3dassets.dev/assets/37270/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-33f63b36","thumbnailUrl":"https://cdn.3dassets.dev/assets/37270/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37270/v1/poster.webp","blurhash":"U7CZbE-:00M_t7D%M{%M00IV~qt8IU_3-;D%","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"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":65284,"triangles":316,"vertices":723,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-3.4503391309060545,-0.00005586095483761655,-6],"max":[3.4503391309060545,1.5199999809265137,5.130970001220703]},"sizeMeters":[6.901,1.52,11.131],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:15.393Z","updatedAt":"2026-09-12T04:49:15.491Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37270/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ConcreteSlipwayFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37270/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37270/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37270/v1/model.glb\" alt=\"Concrete slipway (Fish Market and Trawler Quay)\" 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/37270/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/37270/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37283","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","title":"Fish display slab, 2.4 m (Fish Market and Trawler Quay)","summary":"The trader's big display: a raked stainless slab on its frame with an undershelf, a bed of crushed ice heaped on it, a dozen display fish laid out in two rows and blank price cards on spikes along the front edge.","description":"The trader's big display: a raked stainless slab on its frame with an undershelf, a bed of crushed ice heaped on it, a dozen display fish laid out in two rows and blank price cards on spikes along the front edge. Overall 2.41 by 1.29 by 1.13 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the floor at the centre of the frame; the ice bed sits at 0.89 m. The fish are market display props laid on ice, not creatures: no skinning, no rig and nothing alive anywhere in this pack. The ice and the fish are static geometry. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","cdnUrl":"https://cdn.3dassets.dev/assets/37283/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-73821091","thumbnailUrl":"https://cdn.3dassets.dev/assets/37283/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37283/v1/poster.webp","blurhash":"U9Cj68%M00Rk-=?bWAD%00ay_NaxD%D%of%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":52368,"triangles":1172,"vertices":2580,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2050000429153442,0.00005309478871406981,-0.5666934624425725],"max":[1.2050179243087769,1.289194712135489,0.5631021037809208]},"sizeMeters":[2.41,1.289,1.13],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:21.654Z","updatedAt":"2026-09-12T04:49:21.984Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37283/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FishDisplaySlab24MFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37283/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37283/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37283/v1/model.glb\" alt=\"Fish display slab, 2.4 m (Fish Market and Trawler Quay)\" 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/37283/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/37283/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37286","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","title":"Blank price board on a stand (Fish Market and Trawler Quay)","summary":"A market price board on a weighted stand: a framed panel with a dark writing ground and an invented abstract mark, and a rear prop leg. Every face is wordless, so a project writes its own.","description":"A market price board on a weighted stand: a framed panel with a dark writing ground and an invented abstract mark, and a rear prop leg. Every face is wordless, so a project writes its own. Overall 1.10 by 2.02 by 0.52 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static board. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","cdnUrl":"https://cdn.3dassets.dev/assets/37286/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-fcc1644d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37286/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37286/v1/poster.webp","blurhash":"U49Qmr%N008_~q%M9GD%?b%MD%4nIU%Mxu4n","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":8572,"triangles":128,"vertices":297,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.550000011920929,0,-0.26497987256390415],"max":[0.550000011920929,2.0199908578850967,0.2499934469257053]},"sizeMeters":[1.1,2.02,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:23.392Z","updatedAt":"2026-09-12T04:49:23.494Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37286/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BlankPriceBoardOnAStandFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37286/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37286/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37286/v1/model.glb\" alt=\"Blank price board on a stand (Fish Market and Trawler Quay)\" 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/37286/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/37286/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37290","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","title":"Filleting bench with a board (Fish Market and Trawler Quay)","summary":"The bench a trader works at: a stainless top with an upstand and an undershelf, a poly cutting board let into it, a rinse trough with a swan neck tap, a waste chute through the deck and knives resting on the board rail.","description":"The bench a trader works at: a stainless top with an upstand and an undershelf, a poly cutting board let into it, a rinse trough with a swan neck tap, a waste chute through the deck and knives resting on the board rail. Overall 2.01 by 1.38 by 0.80 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static bench; the tap does not turn. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","cdnUrl":"https://cdn.3dassets.dev/assets/37290/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-2f47b5e2","thumbnailUrl":"https://cdn.3dassets.dev/assets/37290/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37290/v1/poster.webp","blurhash":"U9DJS9%200NG?b?bNG9F00fl~qax01IUs:%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":17284,"triangles":336,"vertices":764,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.0100098173822851,-0.000023501636482348154,-0.3999450666829432],"max":[1,1.3800234968681107,0.3999450666829432]},"sizeMeters":[2.01,1.38,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:25.110Z","updatedAt":"2026-09-12T04:49:25.279Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37290/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FilletingBenchWithABoardFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37290/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37290/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37290/v1/model.glb\" alt=\"Filleting bench with a board (Fish Market and Trawler Quay)\" 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/37290/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/37290/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37303","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","title":"Offal bin on castors (Fish Market and Trawler Quay)","summary":"A wheeled waste bin with tapered sides, a reinforcing rib, four castors and a blank hazard panel, with a lid hinged along its back edge that lifts.","description":"A wheeled waste bin with tapered sides, a reinforcing rib, four castors and a blank hazard panel, with a lid hinged along its back edge that lifts. Overall 0.96 by 1.01 by 0.79 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The castors are modelled solid on this one; only the lid moves. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","cdnUrl":"https://cdn.3dassets.dev/assets/37303/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-28b7f9ab","thumbnailUrl":"https://cdn.3dassets.dev/assets/37303/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37303/v1/poster.webp","blurhash":"U48z=O~p004pN1WWoet700D*%K--xT%Lfm9a","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":14728,"triangles":248,"vertices":558,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.47999998927116394,0.00029361908088509914,-0.3959578276080732],"max":[0.47999998927116394,1.0100045678670468,0.3899978593332445]},"sizeMeters":[0.96,1.01,0.786],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:30.335Z","updatedAt":"2026-09-12T04:49:30.518Z","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/37303/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 OffalBinOnCastorsFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37303/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/37303/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37303/v1/model.glb\" alt=\"Offal bin on castors (Fish Market and Trawler Quay)\" 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/37303/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/37303/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37291","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","title":"Knife rack (Fish Market and Trawler Quay)","summary":"A wall mounted magnetic rail carrying five filleting knives of different lengths and a sharpening steel, each hanging by its handle, with a bracket at each end of the rail.","description":"A wall mounted magnetic rail carrying five filleting knives of different lengths and a sharpening steel, each hanging by its handle, with a bracket at each end of the rail. Overall 0.90 by 0.56 by 0.09 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is at the tip of the longest blade, with the rail 0.44 m above it; fix the rail to a wall about 1.75 m up and the knives hang below it. Static rack. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","cdnUrl":"https://cdn.3dassets.dev/assets/37291/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-ce31e94c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37291/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37291/v1/poster.webp","blurhash":"UD9Qmsj[9FWU~qxvIUNFM{-;ofM{Rj%MxuM{","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":10500,"triangles":192,"vertices":448,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.44999998807907104,-0.000022575086854159654,-0.02501278595955852],"max":[0.44999998807907104,0.5600225774710399,0.06598894425944118]},"sizeMeters":[0.9,0.56,0.091],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:25.297Z","updatedAt":"2026-09-12T04:49:25.413Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37291/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function KnifeRackFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37291/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37291/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37291/v1/model.glb\" alt=\"Knife rack (Fish Market and Trawler Quay)\" 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/37291/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/37291/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37284","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","title":"Fish display slab, 1.4 m (Fish Market and Trawler Quay)","summary":"The short slab for the end of a run or a single stall: the same raked stainless top, ice bed and price spikes at 1.4 m, laid with seven display fish.","description":"The short slab for the end of a run or a single stall: the same raked stainless top, ice bed and price spikes at 1.4 m, laid with seven display fish. Overall 1.41 by 1.29 by 1.13 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The fish are market display props laid on ice, not creatures: no skinning, no rig and nothing alive anywhere in this pack. The ice and the fish are static geometry. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","cdnUrl":"https://cdn.3dassets.dev/assets/37284/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-65f50f50","thumbnailUrl":"https://cdn.3dassets.dev/assets/37284/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37284/v1/poster.webp","blurhash":"U9CP|x%M00M{?bxuRiM{00WB_Nj[9FR*ofof","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":42504,"triangles":932,"vertices":2052,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7049999833106995,0.000012693926635165553,-0.5667724718890599],"max":[0.7049999833106995,1.2892591754574216,0.5631811132274083]},"sizeMeters":[1.41,1.289,1.13],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:22.116Z","updatedAt":"2026-09-12T04:49:22.216Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37284/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FishDisplaySlab14MFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37284/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37284/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37284/v1/model.glb\" alt=\"Fish display slab, 1.4 m (Fish Market and Trawler Quay)\" 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/37284/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/37284/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37287","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-0f93d634","title":"Hanging scale with a pan (Fish Market and Trawler Quay)","summary":"A spring balance hung over a stall: a round dial head with a blank face on its hook rod, and a shallow weighing pan slung on four rods beneath it, rigged so the pan rocks the way a loaded one settles.","description":"A spring balance hung over a stall: a round dial head with a blank face on its hook rod, and a shallow weighing pan slung on four rods beneath it, rigged so the pan rocks the way a loaded one settles. Overall 0.85 by 1.64 by 0.83 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is under the pan on the hook rod's axis; hang the model so the top of the rod, 1.64 m above the origin, meets the beam or rail it swings from. The dial, needle and hook stay still. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Rigid node-transform clips: bob. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-0f93d634","cdnUrl":"https://cdn.3dassets.dev/assets/37287/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-0f93d634","thumbnailUrl":"https://cdn.3dassets.dev/assets/37287/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37287/v1/poster.webp","blurhash":"U69%-dxu00IU00Rj~qogD%s:?bNG?bayM_t7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":27456,"triangles":468,"vertices":1046,"meshes":10,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.42690497636795044,-0.000010844725355632634,-0.41742022577143967],"max":[0.42690497636795044,1.6399999856948853,0.41742022577143967]},"sizeMeters":[0.854,1.64,0.835],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:23.526Z","updatedAt":"2026-09-12T04:49:23.711Z","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/37287/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 HangingScaleWithAPanFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37287/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/37287/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37287/v1/model.glb\" alt=\"Hanging scale with a pan (Fish Market and Trawler Quay)\" 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/37287/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/37287/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37288","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-82f111a2","title":"Bench scale set (Fish Market and Trawler Quay)","summary":"The weighing corner of a stall: a stainless platform scale with a raked blank display head, a graded set of three calibration weights and a ticket printer with a blank label roll.","description":"The weighing corner of a stall: a stainless platform scale with a raked blank display head, a graded set of three calibration weights and a ticket printer with a blank label roll. Overall 1.59 by 0.64 by 0.55 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static set. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-82f111a2","cdnUrl":"https://cdn.3dassets.dev/assets/37288/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-82f111a2","thumbnailUrl":"https://cdn.3dassets.dev/assets/37288/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37288/v1/poster.webp","blurhash":"UBBM}Y~q00xuj=j[RjfP0000x]t7kDogs:Rj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":11884,"triangles":224,"vertices":510,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.699999988079071,0.000020602314906636998,-0.30051485460535676],"max":[0.8859999775886536,0.6392118543692059,0.25002619829599]},"sizeMeters":[1.586,0.639,0.551],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:23.815Z","updatedAt":"2026-09-12T04:49:23.906Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37288/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BenchScaleSetFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37288/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37288/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37288/v1/model.glb\" alt=\"Bench scale set (Fish Market and Trawler Quay)\" 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/37288/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/37288/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37302","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-67d51656","title":"Gutting table (Fish Market and Trawler Quay)","summary":"A 2.4 m stainless gutting table falling toward a waste hole and its stub chute, with a rinse manifold and jets along the back upstand, side and back walls and two boards on the deck.","description":"A 2.4 m stainless gutting table falling toward a waste hole and its stub chute, with a rinse manifold and jets along the back upstand, side and back walls and two boards on the deck. Overall 2.41 by 1.21 by 0.92 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static table; the jets do not run. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-67d51656","cdnUrl":"https://cdn.3dassets.dev/assets/37302/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-67d51656","thumbnailUrl":"https://cdn.3dassets.dev/assets/37302/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37302/v1/poster.webp","blurhash":"UKEMRWxu00oL~q-;M{M{00xu-;Rj9Ffkt7fk","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":20912,"triangles":416,"vertices":958,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.2050000429153442,0.00005447306813288755,-0.46270317463150545],"max":[1.2050000429153442,1.2099455650788398,0.4585056963371329]},"sizeMeters":[2.41,1.21,0.921],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:30.166Z","updatedAt":"2026-09-12T04:49:30.267Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37302/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GuttingTableFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37302/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37302/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37302/v1/model.glb\" alt=\"Gutting table (Fish Market and Trawler Quay)\" 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/37302/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/37302/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37307","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-99a9bcb1","title":"Lobster and crab holding tank (Fish Market and Trawler Quay)","summary":"A glazed holding vivier on a stainless frame: a 2.2 m tank with a water level worked into it, a mesh lid on its corner posts and a pump and chiller stack with its pipe run at one end. The tank is empty of livestock.","description":"A glazed holding vivier on a stainless frame: a 2.2 m tank with a water level worked into it, a mesh lid on its corner posts and a pump and chiller stack with its pipe run at one end. The tank is empty of livestock. Overall 2.85 by 1.65 by 1.20 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. No creature is modelled here or anywhere in the pack: the tank ships as holding plant with water in it. The water is a static plate and the pipework does not move. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-99a9bcb1","cdnUrl":"https://cdn.3dassets.dev/assets/37307/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-99a9bcb1","thumbnailUrl":"https://cdn.3dassets.dev/assets/37307/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37307/v1/poster.webp","blurhash":"UDDv$e~q00IU_2%hRjRO4TRjtRWU%N%2Rj9Z","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":23024,"triangles":444,"vertices":1019,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.149999976158142,0.000003810315186481006,-0.5999641353535319],"max":[1.7000107215780818,1.6499961658429556,0.5999641353535319]},"sizeMeters":[2.85,1.65,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:33.140Z","updatedAt":"2026-09-12T04:49:33.255Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37307/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LobsterAndCrabHoldingTankFishMarketAndTrawlerQuay(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37307/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37307/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37307/v1/model.glb\" alt=\"Lobster and crab holding tank (Fish Market and Trawler Quay)\" 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/37307/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/37307/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37289","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-c216de0e","title":"Chill room door (Fish Market and Trawler Quay)","summary":"An insulated chill room door in its frame: a thick leaf with a kick plate, a view light and a lever handle, a sill and header, and a blank hazard plate beside it. Hinged so it swings clear of the opening.","description":"An insulated chill room door in its frame: a thick leaf with a kick plate, a view light and a lever handle, a sill and header, and a blank hazard plate beside it. Hinged so it swings clear of the opening. Overall 1.50 by 2.56 by 0.39 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The frame, sill and header stay still; only the leaf swings. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-c216de0e","cdnUrl":"https://cdn.3dassets.dev/assets/37289/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-c216de0e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37289/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37289/v1/poster.webp","blurhash":"UBE{kMD%00-:M{%MoL9F00of~qj]M|ayt6og","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":14276,"triangles":188,"vertices":437,"meshes":9,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.75,-0.00001648196750289599,-0.14999969639267205],"max":[0.75,2.559958790475464,0.23500473513790426]},"sizeMeters":[1.5,2.56,0.385],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:24.249Z","updatedAt":"2026-09-12T04:49:24.348Z","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/37289/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 ChillRoomDoorFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37289/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/37289/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37289/v1/model.glb\" alt=\"Chill room door (Fish Market and Trawler Quay)\" 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/37289/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/37289/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37264","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-76b9d87b","title":"Crew cabin door in a frame (Fish Market and Trawler Quay)","summary":"A weathertight steel door in its own frame with a sill, a header, a small light, dogging clips and a lever handle. Fits a deckhouse, a plant room or the back of a market hall.","description":"A weathertight steel door in its own frame with a sill, a header, a small light, dogging clips and a lever handle. Fits a deckhouse, a plant room or the back of a market hall. Overall 1.24 by 2.22 by 0.26 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The frame, sill and clips stay still; only the leaf swings. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-76b9d87b","cdnUrl":"https://cdn.3dassets.dev/assets/37264/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-76b9d87b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37264/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37264/v1/poster.webp","blurhash":"U9D,J[9Y00~X~p%L4o9G00xb%gIT%Mt7IUM_","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"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":8600,"triangles":104,"vertices":241,"meshes":7,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6199902420670861,-0.000019837370252108466,-0.09877253754679675],"max":[0.6199902420670861,2.2200000286102295,0.15999358941680522]},"sizeMeters":[1.24,2.22,0.259],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:12.724Z","updatedAt":"2026-09-12T04:49:12.857Z","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/37264/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 CrewCabinDoorInAFrameFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37264/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/37264/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37264/v1/model.glb\" alt=\"Crew cabin door in a frame (Fish Market and Trawler Quay)\" 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/37264/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/37264/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37280","slug":"fish-market-and-trawler-quay-fish-market-and-trawler-q-92a62e78","title":"Market hall bay with roller shutter (Fish Market and Trawler Quay)","summary":"One 4 m bay of an open fronted fish market: a tiled back wall with a blank trader panel, a half pier each side, a roof deck on its beams with lights under it, and a roller shutter that rolls up into its head box across the full width opening.","description":"One 4 m bay of an open fronted fish market: a tiled back wall with a blank trader panel, a half pier each side, a roof deck on its beams with lights under it, and a roller shutter that rolls up into its head box across the full width opening. Overall 4.03 by 4.92 by 6.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the floor at the centre of the bay, the opening toward +Z. Half piers are 0.1 m each, so two bays butt into one 0.2 m pier without sharing a face plane; run bays at a 4 m pitch and the hall roofs itself. The shutter guides and head box stay still; only the curtain runs. Every board, panel, stencil and signband in this pack is blank or carries an invented abstract mark. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no port, fishing company, vessel, merchant, equipment maker or retailer is named or depicted anywhere.","status":"published","url":"https://3dassets.dev/assets/fish-market-and-trawler-quay-fish-market-and-trawler-q-92a62e78","cdnUrl":"https://cdn.3dassets.dev/assets/37280/v1/model.glb","downloadUrl":"https://3dassets.dev/download/fish-market-and-trawler-quay-fish-market-and-trawler-q-92a62e78","thumbnailUrl":"https://cdn.3dassets.dev/assets/37280/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37280/v1/poster.webp","blurhash":"UFH__Q9Z00_3~qRjIURj00ocIUM|M_IUf5-;","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"modular","title":"Modular"},{"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":21392,"triangles":420,"vertices":966,"meshes":15,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2.015042524464083,-0.00009888508614741554,-3],"max":[2.015042524464083,4.919906899472612,3.5]},"sizeMeters":[4.03,4.92,6.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:49:20.215Z","updatedAt":"2026-09-12T04:49:20.311Z","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/37280/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 MarketHallBayWithRollerShutterFishMarketAndTrawlerQuay(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37280/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/37280/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37280/v1/model.glb\" alt=\"Market hall bay with roller shutter (Fish Market and Trawler Quay)\" 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/37280/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/37280/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}]}}