def render(self, scene): self.preview = (scene.name == "preview") self.update_stats("", "Setting up render") if not self.preview: scene.frame_set(scene.frame_current) self.scene = scene r = scene.render [sizeX, sizeY, bStartX, bStartY, bsizeX, bsizeY, camDummy] = yaf_scene.getRenderCoords(scene) if r.use_border: x = bsizeX y = bsizeY else: x = sizeX y = sizeY self.setInterface(yafrayinterface.yafrayInterface_t()) if scene.gs_type_render == "file": outputFile, output, file_type = self.decideOutputFileName( r.filepath, r.file_format) self.yi.paramsClearAll() self.yi.paramsSetString("type", file_type) self.yi.paramsSetBool("alpha_channel", r.color_mode == "RGBA") self.yi.paramsSetBool("z_channel", scene.gs_z_channel) self.yi.paramsSetInt("width", x + bStartX) self.yi.paramsSetInt("height", y + bStartY) ih = self.yi.createImageHandler("outFile") co = yafrayinterface.imageOutput_t(ih, str(outputFile), 0, 0) self.yi.startScene() self.exportScene() self.yaf_integrator.exportIntegrator(self.scene) self.yaf_integrator.exportVolumeIntegrator(self.scene) yaf_scene.exportRenderSettings( self.yi, self.scene ) # must be called last as the params from here will be used by render() if scene.gs_type_render == "file": self.yi.printInfo("Exporter: Rendering to file " + outputFile) self.update_stats("", "Rendering to %s" % outputFile) self.yi.render(co) result = self.begin_result(bStartX, bStartY, x + bStartX, y + bStartY) lay = result.layers[0] if scene.gs_z_channel: lay.load_from_file(output + '_zbuffer.' + file_type) else: lay.load_from_file(outputFile) self.end_result(result) elif scene.gs_type_render == "into_blender": import threading def progressCallback(command, *args): if not self.test_break(): if command == "tag": self.tag = args[0] elif command == "progress": self.prog = args[0] self.update_stats("", "%s - %.2f %%" % (self.tag, self.prog)) def drawAreaCallback(*args): x, y, w, h, tile = args res = self.begin_result(x, y, w, h) try: res.layers[0].rect = tile except: pass self.update_result(res) def flushCallback(*args): w, h, tile = args res = self.begin_result(0, 0, w, h) try: res.layers[0].rect = tile except BaseException as e: pass self.end_result(res) t = threading.Thread(target=self.yi.render, args=(sizeX, sizeY, 0, 0, self.preview, drawAreaCallback, flushCallback, progressCallback)) t.start() while t.isAlive() and not self.test_break(): time.sleep(0.2) if t.isAlive(): self.update_stats("", "Aborting...") self.yi.abort() t.join() self.yi.clearAll() del self.yi self.update_stats("", "Render is aborted") return self.update_stats("", "Done!") self.yi.clearAll() del self.yi
def render(self, scene): self.preview = (scene.name == "preview") self.bl_use_postprocess = False self.update_stats("", "Setting up render") if not self.preview: scene.frame_set(scene.frame_current) self.scene = scene r = scene.render [sizeX, sizeY, bStartX, bStartY, bsizeX, bsizeY, camDummy] = yaf_scene.getRenderCoords(scene) if r.use_border: x = bsizeX y = bsizeY else: x = sizeX y = sizeY self.setInterface(yafrayinterface.yafrayInterface_t()) self.yi.setInputGamma(scene.gs_gamma_input, True) rfilepath = bpy.path.abspath(r.filepath) rfilepath = os.path.realpath(rfilepath) rfilepath = os.path.normpath(rfilepath) if bpy.types.YAFA_RENDER.render_Animation: absolute_outpath = os.path.abspath(os.path.join(rfilepath, 'yaf_ani')) # output folder for animation imagefiles saving from yafaray else: absolute_outpath = os.path.abspath(os.path.join(rfilepath, 'yaf_tmp')) # output folder for tmp imagefile saving from yafaray if scene.gs_type_render == "file": outputFile, output, file_type = self.decideOutputFileName(absolute_outpath, scene.img_output) self.yi.paramsClearAll() self.yi.paramsSetString("type", file_type) self.yi.paramsSetBool("alpha_channel", r.color_mode == "RGBA") self.yi.paramsSetBool("z_channel", scene.gs_z_channel) self.yi.paramsSetInt("width", x + bStartX) self.yi.paramsSetInt("height", y + bStartY) ih = self.yi.createImageHandler("outFile") co = yafrayinterface.imageOutput_t(ih, str(outputFile), 0, 0) if scene.gs_type_render == "xml": # Export the Scene to XML File absolute_outpath = os.path.abspath(os.path.join(rfilepath, 'yaf_xml')) # output folder for xml file saving from yafaray outputFile, output, file_type = self.decideOutputFileName(absolute_outpath, 'XML') self.setInterface(yafrayinterface.xmlInterface_t()) co = yafrayinterface.imageOutput_t() self.yi.setOutfile(outputFile) self.yi.startScene() self.exportScene() self.yaf_integrator.exportIntegrator(self.scene) self.yaf_integrator.exportVolumeIntegrator(self.scene) yaf_scene.exportRenderSettings(self.yi, self.scene) # must be called last as the params from here will be used by render() if scene.gs_type_render == "file": self.yi.printInfo("Exporter: Rendering to file " + outputFile) self.update_stats("", "Rendering to %s" % outputFile) self.yi.render(co) result = self.begin_result(bStartX, bStartY, x + bStartX, y + bStartY) lay = result.layers[0] if scene.gs_z_channel and not scene.img_output == 'OPEN_EXR': # exr format has z-buffer included, so no need to load '_zbuffer' - file lay.load_from_file(output + '_zbuffer.' + file_type) else: lay.load_from_file(outputFile) self.end_result(result) if scene.gs_type_render == "xml": # Export the Scene to XML File self.yi.printInfo("Exporter: Writing XML to file " + outputFile) self.yi.render(co) elif scene.gs_type_render == "into_blender": import threading def progressCallback(command, *args): if not self.test_break(): if command == "tag": self.tag = args[0] elif command == "progress": self.prog = args[0] self.update_stats("YafaRay Rendering... ", "%s - %.2f %%" % (self.tag, self.prog)) def drawAreaCallback(*args): x, y, w, h, tile = args res = self.begin_result(x, y, w, h) try: res.layers[0].rect = tile #res.layers[0].passes[0].rect = tile except: pass self.end_result(res) def flushCallback(*args): w, h, tile = args res = self.begin_result(0, 0, w, h) try: res.layers[0].rect = tile #res.layers[0].passes[0].rect = tile except BaseException as e: pass self.end_result(res) t = threading.Thread(target = self.yi.render, args = (sizeX, sizeY, 0, 0, self.preview, drawAreaCallback, flushCallback, progressCallback) ) t.start() while t.isAlive() and not self.test_break(): time.sleep(0.2) if t.isAlive(): self.update_stats("", "Aborting...") self.yi.abort() t.join() self.yi.clearAll() del self.yi self.update_stats("", "Render is aborted") self.bl_use_postprocess = True return self.update_stats("", "Done!") self.yi.clearAll() del self.yi self.bl_use_postprocess = True
def render(self, scene): self.preview = (scene.name == "preview") self.bl_use_postprocess = False self.update_stats("", "Setting up render") if not self.preview: scene.frame_set(scene.frame_current) self.scene = scene r = scene.render [sizeX, sizeY, bStartX, bStartY, bsizeX, bsizeY, camDummy] = yaf_scene.getRenderCoords(scene) if r.use_border: x = bsizeX y = bsizeY else: x = sizeX y = sizeY self.setInterface(yafrayinterface.yafrayInterface_t()) self.yi.setInputGamma(scene.gs_gamma_input, True) rfilepath = bpy.path.abspath(r.filepath) rfilepath = os.path.realpath(rfilepath) rfilepath = os.path.normpath(rfilepath) if bpy.types.YAFA_RENDER.render_Animation: absolute_outpath = os.path.abspath( os.path.join(rfilepath, 'yaf_ani') ) # output folder for animation imagefiles saving from yafaray else: absolute_outpath = os.path.abspath( os.path.join(rfilepath, 'yaf_tmp') ) # output folder for tmp imagefile saving from yafaray if scene.gs_type_render == "file": outputFile, output, file_type = self.decideOutputFileName( absolute_outpath, scene.img_output) self.yi.paramsClearAll() self.yi.paramsSetString("type", file_type) self.yi.paramsSetBool("alpha_channel", r.color_mode == "RGBA") self.yi.paramsSetBool("z_channel", scene.gs_z_channel) self.yi.paramsSetInt("width", x + bStartX) self.yi.paramsSetInt("height", y + bStartY) ih = self.yi.createImageHandler("outFile") co = yafrayinterface.imageOutput_t(ih, str(outputFile), 0, 0) if scene.gs_type_render == "xml": # Export the Scene to XML File absolute_outpath = os.path.abspath( os.path.join(rfilepath, 'yaf_xml') ) # output folder for xml file saving from yafaray outputFile, output, file_type = self.decideOutputFileName( absolute_outpath, 'XML') self.setInterface(yafrayinterface.xmlInterface_t()) co = yafrayinterface.imageOutput_t() self.yi.setOutfile(outputFile) self.yi.startScene() self.exportScene() self.yaf_integrator.exportIntegrator(self.scene) self.yaf_integrator.exportVolumeIntegrator(self.scene) yaf_scene.exportRenderSettings( self.yi, self.scene ) # must be called last as the params from here will be used by render() if scene.gs_type_render == "file": self.yi.printInfo("Exporter: Rendering to file " + outputFile) self.update_stats("", "Rendering to %s" % outputFile) self.yi.render(co) result = self.begin_result(bStartX, bStartY, x + bStartX, y + bStartY) lay = result.layers[0] if scene.gs_z_channel and not scene.img_output == 'OPEN_EXR': # exr format has z-buffer included, so no need to load '_zbuffer' - file lay.load_from_file(output + '_zbuffer.' + file_type) else: lay.load_from_file(outputFile) self.end_result(result) if scene.gs_type_render == "xml": # Export the Scene to XML File self.yi.printInfo("Exporter: Writing XML to file " + outputFile) self.yi.render(co) elif scene.gs_type_render == "into_blender": import threading def progressCallback(command, *args): if not self.test_break(): if command == "tag": self.tag = args[0] elif command == "progress": self.prog = args[0] self.update_stats("YafaRay Rendering... ", "%s - %.2f %%" % (self.tag, self.prog)) def drawAreaCallback(*args): x, y, w, h, tile = args res = self.begin_result(x, y, w, h) try: res.layers[0].rect = tile #res.layers[0].passes[0].rect = tile except: pass self.end_result(res) def flushCallback(*args): w, h, tile = args res = self.begin_result(0, 0, w, h) try: res.layers[0].rect = tile #res.layers[0].passes[0].rect = tile except BaseException as e: pass self.end_result(res) t = threading.Thread(target=self.yi.render, args=(sizeX, sizeY, 0, 0, self.preview, drawAreaCallback, flushCallback, progressCallback)) t.start() while t.isAlive() and not self.test_break(): time.sleep(0.2) if t.isAlive(): self.update_stats("", "Aborting...") self.yi.abort() t.join() self.yi.clearAll() del self.yi self.update_stats("", "Render is aborted") self.bl_use_postprocess = True return self.update_stats("", "Done!") self.yi.clearAll() del self.yi self.bl_use_postprocess = True
def render(self, scene): self.preview = (scene.name == "preview") self.update_stats("", "Setting up render") if not self.preview: scene.frame_set(scene.frame_current) self.scene = scene r = scene.render [sizeX, sizeY, bStartX, bStartY, bsizeX, bsizeY, camDummy] = yaf_scene.getRenderCoords(scene) if r.use_border: x = bsizeX y = bsizeY else: x = sizeX y = sizeY self.setInterface(yafrayinterface.yafrayInterface_t()) if scene.gs_type_render == "file": outputFile, output, file_type = self.decideOutputFileName(r.filepath, r.file_format) self.yi.paramsClearAll() self.yi.paramsSetString("type", file_type) self.yi.paramsSetBool("alpha_channel", r.color_mode == "RGBA") self.yi.paramsSetBool("z_channel", scene.gs_z_channel) self.yi.paramsSetInt("width", x + bStartX) self.yi.paramsSetInt("height", y + bStartY) ih = self.yi.createImageHandler("outFile") co = yafrayinterface.imageOutput_t(ih, str(outputFile), 0, 0) self.yi.startScene() self.exportScene() self.yaf_integrator.exportIntegrator(self.scene) self.yaf_integrator.exportVolumeIntegrator(self.scene) yaf_scene.exportRenderSettings(self.yi, self.scene) # must be called last as the params from here will be used by render() if scene.gs_type_render == "file": self.yi.printInfo("Exporter: Rendering to file " + outputFile) self.update_stats("", "Rendering to %s" % outputFile) self.yi.render(co) result = self.begin_result(bStartX, bStartY, x + bStartX, y + bStartY) lay = result.layers[0] if scene.gs_z_channel: lay.load_from_file(output + '_zbuffer.' + file_type) else: lay.load_from_file(outputFile) self.end_result(result) elif scene.gs_type_render == "into_blender": import threading def progressCallback(command, *args): if not self.test_break(): if command == "tag": self.tag = args[0] elif command == "progress": self.prog = args[0] self.update_stats("", "%s - %.2f %%" % (self.tag, self.prog)) def drawAreaCallback(*args): x, y, w, h, tile = args res = self.begin_result(x, y, w, h) try: res.layers[0].rect = tile except: pass self.update_result(res) def flushCallback(*args): w, h, tile = args res = self.begin_result(0, 0, w, h) try: res.layers[0].rect = tile except BaseException as e: pass self.end_result(res) t = threading.Thread( target=self.yi.render, args=( sizeX, sizeY, 0, 0, self.preview, drawAreaCallback, flushCallback, progressCallback ) ) t.start() while t.isAlive() and not self.test_break(): time.sleep(0.2) if t.isAlive(): self.update_stats("", "Aborting...") self.yi.abort() t.join() self.yi.clearAll() del self.yi self.update_stats("", "Render is aborted") return self.update_stats("", "Done!") self.yi.clearAll() del self.yi