anthonys

1 reply · posted

Asking for help -- trying to render low res un-antialiasing

I need to render seamless textures (of arbitrary size, image attached) on a plane at a specific orthographic camera angle to achieve a perfect dimetric (like isometric, but only 2 angles are the same instead of 3 -- for a 2:1 width to height ratio).  The output  rendered image needs to be 128x64 resultion, non anti-aliased at all, and still looking good.

I can do it in 3dsmax (output image attached), but I can't get blender to succeed at this feat (output image attached).

Both of blender's renderers seems to fail pretty hard  when samples are set to 1 which is needed (afaik) to prevent anti-aliasing.  The Cycle renderer produces better results than the Blender Renderer, but it's still unusable.

Maybe I'm doing something wrong?  This is trivial to do in 3DS Max with its default scanline renderer, and I spent 12 hours trying to accomplish this in Blender (blender scene attached).  I didn't expect identical results, but something comparable in quality as to be usable.

Blender renders fine at high samples and high resultion, but that's not what I need or want.  I'd like to use Blender instead of 3DS Max, but if it can't do this then I need to stick with 3DS Max... unfortunately for me. 

So, I'm asking for help.  Let me know if there's anything more I can provide to help you help me.


Thanks,

Anthony

  • Since I can't edit my posts for some reason:

    This is pretty much solved (see Edit 4).

    Edit 1: I just tried flipping it back to Blender Renderer and it's arguably better than Cycle with this particular image (but the image looks antialiased) so I'm including it here's that output file:

    https://www.dropbox.com/s/j7da9jn3hmly7p1/blender%20renderer%20render%20output.tga?dl=0

    Using dropbox because replies can't attach files for some reason.

    Edit 2: And for some strange reason, it looks LESS blurry with antialiasing checked and using box -- except it seems to be antialiasing the edges, which would make it unusable because they won't tile:

    https://www.dropbox.com/s/waqi54p7rangsvy/blender%20renderer%20render%20output-box%20aa.tga?dl=0

    Edit 3: And... that last image only has a blurry outline in Blender's Render window, and looks ALMOST perfect in the file output -- it's off by one pixel on one or more corners  -- depending on the number of antialiasing samples I use.  Yeah, I can fix that manually with any 2d editor, but that would heavily increase my workload compared to using 3DS Max.

    Sub-questions (besides my main question: Can blender even do this):

    1) Why doesn't what's displayed in the Render window within Blender match the output file when saved as a file?  If I can't trust the Render window, it adds another step after I render (even if the output was perfect, which it isn't).

    2) Why do I seem to need to enable antialiasing to have the output file not be too blurry (the exact opposite as expected)?


    Edit 4: Changing the orthographic camera size from 2.85 to 2.87 solves the off-by-one pixel problem on the corners caused by enabling anti-aliasing.  So, this is pretty much solved -- the output image from render arguably looks better than what I got out of 3DS Max.

    Scene file updated to actually work (mostly): https://www.dropbox.com/s/nzwer51oo3e8md8/all%20files%20-%20Blender%20Renderer%20-%20aa%20box%20-%20ortho%202.87.zip?dl=0

    My other questions still stand (and one more while I'm at it): 

    1a) [solved] Why doesn't what's displayed in the Render window within Blender match the output file when saved as a file?  If I can't trust the Render window, it adds another step after I render because I have to open and look at the image file and double-check everything.  Update: Solved, but raises another issue -- the render window _is_ accurate (thank god), and by default displays the antialiased alpha channel that's in the render output file in the viewport (it can be set to display without the alpha channel, which is what I was mainly paying attention to when looking at the output file).  

    1b) [solved] So, unless I can get it to NOT antialias the alpha channel, I would need to replace the alpha channel by hand (which I can do but is another step after each render, and for more complex sprites like character animations will be more of a pita).  3DS Max avoids this issue because I can leave antialiasing unchecked and still get really good results using the scanline render.  Is there a anything I could do about this in Blender?  I was thinking something with the Node Editor maybe, but that's only for the Cycles renderer and I'm already really close to what I need using the Blender renderer.  Update: Solved.  If I change rendering (on bottom bar in the renderer window) from "composite" to "render layer" and then change the camera's orthographic size to 2.83 I get a different (yet tileable, so it's OK) shape that has an un-antialiased edge on the alpha channel.  Curiously, doing it this way gives the same sprite shape that Blizzard used in their Diablo 2 ground tile sprites-- not the shape that I would have chosen, but it's what the renderer spits out and it'll tile just fine so it'll work.

    2) Why do I seem to need to enable antialiasing to have the output file not be too blurry (the exact opposite as expected)?  This just seems weird to me.

    3) [solved] And... don't care too much, because I'll figure it out eventually, but... Why doesn't the texture display at all in the viewport?  I have the surface uv mapped, a material applied, texture image is set, Properties > Object > Display > Maximum Draw Type > Textured is set, and Shading > Textured Solid is checked -- what more does blender need to display it?  I think what I did so far is already kinda excessive for such a simple thing.  I got it to work once by accident somehow.   Update 1: it only displays in the viewport when it's set to Texture Paint mode -- is that normal?  Update 2: Solved.  There's yet another setting that needs to be changed: to the right of the viewport mode selection box there's another icon which sets how objects are displayed in the viewport and that needs to be set to Material in order to see materials.  OK, fine, now I know.

    Oh, and this is all on version 2.79b.