{
  "assets": [
    {
      "asset_id": "ArmChair_01",
      "title": "Arm Chair 01",
      "authors": {
        "Kirill Sannikov": "All"
      },
      "source_url": "https://polyhaven.com/a/ArmChair_01",
      "license": "CC0-1.0",
      "license_url": "https://polyhaven.com/license",
      "filename": "vintage-armchair.glb",
      "bytes": 684988,
      "gzip_bytes": 632267,
      "sha256": "697d8c7cad4eb8311684fb473b5029187718018961b27372429c4d7286aec3e7",
      "triangles": 5626,
      "vertices": 3758,
      "mesh_count": 1,
      "primitive_draw_calls": 1,
      "units": "meters",
      "up": "+Y",
      "front": "+Z, confirmed from actual geometry render",
      "size_xyz": [
        0.8484309017658234,
        1.065087635157397,
        0.7657602727413177
      ],
      "bounds_min": [
        -0.4242154508829117,
        0.0,
        -0.3828801363706589
      ],
      "bounds_max": [
        0.4242154508829117,
        1.065087635157397,
        0.3828801363706589
      ],
      "source_origin_offset_xyz": [
        1.4901161193847656e-08,
        -0.0004314967372920364,
        -0.03442646563053131
      ],
      "maps": [
        {
          "source": "Armchair_01_nor_gl_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 289916,
          "jpeg_quality": "original source",
          "source_sha256": "f5e4a43a12e79537e53e27c2bd4c5296b3e191cd6b301afce9fafd9d38238dde"
        },
        {
          "source": "Armchair_01_diff_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 173187,
          "jpeg_quality": 84,
          "source_sha256": "db30fc9ab61ac50c91ab7573583d2855a2910df1ecade02b89e3e8ab8d4e4c2d"
        },
        {
          "source": "Armchair_01_arm_1k.jpg",
          "dimensions": [
            512,
            512
          ],
          "bytes": 65862,
          "jpeg_quality": 84,
          "source_sha256": "d272c68e8180f2a381314ac0cef5a9165d15d951a0558cb40a17af71cf6a51c6"
        }
      ],
      "changes": [
        "Static node transforms baked; floor-centered origin",
        "Primitives merged by material without decimation",
        "Positions/UV rounded to 5 decimal places; direction attributes to 4 places for transport compression",
        "Albedo and normal maps at native 1K; scalar roughness/packed ARM maps downsampled to 512",
        "Packed ARM baked ambient occlusion connected",
        "Opaque surfaces single-sided; glass retains double-sided rendering"
      ],
      "source_type": "Authored PBR model; source does not certify photogrammetry"
    },
    {
      "asset_id": "vintage_cabinet_01",
      "title": "Vintage Cabinet 01",
      "authors": {
        "Rico Cilliers": "All"
      },
      "source_url": "https://polyhaven.com/a/vintage_cabinet_01",
      "license": "CC0-1.0",
      "license_url": "https://polyhaven.com/license",
      "filename": "vintage-cabinet.glb",
      "bytes": 2877520,
      "gzip_bytes": 1257378,
      "sha256": "85108b29c4004a021420f78a6347fbcb00086502b87d1ffa108cb4252d072014",
      "triangles": 61096,
      "vertices": 40730,
      "mesh_count": 1,
      "primitive_draw_calls": 3,
      "units": "meters",
      "up": "+Y",
      "front": "+Z, confirmed from actual geometry render",
      "size_xyz": [
        2.0217604637145996,
        2.2350515127764083,
        0.6698037981987
      ],
      "bounds_min": [
        -1.0108802318572998,
        0.0,
        -0.33490189909935
      ],
      "bounds_max": [
        1.0108802318572998,
        2.2350515127764083,
        0.33490189909935
      ],
      "source_origin_offset_xyz": [
        0.0,
        -0.0005844832048751414,
        0.05713069438934326
      ],
      "maps": [
        {
          "source": "vintage_cabinet_01_a_nor_gl_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 109236,
          "jpeg_quality": "original source",
          "source_sha256": "08d64582202f32c8f2250ee2061dc870678ac694206f9b4edf2acd11e33323a4"
        },
        {
          "source": "vintage_cabinet_01_a_diff_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 114400,
          "jpeg_quality": 84,
          "source_sha256": "06453bb3e2811147a7558914437c20042f3f5c21b9c4f1d3488bdfe94f25f03f"
        },
        {
          "source": "vintage_cabinet_01_a_arm_1k.jpg",
          "dimensions": [
            512,
            512
          ],
          "bytes": 72917,
          "jpeg_quality": 84,
          "source_sha256": "0f5970977780b6dbb202f1371777b7b616dee9da7e01760eee306c2202ffeb17"
        },
        {
          "source": "vintage_cabinet_01_b_nor_gl_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 52162,
          "jpeg_quality": "original source",
          "source_sha256": "c9580fbf1f69d7bc23817216e2954c713c87aceb5c4f04b9b1a5233c2cf2ce7b"
        },
        {
          "source": "vintage_cabinet_01_b_diff_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 117928,
          "jpeg_quality": 84,
          "source_sha256": "81967dbb387b205b2aa6f253165c8c44f60cdf5e57d9ceebf230fef21569b33a"
        },
        {
          "source": "vintage_cabinet_01_b_rough_1k.jpg",
          "dimensions": [
            512,
            512
          ],
          "bytes": 45066,
          "jpeg_quality": 84,
          "source_sha256": "1f11ec7fdea1b6a9ce7ea8a3d2110f944860aeb72dce4d017b8d2880582dfb20"
        },
        {
          "source": "vintage_cabinet_01_a_rough_1k.jpg",
          "dimensions": [
            512,
            512
          ],
          "bytes": 38837,
          "jpeg_quality": 84,
          "source_sha256": "a641d1ac6b43ca25eb1b26e631057b79c3f2ab1b39a3460a5894b5c3dd22b420"
        }
      ],
      "changes": [
        "Static node transforms baked; floor-centered origin",
        "Primitives merged by material without decimation",
        "Positions/UV rounded to 5 decimal places; direction attributes to 4 places for transport compression",
        "Albedo and normal maps at native 1K; scalar roughness/packed ARM maps downsampled to 512",
        "Packed ARM baked ambient occlusion connected",
        "Opaque surfaces single-sided; glass retains double-sided rendering"
      ],
      "source_type": "Authored PBR model; source does not certify photogrammetry"
    },
    {
      "asset_id": "tool_cart",
      "title": "Tool Cart",
      "authors": {
        "Savva Zakharov": "All"
      },
      "source_url": "https://polyhaven.com/a/tool_cart",
      "license": "CC0-1.0",
      "license_url": "https://polyhaven.com/license",
      "filename": "workshop-tool-cart.glb",
      "bytes": 1428956,
      "gzip_bytes": 947995,
      "sha256": "b39e53c7ea3b3118397ffa1526c9ad502e4c1522c46696ab68f0dae460a2bf22",
      "triangles": 29394,
      "vertices": 22478,
      "mesh_count": 1,
      "primitive_draw_calls": 1,
      "units": "meters",
      "up": "+Y",
      "front": "+Z, confirmed from actual geometry render",
      "size_xyz": [
        1.2734254002571106,
        0.964644730091095,
        0.7536306381225586
      ],
      "bounds_min": [
        -0.6367127001285553,
        0.0,
        -0.3768153190612793
      ],
      "bounds_max": [
        0.6367127001285553,
        0.964644730091095,
        0.3768153190612793
      ],
      "source_origin_offset_xyz": [
        -0.02089211344718933,
        -0.003560006618499756,
        -0.008127272129058838
      ],
      "maps": [
        {
          "source": "tool_cart_nor_gl_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 265330,
          "jpeg_quality": 86,
          "source_sha256": "fa995e77eacad81c78f650e28a6d4c1c7b9d6c74a3f314d5f5ebdddf6de510fc"
        },
        {
          "source": "tool_cart_diff_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 183199,
          "jpeg_quality": 84,
          "source_sha256": "3a3e18efa54d18f2d01ad51cb40f8edd9af76e054a6a9c21324bc14fe49be965"
        },
        {
          "source": "tool_cart_arm_1k.jpg",
          "dimensions": [
            512,
            512
          ],
          "bytes": 82785,
          "jpeg_quality": 84,
          "source_sha256": "2b928779ab242468c90e6074ab72567bc58ecf3e0240fd709e4507b59764aef7"
        }
      ],
      "changes": [
        "Static node transforms baked; floor-centered origin",
        "Primitives merged by material without decimation",
        "Positions/UV rounded to 5 decimal places; direction attributes to 4 places for transport compression",
        "Albedo and normal maps at native 1K; scalar roughness/packed ARM maps downsampled to 512",
        "Packed ARM baked ambient occlusion connected",
        "Opaque surfaces single-sided; glass retains double-sided rendering"
      ],
      "source_type": "Authored PBR model; source does not certify photogrammetry"
    },
    {
      "asset_id": "marble_bust_01",
      "title": "Marble Bust 01",
      "authors": {
        "Rico Cilliers": "All"
      },
      "source_url": "https://polyhaven.com/a/marble_bust_01",
      "license": "CC0-1.0",
      "license_url": "https://polyhaven.com/license",
      "filename": "marble-bust.glb",
      "bytes": 757064,
      "gzip_bytes": 650122,
      "sha256": "99645eb769a9a3ce3c985df42e40fba368051cef6c9635bdba46e91500f69700",
      "triangles": 17456,
      "vertices": 9746,
      "mesh_count": 1,
      "primitive_draw_calls": 1,
      "units": "meters",
      "up": "+Y",
      "front": "+Z, confirmed from actual geometry render",
      "size_xyz": [
        0.2717496156692505,
        0.5149432048201561,
        0.299713671207428
      ],
      "bounds_min": [
        -0.13587480783462524,
        0.0,
        -0.149856835603714
      ],
      "bounds_max": [
        0.13587480783462524,
        0.5149432048201561,
        0.149856835603714
      ],
      "source_origin_offset_xyz": [
        0.012994617223739624,
        7.62939453125e-05,
        0.0052604079246521
      ],
      "maps": [
        {
          "source": "marble_bust_01_nor_gl_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 124627,
          "jpeg_quality": "original source",
          "source_sha256": "3d355904cd54c2de90d5d4310b80d43816fa2dd509f0a3445d654eab8e237c5f"
        },
        {
          "source": "marble_bust_01_diff_1k.jpg",
          "dimensions": [
            1024,
            1024
          ],
          "bytes": 156336,
          "jpeg_quality": 84,
          "source_sha256": "cbb7dccdc62d7eaa240eef7b4956969bf6e73c7338b64f1378629838ea22383c"
        },
        {
          "source": "marble_bust_01_rough_1k.jpg",
          "dimensions": [
            512,
            512
          ],
          "bytes": 57481,
          "jpeg_quality": 84,
          "source_sha256": "1c4502352dc936dd1f1c1a81b418706df1ce0445949874215015325f9b8921fb"
        }
      ],
      "changes": [
        "Static node transforms baked; floor-centered origin",
        "Primitives merged by material without decimation",
        "Positions/UV rounded to 5 decimal places; direction attributes to 4 places for transport compression",
        "Albedo and normal maps at native 1K; scalar roughness/packed ARM maps downsampled to 512",
        "Original grayscale roughness used in glTF green channel; no invented AO map",
        "Opaque marble made single-sided"
      ],
      "source_type": "Authored PBR model; source does not certify photogrammetry",
      "recommendation": {
        "scale": 1.6,
        "support": "0.60 m square pedestal, top at Y=1.25 m",
        "candidate_position_xyz": [
          -5.85,
          1.25,
          3.15
        ],
        "candidate_yaw_radians": 1.5707963267948966,
        "explanation": "Foyer left-wall sconce alcove; +Z front rotated +pi/2 faces room center. Recheck after architectural changes. Collision should include support footprint."
      }
    }
  ],
  "license": "CC0-1.0",
  "total_bytes": 5408559,
  "total_gzip_bytes": 3181659,
  "environment": {
    "filename": "abandoned-room-512.hdr",
    "source_url": "https://polyhaven.com/a/abandoned_games_room_01",
    "author": "Octavian Tudose",
    "license": "CC0-1.0",
    "source_file": "abandoned_games_room_01_1k.hdr",
    "source_sha256": "a94c3bc4540e6ee4590a0480a6947ee9258572fc41e1f317f921618775998f24",
    "sha256": "b046452de131cd7fd2f3b80e7a0919e6041d210f6ea973a14511c55c20d58df8",
    "bytes": 417095,
    "gzip_bytes": 344019,
    "dimensions": [
      512,
      256
    ],
    "projection": "equirectangular",
    "dynamic_range": "Linear HDR radiance, not an LDR panorama",
    "use": "RGBELoader then PMREM; reflection/indirect environment only, do not set scene background",
    "recommendation": "Keep current low scene.environmentIntensity and tune in runtime; preserve all local lights."
  },
  "validation": [
    {
      "file": "vintage-armchair.glb",
      "passed": true,
      "finite_geometry": true,
      "self_contained": true,
      "triangles": 5626,
      "draw_calls": 1,
      "bounds_xyz": [
        [
          -0.4242199957370758,
          0.0,
          -0.38288000226020813
        ],
        [
          0.4242199957370758,
          1.0650899410247803,
          0.38288000226020813
        ]
      ]
    },
    {
      "file": "vintage-cabinet.glb",
      "passed": true,
      "finite_geometry": true,
      "self_contained": true,
      "triangles": 61096,
      "draw_calls": 3,
      "bounds_xyz": [
        [
          -1.0108799934387207,
          0.0,
          -0.33489999175071716
        ],
        [
          1.0108799934387207,
          2.2350499629974365,
          0.33489999175071716
        ]
      ]
    },
    {
      "file": "workshop-tool-cart.glb",
      "passed": true,
      "finite_geometry": true,
      "self_contained": true,
      "triangles": 29394,
      "draw_calls": 1,
      "bounds_xyz": [
        [
          -0.636709988117218,
          0.0,
          -0.37681999802589417
        ],
        [
          0.636709988117218,
          0.9646400213241577,
          0.37681999802589417
        ]
      ]
    }
  ]
}
