import bpy,json
from pathlib import Path
R=Path(__file__).parent;bpy.ops.object.select_all(action='SELECT');bpy.ops.object.delete(use_global=False)
bpy.ops.mesh.primitive_cube_add();ob=bpy.context.object
mat=bpy.data.materials.new('probe');mat.use_nodes=True;mat.node_tree.nodes.get('Principled BSDF').inputs['Base Color'].default_value=(.7,.2,.05,1);ob.data.materials.append(mat)
im=bpy.data.images.new('tiny_bake',16,16);tex=mat.node_tree.nodes.new('ShaderNodeTexImage');tex.image=im;mat.node_tree.nodes.active=tex
bpy.context.scene.render.engine='CYCLES';bpy.context.scene.cycles.samples=1;bpy.context.scene.cycles.device='CPU';bpy.context.scene.render.bake.use_pass_direct=False;bpy.context.scene.render.bake.use_pass_indirect=False;bpy.context.scene.render.bake.use_pass_color=True
bpy.ops.object.bake(type='DIFFUSE');im.filepath_raw=str(R/'preflight_bake.png');im.file_format='PNG';im.save()
bpy.ops.export_scene.gltf(filepath=str(R/'preflight_bake.glb'),export_format='GLB',export_yup=True)
bpy.ops.object.select_all(action='SELECT');bpy.ops.object.delete(use_global=False);bpy.ops.import_scene.gltf(filepath=str(R/'preflight_bake.glb'))
assert len([o for o in bpy.context.scene.objects if o.type=='MESH'])==1
(R/'preflight_blender.json').write_text(json.dumps({'tiny_bake':'PASS','resolution':[16,16],'blender_export_reimport':'PASS'}))
