Really Big Render 2 released!

Hola folks.

I just released Really Big Render 2.

This script helps you render images so large that Blender or your system can’t normally handle them. Good if you have something to get to the printers and they’re being icky about it, and want something gargantuan.

You can find the script and explanations here:

New in version 2!

If you have a full python install, and the PIL library the script can now assemble the tiles it renders for you! Previously you had to do this by hand, which was a pain if you didn’t have photoshop. Of course there is still a limit for it, but on my system that was somewhere between 15000 x 15000px (which went fine) and 20000 x 20000px (which raised a neat python error).

If you don’t have the PIL library installed, the script runs pretty much as before, though it no longer uses the “animate” function for rendering so no more _0001.png and such which we don’t need anyway.

An example of a tiled render:

cool! thanks macouno.

something like" could not find camera to render".
but cool script i was just looking for that

ok i add a fresh camera to the scene and when i render i got the same image repeted 4 time . And assembled in one picture.

dagobert, what version of blender? and did you have a “border” set for your camera?

Can you show me your rendersettings?

i got blender 2.47 on ubuntu i create a camera . i install a version of blender with yafaray but i do not use this version to test you script. i got 2 hypertreading xeon (so 4 core) and i try with all the core or only one. but no difference. i notice that it works in scene where yaf ray was never used.
i m pretty sure that it s link to yaf ray…

nice, i have really good use for this script.

i used the first version but i had problems with cameras with IPOs. for example if there is an IPO for “lens” with different values for each frame then the lens value for the specific frame isn’t somehow retrieved correctly. to fix this i did a quick hack of the getsettings function to evaluate and delete the IPO in order to get a correct result. i don’t know why it doesn’t work correctly, maybe it’s a blender python API bug. and it’s a pretty bad hack because it modifies your scene, so i cannot recommend to do it this way. maybe you can implement something which fixes this in a better and safer way.

def GetSettings(fileName):
		STATE['SCN'] = Scene.GetCurrent()
		STATE['CAM'] = Camera.Get(STATE['SCN'].getCurrentCamera().name)
		STATE['CNTX'] = STATE['SCN'].render
		STATE['PATH'] = STATE['CNTX'].renderPath
		STATE['FILENAME'] = fileName
		STATE['EXT'] = STATE['CNTX'].extensions
		STATE['ASPX'] = float(STATE['CNTX'].sizeX) / float(STATE['CNTX'].sizeY)
		STATE['ASPY'] = float(STATE['CNTX'].sizeY) / float(STATE['CNTX'].sizeX)
		if STATE['CAM'].ipo:
			if STATE['CAM'].ipo[Ipo.CA_LENS]:
				STATE['IPO'] = STATE['CAM'].ipo[Ipo.CA_LENS]
				STATE['CAM'].ipo[Ipo.CA_LENS] = None
		STATE['LENS'] = STATE['CAM'].lens
		STATE['SCALE'] = STATE['CAM'].scale
		return 1
		Draw.PupMenu('Error! The script could not find a camera in your scene.')
		return 0

dagobert… yes… I do not expect this script to work with any renderer other than Blender Internal. I am not surprised at the result at all. The lense shift setting is used and I don’t think any export method includes that, and doubt yafray even has it.

KaiKostack: There’s a good chance your issues are circumvented by the new version. did you try it?

wow! great to see RBR updated! Thanks a lot Macouno! :wink:

not yet, will try it the next days. :slight_smile:

my workflow to get it work fine is to load defaut setting and reimport scene when there was some yafray setting.
Still testing…

nice script, thanks for sharing

ok, tested now. i like the improvements but the problem with lens IPOs is still there.

here is a little testfile:

just try to render frame one and two with your script and compare them to the viewport view.

I just did a quick test and you’re right, there’s something off there… I’ll have a closer look this evening.

Thanks for coding things like this! I don’t get how it’s done - just how it’s useful. One day I might get into some coding. One day.

another thing i noticed is that the composite of all images only works correct if you have set your output size to 100%. i hope you can make it work for 75%, 50% and 25% too.

Why would you want a ‘Really Big Render’ at 25%?

No I do actually see why but it just sounded funny in my head at first!

Right… I put a version 2.1 online… have a looksee.

Kai Kostack: You were absolutely right. It was simply the Ipo value always being used in stead of the custom lense setting the script needs. So I took your suggested code and changed it a bit. Basicly your code removed the ipo curve in question, itself. In stead I remove the IPO datablock (all camera specific ipos), then reapply when the rendering is done… takes less code, and isn’t destructive.

The 100% thing… well yeah doesn’t make much sense to render at 50% for this… so… maybe for version 3 :wink:

it is still destructive if you interrupt rendering. maybe it would be a good idea to link the IPO back immediately after copying the values, so that the chance of breaking the scene is at a minimum. nevertheless, it works now. :slight_smile:

about the % buttons, usually i’m using the script from that point when the regular rendering of my fixed final resolution starts to make problems (crashes). then it’s just about pressing the 50% button and render on 2x2 tiles. one click to prepare the scene for the script, you know. :wink:
otherwise you have to calculate and re-enter a smaller resolution to get the same size as before. so i thought of it just for convenience but it’s indeed not necessary.

I don’t think I can make it so that if you quit the script halfway through that it’ll be non-destructive. It’s always a good idea to save your file before doing a big render anyway.

Well lets see if someone wants to contribute… good chance to learn some python. In the MakeComposite function it retrieves the render size to combine the tiles (this is the only spot where the 50% button and it’s siblings have an impact).

 # Get the image sizes
 tileX = STATE['CNTX'].sizeX
 tileY = STATE['CNTX'].sizeY

All that needs to be done is that shose values should be multiplied by 0.5 if it’s set to render 50%.

But here’s the one tricky bit… if you render 2x2 with the script… the value must be twice what is rendered at 50%. So what if your render is set to 301 pixels wide for instance… what does blender render at 50%… does it render 150px or 151px… meaning… the actual composite will be 300 or 302 pixels, I think that will have to be put in manually (small list of “consequences”). Actually… rounding the result of the multiplication of the tile values either up or down should do the trick… but needs to be tested.