Regenerate the full contact sheet; fill unused tiles
The --only runs during the sprint left a partial sheet committed. Also fills the empty slots in a partly-filled last row with the background sampled from a tile's corner, so 19 assets in a 4x5 grid no longer leaves a black hole. The world colour can't be reused for this — the render is sRGB-encoded, the scene value is linear. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
0f5f4d8368
commit
af2694257a
@ -1,6 +1,190 @@
|
|||||||
{
|
{
|
||||||
"blender": "5.1.2",
|
"blender": "5.1.2",
|
||||||
"assets": [
|
"assets": [
|
||||||
|
{
|
||||||
|
"name": "ref_capsule",
|
||||||
|
"dims": [
|
||||||
|
0.4,
|
||||||
|
0.4,
|
||||||
|
1.7
|
||||||
|
],
|
||||||
|
"tris": 220,
|
||||||
|
"nodes": [
|
||||||
|
"head_height",
|
||||||
|
"ref_capsule",
|
||||||
|
"ref_capsule_mesh"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tree_gum_01",
|
||||||
|
"dims": [
|
||||||
|
4.5522,
|
||||||
|
4.956,
|
||||||
|
7.9702
|
||||||
|
],
|
||||||
|
"tris": 396,
|
||||||
|
"nodes": [
|
||||||
|
"branch_anchor_01",
|
||||||
|
"branch_anchor_02",
|
||||||
|
"branch_anchor_03",
|
||||||
|
"canopy",
|
||||||
|
"canopy_01",
|
||||||
|
"canopy_02",
|
||||||
|
"canopy_03",
|
||||||
|
"tree_gum_01",
|
||||||
|
"trunk"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tree_gum_02",
|
||||||
|
"dims": [
|
||||||
|
3.8871,
|
||||||
|
2.7787,
|
||||||
|
5.4972
|
||||||
|
],
|
||||||
|
"tris": 288,
|
||||||
|
"nodes": [
|
||||||
|
"branch_anchor_01",
|
||||||
|
"branch_anchor_02",
|
||||||
|
"canopy",
|
||||||
|
"canopy_01",
|
||||||
|
"canopy_02",
|
||||||
|
"tree_gum_02",
|
||||||
|
"trunk"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fence_post",
|
||||||
|
"dims": [
|
||||||
|
0.13,
|
||||||
|
0.13,
|
||||||
|
2.03
|
||||||
|
],
|
||||||
|
"tris": 24,
|
||||||
|
"nodes": [
|
||||||
|
"fence_post",
|
||||||
|
"post"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fence_panel",
|
||||||
|
"dims": [
|
||||||
|
2.4,
|
||||||
|
0.054,
|
||||||
|
1.8194
|
||||||
|
],
|
||||||
|
"tris": 324,
|
||||||
|
"nodes": [
|
||||||
|
"fence_panel",
|
||||||
|
"palings",
|
||||||
|
"rails"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gate",
|
||||||
|
"dims": [
|
||||||
|
1.045,
|
||||||
|
0.0615,
|
||||||
|
1.75
|
||||||
|
],
|
||||||
|
"tris": 220,
|
||||||
|
"nodes": [
|
||||||
|
"gate",
|
||||||
|
"gate_frame",
|
||||||
|
"gate_palings",
|
||||||
|
"hinge_axis",
|
||||||
|
"hinges"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "house_yardside",
|
||||||
|
"dims": [
|
||||||
|
9.2,
|
||||||
|
1.0547,
|
||||||
|
2.9
|
||||||
|
],
|
||||||
|
"tris": 200,
|
||||||
|
"nodes": [
|
||||||
|
"door",
|
||||||
|
"fascia",
|
||||||
|
"fascia_anchor_01",
|
||||||
|
"fascia_anchor_02",
|
||||||
|
"fascia_anchor_03",
|
||||||
|
"gutter",
|
||||||
|
"house_yardside",
|
||||||
|
"roof",
|
||||||
|
"wall",
|
||||||
|
"window"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "shed_01",
|
||||||
|
"dims": [
|
||||||
|
2.58,
|
||||||
|
1.9708,
|
||||||
|
2.2224
|
||||||
|
],
|
||||||
|
"tris": 96,
|
||||||
|
"nodes": [
|
||||||
|
"door_anchor",
|
||||||
|
"doors",
|
||||||
|
"roof",
|
||||||
|
"shed_01",
|
||||||
|
"shell"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "shed_table",
|
||||||
|
"dims": [
|
||||||
|
1.6,
|
||||||
|
0.6,
|
||||||
|
0.9
|
||||||
|
],
|
||||||
|
"tris": 72,
|
||||||
|
"nodes": [
|
||||||
|
"pickup_anchor",
|
||||||
|
"shed_table",
|
||||||
|
"table_frame",
|
||||||
|
"table_top"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "garden_bed",
|
||||||
|
"dims": [
|
||||||
|
3.0,
|
||||||
|
1.2,
|
||||||
|
0.8609
|
||||||
|
],
|
||||||
|
"tris": 2580,
|
||||||
|
"nodes": [
|
||||||
|
"bed",
|
||||||
|
"garden_bed",
|
||||||
|
"plants_dead",
|
||||||
|
"plants_full",
|
||||||
|
"plants_tattered",
|
||||||
|
"soil"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "sail_post",
|
"name": "sail_post",
|
||||||
"dims": [
|
"dims": [
|
||||||
@ -19,7 +203,178 @@
|
|||||||
],
|
],
|
||||||
"status": "PASS",
|
"status": "PASS",
|
||||||
"problems": []
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ladder_01",
|
||||||
|
"dims": [
|
||||||
|
0.455,
|
||||||
|
0.075,
|
||||||
|
3.0
|
||||||
|
],
|
||||||
|
"tris": 276,
|
||||||
|
"nodes": [
|
||||||
|
"ladder",
|
||||||
|
"ladder_01",
|
||||||
|
"ladder_base",
|
||||||
|
"ladder_top"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "shackle",
|
||||||
|
"dims": [
|
||||||
|
0.0569,
|
||||||
|
0.019,
|
||||||
|
0.0744
|
||||||
|
],
|
||||||
|
"tris": 560,
|
||||||
|
"nodes": [
|
||||||
|
"bow",
|
||||||
|
"pin",
|
||||||
|
"shackle"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "carabiner",
|
||||||
|
"dims": [
|
||||||
|
0.049,
|
||||||
|
0.009,
|
||||||
|
0.1027
|
||||||
|
],
|
||||||
|
"tris": 476,
|
||||||
|
"nodes": [
|
||||||
|
"body",
|
||||||
|
"carabiner",
|
||||||
|
"gate"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "turnbuckle",
|
||||||
|
"dims": [
|
||||||
|
0.0292,
|
||||||
|
0.0341,
|
||||||
|
0.1955
|
||||||
|
],
|
||||||
|
"tris": 728,
|
||||||
|
"nodes": [
|
||||||
|
"body",
|
||||||
|
"eye_a",
|
||||||
|
"eye_b",
|
||||||
|
"turnbuckle"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tramp_01",
|
||||||
|
"dims": [
|
||||||
|
2.9555,
|
||||||
|
2.9555,
|
||||||
|
0.78
|
||||||
|
],
|
||||||
|
"tris": 976,
|
||||||
|
"nodes": [
|
||||||
|
"legs",
|
||||||
|
"mat",
|
||||||
|
"pad",
|
||||||
|
"rim",
|
||||||
|
"tramp_01"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wheelie_bin_01",
|
||||||
|
"dims": [
|
||||||
|
0.58,
|
||||||
|
0.6808,
|
||||||
|
1.1188
|
||||||
|
],
|
||||||
|
"tris": 120,
|
||||||
|
"nodes": [
|
||||||
|
"bin_body",
|
||||||
|
"lid",
|
||||||
|
"lid_plate",
|
||||||
|
"wheelie_bin_01",
|
||||||
|
"wheels"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "washing_line_01",
|
||||||
|
"dims": [
|
||||||
|
2.8441,
|
||||||
|
2.8441,
|
||||||
|
2.2777
|
||||||
|
],
|
||||||
|
"tris": 336,
|
||||||
|
"nodes": [
|
||||||
|
"arms",
|
||||||
|
"head",
|
||||||
|
"mast",
|
||||||
|
"washing_line_01"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "garden_gnome_01",
|
||||||
|
"dims": [
|
||||||
|
0.1427,
|
||||||
|
0.15,
|
||||||
|
0.365
|
||||||
|
],
|
||||||
|
"tris": 236,
|
||||||
|
"nodes": [
|
||||||
|
"garden_gnome_01",
|
||||||
|
"gnome"
|
||||||
|
],
|
||||||
|
"status": "PASS",
|
||||||
|
"problems": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"debris": []
|
"debris": [
|
||||||
|
{
|
||||||
|
"file": "BlueCrate_v2.glb",
|
||||||
|
"dims": [
|
||||||
|
0.36,
|
||||||
|
0.36,
|
||||||
|
0.29
|
||||||
|
],
|
||||||
|
"sane": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "BlackTub_v2.glb",
|
||||||
|
"dims": [
|
||||||
|
0.36,
|
||||||
|
0.54,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
"sane": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "WhiteTub_v2.glb",
|
||||||
|
"dims": [
|
||||||
|
0.36,
|
||||||
|
0.54,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
"sane": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "WoodenBin_v2.glb",
|
||||||
|
"dims": [
|
||||||
|
0.35,
|
||||||
|
0.36,
|
||||||
|
0.31
|
||||||
|
],
|
||||||
|
"sane": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@ -1626,7 +1626,12 @@ def make_contact_sheet(thumbs):
|
|||||||
cols = 4
|
cols = 4
|
||||||
rows = (len(tiles) + cols - 1) // cols
|
rows = (len(tiles) + cols - 1) // cols
|
||||||
th, tw = tiles[0].shape[0], tiles[0].shape[1]
|
th, tw = tiles[0].shape[0], tiles[0].shape[1]
|
||||||
sheet = np.zeros((rows * th, cols * tw, 4), dtype=np.float32)
|
# Prefill with the render background, sampled from a tile's corner rather
|
||||||
|
# than guessed — the PNG is sRGB-encoded and the scene colour is linear, so
|
||||||
|
# reusing the world constant here would not match. Otherwise the unused
|
||||||
|
# slots in a partly-filled last row read as black holes.
|
||||||
|
sheet = np.empty((rows * th, cols * tw, 4), dtype=np.float32)
|
||||||
|
sheet[:, :] = tiles[0][0, 0]
|
||||||
sheet[:, :, 3] = 1.0
|
sheet[:, :, 3] = 1.0
|
||||||
for i, tile in enumerate(tiles):
|
for i, tile in enumerate(tiles):
|
||||||
r, c = i // cols, i % cols
|
r, c = i // cols, i % cols
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 2.5 MiB |
Loading…
Reference in New Issue
Block a user