Browser-local converter
PNG to OBJ converter
Turn a PNG into a Wavefront OBJ relief on your own machine, ready to open in Blender, Maya or any other 3D application. Brightness becomes height by a stated rule you control. It is a relief of the image, not a reconstruction of what the picture shows.
Drop your PNG files here
STL, OBJ, PLY, GLB, glTF, 3MF, SVG and DXF, plus PNG and JPG as height relief. Nothing is uploaded: files are read and converted inside this tab. Checking what this device can handle...
Queue
No files yet. Drop files above, or use the file picker.
Output
Units
Size and placement
Repair and cleanup
These can change the shape, so they need a before-and-after review before export.
Inspection
Add a model to see its dimensions, mesh health and estimated volume.
What this PNG to OBJ conversion does and does not do
- The result is a height relief: lighter pixels are higher, darker pixels lower. A picture of an object does not become a 3D model of that object, because a single image records no shape behind it.
- The OBJ carries geometry only. The colours of the image are not written as a texture or as vertex colours, and no uv layout is generated, so the relief opens untextured.
- Relief height, base thickness and width are set in millimetres. OBJ itself records no unit, so the numbers in the file are millimetres and your 3D application has to be told so, or scaled on import.
- The image is resampled onto a grid, and both the grid and the resulting triangle count are shown before you convert, because full resolution on a large image can run to millions of triangles.
- Height comes from Rec. 709 luminance, and fully transparent pixels count as the lowest level, so a cut-out PNG does not raise a plateau over empty space.
- The output is a closed solid with a flat underside and a skirt around the edge, so it stays watertight if you later print it.
Troubleshooting
The relief is huge or tiny in Blender
OBJ has no unit field, and Blender reads the numbers as metres by default. The file is written in millimetres, so set the import scale to 0.001 or scale the object after importing.
The relief has no colour
That is expected. Only the brightness of the image is used, to set height. Apply the original PNG as a texture in your 3D application if you want the picture on the surface as well.
The surface looks noisy
Photographs make busy reliefs. A greyscale heightmap, a logo or high-contrast artwork gives a far cleaner surface, and lowering the detail setting averages out fine variation.
The triangle count is too high for my scene
Lower the detail setting. The sampled grid and triangle count are shown before converting, so you can choose the cost before paying it.
Questions
PNG to OBJ or PNG to STL?
The geometry is the same. Choose OBJ for 3D applications such as Blender, where it is the more common interchange format, and STL for slicers and 3D printing.
Can this read the depth of a photo?
No. Brightness is mapped to height, which is a deliberate and documented transform, not depth estimation. A dark object close to the camera ends up low, not near.
Is my image uploaded?
No. The browser decodes the image and the relief is built in a Web Worker in this tab. There is no upload endpoint anywhere in this project, and the Content Security Policy blocks cross-origin requests.
Is the OBJ checked before I download it?
Yes. Like every export here, it is parsed again after it is written, and its triangle count and bounding box are compared with the relief that was built.
Related tools
- PNG to STLTurn a PNG into a 3D relief you can print.
- JPG to OBJTurn a JPG into a Wavefront OBJ relief on your own machine, ready to open in Blender, Maya or any other 3D application.
- JPG to STLConvert a JPG into a printable relief on your own machine.
- OBJ viewerOpen a Wavefront OBJ locally, with its groups, normals and material colours.
- OBJ to STLTurn a Wavefront OBJ into a printable STL entirely inside this tab.