PDA

View Full Version : Nth Frame Render and Radiosity


paulselhi
07-09-2006, 07:34 PM
As i don't have r9.6 i cannot make use of the render eevry frame feature, has anyone tried this with radiosity ?

I have been messing around with VRay in Max and got this result

http://www.black-and-white-to-color.com/stuff/vraygre.mov 8.5 MB

The only illumination here is a HDRI enviroment, no lights no shadows and there are around 1.6 million polys

Now before you all scoff at the blandness of the subject, the not so accurate rad and the poor AA, let me say that 1. I have very little experirence with vray and 2. I was more interested in getting a good stable ( no flicker) render rather than an accurate on, i also wanted the render to finish in my lifetime

Ok what has this to do with C4D ? well vray alows you to render the gi solution for every x frames, i used every 5 frames, you render out the solution alone ( no image) then save that and use it for the full render

Now 9.6 has this feature, so can we render out only a rad solution and no images ? How good is it in calculating the inter frames rad ?

let me briefely run through the vray pipeline ( as we may well be getting vray for c4d one day, yay !! Vray day !!)

remember i know very little about vray !!

OK the only illumination here is a HDRI enviroment

First vray has 2 different options for calculating the GI, i mean you have individual control over the engine for primary ansd secondary bounces

Bounce type can be set up to use a variety of alternative engines ( it sounds very complex with a choice of 4 options for each ..er,, is that 16 permutaions ?)but in fact vray is very comfortable to work with

What i did first ( and this is all basic vray tut stuff) is to set both pri and sec to use a light cache engine set to flythrough

Light cache seems similar to a maxwell render, paths are traced from the camera and build up as a series of pixels like maxwell, howver you don't have to go full hog with this, just enough to get the overall lighting setup, quite quick. You can in fact set light cache to render in a similar way to a full MR render and it is faster than MR but i don't know how accurate it is in comparrison

Setting the light cache to flythrough for a static scene and only the camera moving means that the light cache is buitl up for the entire animation in one frame render ( a bit like baking ?)
OK this solution is saved out to file and then the primary bounce is set to irradience map, leaving light cache for secondary ( read from file)

The thing is here like AR the GI builds up frame to frame, meaning in theory we don't have to do full rad each frame we use data from the previous frames, but now we have the option to render out say every 5th frame in my case this seemed fine, so not only are we saving time with a "camera animation" like build up of rad we are effectively cutting the rad calc down to 60 frames !!

So would this wotk in c4d ?

An IR map i think is simlar to our standard rad engine you can set it up to be frame incremental and save this to disk

There is thus an initail 2 stage render LC and IR but it is not a big deal easy to setup and in the end not the hassle it seems

It is then a simple matter of saving the IP Map to disk and doing a final all frame full image render using the saved solutions

I got the whole thing to render in something like 5 hours plus and hour or so rad calc and maybe half an hour ( or less) setting it up (1.8 ghz 1 GB RAM- your boxes will fly through this !!)

So sorry to bore you all with the vray stuff, the render every x frames is now avialble to us as hopefully will vray

Now to see what you all think we can take from this into C4D, how about FR2 ? Of course the secret is to be able to render a rad solution without having to render the image out at the same time

dann_stubbs
07-09-2006, 10:31 PM
As i don't have r6 i cannot make use of the render eevry frame feature, has anyone tried this with radiosity ?

Ok what has this to do with C4D ? well vray alows you to render the gi solution for every x frames, i used every 5 frames, you render out the solution alone ( no image) then save that and use it for the full render

Now 9.6 has this feature, so can we render out only a rad solution and no images ? How good is it in calculating the inter frames rad ?


leed and myself have tried this - just by setting the animation to 1FPS or 5 FPS etc and then running a GI render and saving solution.

then set the animation to the normal FPS and tell it to use the saved solution. it flickers the same. my thoughts in this was that maybe it would allow enough samples from the frames in the GI database but i guess the way C4D calculates it is based on samples to frames - so when it hits a frame that has no saved solution it seems to recalculate them (which means flicker) rather then it looking ahead in the existing saved solution for the samples in later frames.

from what i read about this solution in FR2 and probably VRAY is it can still flicker depending on the sample so i don't think it is a one click thing - maybe just needs high samples etc - but i'm not an expert in FR2 or VRAY so maybe i misread or am missing something.

dann

