GSoC 2021: Continued Development on Adaptive Cloth Simulator for Blender: Weekly Reports

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.
      sewing_edge_detection
      Here vert is the vert during the split, e2 and e4 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.
  • Debug tool

    • Implemented visualizations for the sewing related parts of the
      remeshing.
  • Screenshots

Plan for following week

  • Fix bugs.
  • Continue work on sewing with remeshing.
  • Continue work on dynamic remeshing.
14 Likes