{
  "schema": "forge.atom-kit.v2",
  "units": "metres",
  "up": "+Y",
  "facade_outward": "+Z",
  "facade_horizontal": "+X",
  "uv_rule": "Exception to world-scale UVs: one strip per UV0 0..1; top chart U=0..1,V=.14..98; padded edge/underside charts V<.125. B mirrors U for variation. Do not apply metre repeat.",
  "atoms": [
    {
      "node_name": "tile_strip_a_lite",
      "origin_rule": "Row midpoint at tile heads; nominal X span 1.32 m.",
      "tiles": 8,
      "row_width_metres": 1.32,
      "gauge_metres": 0.1,
      "jitter": "Camber, internal edge offsets and sub-mm rise baked; outer span remains 1.32.",
      "bounding_box": {
        "min": [
          -0.6600000262260437,
          0.0,
          0.0
        ],
        "max": [
          0.6600000262260437,
          0.05480000004172325,
          0.26499998569488525
        ]
      },
      "triangles": 48,
      "triangle_budget": 48,
      "materials": [
        "Clay_tile_strip"
      ],
      "replaces": "tile_strip_a",
      "source_kit": "medieval-atom-kit-v1",
      "size_metres": [
        1.3200000524520874,
        0.05480000004172325,
        0.26499998569488525
      ],
      "roof_placement": "Rotate X by +roof pitch; heads every 0.10 m downslope on common roof plane; built-in 0.16 m/m lap tilt. X span 1.32 m.",
      "uv_rule": "Exception to world-scale UVs: one strip per UV0 0..1; top chart U=0..1,V=.14..98; padded edge/underside charts V<.125. B mirrors U for variation. Do not apply metre repeat."
    },
    {
      "node_name": "tile_strip_b_lite",
      "origin_rule": "Row midpoint at tile heads; nominal X span 1.32 m.",
      "tiles": 8,
      "row_width_metres": 1.32,
      "gauge_metres": 0.1,
      "jitter": "Camber, internal edge offsets and sub-mm rise baked; outer span remains 1.32.",
      "bounding_box": {
        "min": [
          -0.6600000262260437,
          0.0,
          0.0
        ],
        "max": [
          0.6600000262260437,
          0.05480000004172325,
          0.26499998569488525
        ]
      },
      "triangles": 48,
      "triangle_budget": 48,
      "materials": [
        "Clay_tile_strip"
      ],
      "replaces": "tile_strip_b",
      "source_kit": "medieval-atom-kit-v1",
      "size_metres": [
        1.3200000524520874,
        0.05480000004172325,
        0.26499998569488525
      ],
      "roof_placement": "Rotate X by +roof pitch; heads every 0.10 m downslope on common roof plane; built-in 0.16 m/m lap tilt. X span 1.32 m.",
      "uv_rule": "Exception to world-scale UVs: one strip per UV0 0..1; top chart U=0..1,V=.14..98; padded edge/underside charts V<.125. B mirrors U for variation. Do not apply metre repeat."
    },
    {
      "node_name": "slate_strip_a_lite",
      "origin_rule": "Top course edge midpoint; four slates span X=-0.69..0.69.",
      "size_metres": [
        1.3799999952316284,
        0.011500000022351742,
        0.42399999499320984
      ],
      "course_gauge_metres": 0.21,
      "slate_count": 4,
      "jitter_metres": 0.002,
      "bounding_box": {
        "min": [
          -0.6899999976158142,
          0.0,
          -0.0020000000949949026
        ],
        "max": [
          0.6899999976158142,
          0.011500000022351742,
          0.421999990940094
        ]
      },
      "triangles": 32,
      "triangle_budget": 32,
      "materials": [
        "Blue_grey_slate_strip"
      ],
      "replaces": "slate_strip_a",
      "source_kit": "breton-atom-kit-v2",
      "roof_placement": "Course origins follow roof plane at 0.21 m gauge. Rotate X by roof pitch minus atan(0.07); offset all origins 0.018 m along roof normal; stagger X by 0.1725 m. No accumulating course height.",
      "uv_rule": "Exception to world-scale UVs: one strip per UV0 0..1; top chart U=0..1,V=.14..98; padded edge/underside charts V<.125. B mirrors U for variation. Do not apply metre repeat."
    },
    {
      "node_name": "slate_strip_b_lite",
      "origin_rule": "Top course edge midpoint; four slates span X=-0.69..0.69.",
      "size_metres": [
        1.3799999952316284,
        0.011500000022351742,
        0.42399999499320984
      ],
      "course_gauge_metres": 0.21,
      "slate_count": 4,
      "jitter_metres": 0.002,
      "bounding_box": {
        "min": [
          -0.6899999976158142,
          0.0,
          -0.0020000000949949026
        ],
        "max": [
          0.6899999976158142,
          0.011500000022351742,
          0.421999990940094
        ]
      },
      "triangles": 32,
      "triangle_budget": 32,
      "materials": [
        "Blue_grey_slate_strip"
      ],
      "replaces": "slate_strip_b",
      "source_kit": "breton-atom-kit-v2",
      "roof_placement": "Course origins follow roof plane at 0.21 m gauge. Rotate X by roof pitch minus atan(0.07); offset all origins 0.018 m along roof normal; stagger X by 0.1725 m. No accumulating course height.",
      "uv_rule": "Exception to world-scale UVs: one strip per UV0 0..1; top chart U=0..1,V=.14..98; padded edge/underside charts V<.125. B mirrors U for variation. Do not apply metre repeat."
    }
  ],
  "source_sha256": {
    "/root/fal-author/medieval-atom-kit-v1/kit.glb": "19bad5abffa0740209c280d7cff49a9f8a61cd50264739885b8f031727fa8687",
    "/root/fal-author/breton-atom-kit-v2/kit.glb": "5a163b076cbc15940a78f3d0e9fba812771324681ec878a9ace33c265735a838"
  }
}