def RB_RENDER(self):#5 self.format_log('渲染','start') self.G_DEBUG_LOG.info('[BASE.RB_RENDER.start.....]') start_time = int(time.time()) ## multiframes if self.g_one_machine_multiframe is True: # self.monitor_complete_thread.start() render_list = CLASS_COMMON_UTIL.need_render_from_frame(self.G_CG_FRAMES) ## render_list => [10,11,12,........] self.render_record.update({render_list[0]: {'start_time': start_time, 'end_time': 0}}) ## {"10":{'start_time': int(), 'end_time': int()}, "11"} self.G_FEE_PARSER.set('render', 'start_time', str(start_time)) self.RenderCallBack() if not self._run_code_result: self.LogsCreat("Errors calls,try to kill apps...") self.LogsCreat('') self.LogsCreat("Eroor Information: %s"%self._erorr_code_info) self.LogsCreat("Eroor Called Code: %s"%self._erorr_code) self.LogsCreat('') self.LogsCreat('') else: self.LogsCreat("Job finished,try to kill apps...") if len(self._Killapps): mainapp = ["hython.exe"] self._Killapps.extend(mainapp) try: CLASS_COMMON_UTIL.kill_app_list(self._Killapps) except: pass self.LogsCreat("[kill apps done]") # if errors if not self._run_code_result: CLASS_COMMON_UTIL.error_exit_log(self.G_DEBUG_LOG,"RenderCallBack()",456) end_time = int(time.time()) self.G_DEBUG_LOG.info('Render time in G_FEE_PARSER: %s '%str(end_time-start_time)) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) self.G_DEBUG_LOG.info('[BASE.RB_RENDER.end.....]') self.format_log('done','end')
def RB_RENDER(self): #5 self.format_log('渲染', 'start') if int(self.G_CG_TILE_COUNT) != int(self.G_CG_TILE): self.G_DEBUG_LOG.info('[RenderMaya.RB_RENDER.start.....]') # if self.PRE_DICT == None: # render_cmd = self.MAYA_FINAL_RENDER_CMD # elif self.PRE_DICT['RENDER_CMD']: # render_cmd = self.PRE_DICT['RENDER_CMD'] # print ("The custom render cmd: ") # print (render_cmd) # else: # render_cmd = self.MAYA_FINAL_RENDER_CMD # ------------get render cmd---------- render_cmd = self.MAYA_FINAL_RENDER_CMD sys.stdout.flush() self.G_DEBUG_LOG.info(render_cmd) start_time = int(time.time()) if self.g_one_machine_multiframe is True: render_list = CLASS_COMMON_UTIL.need_render_from_frame( self.G_CG_FRAMES) self.render_record.update({ render_list[0]: { 'start_time': start_time, 'end_time': 0 } }) pass self.G_FEE_PARSER.set('render', 'start_time', str(start_time)) self.G_DEBUG_LOG.info( "\n\n-------------------------------------------Start maya program-------------------------------------\n\n" ) result_code, _ = CLASS_COMMON_UTIL.cmd( render_cmd, my_log=self.G_RENDER_LOG, continue_on_error=True, my_shell=True, callback_func=self.maya_cmd_callback) self.cg_return_code = result_code end_time = int(time.time()) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) # if self.g_one_machine_multiframe is True: # CLASS_MAYA_UTIL.clean_dir(self.G_WORK_RENDER_TASK_OUTPUT, my_log=self.G_DEBUG_LOG) CLASS_MAYA_UTIL.kill_lic_all(my_log=self.G_DEBUG_LOG) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) self.G_DEBUG_LOG.info('[RenderMaya.RB_RENDER.end.....]') else: self.G_DEBUG_LOG.info('[RenderNuke.RB_RENDER.start.....]') self.G_FEE_PARSER.set('render', 'start_time', str(int(time.time()))) options = {} options["func_path"] = self.G_NODE_MAYAFUNCTION options["tiles"] = int(self.G_CG_TILE_COUNT) options["tile_index"] = int(self.G_CG_TILE) options["width"] = int(self.G_TASK_JSON_DICT['scene_info_render'][ self.G_CG_LAYER_NAME]['common']['width']) options["height"] = int(self.G_TASK_JSON_DICT['scene_info_render'][ self.G_CG_LAYER_NAME]['common']['height']) options["output"] = self.G_WORK_RENDER_TASK_OUTPUT options["g_tiles_path"] = self.G_TILES_PATH options["g_task_id"] = self.G_TASK_ID options["g_cg_start_frame"] = self.G_CG_START_FRAME print(options) nuke_merge = NukeMerge(options) nuke_merge.render(self.G_DEBUG_LOG) CLASS_MAYA_UTIL.kill_lic_all(my_log=self.G_DEBUG_LOG) self.G_FEE_PARSER.set('render', 'end_time', str(int(time.time()))) self.G_DEBUG_LOG.info('[RenderNuke.RB_RENDER.end.....]') self.format_log('done', 'end')
def RB_RENDER(self): self.format_log('render','start') self.format_log('开始渲染','start') #start... self.G_RENDER_LOG.info('[c4d.RBrender.start.....]') #print ('--------------------remove_pyp_script----------------------------') self.G_DEBUG_LOG.info('[c4d.remove pyp.start.....]') cgv = self.G_CG_VERSION # "CINEMA 4D R19" C4dLoader.remove_pyp_script(cgv) self.G_DEBUG_LOG.info('[c4d.remove pyp.end.....]') print ('----------------------cg_file_info------------------------------') map_dict = self.G_TASK_JSON_DICT['mnt_map'] # use "/" map_dict_reverse = dict(zip(map_dict.values(), map_dict.keys())) print('map_dict_reverse: %s' % map_dict_reverse) # G_INPUT_CG_FILE: os.path.normpath(r'//10.60.100.104/stg_data/input/d/inputdata5/10000000/10000085/c4d/R17_test_ch.c4d') # G_INPUT_USER_PATH: os.path.normpath(r'//10.60.100.104/stg_data/input/d/inputdata5/10000000/10000085') input_cg_file_second_half = self.G_INPUT_CG_FILE[len(self.G_INPUT_USER_PATH):] # \E\test\C4DR17_Vray19_test\Vray_C4DR17_vray19.c4d print('input_cg_file_second_half: ' + input_cg_file_second_half) index = input_cg_file_second_half.find(os.sep, 1) # index begin position:1 input_cg_file_second_half_front = input_cg_file_second_half[:index] # \E input_cg_file_second_half_behind = input_cg_file_second_half[index:] # \test\C4DR17_Vray19_test\Vray_C4DR17_vray19.c4d print('input_cg_file_second_half_behind: ' + input_cg_file_second_half_behind) key = self.G_INPUT_USER_PATH + input_cg_file_second_half_front # \\10.60.100.104\stg_data\input\d\inputdata5\10000000\10000085\E driver = map_dict_reverse.get(key.replace('\\', '/')) # E: print('driver: %s' % driver) get_cg_file = driver + input_cg_file_second_half_behind # local cg file path print(get_cg_file + '[.@KANADA999999999999]') print ('-------------------------cg_version---------------------------------') if 'cg_name' in self.G_CG_CONFIG_DICT: cg_name = self.G_CG_CONFIG_DICT['cg_name'] if 'cg_version' in self.G_CG_CONFIG_DICT: cg_ver = self.G_CG_CONFIG_DICT['cg_version'] my_cg_ver = cg_name + ' ' + cg_ver print (my_cg_ver) # if my_cg_ver.endswith('.64') : # my_cg_ver=my_cg_ver.replace('.64','') # if my_cg_ver.endswith('.32') : # my_cg_ver=my_cg_ver.replace('.32','') print ('-----------------------scene_info_render-------------------------------') if 'scene_info_render' not in self.G_TASK_JSON_DICT: self.G_DEBUG_LOG.info("[ERROR]scene_info_render undefined...") return scene_info_render_common_dict = self.G_TASK_JSON_DICT['scene_info_render']['common'] cmd_render_width = scene_info_render_common_dict['width'] cmd_render_height = scene_info_render_common_dict['height'] cmd_regular_image_format = scene_info_render_common_dict['regular_image_format'] cmd_multipass_format = scene_info_render_common_dict['multi_pass_format'] cmd_multipass_path = scene_info_render_common_dict['multipass_saveimage_path'] cmd_multipass_enabled= scene_info_render_common_dict['multipass_save_enabled'] cmd_regular_image_saveimage_path= scene_info_render_common_dict['regular_image_saveimage_path'] print ('----------------------output_filename------------------------------') if cmd_regular_image_saveimage_path is None: cg_file_name = os.path.basename(self.G_INPUT_CG_FILE) get_filename = os.path.splitext(cg_file_name) cmd_regular_image_saveimage_path = get_filename[0] print((cmd_regular_image_saveimage_path + '[.@KANADA5555555555]')) self.G_JOB_NAME=self.G_JOB_NAME.encode(sys.getfilesystemencoding()) print ('--------------------------render_info----------------------------------') start_time = int(time.time()) self.G_FEE_PARSER.set('render', 'start_time', str(start_time)) if self.g_one_machine_multiframe == None or self.g_one_machine_multiframe == False: #C:\work\render\65368\output\0001.jpg output_file = self.G_WORK_RENDER_TASK_OUTPUT.replace("/", "\\") + "\\" + cmd_regular_image_saveimage_path + '.' + str(cmd_regular_image_format) print(output_file + '4444444444') output_renderlog_file = os.path.join(self.G_LOG_WORK +'/' + self.G_TASK_ID + '\\Render_' + self.G_JOB_ID + '_render.log').replace('/', '\\') print (output_renderlog_file) # cmd c4d_exe = os.path.join(r'"C:\Program Files\MAXON', my_cg_ver, 'CINEMA 4D 64 Bit.exe"') + ' -noopengl -nogui' user_id = ' ' + str(self.G_USER_ID) task_id = ' ' + str(self.G_TASK_ID) + ' ' render_frames = ' -frame ' + self.G_CG_START_FRAME + ' ' + self.G_CG_END_FRAME + ' '+ self.G_CG_BY_FRAME + ' ' render_option = '' if cmd_multipass_enabled == "0" or cmd_multipass_path == None or cmd_multipass_path == "": render_option = render_frames + ' -render "' + get_cg_file.replace("/", "\\") + '" -oresolution "' + str(cmd_render_width) \ + '" "' + str(cmd_render_height) +'" -oformat "' + str(cmd_regular_image_format) + '" -oimage "' + output_file + '"' print('render_option1: %s'%render_option) else: render_option = render_frames + ' -render "' + get_cg_file.replace("/", "\\") + '" -oresolution "' + str(cmd_render_width) \ + '" "' + str(cmd_render_height) +'" -oformat "' + str(cmd_regular_image_format) + '" -oimage "' + output_file + '" -omultipass "' + output_file + '" ' print('render_option2: %s'%render_option) render_cmd = c4d_exe + user_id + task_id + render_option #print("Cmds: %s" % render_cmd) self.G_RENDER_LOG.info("Cmds: %s" % render_cmd) self.G_DEBUG_LOG.info('[.@KANADA]') # 渲染开始时间 render_start_time = int(time.time()) if self.G_RENDER_OS=='Linux': self.RBcmd(render_cmd, True, 1, myLog=True) else: print ('\n\n---------------------------------------Start c4d program---------------------------------\n\n') CLASS_COMMON_UTIL.cmd(render_cmd,my_log=self.G_RENDER_LOG,continue_on_error=True,my_shell=True,callback_func=self.c4d_cmd_callback) # 渲染结束时间 render_end_time = int(time.time()) self.render_record[render_frames] = {'start_time': render_start_time,'end_time': render_end_time} elif self.g_one_machine_multiframe == True: render_frame_list = CLASS_COMMON_UTIL.need_render_from_frame(self.G_CG_FRAMES) for frame in render_frame_list: print("current rendering frame: %s" % frame) #C:\work\render\65368\output\0001\0001.jpg output_file = self.G_WORK_RENDER_TASK_OUTPUT.replace("/", "\\") + "\\" + frame.zfill(4) +"\\" + cmd_regular_image_saveimage_path + '.' + str(cmd_regular_image_format) print(output_file + '4444444444') # cmd c4d_exe = os.path.join(r'"C:\Program Files\MAXON', my_cg_ver, 'CINEMA 4D 64 Bit.exe"') + ' -noopengl -nogui' user_id = ' ' + str(self.G_USER_ID) task_id = ' ' + str(self.G_TASK_ID) + ' ' render_frames = ' -frame ' + frame + ' ' + frame + ' 1 ' render_option = '' if cmd_multipass_enabled == "0" and cmd_multipass_path == None: render_option = render_frames + ' -render "' + get_cg_file.replace("/", "\\") + '" -oresolution "' + str(cmd_render_width) \ + '" "' + str(cmd_render_height) +'" -oformat "' + str(cmd_regular_image_format) + '" -oimage "' + output_file + '"' print('render_option1: %s'%render_option) else: render_option = render_frames + ' -render "' + get_cg_file.replace("/", "\\") + '" -oresolution "' + str(cmd_render_width) \ + '" "' + str(cmd_render_height) +'" -oformat "' + str(cmd_regular_image_format) + '" -oimage "' + output_file + '" -omultipass "' + output_file + '" ' print('render_option2: %s'%render_option) render_cmd = c4d_exe + user_id + task_id + render_option #print("Cmds: %s" % render_cmd) self.G_RENDER_LOG.info("Cmds: %s" % render_cmd) self.G_DEBUG_LOG.info('[.@KANADA]') # 渲染开始时间 render_start_time = int(time.time()) if self.G_RENDER_OS == 'Linux': self.RBcmd(render_cmd, True, 1, myLog=True) else: print ('\n\n---------------------------------------Start c4d program---------------------------------\n\n') CLASS_COMMON_UTIL.cmd(render_cmd,my_log=self.G_DEBUG_LOG,continue_on_error=True,my_shell=True,callback_func=self.c4d_cmd_callback) CLASS_COMMON_UTIL.log_print(self.G_DEBUG_LOG, ("current rendering frame: ", frame)) # 渲染结束时间 render_end_time = int(time.time()) self.render_record[frame] = {'start_time': render_start_time,'end_time': render_end_time} self.multiframe_complete_list.append(frame) #self.G_RENDER_LOG.info('[一机多帧暂时不支持...]') #self.G_DEBUG_LOG.info('[一机多帧暂时不支持...]') end_time = int(time.time()) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) self.G_RENDER_LOG.info('[C4D.RBrender.end.....]') #end... os.system(r'wmic process where name="rlm.exe" delete') os.system(r'wmic process where name="rlm_c4dtoa.exe" delete') self.format_log('done','end') self.format_log('结束渲染','end')
def RB_RENDER(self): #5 self.format_log('渲染', 'start') if int(self.G_CG_TILE_COUNT) != int(self.G_CG_TILE): self.G_DEBUG_LOG.info('[RenderMaya.RB_RENDER.start.....]') # if self.PRE_DICT == None: # render_cmd = self.MAYA_FINAL_RENDER_CMD # elif self.PRE_DICT['RENDER_CMD']: # render_cmd = self.PRE_DICT['RENDER_CMD'] # print ("The custom render cmd: ") # print (render_cmd) # else: # render_cmd = self.MAYA_FINAL_RENDER_CMD # 是否一机多帧 if self.g_one_machine_multiframe is True: if int(self.G_RECOMMIT_FLAG) > 0: cmd = r'c:\fcopy\FastCopy.exe /cmd=force_copy /speed=full /force_close /no_confirm_stop /force_start "{}" /to="{}"'.format( os.path.join(self.G_REMOTE_TASK_CFG, self.render_record_json), self.G_WORK_RENDER_TASK_MULTIFRAME, ) CLASS_COMMON_UTIL.cmd(cmd, my_log=self.G_DEBUG_LOG) # 监控线程 frames = self.remain_frames() render_list = CLASS_COMMON_UTIL.need_render_from_frame(frames) t = threading.Thread(target=self.loop_handle_complete, args=(render_list, )) t.start() self.monitor_complete_thread = t # ------------get render cmd---------- render_cmd = self.MAYA_FINAL_RENDER_CMD sys.stdout.flush() self.G_DEBUG_LOG.info(render_cmd) start_time = int(time.time()) if self.g_one_machine_multiframe is True: self.render_record.update( {frames[0]: { 'start_time': start_time, 'end_time': 0 }}) pass self.G_FEE_PARSER.set('render', 'start_time', str(start_time)) self.G_DEBUG_LOG.info( "\n\n-------------------------------------------Start maya program-------------------------------------\n\n" ) result_code, _ = CLASS_COMMON_UTIL.cmd( render_cmd, my_log=self.G_DEBUG_LOG, continue_on_error=True, my_shell=True, callback_func=self.maya_cmd_callback) self.cg_return_code = result_code end_time = int(time.time()) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) CLASS_MAYA_UTIL.kill_lic_all(my_log=self.G_DEBUG_LOG) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) self.G_DEBUG_LOG.info('[RenderMaya.RB_RENDER.end.....]') else: self.G_DEBUG_LOG.info('[RenderNuke.RB_RENDER.start.....]') self.G_FEE_PARSER.set('render', 'start_time', str(int(time.time()))) options = {} options["func_path"] = self.G_NODE_MAYAFUNCTION options["tiles"] = int(self.G_CG_TILE_COUNT) options["tile_index"] = int(self.G_CG_TILE) options["width"] = int(self.G_TASK_JSON_DICT['scene_info_render'][ self.G_CG_LAYER_NAME]['common']['width']) options["height"] = int(self.G_TASK_JSON_DICT['scene_info_render'][ self.G_CG_LAYER_NAME]['common']['height']) options["output"] = self.G_WORK_RENDER_TASK_OUTPUT options["g_tiles_path"] = self.G_TILES_PATH options["g_task_id"] = self.G_TASK_ID options["g_cg_start_frame"] = self.G_CG_START_FRAME print(options) nuke_merge = NukeMerge(options) nuke_merge.render(self.G_DEBUG_LOG) CLASS_MAYA_UTIL.kill_lic_all(my_log=self.G_DEBUG_LOG) self.G_FEE_PARSER.set('render', 'end_time', str(int(time.time()))) self.G_DEBUG_LOG.info('[RenderNuke.RB_RENDER.end.....]') self.format_log('done', 'end')
def RB_RENDER(self): # 5 self.format_log('渲染', 'start') if int(self.G_CG_TILE_COUNT) != int(self.G_CG_TILE): self.G_DEBUG_LOG.info('[RenderMaya.RB_RENDER.start.....]') # ------------get render cmd---------- # #------------get render cmd---------- self.MAYA_FINAL_RENDER_CMD = self.get_render_cmd() render_cmd = self.MAYA_FINAL_RENDER_CMD sys.stdout.flush() self.G_DEBUG_LOG.info('render cmd info:') self.G_DEBUG_LOG.info(render_cmd) self.start_monitor() # 开启监控线程 start_time = int(time.time()) if self.g_one_machine_multiframe is True: render_list = CLASS_COMMON_UTIL.need_render_from_frame( self.G_CG_FRAMES) self.render_record.update({ render_list[0]: { 'start_time': start_time, 'end_time': 0 } }) pass self.G_FEE_PARSER.set('render', 'start_time', str(start_time)) self.G_DEBUG_LOG.info( "\n\n-------------------------------------------Start maya program-------------------------------------\n\n" ) result_code, _ = CLASS_MAYA_UTIL.maya_cmd( render_cmd, my_log=self.G_RENDER_LOG, continue_on_error=False, my_shell=True, callback_func=self.maya_cmd_callback) self.cg_return_code = result_code end_time = int(time.time()) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) CLASS_MAYA_UTIL.kill_lic_all(my_log=self.G_DEBUG_LOG) self.G_FEE_PARSER.set('render', 'end_time', str(end_time)) self.G_DEBUG_LOG.info('[RenderMaya.RB_RENDER.end.....]') else: self.G_DEBUG_LOG.info('[RenderNuke.RB_RENDER.start.....]') self.G_FEE_PARSER.set('render', 'start_time', str(int(time.time()))) options = {} options["func_path"] = self.G_NODE_MAYAFUNCTION options["tiles"] = int(self.G_CG_TILE_COUNT) options["tile_index"] = int(self.G_CG_TILE) options["width"] = int(self.G_TASK_JSON_DICT['scene_info_render'][ self.G_CG_LAYER_NAME]['common']['width']) options["height"] = int(self.G_TASK_JSON_DICT['scene_info_render'][ self.G_CG_LAYER_NAME]['common']['height']) options["output"] = self.G_WORK_RENDER_TASK_OUTPUT options["g_tiles_path"] = self.G_TILES_PATH options["g_task_id"] = self.G_TASK_ID options["g_cg_start_frame"] = self.G_CG_START_FRAME self.G_DEBUG_LOG.info(options) nuke_merge = NukeMerge(options) nuke_merge.render(self.G_DEBUG_LOG) CLASS_MAYA_UTIL.kill_lic_all(my_log=self.G_DEBUG_LOG) self.G_FEE_PARSER.set('render', 'end_time', str(int(time.time()))) self.G_DEBUG_LOG.info('[RenderNuke.RB_RENDER.end.....]') # 日志过滤调用errorbase类 monitor_ini_dict = {} monitor_ini_dict["G_INPUT_CG_FILE"] = self.G_INPUT_CG_FILE monitor_ini_dict["CG_NAME"] = self.CG_NAME monitor_ini_dict["CG_VERSION"] = self.CG_VERSION monitor_ini_dict["CG_PLUGINS_DICT"] = self.CG_PLUGINS_DICT monitor_ini_dict["G_INPUT_USER_PATH"] = self.G_INPUT_USER_PATH monitor_ini_dict["G_OUTPUT_USER_PATH"] = self.G_OUTPUT_USER_PATH monitor_ini_dict["G_NODE_NAME"] = self.G_NODE_NAME monitor_ini_dict["G_NODE_ID"] = self.G_NODE_ID monitor_ini_dict[ "G_WORK_RENDER_TASK_OUTPUT"] = self.G_WORK_RENDER_TASK_OUTPUT monitor_ini_dict["G_DEBUG_LOG"] = self.G_DEBUG_LOG monitor_log = ErrorBase(monitor_ini_dict) monitor_log.run() self.stop_monitor() # stop monitor 结束监控线程 self.format_log('done', 'end')