Skip to content

Instantly share code, notes, and snippets.

@Mossman1215
Last active December 15, 2018 03:30
Show Gist options
  • Save Mossman1215/c0b4f010073ddf2023364be90766229c to your computer and use it in GitHub Desktop.
Save Mossman1215/c0b4f010073ddf2023364be90766229c to your computer and use it in GitHub Desktop.
Export screen space bounding box during blender render
import bpy
import bpy_extras
import json
import os
from mathutils import *
from math import *
def write_frame(scene):
print("----Starting Render function----")
with open('collision.json', 'r') as f:
datastore = json.load(f)
power = bpy.data.objects['Powerstation']
camera = bpy.data.objects['Camera']
scn = bpy.data.scenes['Scene']
box = power.bound_box
bbox_corners = [power.matrix_world * Vector(corner) for corner in box]
verts = [bpy_extras.object_utils.world_to_camera_view(scn,camera,Vector(vert)) for vert in bbox_corners]
frame=[]
for vert in verts:
vert.x = vert.x * bpy.context.scene.render.resolution_x
vert.y = vert.y * bpy.context.scene.render.resolution_y
frame.append(vert.x)
frame.append(vert.y)
framenum = len(datastore)
datastore[framenum]=frame
with open('collision.json', 'w') as f:
jsondat = json.dumps(datastore)
f.write(jsondat)
print('-------dump to file---------')
def pre_render(scene):
with open('collision.json', 'w') as f:
f.write('{}')
bpy.app.handlers.frame_change_post.append(write_frame)
bpy.app.handlers.render_pre.append(pre_render)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment