import bpy
from pathlib import Path
R=Path(__file__).resolve().parent
bpy.ops.object.select_all(action='SELECT');bpy.ops.object.delete(use_global=False)
bpy.ops.mesh.primitive_cube_add();o=bpy.context.object
m=bpy.data.materials.new('probe');m.use_nodes=True;o.data.materials.append(m)
im=bpy.data.images.new('probe',width=16,height=16);tex=m.node_tree.nodes.new('ShaderNodeTexImage');tex.image=im;m.node_tree.nodes.active=tex
s=bpy.context.scene;s.render.engine='CYCLES';s.cycles.samples=1
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='OPTIX';prefs.get_devices()
for d in prefs.devices:d.use=d.type!='CPU'
s.cycles.device='GPU';bpy.ops.object.bake(type='DIFFUSE',pass_filter={'COLOR'})
bpy.ops.export_scene.gltf(filepath=str(R/'preflight.glb'),export_format='GLB',use_selection=True,export_yup=False)
bpy.ops.object.select_all(action='SELECT');bpy.ops.object.delete(use_global=False);bpy.ops.import_scene.gltf(filepath=str(R/'preflight.glb'))
bpy.ops.object.camera_add(location=(4,-6,3));s.camera=bpy.context.object;s.camera.rotation_euler=(-s.camera.location).to_track_quat('-Z','Y').to_euler();s.world.color=(.5,.5,.5)
s.render.resolution_x=64;s.render.resolution_y=64;s.render.resolution_percentage=100;s.render.filepath=str(R/'preflight.png');bpy.ops.render.render(write_still=True)
print('PREFLIGHT_OK')
