macroScript Toplurender ButtonText:"Toplu Render" ToolTip:"Toplu Render" Category:"_MMO" -- Gelistirici : Mahmut Murat OYMACI --Tarih : 30/11/2020 -- Bu script; Gerekli parametreler ayarlandiginda toplu render islemi baslatir. -- Scriptin basarili bir sekilde calisabilmesi icin secilecek olan max dosyalari, iclerinde kamera objesi barindirmalidir. ( global maxfiles = #() global outputdirpath = undefined struct struct1 (cameraname, rendertype, frames, filedir, outputdir, resolution, vrayseperate, vrayalpha1, makecamerafolder) global s1 = struct1 #() #() #() #() #() #() #() #() #() global stopall = false fn toplurender cameraname rendertype frames filedir outputdir resolution vrayseperate vrayalpha1 makecamerafolder loop = ( loadmaxfile filedir[loop] if makecamerafolder[loop] == true do makedir (getFilenamePath outputdir[loop]) if vrayseperate[loop] == true do ( rc = (classof renderers.current) as string rc1 = matchpattern rc pattern:("*"+"V_Ray"+"*") rc2 = matchpattern rc pattern:("*"+"V_Ray_RT"+"*") if rc1 == true then ( renderers.current.output_splitgbuffer = vrayseperate[loop] renderers.current.output_splitalpha= vrayalpha1[loop] renderers.current.output_splitrgb= false renderers.current.output_splitfileName = outputdir[loop] bitmap1 = bitmap resolution[loop].x resolution[loop].y filename:outputdir[loop] save bitmap1 renderers.current.output_splitbitmap = bitmap1 ) else if rc2 == true do ( renderers.current.V_Ray_settings.output_splitgbuffer = vrayseperate[loop] renderers.current.V_Ray_settings.output_splitalpha= vrayalpha1[loop] renderers.current.V_Ray_settings.output_splitrgb= false renderers.current.V_Ray_settings.output_splitfileName = outputdir[loop] bitmap1 = bitmap resolution[loop].x resolution[loop].y filename:outputdir[loop] save bitmap1 renderers.current.V_Ray_settings.output_splitbitmap = bitmap1 ) ) if rendertype[loop] == 1 then ( if classof renderers.current == Default_Scanline_Renderer then render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize:resolution[loop] outputfile:outputdir[loop] quiet:true else render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize:resolution[loop] outputfile:outputdir[loop] quiet:true vfb:false ) else if rendertype[loop] == 2 then ( if classof renderers.current == Default_Scanline_Renderer then render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize: resolution[loop] outputfile: outputdir[loop] framerange:#active quiet:true else render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize: resolution[loop] outputfile: outputdir[loop] framerange:#active quiet:true vfb:false ) else if rendertype[loop] == 3 do for loop2 = 1 to frames[loop].count do ( if frames[loop][loop2].count != 0 then ( frames2 = filterstring frames[loop][loop2] "-" if classof renderers.current == Default_Scanline_Renderer then ( if frames2.count == 1 then render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize: resolution[loop] outputfile: outputdir[loop] frame:(frames2[1] as integer) quiet:true else render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize: resolution[loop] outputfile: outputdir[loop] fromframe:(frames2[1] as time) toframe:(frames2[2] as time) quiet:true ) else ( if frames2.count == 1 then render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize: resolution[loop] outputfile: outputdir[loop] frame:(frames2[1] as integer) quiet:true vfb:false else render cancelled:&cancel camera:(getnodebyname cameraname[loop]) outputsize: resolution[loop] outputfile: outputdir[loop] fromframe:(frames2[1] as time) toframe:(frames2[2] as time) quiet:true vfb:false ) ) ) if cancel == true do stopall = true ) fn getmaxfile = --https://www.scriptspot.com/bobo/mxs9/dotNet/OpenFileDialog.html adresinden alintidir. ( theDialog = dotNetObject "System.Windows.Forms.OpenFileDialog" --create a OpenFileDialog theDialog.title = "PLEASE Select One Or More Files" --set the title theDialog.Multiselect = true --allow multiple files to be selected theDialog.Filter = "Max files|*.max" --specify the filter theDialog.FilterIndex = 2 --set the filter drop-down list to All Files result = theDialog.showDialog() --display the dialog, get result into variable result.ToString() --when closed, convert the result to string result.Equals result.OK --returns TRUE if OK was pressed, FALSE otherwise result.Equals result.Cancel --returns TRUE if Cancel was pressed, FALSE otherwise theFilenames = theDialog.fileNames --the selected filenames will be returned as an array ) fn cameralist path1 isim = ( arr = getMAXFileObjectNames path1 quiet:true cams = for loop in arr where (matchpattern loop pattern:("*"+isim+"*")) collect loop ) global tr_ro try(destroydialog tr_ro)catch() rollout tr_ro "Toplu Render" width:776 height:568 ( button 'pickfile_btn' "Pick File" pos:[8,24] width:112 height:64 align:#left button 'deletefile_btn' "Delete" pos:[8,112] width:112 height:32 align:#left listbox 'files_lb' "Max Files" pos:[128,8] width:640 height:8 align:#left radiobuttons 'rendertype_rb' "Render Type" pos:[128,168] width:164 height:46 labels:#("single", "active range", "frames") default:1 columns:2 align:#left edittext 'frames_et' "frames" pos:[136,224] width:160 height:17 enabled:false align:#left text:"20-30" editText 'camisim_et' "Filter List" pos:[448,160] width:144 height:16 align:#left text:"cam" listbox 'cameralist_lb' "Camera List" pos:[304,168] width:464 height:9 align:#left button 'add_btn' "Add" pos:[8,176] width:112 height:56 align:#left button 'addall_btn' "Add All" pos:[8,256] width:112 height:56 align:#left button 'render_btn' "Start Render" pos:[8,488] width:112 height:64 enabled:false align:#left button 'deleterender_btn' "Delete" pos:[8,440] width:112 height:32 align:#left spinner 'renderwidth_spin' "width" pos:[208,264] width:60 height:16 range:[1,10000,1280] type:#integer scale:1 align:#left spinner 'renderheight_spin' "height" pos:[200,296] width:60 height:16 range:[1,10000,720] type:#integer scale:1 align:#left button 'outputdir_btn' "Change" pos:[8,368] width:112 height:24 enabled:false align:#left edittext 'outputdir_et' "Output" pos:[144,368] width:624 height:17 enabled:false align:#left checkbox 'specificfolder_cb' "Specific folder" pos:[16,336] width:100 height:16 align:#left checkbox 'Vrayseperate_cb' "Vray Seperate Channel" pos:[528,336] width:136 height:16 align:#left checkbox 'vrayalpha_cb' "Save Alpha" pos:[688,336] width:82 height:16 enabled:false align:#left checkbox 'makecamerafolder_cb' "Make Camera Folder" pos:[144,336] width:128 height:16 align:#left listbox 'renderlist_lb' "Render List" pos:[136,416] width:632 height:8 align:#left on pickfile_btn pressed do ( makecamerafolder_cb.state = false maxfiles2 = getmaxfile() if maxfiles2[1] != undefined do ( for loop = 1 to maxfiles2.count do append maxfiles maxfiles2[loop] files_lb.items = maxfiles cameralist_lb.items = cameralist files_lb.selected camisim_et.text if cameralist_lb.items.count != 0 do outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" ) maxfiles2 = undefined ) on camisim_et changed i do ( if files_lb.selection != 0 do ( cameralist_lb.items = cameralist files_lb.selected camisim_et.text if cameralist_lb.items.count != 0 do ( if specificfolder_cb.state == true and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+"\\"+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == true and makecamerafolder_cb.state == false then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == false and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+"\\"+cameralist_lb.selected+".jpg" else if specificfolder_cb.state == false and makecamerafolder_cb.state == false do outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" ) ) ) on deletefile_btn pressed do ( if files_lb.selection > 0 do ( deleteitem files_lb.items files_lb.selection files_lb.items = files_lb.items if files_lb.selection <= 0 then ( cameralist_lb.items = #() outputdir_et.text = "\\render" ) else ( cameralist_lb.items = cameralist files_lb.selected outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" ) ) ) on files_lb selected i do ( if files_lb.selection != 0 do ( cameralist_lb.items = cameralist files_lb.selected camisim_et.text if cameralist_lb.items.count != 0 do ( cameralist_lb.selection = 1 if specificfolder_cb.state == true and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+"\\"+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == true and makecamerafolder_cb.state == false then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == false and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+"\\"+cameralist_lb.selected+".jpg" else if specificfolder_cb.state == false and makecamerafolder_cb.state == false do outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" ) ) ) on rendertype_rb changed a do ( if rendertype_rb.state == 3 then frames_et.enabled = true else frames_et.enabled = false ) on cameralist_lb selected i do ( if specificfolder_cb.state == true and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+"\\"+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == true and makecamerafolder_cb.state == false then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == false and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+"\\"+cameralist_lb.selected+".jpg" else if specificfolder_cb.state == false and makecamerafolder_cb.state == false do outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" ) on renderlist_lb selected i do ( render_btn.enabled = true ) on add_btn pressed do ( if cameralist_lb.selection > 0 do ( append s1.cameraname cameralist_lb.selected append s1.rendertype rendertype_rb.state append s1.filedir files_lb.selected append s1.outputdir outputdir_et.text if rendertype_rb.state == 3 do append s1.frames (filterstring frames_et.text ",") append s1.resolution [renderwidth_spin.range.z,renderheight_spin.range.z] append s1.vrayseperate vrayseperate_cb.state append s1.vrayalpha1 vrayalpha_cb.state append renderlist_lb.items (filenameFromPath s1.filedir[s1.filedir.count] +" - "+ s1.cameraname[s1.cameraname.count] +" - "+ (s1.resolution[s1.resolution.count] as string)+" - "+ s1.outputdir[s1.outputdir.count] as string) append s1.makecamerafolder makecamerafolder_cb.state renderlist_lb.items = renderlist_lb.items render_btn.enabled = true ) ) on addall_btn pressed do ( if cameralist_lb.selection > 0 do ( cameralist_lb.selection = 1 for loop = 1 to cameralist_lb.items.count do ( append s1.cameraname cameralist_lb.selected append s1.rendertype rendertype_rb.state append s1.filedir files_lb.selected append s1.outputdir outputdir_et.text if rendertype_rb.state == 3 do append s1.frames (filterstring frames_et.text ",") append s1.resolution [renderwidth_spin.range.z,renderheight_spin.range.z] append s1.vrayseperate vrayseperate_cb.state append s1.vrayalpha1 vrayalpha_cb.state append renderlist_lb.items (filenameFromPath s1.filedir[s1.filedir.count] +" - "+ s1.cameraname[s1.cameraname.count] +" - "+ (s1.resolution[s1.resolution.count] as string)+" - "+ s1.outputdir[s1.outputdir.count] as string) append s1.makecamerafolder makecamerafolder_cb.state renderlist_lb.items = renderlist_lb.items render_btn.enabled = true if loop != cameralist_lb.items.count do cameralist_lb.selection += 1 if specificfolder_cb.state == true and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+"\\"+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == true and makecamerafolder_cb.state == false then outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+(getfilenametype outputdirpath) else if specificfolder_cb.state == false and makecamerafolder_cb.state == true then outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+"\\"+cameralist_lb.selected+".jpg" else if specificfolder_cb.state == false and makecamerafolder_cb.state == false do outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" ) ) ) on render_btn pressed do ( for loop = 1 to renderlist_lb.items.count do ( if stopall == false do toplurender s1.cameraname s1.rendertype s1.frames s1.filedir s1.outputdir s1.resolution s1.vrayseperate s1.vrayalpha1 s1.makecamerafolder loop ) stopall = false ) on deleterender_btn pressed do ( if renderlist_lb.selection > 0 do ( deleteitem s1.cameraname renderlist_lb.selection deleteitem s1.rendertype renderlist_lb.selection if s1.frames[renderlist_lb.selection] != undefined do deleteitem s1.frames renderlist_lb.selection deleteitem s1.filedir renderlist_lb.selection deleteitem s1.outputdir renderlist_lb.selection deleteitem s1.resolution renderlist_lb.selection deleteitem s1.vrayseperate renderlist_lb.selection deleteitem s1.vrayalpha1 renderlist_lb.selection deleteitem s1.makecamerafolder renderlist_lb.selection deleteitem renderlist_lb.items renderlist_lb.selection renderlist_lb.items = renderlist_lb.items if renderlist_lb.selection <= 0 do render_btn.enabled = false ) ) on outputdir_btn pressed do ( makecamerafolder_cb.state = false outputdirpath = SelectSaveBitmap filename:(cameralist_lb.selected+".jpg") if outputdirpath == undefined then () else outputdir_et.text = outputdirpath ) on specificfolder_cb changed i do ( outputdir_btn.enabled = i outputdir_et.enabled = i outputdirpath = outputdir_et.text if i == true then if files_lb.items.count <= 0 then outputdir_et.text = "" else outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" else if files_lb.items.count <= 0 then outputdir_et.text = "" else outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+".jpg" makecamerafolder_cb.state = false ) on Vrayseperate_cb changed i do vrayalpha_cb.enabled= i on makecamerafolder_cb changed i do ( if outputdirpath != undefined then ( if i == true then if outputdir_et.text != "" do outputdir_et.text = (getFilenamePath outputdirpath)+cameralist_lb.selected+"\\"+cameralist_lb.selected+(getfilenametype outputdirpath) else if outputdir_et.text != "" do outputdir_et.text = (getFilenamePath files_lb.selected)+cameralist_lb.selected+(getfilenametype outputdirpath) ) ) ) createdialog tr_ro )