paulselhi
07-09-2006, 10:43 PM
Have you tried it with 9.6 and set to render every 5th frame then use camera animation as the gi engine ?

dann_stubbs
07-09-2006, 11:56 PM
Have you tried it with 9.6 and set to render every 5th frame then use camera animation as the gi engine ?

i don't think either of us have tried it in 9.6

am i correct in thinking that after rendering out the saved GI solution at every 5th frame you would render the animation at full FPS and tell it to use the saved GI solution?

the GI sample database would contain just those frames, so i don't think the end result is any different as our rendering the animation at 5 FPS- essentially is the same thing, but i guess to rule it out it could be tried in 9.6

dann

paulselhi
07-10-2006, 03:35 AM
I have never tried the 5fps trick..i would have thought it would just create a slomo render, are you saying that it will just render frames 0 5 10 etc ? I will have to try it out


in answer to your question yes in vray you render 1 frame using light cache for both engines set to flythrough mode, you save that solution, then you render every 5th frame with primary bounce as IR map set to incremental and for secondary you use the light cache map you have saved, you then save your IR map. You then revert to a full all frame render using both saved maps and switch on the render final image ( which you had set to off for the previous remders)

Though this sounds a pain it is not a real issue apart from the fact that you have to monitor the 2 rad renders, unless of course it could be scripted, but you do save a lot of time with the IR map being only every 5th frame and not having to render final images

As you can see from my example the result is flicker free rad though the QT compression has added some artifacts and AA is not that high

leed
07-10-2006, 08:24 AM
I think ( by the sounds of it) Vray has a lot more options available to you when saving a cashed GI solution.

The problem Dann, Strat and myself have in C4d ( Not tested 9.6 yet but sure it would be the same 9.5) you can get a flicker free animation if rendered on one computer. The problem comes when you have to render across several, and each computer, when using a Gi solution every 5th frame for example, has to fill in the gaps, and it is how the computer interpolates the points that causes the flickering. I am open to any suggestions that you might have, but in C4D 9.6 you do not have the same amount of control over the saved GI solution as the example you gave for Vray.

I am all up for testing anything, but I am up to my eyeballs at the moment with work, and do not have the time.

Lee

paulselhi
07-10-2006, 03:38 PM
OK i know very little about distributed rendering but it seems to me that if a farm is to render with incremental settings ( camera animation) then each subsequent render must "asses" what has changed since the last frame rendered. On a single box this is not an issue but i suppose a client on a farm would have difficulty working out what was the actual last frame in sequence if that frame were rendered out on anothert client


What about this, instead of doing distributed renders why not say have 4 clients, client 1 renders frames 0 - 249 c;ient 2 renders frames 250 - 499 etc. that way each client is rendering in sequence even idf you did a render every 5th frame

