[
  {
    "id": "mid_century_lounge_chair",
    "author": {
      "Kuutti Siitonen": "All"
    },
    "license": "CC0",
    "source": "https://polyhaven.com/a/mid_century_lounge_chair",
    "licenseUrl": "https://polyhaven.com/license",
    "files": [
      {
        "file": "assets\\mid_century_lounge_chair\\mid_century_lounge_chair.blend",
        "bytes": 280626,
        "sha256": "32caa7632d5d122be9685da2df00336443d8a475df02e9f50e51872c4b8d989d",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/blend/2k/mid_century_lounge_chair/mid_century_lounge_chair_2k.blend"
      },
      {
        "file": "assets\\mid_century_lounge_chair\\textures\\mid_century_lounge_chair_diff_2k.jpg",
        "bytes": 2444450,
        "sha256": "8129cc8c7c7c8db652aad062545a9f776b7ff4c00c4d9ab8387f3ad98315a932",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/jpg/2k/mid_century_lounge_chair/mid_century_lounge_chair_diff_2k.jpg"
      },
      {
        "file": "assets\\mid_century_lounge_chair\\textures\\mid_century_lounge_chair_metal_2k.exr",
        "bytes": 389351,
        "sha256": "f74e8b12b57766e1d9f4afb4d30562611019ce2bb249694a2ec6ce86e3ec4786",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/exr/2k/mid_century_lounge_chair/mid_century_lounge_chair_metal_2k.exr"
      },
      {
        "file": "assets\\mid_century_lounge_chair\\textures\\mid_century_lounge_chair_nor_gl_2k.exr",
        "bytes": 5907792,
        "sha256": "623744f638d3bf826c2b95cde37273bdc3c93db0e2a530abcf596378de022a22",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/exr/2k/mid_century_lounge_chair/mid_century_lounge_chair_nor_gl_2k.exr"
      },
      {
        "file": "assets\\mid_century_lounge_chair\\textures\\mid_century_lounge_chair_rough_2k.exr",
        "bytes": 2396148,
        "sha256": "6831a5a53442c2933cea850ba48917a3263c8bfbb64821b2c98a2d4c608f41a5",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/exr/2k/mid_century_lounge_chair/mid_century_lounge_chair_rough_2k.exr"
      }
    ]
  },
  {
    "id": "potted_plant_02",
    "author": {
      "Rico Cilliers": "All"
    },
    "license": "CC0",
    "source": "https://polyhaven.com/a/potted_plant_02",
    "licenseUrl": "https://polyhaven.com/license",
    "files": [
      {
        "file": "assets\\potted_plant_02\\potted_plant_02.blend",
        "bytes": 8110103,
        "sha256": "b62ded8ac23b439d2d4457916241f45e029d1455cd792f426ef3b0e5f889589c",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/blend/2k/potted_plant_02/potted_plant_02_2k.blend"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_leaves_rough_2k.png",
        "bytes": 4823415,
        "sha256": "cdd55e470604e3aa9028acf51210e73a36f51df27d620ba4ac52195e8e445a04",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_leaves_rough_2k.png"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_pot_nor_gl_2k.png",
        "bytes": 14010302,
        "sha256": "7777ef34cd4bf72280b387b739a553b98856b301ba9323259f2235dd290f1ee6",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_pot_nor_gl_2k.png"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_pot_rough_2k.png",
        "bytes": 4580543,
        "sha256": "0d4e9695804d40d44da77dcc9d749d410e8546e8eebd2e40b4e337941347871d",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_pot_rough_2k.png"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_leaves_alpha_2k.png",
        "bytes": 229028,
        "sha256": "487f86c1fc838dcd24bf67f9bd99706e3415271cecd34ce2ddaca9021707c781",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_leaves_alpha_2k.png"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_leaves_diff_2k.png",
        "bytes": 16449773,
        "sha256": "9b41fa87fc40921c881d7d2978f7f6ccdd2a888d91c70afe7226d51b37c7954b",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_leaves_diff_2k.png"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_leaves_nor_gl_2k.png",
        "bytes": 16470559,
        "sha256": "59928af6a248559a5b5d6c5f8cb5ff1fc698f34cebe718eeca111b583e9d5ddd",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_leaves_nor_gl_2k.png"
      },
      {
        "file": "assets\\potted_plant_02\\textures\\potted_plant_02_pot_diff_2k.png",
        "bytes": 19344861,
        "sha256": "5c7623b2b337bc9e996446eaa0fb851f441e0f26febe53fb19dde5c03fa89551",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/png/2k/potted_plant_02/potted_plant_02_pot_diff_2k.png"
      }
    ]
  },
  {
    "id": "ceramic_vase_03",
    "author": {
      "James Ray Cock": "All"
    },
    "license": "CC0",
    "source": "https://polyhaven.com/a/ceramic_vase_03",
    "licenseUrl": "https://polyhaven.com/license",
    "files": [
      {
        "file": "assets\\ceramic_vase_03\\ceramic_vase_03.blend",
        "bytes": 203727,
        "sha256": "4f740e0e7c2d929030baaa7e9cc53c5bdda501896163b307efde98fc29976c1c",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/blend/2k/ceramic_vase_03/ceramic_vase_03_2k.blend"
      },
      {
        "file": "assets\\ceramic_vase_03\\textures\\ceramic_vase_03_nor_gl_2k.exr",
        "bytes": 6895746,
        "sha256": "0fdd6c8e5e943692a5a472417e04400fb2fc97da4e17aabf3e8d3413671731cd",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/exr/2k/ceramic_vase_03/ceramic_vase_03_nor_gl_2k.exr"
      },
      {
        "file": "assets\\ceramic_vase_03\\textures\\ceramic_vase_03_diff_2k.jpg",
        "bytes": 454987,
        "sha256": "3e9a7a350540769a4b78dafb975ce732c19dfdb011e9987141a8c00ba57ec3b2",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/jpg/2k/ceramic_vase_03/ceramic_vase_03_diff_2k.jpg"
      },
      {
        "file": "assets\\ceramic_vase_03\\textures\\ceramic_vase_03_rough_2k.jpg",
        "bytes": 548035,
        "sha256": "6066733d04bb9d38cfb7286cfb8644e8993311c232c7713f4fe25be03eeed835",
        "url": "https://dl.polyhaven.org/file/ph-assets/Models/jpg/2k/ceramic_vase_03/ceramic_vase_03_rough_2k.jpg"
      }
    ]
  },
  {
    "id": "oak_wood_planks",
    "license": "CC0",
    "source": "https://polyhaven.com/a/oak_wood_planks",
    "licenseUrl": "https://polyhaven.com/license",
    "files": [
      {
        "file": "assets\\oak_wood_planks\\diff.jpg",
        "bytes": 2736142,
        "sha256": "ec3d2deb1fe21150ede5f987b48c691b3c7dbffe4183850a9b8717e904917a46",
        "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/oak_wood_planks/oak_wood_planks_diff_2k.jpg"
      },
      {
        "file": "assets\\oak_wood_planks\\rough.jpg",
        "bytes": 3396426,
        "sha256": "18b2a97f44b18e1a794652dbb2ec4bbdfc35869e2f028e4bbb85441258da1018",
        "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/oak_wood_planks/oak_wood_planks_rough_2k.jpg"
      },
      {
        "file": "assets\\oak_wood_planks\\nor_gl.jpg",
        "bytes": 2125233,
        "sha256": "340a51d81e5ec2ead28a1c864637375becb00a1e11861e47a72dde4c03950968",
        "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/oak_wood_planks/oak_wood_planks_nor_gl_2k.jpg"
      }
    ]
  },
  {
    "id": "marble_01",
    "license": "CC0",
    "source": "https://polyhaven.com/a/marble_01",
    "licenseUrl": "https://polyhaven.com/license",
    "files": [
      {
        "file": "assets\\marble_01\\diff.jpg",
        "bytes": 1269188,
        "sha256": "d403786171716f86718bdd67eba923d4fb6125c0636bacef0e6a21dd5d623a48",
        "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/marble_01/marble_01_diff_2k.jpg"
      },
      {
        "file": "assets\\marble_01\\rough.jpg",
        "bytes": 281388,
        "sha256": "1b970e033856c93ee7390d947da5340e101b489fc8c1463354ea9e6655ce039a",
        "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/marble_01/marble_01_rough_2k.jpg"
      },
      {
        "file": "assets\\marble_01\\nor_gl.jpg",
        "bytes": 409581,
        "sha256": "d5e17ccb2913adbf28fcb781fddf0aa711259ddea6c1c918442f9a3589aa4660",
        "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/marble_01/marble_01_nor_gl_2k.jpg"
      }
    ]
  },
  {
    "id": "hotel_rooftop_balcony",
    "license": "CC0",
    "source": "https://polyhaven.com/a/hotel_rooftop_balcony",
    "licenseUrl": "https://polyhaven.com/license",
    "files": [
      {
        "file": "assets\\hotel_rooftop_balcony.hdr",
        "bytes": 25338031,
        "sha256": "1a199212587294614ae6b7f565e7b3978faf93900386cd6adb5a086cfc6c6b14",
        "url": "https://dl.polyhaven.org/file/ph-assets/HDRIs/hdr/4k/hotel_rooftop_balcony_4k.hdr"
      }
    ]
  },
  {
    "id": "GlamVelvetSofa",
    "existingProjectAsset": true,
    "originalCredit": {
      "asset": "GlamVelvetSofa",
      "file": "glam_velvet_sofa.glb",
      "sourcePage": "https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/GlamVelvetSofa",
      "sourceDownload": "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/main/Models/GlamVelvetSofa/glTF-Binary/GlamVelvetSofa.glb",
      "sourceLicense": "https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/GlamVelvetSofa/LICENSE.md",
      "license": "CC-BY-4.0",
      "licenseURL": "https://creativecommons.org/licenses/by/4.0/",
      "copyright": "Copyright 2021 Wayfair, LLC",
      "creator": "Eric Chadwick",
      "requiredAttribution": "GlamVelvetSofa by Eric Chadwick, copyright 2021 Wayfair, LLC, licensed under CC BY 4.0. Source: KhronosGroup/glTF-Sample-Assets.",
      "modificationStatus": "Original GLB binary remains unchanged. The application applies the runtime adaptations documented below.",
      "original": {
        "bytes": 3149844,
        "sha256": "67202c74a1a33377771f162dc7fad612a6c9bd51ee15124c488e9851d9ac5266",
        "meshCount": 3,
        "primitiveCount": 3,
        "triangles": 4196,
        "vertices": 3118,
        "bounds": {
          "min": [
            -1.11397314,
            4.544779e-05,
            -0.627700269
          ],
          "max": [
            1.07446992,
            0.7875869,
            0.3951283
          ],
          "size": [
            2.18844306,
            0.7875414522099999,
            1.022828569
          ]
        },
        "units": "metres, glTF Y up; mesh nodes have no transforms",
        "textures": "Two embedded 1024x1024 PNG textures: AO and tiled normal; fabric sheen/specular and five material variants",
        "embeddedLights": 1,
        "defaultMaterial": "navy",
        "extensions": [
          "KHR_texture_transform",
          "KHR_materials_sheen",
          "KHR_materials_specular",
          "KHR_materials_variants",
          "KHR_lights_punctual"
        ],
        "documentationCountDifference": "Official README states 4319 triangles/3204 vertices; downloaded GLB accessors contain 4196 triangles/3118 vertices. Actual binary counts above take precedence."
      },
      "retrievedAt": "2026-09-11T05:24:48.414Z",
      "runtimeChanges": [
        "Clone mesh nodes only; embedded Key Light is excluded from the application scene.",
        "Translate original x/z bounding-box center to the placement origin and original minY to floor height 0.005m.",
        "Uniformly scale to fit the existing validated sofa footprint using min((width-0.014)/originalWidth, (depth-0.014)/originalDepth, 0.945/originalHeight). Displayed dimensions may differ from the source product.",
        "Select the authors Gray material variant using KHR_materials_variants. Retain authored PBR, original UVs, AO, normal, sheen and specular; no custom recoloring.",
        "Use a procedural sofa only if the library asset fails to load.",
        "At runtime only, rotate the sofa 180 degrees when its authored positive-Z front faces away from its source room center. Preserve placement center, validated rectangular footprint and source furniture rotation JSON."
      ],
      "runtimeVerification": {
        "sourceReviewed": "web/model-geometry.js",
        "originalSHA256Unchanged": true,
        "reportedByGeometryAgent": "Two representative placements passed vertex bounds checks; rendered unindexed vertex count is 12588, equivalent to 4196 triangles.",
        "sourceReviewDate": "2026-09-11T06:11:55.724Z"
      }
    },
    "studyChanges": "Sofa fabric recoloured to warm ivory; roughness/sheen/normal adjusted; geometry retained."
  },
  {
    "id": "wood_table_001",
    "existingProjectAsset": true,
    "originalCredit": {
      "source": "https://polyhaven.com/a/wood_table_001",
      "license": "CC0",
      "authors": [
        "Dimitrios Savva",
        "Rico Cilliers"
      ],
      "scaleMetres": 1.5,
      "files": [
        {
          "file": "wood_table_001_diff_2k.jpg",
          "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/wood_table_001/wood_table_001_diff_2k.jpg",
          "bytes": 924532,
          "sha256": "63ae5cd186197b40f18bc020fe2b652bb08df4d9fc6240c6cbf8a7e3bc32c096"
        },
        {
          "file": "wood_table_001_nor_gl_2k.jpg",
          "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/wood_table_001/wood_table_001_nor_gl_2k.jpg",
          "bytes": 385020,
          "sha256": "d56f02c911391267ddc6adc92e8a5bc29b9803196e8d57ad5b9702e6c842dc28"
        },
        {
          "file": "wood_table_001_rough_2k.jpg",
          "url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/2k/wood_table_001/wood_table_001_rough_2k.jpg",
          "bytes": 963377,
          "sha256": "c788876d80e4d96598590631f8de92447fb1b0ba1265a812514ee717d270ac3e"
        }
      ]
    },
    "studyChanges": "Oak veneer material assembled from existing CC0 diffuse and roughness textures."
  }
]