mirror of
https://github.com/nophead/Mendel90.git
synced 2025-08-06 13:26:31 +02:00
auto renderer
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
|
import commands
|
||||||
|
|
||||||
def render(machine):
|
def render(machine):
|
||||||
render_dir = machine + os.sep + "render"
|
render_dir = machine + os.sep + "render"
|
||||||
@@ -14,8 +15,8 @@ def render(machine):
|
|||||||
for i in li:
|
for i in li:
|
||||||
stls.append(i[:-4])
|
stls.append(i[:-4])
|
||||||
for i in stls:
|
for i in stls:
|
||||||
command = 'blender utils'+os.sep+'render.blend -P utils'+os.sep+'viz.py -- '+machine+os.sep+'stls'+os.sep+i+'.stl '+machine+os.sep+'render'+os.sep+i+'.png'
|
command = 'blender -b utils'+os.sep+'render.blend -P utils'+os.sep+'viz.py -- '+machine+os.sep+'stls'+os.sep+i+'.stl '+machine+os.sep+'render'+os.sep+i+'.png'
|
||||||
print command
|
print commands.getstatusoutput(command)[1]
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
|
BIN
utils/render.blend
Normal file
BIN
utils/render.blend
Normal file
Binary file not shown.
67
utils/viz.py
67
utils/viz.py
@@ -1,2 +1,67 @@
|
|||||||
|
import bpy
|
||||||
|
import sys
|
||||||
|
|
||||||
# blender python script to place camera and render stls
|
global ob
|
||||||
|
global cam_target
|
||||||
|
mat = 'abs'
|
||||||
|
|
||||||
|
def load_stl(file_path):
|
||||||
|
global cam_target,ob
|
||||||
|
# load
|
||||||
|
bpy.ops.import_mesh.stl(filepath=file_path)
|
||||||
|
# select properly
|
||||||
|
ob = bpy.context.selected_objects[0]
|
||||||
|
print(ob)
|
||||||
|
bpy.ops.object.select_all(action='DESELECT')
|
||||||
|
ob.select = True
|
||||||
|
# remove doubles and clean
|
||||||
|
#py.ops.object.editmode_toggle()
|
||||||
|
#bpy.ops.mesh.select_all(action='TOGGLE')
|
||||||
|
#bpy.ops.mesh.remove_doubles(limit=0.0001)
|
||||||
|
#bpy.ops.mesh.normals_make_consistent(inside=False)
|
||||||
|
#bpy.ops.object.editmode_toggle()
|
||||||
|
bpy.ops.object.origin_set(type='GEOMETRY_ORIGIN', center='BOUNDS')
|
||||||
|
# place
|
||||||
|
z_dim = ob.dimensions[2]
|
||||||
|
print(z_dim)
|
||||||
|
bpy.ops.transform.translate(value=(0,0,z_dim/2.0))
|
||||||
|
cam_target = (0,0,z_dim/3.0)
|
||||||
|
# assign material
|
||||||
|
ob.material_slots.data.active_material = bpy.data.materials[mat]
|
||||||
|
|
||||||
|
def place_camera():
|
||||||
|
global cam_target
|
||||||
|
max_dim = 0
|
||||||
|
for i in ob.dimensions:
|
||||||
|
print(i)
|
||||||
|
if i > max_dim:
|
||||||
|
max_dim = i
|
||||||
|
print(max_dim)
|
||||||
|
bpy.data.objects['target'].location = cam_target
|
||||||
|
cam = bpy.data.objects['Camera'].location.x = max_dim*2.4
|
||||||
|
|
||||||
|
def render_thumb(image,gl=False,anim=False):
|
||||||
|
if gl:
|
||||||
|
if anim:
|
||||||
|
bpy.data.scenes['Scene'].render.filepath = "/tmp/"+ob.name+"#"
|
||||||
|
bpy.ops.render.opengl(animation=True)
|
||||||
|
else:
|
||||||
|
bpy.ops.render.opengl(write_still=True)
|
||||||
|
bpy.data.images['Render Result'].save_render(filepath=image)
|
||||||
|
else:
|
||||||
|
if anim:
|
||||||
|
bpy.data.scenes['Scene'].render.filepath = "/tmp/"+ob.name+"#"
|
||||||
|
bpy.ops.render.render(animation=True)
|
||||||
|
else:
|
||||||
|
bpy.ops.render.render(write_still=True)
|
||||||
|
bpy.data.images['Render Result'].save_render(filepath=image)
|
||||||
|
|
||||||
|
image = sys.argv[-1]
|
||||||
|
stl = sys.argv[-2]
|
||||||
|
print(stl)
|
||||||
|
print(image)
|
||||||
|
|
||||||
|
load_stl(stl)
|
||||||
|
place_camera()
|
||||||
|
render_thumb(image,gl=False)
|
||||||
|
#bpy.ops.object.delete()
|
||||||
|
Reference in New Issue
Block a user