{ "name": "spline_corridor_assets", "unit": "meter", "created_with": "Blender procedural mesh export via blender-mcp", "coordinate_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "export_root": "/Users/giers/blender-mcp/exports/spline_corridor_assets", "asset_count": 22, "assets": [ { "filename": "edge_curb_stone_low_2m.glb", "category": "road_curb_edge", "intended_use": "Clean low curb strip for road and path borders.", "dimensions_m": { "width_x": 0.3, "height_y": 0.187, "length_z": 2.0 }, "bounds_m": { "min": [ -0.15, 0.0, -1.0 ], "max": [ 0.15, 0.187, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_stone_curb", "mat_stone_light", "mat_stone_dark" ], "vertices": 24, "triangles": 36, "file_size_bytes": 4540, "notes": "2 m segment; simple readable curb with subtle stone seams." }, { "filename": "edge_curb_stone_worn_2m.glb", "category": "road_curb_edge", "intended_use": "Worn curb strip for older roads and trampled path edges.", "dimensions_m": { "width_x": 0.331, "height_y": 0.186, "length_z": 2.0 }, "bounds_m": { "min": [ -0.156, 0.0, -1.0 ], "max": [ 0.175, 0.186, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_stone_curb", "mat_stone_light", "mat_stone_dark" ], "vertices": 140, "triangles": 236, "file_size_bytes": 14764, "notes": "2 m segmented stones with chipped silhouettes and darker cracks." }, { "filename": "edge_log_border_2m.glb", "category": "road_curb_edge", "intended_use": "Natural log border for roads, trails, and camps.", "dimensions_m": { "width_x": 0.295, "height_y": 0.229, "length_z": 2.0 }, "bounds_m": { "min": [ -0.115, 0.002, -1.0 ], "max": [ 0.18, 0.231, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_wood_dark", "mat_moss_dark" ], "vertices": 69, "triangles": 113, "file_size_bytes": 8600, "notes": "2 m log, low-poly round profile, cut ends, small moss patch." }, { "filename": "edge_plank_border_2m.glb", "category": "road_curb_edge", "intended_use": "Rough plank border for rustic trail and garden edges.", "dimensions_m": { "width_x": 0.24, "height_y": 0.131, "length_z": 2.0 }, "bounds_m": { "min": [ -0.12, 0.0, -1.0 ], "max": [ 0.12, 0.131, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_wood_dark" ], "vertices": 48, "triangles": 72, "file_size_bytes": 6480, "notes": "2 m plank with dark seams and simple wood-grain strips." }, { "filename": "edge_small_rocks_a_2m.glb", "category": "trail_forest_edge", "intended_use": "Loose small rock border for trail edges.", "dimensions_m": { "width_x": 0.389, "height_y": 0.118, "length_z": 2.067 }, "bounds_m": { "min": [ -0.236, 0.0, -1.031 ], "max": [ 0.153, 0.118, 1.036 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_stone_curb", "mat_stone_dark", "mat_stone_warm" ], "vertices": 318, "triangles": 576, "file_size_bytes": 31560, "notes": "2 m scatter strip with low profile pebble clusters." }, { "filename": "edge_small_rocks_b_2m.glb", "category": "trail_forest_edge", "intended_use": "Alternate loose rock border for trail repetition variation.", "dimensions_m": { "width_x": 0.527, "height_y": 0.153, "length_z": 2.107 }, "bounds_m": { "min": [ -0.305, 0.0, -1.052 ], "max": [ 0.222, 0.153, 1.055 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_stone_warm", "mat_stone_curb", "mat_stone_light", "mat_stone_dark", "mat_moss_dark" ], "vertices": 241, "triangles": 425, "file_size_bytes": 25668, "notes": "2 m wider scatter strip with warmer stones and a moss patch." }, { "filename": "edge_roots_border_2m.glb", "category": "trail_forest_edge", "intended_use": "Exposed root border for forest paths.", "dimensions_m": { "width_x": 0.474, "height_y": 0.103, "length_z": 2.012 }, "bounds_m": { "min": [ -0.241, -0.009, -1.004 ], "max": [ 0.233, 0.094, 1.008 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_root_dark", "mat_wood_cut", "mat_moss" ], "vertices": 127, "triangles": 199, "file_size_bytes": 11344, "notes": "2 m tangled roots with branch roots and small moss patches." }, { "filename": "edge_mossy_bank_2m.glb", "category": "trail_forest_edge", "intended_use": "Soft mossy raised bank for trail and forest path edges.", "dimensions_m": { "width_x": 0.66, "height_y": 0.22, "length_z": 2.0 }, "bounds_m": { "min": [ -0.34, 0.0, -1.0 ], "max": [ 0.32, 0.22, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_soil", "mat_moss", "mat_moss_dark", "mat_stone_warm" ], "vertices": 87, "triangles": 138, "file_size_bytes": 10192, "notes": "2 m sloped bank with moss top, soil side, small embedded rocks." }, { "filename": "edge_river_bank_soft_2m.glb", "category": "river_ditch_bank", "intended_use": "Soft river or ditch bank edge.", "dimensions_m": { "width_x": 0.76, "height_y": 0.24, "length_z": 2.0 }, "bounds_m": { "min": [ -0.42, 0.0, -1.0 ], "max": [ 0.34, 0.24, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wet_soil", "mat_sandy_bank", "mat_moss_dark" ], "vertices": 37, "triangles": 39, "file_size_bytes": 4508, "notes": "2 m sloped sandy/wet bank with a darker waterline side." }, { "filename": "edge_river_bank_rocks_2m.glb", "category": "river_ditch_bank", "intended_use": "Rocky river or ditch bank edge.", "dimensions_m": { "width_x": 0.78, "height_y": 0.2, "length_z": 2.0 }, "bounds_m": { "min": [ -0.44, 0.0, -1.0 ], "max": [ 0.34, 0.2, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_soil", "mat_wet_soil", "mat_stone_dark", "mat_stone_curb", "mat_stone_warm", "mat_moss" ], "vertices": 238, "triangles": 418, "file_size_bytes": 26000, "notes": "2 m sloped muddy bank with embedded stones." }, { "filename": "edge_reeds_cluster_a.glb", "category": "river_ditch_bank", "intended_use": "Small reed cluster for river banks and ditches.", "dimensions_m": { "width_x": 0.46, "height_y": 0.943, "length_z": 0.621 }, "bounds_m": { "min": [ -0.226, -0.001, -0.301 ], "max": [ 0.234, 0.943, 0.32 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_reed_tan", "mat_reed_green", "mat_moss_dark" ], "vertices": 302, "triangles": 282, "file_size_bytes": 16516, "notes": "Compact cluster; origin at ground center for scatter placement." }, { "filename": "edge_reeds_cluster_b.glb", "category": "river_ditch_bank", "intended_use": "Taller reed cluster variation for river banks and ditches.", "dimensions_m": { "width_x": 0.635, "height_y": 1.215, "length_z": 0.505 }, "bounds_m": { "min": [ -0.333, -0.001, -0.239 ], "max": [ 0.302, 1.214, 0.265 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_reed_tan", "mat_reed_green", "mat_moss_dark" ], "vertices": 446, "triangles": 420, "file_size_bytes": 23692, "notes": "Wider and taller compact cluster for scatter variation." }, { "filename": "fence_post_wood.glb", "category": "fence_repeater", "intended_use": "Standalone rustic wooden fence post.", "dimensions_m": { "width_x": 0.18, "height_y": 1.16, "length_z": 0.15 }, "bounds_m": { "min": [ -0.09, 0.0, -0.075 ], "max": [ 0.09, 1.16, 0.075 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_wood_dark" ], "vertices": 44, "triangles": 72, "file_size_bytes": 6220, "notes": "Post origin is bottom center at ground; rail notches align with segment rails." }, { "filename": "fence_rail_wood_2m.glb", "category": "fence_repeater", "intended_use": "Standalone 2 m rustic rail for fence repeaters.", "dimensions_m": { "width_x": 0.158, "height_y": 0.107, "length_z": 2.0 }, "bounds_m": { "min": [ -0.055, 0.666, -1.0 ], "max": [ 0.103, 0.774, 1.0 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_wood_dark" ], "vertices": 28, "triangles": 48, "file_size_bytes": 4720, "notes": "Rail geometry sits at intended fence height while origin remains on the ground baseline." }, { "filename": "fence_segment_wood_2m.glb", "category": "fence_repeater", "intended_use": "Complete 2 m wooden fence segment.", "dimensions_m": { "width_x": 0.14, "height_y": 1.13, "length_z": 2.04 }, "bounds_m": { "min": [ -0.07, 0.0, -1.02 ], "max": [ 0.07, 1.13, 1.02 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut" ], "vertices": 88, "triangles": 152, "file_size_bytes": 8884, "notes": "Two posts and two rails aligned along +Z spline direction." }, { "filename": "fence_segment_rope_2m.glb", "category": "fence_repeater", "intended_use": "Complete 2 m rope fence segment.", "dimensions_m": { "width_x": 0.136, "height_y": 1.03, "length_z": 2.036 }, "bounds_m": { "min": [ -0.068, 0.0, -1.018 ], "max": [ 0.068, 1.03, 1.018 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_rope" ], "vertices": 168, "triangles": 288, "file_size_bytes": 15904, "notes": "Two wooden posts with sagging rope rails along +Z." }, { "filename": "fence_post_stone.glb", "category": "fence_repeater", "intended_use": "Standalone stacked stone fence post.", "dimensions_m": { "width_x": 0.258, "height_y": 0.72, "length_z": 0.261 }, "bounds_m": { "min": [ -0.133, 0.0, -0.133 ], "max": [ 0.124, 0.72, 0.129 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_stone_dark", "mat_stone_curb", "mat_stone_warm", "mat_stone_light" ], "vertices": 90, "triangles": 164, "file_size_bytes": 11280, "notes": "Short irregular stone pillar, useful as post or marker." }, { "filename": "debris_branch_a.glb", "category": "debris_scatter", "intended_use": "Small fallen branch scatter asset.", "dimensions_m": { "width_x": 0.438, "height_y": 0.073, "length_z": 0.846 }, "bounds_m": { "min": [ -0.23, 0.001, -0.423 ], "max": [ 0.208, 0.074, 0.423 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_wood_dark" ], "vertices": 40, "triangles": 68, "file_size_bytes": 5676, "notes": "Directional branch roughly aligned to +Z for optional spline-aware placement." }, { "filename": "debris_branch_b.glb", "category": "debris_scatter", "intended_use": "Curved fallen branch scatter variation.", "dimensions_m": { "width_x": 0.458, "height_y": 0.065, "length_z": 0.682 }, "bounds_m": { "min": [ -0.203, 0.003, -0.312 ], "max": [ 0.255, 0.067, 0.371 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_dark", "mat_wood_cut", "mat_wood_bark" ], "vertices": 54, "triangles": 92, "file_size_bytes": 6744, "notes": "Shorter curved branch with side twig." }, { "filename": "debris_pebbles_a.glb", "category": "debris_scatter", "intended_use": "Small pebble cluster for scatter placement.", "dimensions_m": { "width_x": 0.495, "height_y": 0.053, "length_z": 0.351 }, "bounds_m": { "min": [ -0.253, 0.0, -0.196 ], "max": [ 0.242, 0.053, 0.156 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_stone_dark", "mat_stone_curb", "mat_stone_warm", "mat_stone_light" ], "vertices": 321, "triangles": 578, "file_size_bytes": 32584, "notes": "Compact low-profile pebble clump." }, { "filename": "debris_leaf_clump_a.glb", "category": "debris_scatter", "intended_use": "Leaf litter clump for forest trail scatter.", "dimensions_m": { "width_x": 0.578, "height_y": 0.021, "length_z": 0.49 }, "bounds_m": { "min": [ -0.276, 0.008, -0.245 ], "max": [ 0.302, 0.029, 0.245 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_leaf_brown", "mat_leaf_ochre", "mat_leaf_dark", "mat_wood_dark", "mat_wood_cut" ], "vertices": 84, "triangles": 56, "file_size_bytes": 6704, "notes": "Layered low-poly leaf cards plus a small twig; procedural colors only." }, { "filename": "debris_stump_small.glb", "category": "debris_scatter", "intended_use": "Small stump scatter asset.", "dimensions_m": { "width_x": 0.473, "height_y": 0.329, "length_z": 0.436 }, "bounds_m": { "min": [ -0.193, -0.006, -0.232 ], "max": [ 0.281, 0.323, 0.204 ] }, "origin_convention": "Target/import axes: origin at the ground baseline, centered in width and segment length unless noted; +X is left/right width, +Y is up, +Z is forward/spline direction.", "materials": [ "mat_wood_bark", "mat_wood_cut", "mat_wood_dark", "mat_root_dark", "mat_moss" ], "vertices": 78, "triangles": 120, "file_size_bytes": 9420, "notes": "Low stump with exposed roots and moss accent." } ], "limitations": [ "Materials are simple procedural Blender materials with no external texture dependencies.", "Meshes are lightweight starter assets intended for medium-distance readability, not close-up hero props.", "The standalone rail uses the ground baseline origin for alignment with fence posts, although the rail mesh itself is elevated." ] }