Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
1.5 kB
10
Indexable
Never
import bpy,gpu,time

def draw():
    global to_draw
    if to_draw:
        print("drawing...")
        framebuffer = gpu.state.active_framebuffer_get()

        viewport_info = gpu.state.viewport_get()
        width = viewport_info[2]
        height = viewport_info[3]

        framebuffer_image.scale(width, height)

        pixelBuffer = framebuffer.read_color(0, 0, width, height, 4, 0, 'FLOAT')
        
        pixelBuffer.dimensions = width * height * 4
        framebuffer_image.pixels.foreach_set(pixelBuffer)
        framebuffer_image.filepath_raw = "/.../MyImage.png"
        framebuffer_image.save()
        to_draw=False

def update_draw():
    global to_draw
    bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)
    to_draw = True
    bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)

if __name__ == "__main__":
    global to_draw
    to_draw = False
    
    if "color_buffer_copy" in bpy.data.images:
        framebuffer_image = bpy.data.images["color_buffer_copy"]
    else:
        framebuffer_image = bpy.data.images.new("color_buffer_copy" , 32, 32, float_buffer=True,alpha=True)
    draw_handler=bpy.types.SpaceView3D.draw_handler_add(draw, (), 'WINDOW', 'PRE_VIEW')

    bpy.data.objects['Cube'].rotation_euler[0] = 1.5
    update_draw()
    
    time.sleep(10)
    
    bpy.data.objects['Cube'].rotation_euler[1] = 3
    update_draw()
    
    bpy.types.SpaceView3D.draw_handler_remove(draw_handler, 'WINDOW')
    print("we're done")