Week 12
-
Dynamic Remeshing
- Added support for float2x3 and float3x2.
-
Automatically adding sewing edges while remeshing
- Sewing edges are just loose edges in the mesh which are activated
when sewing is enabled in the simulation settings. When remeshing,
finding where to add new sewing edges is an interesting
challenge. There are two approaches that I figured out, one is
currently implemented and the other’s implementation is ongoing. - The first approach is done after splitting an edge and considering
the new vert created in the process as the starting point. For the
new vert, need to find an incident edge that has a loose edge
attached to it. For this loose edge, another edge (lets call it
“opposite edge”) must be incident on it such that it too has a
loose edge incident on it at the other vert of the edge. Finally
if the second loose edge has an edge incident on it that connects
to the new vert from the split operation, we can split “opposite
edge” and create the sewing edge between the 2 newly created
verts.
Herevert
is the vert during the split,e2
ande4
are the
loose edges which are connected by the “opposite edge”e3
. - During the implementation of the first approach, I had to make
significant changes to the split edges and flip edges functions to
support adding of extra elements in between the two stages. Both
now store more information about the MeshDiff for their operations
by appending many diffs together. Without this, certain elements
would not be considered for further analysis leading to results
that are not ideal. - The first approach has some limitations (which will be obvious
from the attached screenshots). After the first stage of splitting
of the edges, new edges are formed such that the above mentioned
criterion is met in cases where it is not wanted, so it adds many
extra sewing edges and thus making it nearly impossible for the
artist to specify which parts of the mesh should be sewn
accurately. It is almost as though the sewing edges initially
specified act as regions of the cloth (with something like a
spherical gradient) that must be sewn together instead of just
being sewing edges. The second approach should help fix this. - The second approach is done by initially marking all the edges
that are between two (or more) sewing edges and if these sewing
edges are connected by another edge as well. When an edge is
split, and it was an edge marked for this, then the new edges
should also be marked. After which a similar approach is taken as
the first approach but with some changes, the main change is that
the opposite edge is considered only if it is marked. This ensures
that the sewing edges are added between edges that were supposed
to be sewn instead of the region surrounding the initial sewing
edge.- As of right now, marking of the edges has been
implemented. Still need to figure out a way to correctly mark
edges once they are split. After which I will use these markings
when adding the sewing edges.
- As of right now, marking of the edges has been
- Sewing edges are just loose edges in the mesh which are activated
-
Debug tool
- Implemented visualizations for the sewing related parts of the
remeshing.
- Implemented visualizations for the sewing related parts of the
-
Screenshots
Plan for following week
- Fix bugs.
- Continue work on sewing with remeshing.
- Continue work on dynamic remeshing.