OK some clinents may finish before the others, but you could just juggle the spare rendering time around (some how ? maybe set it so that there are spare frames at the end of the run say frames 1000 - 1249 in the run which could be assigned to which ever client finishes it's batch first ?)

leed
07-10-2006, 04:11 PM
Apparently the information in a .gi file is geometry based and not time based, so it does not matter what frame or time the information was put there, the computer looks at what is through the camera and assesses the gi file and makes decisions on how to fill in the gaps. it is this decision making that when cast over numerous machines causes flickering.

When you use a farm the renders are distributed through the farm, say 1-10 on on 11-20 on the next and so forth, you do not (as far as I am aware) have any control over it, and as one computer finishes the C4D net server distributes the remaining frames again so if computer 1 has finished but 2 has not then frames 19 -20 will be switched.
There is no log where you can see what frame was rendered on what computer.

Keep thinking though. any ideas?

Lee

paulselhi
07-10-2006, 05:42 PM
Then why use a farm ? Why not simply render each batch on a different machine with no net render ?

That way each machine sees its frame batch as a seperate render, it calculates the gi for frame 1 and increments them as you go on with cam animation mode, machine 2 knows nothing of machine 1, it calcs its first frame ( say frame 101) from scratch and then goes on the use cam animation for the rest

With similar machines the render results should be the same (color, contrast etc)

You then simply stitch all the frames together

Correct me if i am wrong but if one machine gives flicker free renders then 5 machines will each give flicker free renders for thier section of the total animation, the combined result will be flicker free and rendered just as fast as distributed renders except that each machine will have to do an initial first frame full GI render ( not a big isue is it ?)

edit..of course you have thought of that and i am missing the bleeding obvious !!

dann_stubbs
07-10-2006, 06:00 PM
Then why use a farm ? Why not simply render each batch on a different machine with no net render ?

Correct me if i am wrong but if one machine gives flicker free renders then 5 machines will each give flicker free renders for thier section of the total animation, the combined result will be flicker free and rendered just as fast as distributed renders except that each machine will have to do an initial first frame full GI render ( not a big isue is it ?)

edit..of course you have thought of that and i am missing the bleeding obvious !!

you are missing the time to manage and orchistrate all that work. under a deadline you are looking at insanity.

in a production environment when you have a half dozen or more large renders to finish - manually splitting them up is just not feasible. then the eventual re-render or just to redo a few frames where an error was detected etc...

also whlie true each machine run separate may render flicker free for it's segment - but unless you find a perfect transition point you will have a flicker at where the different segments butt together - this is essentially what is being seen using NET each computer is assigned frames in small batches and as they wind down the NET renderer reassignes to balance the load which sometimes breaks up the previous batches into new ones and rearragnes the order of frames etc.

you are also forgetting that to render on each computer you will then need a full copy of C4D and all the plugins, so how many full workstations do you think the average user has at their disposal?

basically the GI is showing a bit of it's age or the settings have to be pushed incredibly high to overcome the subtle differences (anybody remember the short film "bunny" that was rendered in GI years ago?)

and C4D is not alone in flicker in GI, nearly all others do succumb to flicker and it is just the availability of more options which lets the user overcome it. since AR really has not been upgraded too much (with exception to the AA and little touches recently) it is just a module that is needing to catch up to the current stage of render engines.

and if NET allowed pooling or other more advanced control then you could have some control over which frames are rendered on which CPU's etc - but neither of these are options at this point... so we continue to look for a workable solution until those variables change.

dann

leed
07-10-2006, 06:10 PM
If you stack your animation as you say you will still get a flicker between the different renders, the way around that is to overlap the framed so that computer 1 renders 1-150 computer 2 renders 100-250, 3 - 200-350 and so on and then blending between them as a transition.

It does not matter if the computers are similar or not the samples are generated randomly, you can reduce the flickering it by having high accuracy settings, or as some people are doing baking the GI.

Lee

paulselhi
07-10-2006, 06:17 PM
Does baking the rad to texture help ?
edit.. i got this from vray docs

Rendering an animation sequence in distributed rendering mode is not supported. Use distributed rendering only for single frames.
Ohh that does not sound good..maybe this will change in the next release

but saying that in the walktrough tut i followed for my sceme above they add:

For the final animation you can use backburner with the saved irradiance map either on the client pc or locally on each server machine. In either case, you must make sure that each render slave can find the irradiance map in the location specified in the From file parameter for the irradiance map.

and..

Q: I just wanted to clarify... It is possible to use Incremental add to current map mode in conjunction with backburner without any problems (ie flicker)? Does backburner handle frame allocation ok without max saving any files? Reading your post above, I get the feeling you are suggesting that you need to send different sections of the animation to each render-node.

A: Yes, you can render different sections on different nodes, but you must merge the resulting irradiance maps manually with the irradiance map viewer in the end, before rendering the final animation. Also, you must make sure that each section is allocated to one single render node only.

dann_stubbs
07-10-2006, 06:24 PM
Does baking the rad to texture help ?
edit.. i got this from vray docs

Rendering an animation sequence in distributed rendering mode is not supported. Use distributed rendering only for single frames.
Ohh that does not sound good..maybe this will change in the next release


you can bake the textures and yes that works - but search for ernestb's thread on that topic to see the issues he has had.

that is better then us trying to re-create all his threads here.

dann

leed
07-10-2006, 07:15 PM
For the final animation you can use backburner with the saved irradiance map either on the client pc or locally on each server machine. In either case, you must make sure that each render slave can find the irradiance map in the location specified in the From file parameter for the irradiance map.

A: Yes, you can render different sections on different nodes, but you must merge the resulting irradiance maps manually with the irradiance map viewer in the end, before rendering the final animation. Also, you must make sure that each section is allocated to one single render node only.


I must say that I do not know anything about vray, I am talking only about C4D Gi rendering.

but from what you say, Vray does seem to have more options to save a cashed Gi solution eliminating the need for the net render clients to generate its solution.

Lee

CGTalk Moderation
07-10-2006, 07:15 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.