How to smooth the weight of the top of the bone using the geodetic distance from the vertices?

I am currently studying a method for smoothing vertex vertices (skin weight for joint deformations) and emptying methods that use geodetic (surface) distances between vertices within a user-specified parametric distance. <w> Until now, someone has mentioned the possible use of the Dijkstra Algorithm to obtain approximate geodetic distances, but it has limitations on some types of grid topology. The only document that I specifically found on this problem (the so-called "smoothing the weight of the vertices of the bosom") uses the Laplacian smoothing of weights on the skinhead grid, but it considers only single-ring neighboring vertices for each vertex that does not satisfy mine, I need to include vertices at a distance (shortest geodetic distance):

L(Wi) = 1/m * Sum(j from 0 to m-1)(Wj - Wi) 

where the vertices i and j considered relative to the vertex i , m is the number of neighboring vertices, and W is the weight at the vertex.

I am a modified Laplacian smoothing that uses all the vertices within the parametric distance, but the distance should also be a factor. Maybe just multiply the effect of the weight on the parametric distance minus the distance between the current vertex and the one used in the sum. Something like this might be:

 Wmj = Wj * (maxDistance - Dji) L(Wi) = 1/m * Sum(j from 0 to m-1)(Wmj - Wi) 

so that the smoothing effect on Wj decreases (decreases) on its vertex distance ( Dji ). Of course, the vertices in maxDistance will have no effect and can be ignored as part of m .

Will this work?

+4
source share
1 answer
The first thought that occurred to me was a projection. Start by getting a line representing the Euclidean distance between your starting point and the ending point (passing through the grid). Then project this onto the grid. But I realized that it would not work in certain situations. In the interests of others, one of such situations is that the starting point is one of the sides of a deep hole, and the target is on the opposite side, the shortest distance will be around the rim, and not directly. This may be enough for you, depending on the types of grids you work with, so I can develop a more complete approach in this direction, if that’s enough for you.

So then my thoughts were divided, and then they used search. I would use an adaptive division, that is, split the edges until all the edges are less than a certain threshold. From now on, you can use Dijkstra, or *, or any other number of search methods. This turns into the problem of skinny triangles, because the edges will be divided until they become small, so there will be no long skinny edges.

+2
source

Source: https://habr.com/ru/post/1416421/


All Articles