Photogrammetry to PBR is the process of turning a real surface into engine-ready maps: albedo, normal, roughness, and often height and ambient occlusion. The mesh is the easy part. The useful work is removing lighting from color, keeping each map in the correct color space, and making the result tile. This guide is a practical pipeline from capture to Blender or a game engine, plus when a free CC0 library is faster than shooting your own.
Plan the capture before you shoot
Bad photos cannot be fixed in reconstruction. Shoot for diffuse color, not for a pretty picture. Overcast daylight or a cross-polarized flash pair kills most specular highlights that would otherwise bake into albedo. Lock white balance, shoot RAW, and keep ISO low. Use f/8 or smaller so the whole patch is sharp. Walk a grid with 60–80% overlap; twenty to forty frames is enough for a one-meter square of concrete, brick, or wood.
- Include a scale bar or a coin so you can set real-world size later.
- Avoid moving shadows, people, and wet patches that will not match the rest of the surface.
- Do not photograph branded products or copyrighted art if you need a clean CC0 asset.
- Keep the camera parallel to the surface for the “hero” frames you will use as albedo.
Reconstruct, then flatten to maps
Reconstruct in Meshroom or RealityCapture, then project the photos onto a low-poly plane or a clean unwrap. You are not shipping the high-poly scan; you are baking maps. From the aligned mesh, export:
- Albedo — average or polarized diffuse color with lighting removed.
- Height — displacement from the reconstructed surface, 16-bit if you can.
- Normal — tangent-space, baked from the high-poly or derived from height.
- Ambient occlusion — cavity from the mesh, linear.
- Roughness — painted or derived from gloss/wetness; do not leave camera shine in albedo.
Metalness stays at 0 for dielectrics (wood, stone, concrete, plaster). Set it to 1 only on bare metal. If you need a refresher on the set, read what PBR textures are.
Color space and albedo cleanup
This is where most photo-scanned materials fail. Albedo must be sRGB and must not contain shadows, contact AO, or specular peaks. Roughness, metalness, AO, height, and normal must be non-color / linear. In Blender, set those Image Texture nodes to Non-Color and run the normal through a Normal Map node. Confirm OpenGL versus DirectX (green channel flip) before you ship to Unreal or Unity.
Clone out leftover highlights, even out exposure across tiles, and neutralize any color cast from the sky. A good albedo looks slightly flat and a bit lighter than a beauty photo. If the surface is a floor, keep grout and grain but delete footprints and trash. For the node graph, follow how to apply PBR textures in Blender.
Resolution, seams, and tiling
Match texel density to real size. A one-meter hero patch is usually 4K (4096). Props, trim, and mid-ground tiles are fine at 2K. Use 8K only when the camera sits centimeters from the surface. Albedo can be 8-bit PNG; height and sometimes normal benefit from 16-bit PNG or EXR. After offsetting the image by 50% in both axes, paint the seam, then offset back. Check tiling at 2× and 4× scale so a repeating knot or crack does not read as a grid.
When to shoot versus download CC0
Shoot when the surface is unique: a specific site, a weathered wall the client asked for, or a material you cannot find in a library. For generic wood, concrete, metal, stone, and flooring, a scanned CC0 pack is faster and already tileable. Locker3d publishes free CC0 PBR textures you can use in commercial games and renders without attribution. Browse the texture catalog or start from wood, concrete, and metal. License limits are covered in CC0 textures: what you can and cannot do. More capture and material guides live on the blog.
Frequently asked questions
Which maps should I bake from a photogrammetry mesh?
Bake albedo (lighting removed), tangent-space normal, roughness, ambient occlusion, and height. Keep metalness at 0 for wood, stone, and concrete. Use sRGB for albedo and non-color/linear for every other map.
What resolution should a photo-scanned PBR texture be?
Match texel density to real size. A 1 m patch used as a hero surface is usually 4K (4096). Props and mid-ground tiles work at 2K. Avoid 8K unless the camera is centimeters from the surface.
Can I release photogrammetry textures as CC0?
Only if you own the photos and the surface is not a copyrighted artwork or branded product. Locker3d textures are already CC0, so you can use them commercially without shooting your own set.