I am trying to get the z-buffer of a scene. I have a hand mesh (.obj) that Ive imported into Blender 2.57 and I cant seem to find the right way to extract an accurate depth map.
Is there a good way to do this so that I get a full range of depth values?
Use the Compositor in Blender: run the “Z” output straight into the Output’s “image” input. That will give you a 32-bit z-depth image that runs from your camera’s near-clip (black) to far-clip (white) values. Note that you’ll need to render to a 32-bit format, such as EXR, if you want to use it later on. You can also use nodes to produce a visually meaningful depth map (where you see the grayscale info); for instance you can run the Z info through a “normalize” node. Example attached.
Render to EXR and check the “zbuf” option. This includes the 32-bit z-depth along with the image in a single EXR image, though you’ll need to know how to extract that data later on (After Effects has ways to do it, for instance).
Hi, Benu! Can you check this file? I’m not sure it deserves a bug report or not… I checked everything and can’t get what’s wrong… I suppose that it’s something with render layers (in Compositor) I had Input Render Layer with the blank field (that was probably after I deleted some Render Layer (in Layers) so the Input become orphanted. I get the white screen instead of Z. It’s really frustrating. Your file renders well. It’s not very critical but if you can figure out something, please answer.
Actually the z-depth data is in there, but it’s contained in a 32-bit image, and you’re only seeing a limited range of that image. As I suggested earlier, try running it through a “Normalize” node, which will sample the darkest and lightest values and “stretch” the blacks and whites to fit nicely into an 8-bit image:
Keep in mind that this will dynamically update, which means if your camera moves closer to the box (or the box closer to the camera) the z-depth info will look more or less the same. If you want to manually set the range of z-depth representation, fiddle around with the “Map Value” node:
Basically, the “Offset” determines where you “center” the depth, and the “Size” determines how much range will be used to fill the grayscale range (smaller numbers equal a larger range). Good luck!