Skip to content

Triangle mesh simplification using Quadric Error Metrics

Notifications You must be signed in to change notification settings

l1yefeng/MeshSimpl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mesh simplification implementation

- Restriction on input:
    - No non-manifold edge: will throw an exception
    - No non-manifold vertex: undefined behavior

- To-do-next:
    1. Use OOP better to improve program
        - neighborhood


Naming
    class:          Erasable
    typedef:        Indices
    member:         Faces.replaceSide(1)
    private member: _indices
    file name:      lowercase.{hpp,cpp}

Terms
    faces incident to some edge are its wings
    edges around a face are its sides
    vertices of an edge are its endpoints
    vertices of a face are its corners

=====
How was topology changed during simplification?
=====

After initial edge collapse operation on edge (d, k), two endpoints merge into
one, say k. Here it is possible that (a, d) and (a, k) two edges become coincide
which will introduce non-manifold edges in output.

This implementation eliminate non-manifold edges immediately after such
coincide edges appear. The method is *forking*, which separate the two edges
by attaching the forks of endpoints to one of the two coincide edges.

E.g., two edges ek, ed both have endpoints (k, a) but they have different wings.
First create new vertices k' and a' as forks. One of ed and ek will become
(k', a') instead of (k, a). Second, exchange one wing between the ed and ek
to consolidate the connectivity.

About

Triangle mesh simplification using Quadric Error Metrics

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages