# obtain the nodes nodes = bpy.data.materials['Material'].node_tree.nodes # set the object visible bpy.data.objects['Sphere'].hide_render = False bpy.data.objects['Point'].hide_render = True bpy.data.objects['Lamp'].hide_render = False bpy.data.objects['Plane'].hide_render = True proj_nodes = bpy.data.lamps['Lamp'].node_tree.nodes tex_node = proj_nodes.get('Image Texture') for i in range(0, len(props)): for j in range(i + 1, len(props)): if i == 0 and j == 1: continue subdir = '%s_%s' % (props[i], props[j]) set_prop_val(nodes, 0, 0) # Texture set_prop_val(nodes, 1, 8) # Albedo set_prop_val(nodes, 2, 0) # Specular set_prop_val(nodes, 3, 1) # Roughness for ind_1 in range(2, 9, 3): set_prop_val(nodes, i, ind_1) for ind_2 in range(2, 9, 3): set_prop_val(nodes, j, ind_2) subsubdir = '%02d%02d' % (ind_1, ind_2) outdir = '%s/%s/%s' % (odir, subdir, subsubdir) if not os.path.exists(outdir): os.makedirs(outdir)
# list of properties props = ['tex', 'alb', 'spec', 'rough', 'concav'] # index of effective properties ind_props = [1, 2, 3] # get material nodes nodes = bpy.data.materials['Material'].node_tree.nodes # set the object visible bpy.data.objects['Sphere'].hide_render = False bpy.data.objects['Point'].hide_render = True bpy.data.objects['Lamp'].hide_render = False bpy.data.objects['Plane'].hide_render = True proj_nodes = bpy.data.lamps['Lamp'].node_tree.nodes tex_node = proj_nodes.get('Image Texture') set_prop_val(nodes, 0, 2) # set texture to 0.2 for ind_1 in range(2, 3, 3): set_prop_val(nodes, ind_props[0], ind_1) for ind_2 in range(2, 9, 3): set_prop_val(nodes, ind_props[1], ind_2) for ind_3 in range(8, 9, 3): set_prop_val(nodes, ind_props[2], ind_3) subdir = '00%02d%02d%02d' % (ind_1, ind_2, ind_3 ) # change if ind_props changes outdir = '%s/%s' % (odir, subdir) if not os.path.exists(outdir): os.makedirs(outdir)
# number of images nimages = 41 # root directory of synthetic dataset rdir = 'C:/Users/Admin/Documents/3D_Recon/Data/synthetic_data' # output directory of rendered images odir = '%s/pairwise' % rdir # get material nodes nodes = bpy.data.materials['Material'].node_tree.nodes # set all objects invisible for iobj in range(0, len(obj_name)): bpy.data.objects[obj_name[iobj]].hide_render = True # set all lights visible for ilight in range(0, 8): bpy.data.objects['Point.%03d' % ilight].hide_render = False set_prop_val(nodes, 0, 10) # texture set_prop_val(nodes, 1, 10) # albedo set_prop_val(nodes, 2, 0); # specular set_prop_val(nodes, 3, 0); # roughness nodes_world = bpy.data.worlds['World'].node_tree.nodes links_world = bpy.data.worlds['World'].node_tree.links links_world.remove(links_world[1]) links_world.new(nodes_world.get("Light Path").outputs[0], nodes_world.get("Background").inputs[1]) for iobj in range(1, len(obj_name)): bpy.data.objects[obj_name[iobj]].hide_render = False outdir = '%s/%s/sc' % (odir, obj_name[iobj]) if not os.path.exists(outdir): os.makedirs(outdir)
rdir = 'C:/Users/Admin/Documents/3D_Recon/Data/synthetic_data' # input directory of the projection patterns idir = '%s/textures/sl' % rdir # output directory of rendered images odir = '%s/%s/sl' % (rdir, obj_name) # obtain the nodes nodes = bpy.data.materials['Material'].node_tree.nodes proj_nodes = bpy.data.lamps['Lamp'].node_tree.nodes tex_node = proj_nodes.get('Image Texture') # set the object visible bpy.data.objects['Sphere'].hide_render = False bpy.data.objects['Point'].hide_render = True bpy.data.objects['Lamp'].hide_render = False bpy.data.objects['Plane'].hide_render = True set_prop_val(nodes, 0, 0) # Texture set_prop_val(nodes, 1, 10) # Albedo set_prop_val(nodes, 2, 0) # Specular set_prop_val(nodes, 3, 0) # Roughness subdir = 'gt' outdir = '%s/%s' % (odir, subdir) if not os.path.exists(outdir): os.makedirs(outdir) for ind_img in range(0, nimg): proj_ptn = bpy.data.images.load("%s/sl_v%d.jpg" % (idir, ind_img)) tex_node.image = proj_ptn bpy.data.scenes['Scene'].render.filepath = '%s/%04d.jpg' % (outdir, ind_img) bpy.ops.render.render(write_still=True)
bpy.data.objects['king'].hide_render = True bpy.data.objects['knight'].hide_render = True # set up the lighting for ilight in range(0, 8): bpy.data.objects['Point.%03d' % ilight].hide_render = False # green screen nodes_world = bpy.data.worlds['World'].node_tree.nodes links_world = bpy.data.worlds['World'].node_tree.links links_world.remove(links_world[1]) links_world.new( nodes_world.get("Light Path").outputs[0], nodes_world.get("Background").inputs[1]) for iobj in range(0, len(obj_name)): set_prop_val(nodes, 0, 10) # texture set_prop_val(nodes, 1, 10) # albedo set_prop_val(nodes, 2, 0) # specular set_prop_val(nodes, 3, 0) # roughness # set obj visible bpy.data.objects[obj_name[iobj]].hide_render = False # output directory of rendered images odir = '%s/%s/sc' % (rdir, obj_name[iobj]) if not os.path.exists(odir): os.makedirs(odir) for ind_cam in range(0, nimages):
# number of images nimages = 41 # len(bpy.data.objects) - 3 # root directory of synthetic dataset rdir = 'C:/Users/Admin/Documents/3D_Recon/Data/synthetic_data' # output directory of rendered images odir = '%s/%s/train/mvs' % (rdir, obj_name) # list of properties props = ['tex', 'alb', 'spec', 'rough', 'concav'] # index of effective properties ind_props = [0, 1, 2] # get material nodes nodes = bpy.data.materials['Material'].node_tree.nodes # set the object visible bpy.data.objects['Sphere'].hide_render = False set_prop_val(nodes, 3, 1) # set roughness to 0.1, should set to 0.2? for ind_1 in range(2, 9, 3): set_prop_val(nodes, ind_props[0], ind_1) for ind_2 in range(2, 9, 3): set_prop_val(nodes, ind_props[1], ind_2) for ind_3 in range(2, 9, 3): set_prop_val(nodes, ind_props[2], ind_3) subdir = '%02d%02d%02d00' % (ind_1, ind_2, ind_3) # change if ind_props changes outdir = '%s/%s/visualize' % (odir, subdir) if not os.path.exists(outdir): os.makedirs(outdir) for ind_cam in range(0, nimages):
# list of properties # props = ['tex', 'alb', 'spec', 'rough', 'concav'] # index of effective properties ind_prop = [2, 8, 0, 8] # get material nodes nodes = bpy.data.materials['Material'].node_tree.nodes # set the object visible bpy.data.objects['Sphere'].hide_render = False bpy.data.objects['ball'].hide_render = True bpy.data.objects['cup'].hide_render = True bpy.data.objects['king'].hide_render = True bpy.data.objects['knight'].hide_render = True # hide all the light sources for ind_light in range(0, nimages): bpy.data.objects['Lamp.%03d' % ind_light].hide_render = True set_prop_val(nodes, 0, ind_prop[0]) # set texture set_prop_val(nodes, 1, ind_prop[1]) # set albedo set_prop_val(nodes, 2, ind_prop[2]) # set specular set_prop_val(nodes, 3, ind_prop[3]) # set roughness outdir = odir if not os.path.exists(outdir): os.makedirs(outdir) for ind_light in range(0, nimages): bpy.data.objects['Lamp.%03d' % ind_light].hide_render = False bpy.data.scenes['Scene'].render.filepath = '%s/%04d.jpg' % (outdir, ind_light) bpy.ops.render.render(write_still=True) bpy.data.objects['Lamp.%03d' % ind_light].hide_render = True