Message Boards Message Boards

GROUPS:

Rasterizing large Graphics3D with antialiasing

Posted 6 years ago
9066 Views
|
12 Replies
|
9 Total Likes
|

Dear All,

I trying to render a complex Graphics3D scene (roughly 300.000 polygons with different kinds of lights on it). To exemplify my problem I have the following code with just 6 polygons:

SetDirectory[NotebookDirectory[]];
$HistoryLength=1;
gr=Graphics3D[{EdgeForm[],FaceForm[White],Cuboid[]},Background->Black,PlotRange->4,Lighting->"Neutral",Boxed->False,ImageSize->4{1920,1080}];
Export["tmp1.png",Image[gr,ImageSize->1{1920,1080}]]
Export["tmp2.png",Image[gr,ImageSize->2{1920,1080}]]

which just creates a single white cuboid with a black background. If I open tmp1.png I will see a anti-aliased result.

enter image description here

But for tmp2.png i will not get this:

enter image description here

Even by setting the Antialiasing option to Cube by using Style does not work. Or by Using Antialiasing -> True as a directive in the Graphics3D also does not work. I also have tried Rasterize but I'm pretty sure Rasterize[gr,"Image",RasterSize->{w,h}] and Image[gr,ImageSize->{w,h}] are basically the same thing.

12 Replies

Hi Simon,

This setting is of course set to its highest quality. Thanks for the suggestion though!

--Sander

I know about ImageResolution. But it will be ignored once RasterSize is supplied as an option. Thanks for the suggestion

There is no such equivalent on Mac OS X.

Hi Simon, this doesn't help me: of course I know that I should use the Rasterize command!

method = {"HardwareDepthBuffer", "HardwareDepthPeeling", "BSPTree", "Software"};
method = method[[4]]
SetOptions[$FrontEndSession,  RenderingOptions -> {"Graphics3DRenderingEngine" -> method}];
SetOptions[EvaluationNotebook[], RenderingOptions -> {"Graphics3DRenderingEngine" -> method}];
CurrentValue[$FrontEnd, {RenderingOptions, "Graphics3DRenderingEngine"}] = MethodOptions;
CurrentValue[$FrontEndSession, {"Antialiasing"}] = True;
CurrentValue[EvaluationNotebook[], {"Antialiasing"}] = True;
CurrentValue[$FrontEnd, {"Antialiasing"}] = True;

Also setting these kinds of options did not result in High-resolution, antialiased figures.... Any more ideas?

I did not try this myself, but will just relay info given to me. I do not know details and I hope you will dig through this on your own. Just trying to help out.

Mac OpenGL driver have a hardware limitation that it can only support up to 16384 by 16384 view port graphics. Considering the AA quality is 4, the retina display scale is 2, the it can only support up to 2048 by 2048 AntiAliased graphics. Tiled rendering might be the only solution to this. In the attached notebook there is a work around that was used to generate giant images for print (30k px wide). It uses ViewAngle and ViewCenter to export a 3D Graphic in manageable piecesÂ… that can then get reassembled.

Attachments:

Hi Vitaliy!

That's a very nice idea! I'll try it! I'm trying to output 300 high res images to make a movie. This will take some time and file-management. Thanks a lot for this idea!

If I may ask: Where did you find this info?

2^14 by 2^14 is of course quite a few pixels, so I can't blame Mac I guess...

The software-renderer should overcome this right? or is it still OpenGL?

I successfully applied your technique and it works beautifully. I now creates 100Megapixel stills that were antialiased 4x (so 1.6 GigaPixel stills actually). works very neat! Thanks a bunch!

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract