$ pnpm blender:smoke # cwd /Users/king/Desktop/Workspace/SRO/zoen # exit 0 > zoen@0.1.0 blender:smoke /Users/king/Desktop/Workspace/SRO/zoen > node tools/blender/smoke.mjs M0-02 Blender smoke · 2026-10-08T00:40:37.861Z Blender 4.5.9 LTS (glTF exporter 4.5.51) · render BLENDER_EEVEE_NEXT 0.2204 s · export 0.0716 s · total 0.3424 s GLB art/build/smoke/smoke_cube.glb (19,904 bytes) PASS glTF 2.0: Khronos glTF Blender I/O v4.5.51 PASS triangles: 12 (expected 12) PASS one mesh, node and primitive: 1 meshes, 1 instances, 1 primitives PASS bounds 1 m: size [1, 1, 1] m PASS +Y up, base at y = 0: min [-0.5, 0, -0.5] max [0.5, 1, 0.5] PASS transforms applied: SmokeCube: no rotation, no scale PASS normals: POSITION, NORMAL, TEXCOORD_0 PASS UVs (TEXCOORD_0): 0 primitives without UVs PASS one PBR material: M_SmokeCube: metallic 0, roughness 0.5 PASS single-sided: doubleSided false PASS embedded base-colour texture: 1 image(s), 0 external, largest 256 px PASS no skin: 0 skins, 0 skinned nodes, 0 parts with JOINTS/WEIGHTS PASS no animation or morph targets: 0 animations, 0 morph parts PASS no Draco/meshopt: none required PASS no cameras or lights: 0 cameras PNG logs/evidence/M0-02/smoke_render.png PASS size 512 × 512: 512 × 512 PASS not black or white: luma mean 0.388 (allowed 0.03–0.97) PASS not blank: luma std 0.096 (min 0.03) Metrics logs/evidence/M0-02/smoke_metrics.json PASS Blender and GLB triangles agree: Blender 12, GLB 12 PASS render settings: BLENDER_EEVEE_NEXT 512 × 512 RESULT PASS: 20/20 checks