Hi,
How can I calculate the curvature of a vertex on a 3D triangular mesh?
Many thanks,
Ian
How can I calculate the curvature of a vertex on a 3D triangular mesh?
Many thanks,
Ian
--
Even if all the snow were burnt, ashes would remain.
I am trying to implement a mesh simplification algorithm (basically
following the procedure outlined in the MAPS paper by Lee et al) that works
for triangular meshes. In calculating which vertices are to be removed at a
given level of the simplification, I will select them from a priority queue
based on geometric information. Roughly speaking, vertices with small and
flat 1-ring neighbourhoods will be chosen first. The priority weight of a
vertex is a combination of the area of its 1-ring neighbourhood and an
estimate of its curvature.
So, whilst I can work out the area of the 1-ring neighbourhood (just the
summation of the neighbouring faces to that vertex), I need some method of
estimating this curvature.
I'm sorry if this is still a little vague, but (as you can probably tell) I
am not very experienced in this field. If you can provide further help or
guidance I would be very grateful.
Thanks again,
Ian
> >How can I calculate the curvature of a vertex on a 3D triangular mesh?
> First tell us how you define it, and then you can ask how to calculate
> it.. All the standard definitions of "curvature" refer to
> differential concepts. There is no standard definition for curvature
> at a point where a surface is not twice differentiable, and at a
> vertex it is generally not even once differentiable.
> For a twice differentiable point (not a vertex) there are several
> different curvatures that have importance: two principal curvatures,
> mean curvature, and Gaussian curvature.
Sorry Ron, but that doesn't make much sense to me :(Quote:> Ah. How about the ratio of the solid angle of the vertex to the area
> of the 1-ring neighborhood? (The solid angle is the area that the
> vertex subtends on the unit sphere).
I've just had a look on the net, and found some stuff about "solid angles"
in relation to cones, but don't really understand what you're getting at.
Could you elaborate further for me (or provide a link that will explain it
to me)?
I appreciate your patience!
Ian
This is not correct.Quote:> First tell us how you define it, and then you can ask how to calculate
> it.. All the standard definitions of "curvature" refer to
> differential concepts. There is no standard definition for curvature
> at a point where a surface is not twice differentiable, and at a
> vertex it is generally not even once differentiable.
For example, each the vertex of a cube has curvature
3 * (pi/2) - pi = pi/2.
The curvature of each vertex of a tetragedron is
3 * (2/3 pi) - pi = pi.
This definition is also compatible with the differential definition
of curvature of smooth surfaces:
For twice differentiable surfaces, you can define the curvature
of an area as integral over the differential curvature.
Taking a limes of a curvature of a smooth surface
approaching a (not twice differentiable) mesh,
then the limes of this integrated curvature is exactly
the sum of the curvatures of all vertices as defined above
which are included in the area.
Furthermore, important mathematical theorems
work not only for differential curvatures, but for
the discreet one as defined above.
For example, the relation between the topology of a closed
surface (sphere, torus etc.) and the integral over the curvature.
For meshes, you only have to replace the integral over the
curvature by the sum over the curvatures of all vertices.
For example, the sum of the curvatures of all vertices of
closed meshes having the topology of a sphere
(cube, tetragedron etc.) is 4 pi (discreet version of Gauss law).
BTW, you also can define a differential curvature
for meshes which are not twice differentiable:
The differential curvature of a vertex of a mesh
is the product of the two-dimensional delta "function"
and the curvature of the vertex as defined above.
The exterior curvature is also defined for discreet meshes:
Not for vertices, but for borders:
Angle between the both neighboring polygons minus pi.
Also very simple.
Folker
This falls down though in the case where you're wanting to know the
polygons 'curvature' on a larger scale. For example, there might be
negative curvature at a vertex when you only look at its neighbors,
but severe positive curvature when you look at a larger region.
Any solutions to that?
Regards,
Andrew Chapman
Thanks.
> > How can I calculate the curvature of a vertex on a 3D triangular mesh?
> The Gaussian curvature is 2 pi minus the sum of the face angles incident
> to that vertex. Thus, the curvature of a cube vertex is [2 pi - 3(pi/2)]
> = pi/2, the curvature of a tetrahedron vertex is [2 pi - 3(pi/3)] = pi,
> and the curvature of a vertex interior to and coplanar with a face is
> zero.
Right.Quote:> Again, this makes sense only if the mesh has manifold topology at the
> vertex. That means that each of the edges inicident to the vertex of
> the triangles sharing the vertex is shared by exactly two of the
> triangles.
But also very important:
This Gaussian curvature is NOT suited for mesh simplification,
since it does not include exterior curvature.
For mesh simplification, a simple but roubust technique is
the following:
When removing a vertex, some triangles change and move
their plane. You calculate the distance of the vertex you
consider to remove to all these affected planes,
and take the largest distance.
This distance is basically the geometrical error you get
when you remove the vertex.
When having not to extrem cases (too sharp vertices),
this distance is approximately the distance of the vertex
to the new mesh where the vertex was removed.
You also could calculate this distance exactly,
getting an immediate measure of the "amount of change"
of the mesh by removing the vertex.
Folker
In other words, you suggest to reverse the sign?Quote:> ought to have negative curvature. So I think the definition should be
> 2 pi minus the sum of the angles at the vertex of the triangles
> sharing the vertex. No?
Folker
What do you exactly mean?Quote:> This falls down though in the case where you're wanting to know the
> polygons 'curvature' on a larger scale. For example, there might be
> negative curvature at a vertex when you only look at its neighbors,
> but severe positive curvature when you look at a larger region.
Folker
Oh, I didn't see that.Quote:> It is not only a question of changing your sign, but also of changing
> one of the terms--from your incorrect pi to the correct 2 pi.
Yes, maybe.Quote:> >About half of the books use one convention,
> >the rest of the books use the opposite sign convention...
> That is certainly not the case in the differential realm. In 100% of
> ...
> less than pi) have negative Gaussian curvature.,
Yes, this is the reason why the Gaussian curvature is not suitedQuote:> BTW, it is perhaps interesting to point out to the unaware that some
> apparently "curved" surfaces, such as cylinders and cones, and more
> generally all developable surfaces, have Gaussian curvature zero at
> every point where it is defined. ...
Folker
But you can have different sign conventions to a tensor, too,Quote:> Ah, but the Gaussian curvature is a SCALAR contraction of the Riemann
> curvature TENSOR. A tensor has no sign, but a non-zero scalar does.
Folker
Ian
Quote:> > Again, this makes sense only if the mesh has manifold topology at the
> > vertex. That means that each of the edges inicident to the vertex of
> > the triangles sharing the vertex is shared by exactly two of the
> > triangles.
> Right.
> But also very important:
> This Gaussian curvature is NOT suited for mesh simplification,
> since it does not include exterior curvature.
> For mesh simplification, a simple but roubust technique is
> the following:
> When removing a vertex, some triangles change and move
> their plane. You calculate the distance of the vertex you
> consider to remove to all these affected planes,
> and take the largest distance.
> This distance is basically the geometrical error you get
> when you remove the vertex.
> When having not to extrem cases (too sharp vertices),
> this distance is approximately the distance of the vertex
> to the new mesh where the vertex was removed.
> You also could calculate this distance exactly,
> getting an immediate measure of the "amount of change"
> of the mesh by removing the vertex.
> Folker
1. Approx curvature at a vertex?
Hi!
Not being a mathematician (and not even close to that), I'm stuck with
something I can't figure out myself, even not after having read all I have
about the subject.
AFAIK, A curve has a well defined curvature that applies to any point of the
curve. This property is actually related to the continuity of the curve, so
strictly speaking, a point at which the curve is not continuous does not has
a well defined curvature.
So, a (true) vertex doesn't has curvature. (true vertex=point when
continuity breaks)
Well...
For some reason (yes, I'm not really sure why I'm trying to do this :-)
I'm obsessed with the (self-invented) notion of curvature at a vertex, even
though I know that it is not defined and of course, not being defined, I
can't even think of a way to approximate it.
Imagine two consecutive circular arcs. I want to be able to measure how
much does a moving point turns around the vertex just as I can measure how
much a point turns along a curve, and I want to do so homogeneously, as a
unique concept.
I'm totally failing to do that, because the curvature along the arc is
(1/r), while the 'turn' at the vertex is an angle, so I don't know how to
treat both measurements as the same thing (and for instance, compare them).
This makes me think that I'm mixing two unrelated concepts: that of
curvature and that of the instant change of direction of a point passing
through a vertex on a piecewise curve. But somehow I feel them as being
related.
A vertex angle tells me how fast (instantly) and how much a point is
turning. Isn't this what curvature expresses? Shouldn't I be able to tell
that the curvature of a small circle is 'greater' than the turn at a flat
vertex?
(If I think of a vertex as a zero-radius circular arc, curvature there goes
inf, so this doesn't help)
TIA,
--
Fernando Cacciola
Sierra s.r.l.
www.gosierra.com
2. URL of 'the Poor Mans Renderer' (or something like that) ?
3. code for curvature of vertices on triangle mesh?
6. I will appreciate your feedback
7. Duplicate Vertices in a Vertex Table
8. nyc paris
10. Vertex normals at the Bezier control vertex
11. Approximating good texture vertices from 3d vertices
12. Defining "principal curvatures" at vertices of a polyhedron
13. How to use vertex programming (vertex shading)