I am doing some photogrammetry scans using Agisoft Photoscan and importing the scans to Blender. The problem is that the UV maps are a mess, the meshes have too many polygons.

The most common workflow is to transform the untextured mesh from tris to quads using Zbrush, create a lower resolution clone, divide it in polygroups to get a better UV map and then generate displacement and normal maps by projecting the high-resolution mesh onto the lower resolution mesh.

What I want to do is to have this same workflow in Blender, but I haven't found any specific tutorial, especially for the latter of the mentioned steps.

Thank you in advance!

  • 3
    $\begingroup$ For automatic retopo and simplification I would recommend Instant Meshes (github.com/wjakob/instant-meshes) which is much quicker and easier than doing it manually in Blender. The other part is called "baking" and can be done in Blender. $\endgroup$ – Robert Gützkow Aug 17 '19 at 10:17
  • 1
    $\begingroup$ Istant Mesh>UV unwarp>Bake High to Low (youtube.com/watch?v=0r-cGjVKvGw) $\endgroup$ – A M Aug 17 '19 at 10:46

Retopology and Baking of 3D Scans/ Photogrammetry with Blender and Free Software First its important to ask what you want to do: 3D print, static render or animation or detailed animation.

For the later ones you need to do some texture baking from you original high-poly mesh to your refined lowpoly mesh. Blender can handle this realy well(See at step 2).

Step 0: Cleaning raw scan-data
Free Software: Meshlab (http://www.meshlab.net/)
- Fix small floating objects, fix non-manifold, fix holes
Paid Software (optional): 3D Coat (https://3dcoat.com/de/)
- sculpt on voxel basis, good for repairing bad areas, has autopo/retopo tools/uv tools

Step 1: Retopology
[Manual Retopology]
For detailed Animation you need a specific edge-flow, witch Auto-Retopo solutions wont give you. Therefore you could use various AddOns/Workflows in Blender for some quality of life.
Free AddOn F2: (https://sites.google.com/site/bartiuscrouch/scripts/f2)
Paid AddOn RetopoFlow
General Retopo-Tutorial: https://youtu.be/CuQzPDs99yM?t=1463

If your goal istn detailed animation, but static renders or "simple" animations that dont require good edge flow you could use an auto-retopology-solution, sadly not with blender.
Free software: Instant Meshes (https://www.blendernation.com/2015/11/16/instant-meshes-a-free-qaud-based-autoretopology-program/)

Step 2: Baking Maps
Normal-Map, Color-Map etc. from highpoly meshes to lowpoly meshes:

in general:
You place your lowpoly object and your highpoly object at the same spot. The lowpoly object has to have uvs to bake to a texture. Rays are cast for every pixel of your destination texture from their coresponding location on the lowpoly mesh (via uv-coordinates) to the high poly mesh. The more difference in distance there is between the two meshes the more bad results can happen. Here it is important to play with the ray-starting-location controlled via the setting Ray Distance in step 5. Also the uv layout of the highpoly mesh doesnt have to be clean or ordered for this. Even the lowpoly object uvs, only have to be clean if you want that for further texture-painting.

specific Blender Workflow:
Im using using as a highpoly mesh a displaced susanne (very rough and quick)
This is not the same as a 3D Scan but should suffice for getting the principle across. After cleaning your raw-scan data in step 0 it shouldnt be that diffrent, except a more caotic edgeflow.

Open your model in InstantMeshes
Set target vertex count and manipulate edge flow with comb tool, then export.

enter image description here

Import in Blender and do your UV-Layout. (for reason of speed i just used "smart uv project") (here you could do your grouping etc.)

enter image description here

there are a few programms/ formats were you have to uncheck "normals autosmooth" after import, so you can activate smooth shading wich is important for baking a smooth transition.

enter image description here

Both objects low and high have to be on the same spot.

enter image description here

for baking you need a texture to bake to. So you have to create a material on your low-poly mesh and place an texture node there and press new, then apply size.

  1. now for baking to work there are a few things that are important:
    The texture to bake to has to be selected, but not necessarily connected to anything in the node editor.

enter image description here

  1. select Source/High first, then Goal/Low seconed with shift, both have to be selected

enter image description here

  1. switch to cycles render menue > bake > select type (here normal)

enter image description here

  1. check: selected to active

  2. Set Ray Distance appropriate in relation to differing distance of high to low (here 0.3m) You maybe have to play with this value a bit. As a rule of thumb: normals have to stay blueish. (What you see at step 8 in the back would be wrong and a result of wrong Ray Distance or a to big of a distance between high and low mesh at that point)

  3. Margin is the pixel distance the bake will print beneath your uv-edges, so that no uv-lines show up later. (here i keep it low at 2)

  4. Press bake

  5. Important: Save Image externaly, then load into your image node.

enter image description here

  1. Plug your bake into your shader.

  2. finished

here you can see a after/before of the lowpoly object on the left with normal pluged in on the right without:
enter image description here

Note for color-baking: With color i like to use the emission shader on the source and baking emission instead diffuse so that no shadows are baked. enter image description here

| improve this answer | |
  • 1
    $\begingroup$ FYI: Bounty was auto-assigned and I removed my comments. $\endgroup$ – brockmann Aug 27 '19 at 11:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.