Feature request: constrain "join vertices" by angle

2 replies [Last post]
braindead
Offline
Joined: 08/21/2009

Adding one additional constraint would really make this tool nice:

When joining vertices between different material patches in a model, it isn't enough to specify just the distance-- there should also be a constraint to join only if the angle between the triangles containing the vertices is less than a threshold angle. Without this constraint, sharp edges or thin two-sided geometry is incorrectly joined and the recomputed normals are wrong.

JackJack
Offline
Joined: 04/18/2009

Thanks a lot for your feedback!

The current version of Balancer indeed has this problem.
However preventing Balancer to join vertices you describe
can make coincident boundaries (but with distinct vertices)
of different material patches, separate after mesh simplification.
See the last example here: http://www.atangeo.com/guide/boundaries

In general, Balancer creates normal boundaries between different
material patches after it joins vertices. This guarantees that
the normals are computed correctly. You can check that
these boundaries exist by turning on 'show normal boundaries'
and turning off all the rest of boundaries. You can eliminate
unnecessary normal boundaries by applying 'join normals'.

However, the problem exist when your model does not have normals.
In this case, Balancer won't create normal boundaries between patches
after it joins vertices. And as a result, the normals won't be computed
correctly. To overcome this in the current version of Balancer,
you need to make sure that your model has normals.

If you can't make your model come with normals, you can add normals
using Balancer:
1) Load your model
2) Make sure that 'save vertex normals' is on, and 'only if normals are present
in the original' is off in Options/Exporters.
3) Save
4) Load your newly saved model. It will now have normals.

Our team will try to fix the problem you described in the upcoming
version.

JackJack
Offline
Joined: 04/18/2009

The problem has been fixed in Balancer 1.0.1.
A threshold angle parameter has been added as you suggested.

Thanks again for your feedback!