RIB, workflow, queuing renders
Hi all,
I'm still using the basic workflow: pose, render, repeat...
But with complex scenes it is not that great because the "render" part takes a lot of time. I've been looking for ways to create a render queue, I've seen some scripts that apparently do something close to what I'm looking for, I've tried to use RIB and use the 3delight standalone to render in background on 2 cores while I keep working on other scenes but...
1- Renderman encounters errors and the final picture looks horrible (missing textures mostly, they even happen when I export the textures to the RIB folder)
2- unless it is scripted, renderman only renders one picture at a time so its not really a queue that can be rendered while I sleep or when I'm out of the house.
I'm thinking of building a rendering tower, just for the purpose of the render queue but its pointless if I can't create the said queue. the ideal workflow would be: pose, save or export to a folder (repeat) ... rendering is in the queue. (first in first out)
could be done as a process running in background on the same machine or on a network shared folder on the rendering tower. As an alternative, the rendering of all scenes could be done in a "delayed" fashion: Pose, save or export, repeat... (when all scenes are done for the day, launch the rendering of all scenes in a given folder)
what are your suggestions on this?
Comments
One of the problems with exporting to RIB is shader mismatch...the shaders you are using will, more than likely, need to be recompiled for the stand alone version you are using. Also, you've found that textures don't automatically end up where they are expected to be.
As to shaders, some of the included ones don't recompile...I think mainly the Uber ones (including lights). The DAZ ones should. In the latest versions of 3Delight you can recompile a shader without the source code, but that is an on/off feature...it can be used to prevent a recompile. The shaders can be recompiled on the fly or done before hand...but in either case you need to set up the standalone to find/point to the folders.
If I recall, the Render to RIB generates two RIB files...one in the folder with the textures and one outside of it. You need to render the one inside the folder with the textures and what not (the localize and collect should gather the shaders, shadowmaps and everything else...so if they can be converted on the fly, it should work).
As to batch or que rendering...yeah, the stand alone can't do it without a script. I think that's a feature of the paid license version, though...
I just did a quick test...the rib inside the folder generated a rather acceptable image, so that's the key thing...make sure that is the one you are rendering.
Thanks MJ, I did not realize there was another RIB file in the folder. So I guess with scripting I could start my "many" renders at night and collect the results in the morning. If it works, it would be an improvement over what I do now. but I'm not done researching how to build a queue, maybe with LUX or something else if I have to.
It seems that now even the Uber shaders are working correctly...
I rendered this with the stand alone, the only lighting is UberEnvironment and the skin has UberSurface applied to it.
My tests also point that way but I tried the command line
% renderdl D:\RIB\file1_collected\file1.rib D:\RIB\file2_collected\file2.rib D:\RIB\file3_collected\file3.rib
and it stopped after the first render (which was bugged on almost every texture) go figure... all my previous tests had nice textures and Environment lighting worked fine.
Luxrender does great with a que or network rendering...but may take a bit of set up to get right.
I haven't played around with the stand alone 3delight in several months, so I was quite surprised when I ran the first render. Another thing I noticed and it may be something related to the fact I run Studio on a Linux system under WINE, but rendering in the stand alone (Linux native version) is much faster than in DS, even counting the export time. Rendering a UE scene runs a couple of hours, minimum...but in the stand alone, the same scene takes about half an hour or less. Some of them, if I am using Gen4 characters and can dump them to DS3 (no real simple way of doing a Genesis character...) and then exporting to Luxrender, using SPPM rendering I can get great results in between 15 and 45 mins...but I usually let them run an hour.
Just a though, though I've only started to Google to see if it will actually work.
Try using a (old) Dos batch file. These normally waited for each process to exit before continuing on. You'd still have to list each file you wanted to render but you would be able to walk away from it once it was written.
Alternately, perhaps, a VBScript file. It could even be written in such a way as to pull a list of the files in a single Queue Directory and render each in turn.
My experience with such things expires around WindowsNT and 98 though, and I've only this week started to learn about the standalone render engine. Maybe someone with more hair on their head than in their ears can help. I'll keep poking around the web to see if this might work, but I'll probably get frustrated and give up before I get too far. :red:
Edit: Found the 3Delight reference. Issue is complicated by the fact the render is always saved to render.tiff. There seems to be no command line flag to change this.
Edit again: Here's a quick batch file that worked for me for a few quick test renders of a simple prop. It has several limitations. First off, all of your collected renders have to be in one folder, I'll call it the Base Folder. Second, you have to retype almost all of the batch file each time, changing the names of the files and folders. (Someone with VBScript experience could work around this. Hint, Hint %-P ) Third, it has no error handling ability. If something goes wrong, it will try to soldier on, but might fail in unexpected ways.
The file is basically a repetition of three lines/instructions.
1) Go down into the _collected folder with the .rib file
2) Run renderdl
3) Come back up the Base Folder. This last one is something that sometimes gets missed ;)
I included an Echo to give start and stop times for the whole thing, though you could repeat it for each render. Rendeders are saved as render.tiff in each seperate _collected folder
Heres my sample:
For old DOS coders only: I know .\ is unnecessary, but it's a habit.
I started to include instructions on making and running batch files, but could figure out how to say (clearly) what's involved. Sorry.
Kendall Sears, here on the boards has a lot of experience with the Stand-alone 3Dlight render engine and helped me get it working. The biggest issue I had been having—like yourself—is textures not showing up when rendering. The problem comes down to where the render engine is looking for the textures, which is encoded in the RIB file. It's typically telling the render engine to look in your (For Mac) Users>"User name">Library>Application Support>Daz3D>studio>Temp folder. To fix it, you have to open the RIB file in a text editing program, and do a find and replace to change where the render engine should be looking for the textures from said temp folder to the location of the actual RIB collected folder you created. You'll have to do that with every RIB file.
Just an update for anyone reading this: I figured out a Windows VBScript that does batch rendering using the 3Delight engine. The biggest shortcoming is that it has absolutely no error handling for 3Delight, or even for VBScript.
I welcome comments and suggestions. I'm not a coder by profession, so please excuse the cludgy nature.