ludic/packages/ludic.lab/plate/probe.gltf
Orkuncakilkaya b401f7acc1 feat(ludic.lab): the visual lab as a package - a scene on a plate, never a world
A scene is an entry in the open registry LabScenes, shown on a plate: a
flat lit disc, the package's own small sky with the sun at one hour, and
a frame clock. Headless each camera (lab_shot, lab_shot_at) settles and
is written as build/lab/<scene>/<shot>.png (a stored PNG, written here);
in a window N and P step through them. tools/lab/run.sh and sheet.py
make the contact sheet; tools/lab/plate_build.py makes plate/.
ludic.render3d gains r3d_plate_mode (no terrain, grass or water is made)
and r3d_sky_path. quit() in a program with no frame loop links. The
example takes ~120 MB resident, 417 MiB peak footprint. Reseed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 07:48:43 +03:00

209 lines
No EOL
2.7 KiB
JSON

{
"asset": {
"version": "2.0",
"generator": "ludic tools/lab/plate_build.py"
},
"scene": 0,
"scenes": [
{
"nodes": [
0
]
}
],
"nodes": [
{
"name": "probe",
"mesh": 0
}
],
"meshes": [
{
"name": "probe",
"primitives": [
{
"attributes": {
"POSITION": 0,
"NORMAL": 1,
"TEXCOORD_0": 2
},
"indices": 3,
"material": 0
},
{
"attributes": {
"POSITION": 4,
"NORMAL": 5,
"TEXCOORD_0": 6
},
"indices": 7,
"material": 1
}
]
}
],
"materials": [
{
"name": "probe_box",
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 0
},
"metallicRoughnessTexture": {
"index": 2
}
}
},
{
"name": "probe_ball",
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 1
},
"metallicRoughnessTexture": {
"index": 2
}
}
}
],
"textures": [
{
"source": 0
},
{
"source": 1
},
{
"source": 2
}
],
"images": [
{
"uri": "probe_box.png"
},
{
"uri": "probe_ball.png"
},
{
"uri": "probe_arm.png"
}
],
"buffers": [
{
"uri": "probe.bin",
"byteLength": 31152
}
],
"bufferViews": [
{
"buffer": 0,
"byteOffset": 0,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 288,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 576,
"byteLength": 192
},
{
"buffer": 0,
"byteOffset": 768,
"byteLength": 144
},
{
"buffer": 0,
"byteOffset": 912,
"byteLength": 6732
},
{
"buffer": 0,
"byteOffset": 7644,
"byteLength": 6732
},
{
"buffer": 0,
"byteOffset": 14376,
"byteLength": 4488
},
{
"buffer": 0,
"byteOffset": 18864,
"byteLength": 12288
}
],
"accessors": [
{
"bufferView": 0,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"min": [
-0.4,
0.0,
-0.4
],
"max": [
0.4,
0.8,
0.4
]
},
{
"bufferView": 1,
"componentType": 5126,
"count": 24,
"type": "VEC3"
},
{
"bufferView": 2,
"componentType": 5126,
"count": 24,
"type": "VEC2"
},
{
"bufferView": 3,
"componentType": 5125,
"count": 36,
"type": "SCALAR"
},
{
"bufferView": 4,
"componentType": 5126,
"count": 561,
"type": "VEC3",
"min": [
-0.3,
0.8,
-0.3
],
"max": [
0.3,
1.4000000000000001,
0.3
]
},
{
"bufferView": 5,
"componentType": 5126,
"count": 561,
"type": "VEC3"
},
{
"bufferView": 6,
"componentType": 5126,
"count": 561,
"type": "VEC2"
},
{
"bufferView": 7,
"componentType": 5125,
"count": 3072,
"type": "SCALAR"
}
]
}