Пример #1
0
    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')
Пример #2
0
    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')
Пример #3
0
    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')
Пример #4
0
    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')
Пример #5
0
    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')