Skip to content

MeshGroups.#103

Draft
Richardn2002 wants to merge 6 commits intoInochi2D:mainfrom
Richardn2002:meshgroup
Draft

MeshGroups.#103
Richardn2002 wants to merge 6 commits intoInochi2D:mainfrom
Richardn2002:meshgroup

Conversation

@Richardn2002
Copy link
Copy Markdown
Collaborator

@Richardn2002 Richardn2002 commented Sep 30, 2024

Me handing off existing work after the final merge of ECS refactor. Here provides math for implementing meshgroups.

Three parts:

  • Testing whether a point is in a triangle.
  • Efficient (but not guaranteed correct) testing of a point is in which triangle among those in a given mesh, with a bitmask constructed for the mesh.
  • Given parent mesh and parent deformation, deform child mesh. Essentially letting one parent triangle drag a child vertex that is contained in it, and this drag can be chacterized by an inverse matrix, which can be reused for efficiency.

Intensive test for bitmask included (with a .png depicting the base test case), testing that bitmask yields correct test results for points with the whole test space transforming.
However, as mentioned, this bitmask method is not guaranteed to be correct, thus it is hard to define a "good enough" test case. It is easy to construct counterexamples.
An experimental attempt on dynamic bitmask step size is commented out cause test suites do not like it. A step size of 1 should be usable in actual rendering anyways.

To load Grillo's model properly.
Three parts:
- Testing whether a point is in a triangle.
- Efficient (but not guaranteed correct) testing of a point is in which triangle among those in a given mesh, with a bitmask constructed for the mesh.
- Given parent mesh and parent deformation, deform child mesh. Essentially letting one parent triangle drag a child vertex that is contained in it, and this drag can be chacterized by an inverse matrix, which can be reused for efficiency.
Intensive test for bitmask included (with a .png depicting the base test case), testing that bitmask yields correct test results for points with the whole test space transforming.
However, as mentioned, this bitmask method is not guaranteed to be correct, thus it is hard to define a "good enough" test case. It is easy to construct counterexamples.
An experimental attempt on dynamic bitmask step size is commented out cause test suites do not like it. A step size of `1` should be usable in actual rendering anyways.
@Richardn2002 Richardn2002 changed the title Math required to implement MeshGroup. MeshGroups. Sep 30, 2024
@Richardn2002 Richardn2002 marked this pull request as draft September 30, 2024 13:50
@Richardn2002
Copy link
Copy Markdown
Collaborator Author

Out first step should be bothering Luna and try to get the 0.9 spec on meshgroups (now called "Mesh Deformer", with the legacy one named "Deformer") out.

@ArcturusEmrys
Copy link
Copy Markdown
Contributor

@Richardn2002 Experimenting with this branch I've noticed a few issues:

  • I have a few meshgroups which do NOT have a valid mesh. Inochi renders their children fine, but MeshGroups. #103 chokes on parsing them. Inochi specifically saves out a MeshGroup where the vertices key of the node is a normal list, but uvs and/or indicies are null or missing. (There doesn't appear to be a pattern as to which.) Catching the error and treating it as an empty list works.
  • Any param that deforms a MeshGroup panics Inox2D on the first frame as no DeformStack component gets made for it.

I'm working on fixes for these. When I have them done, would you prefer I PR them against your branch so they can get included into your PR, or file a separate PR (if you don't plan to continue work on this)?

@Richardn2002
Copy link
Copy Markdown
Collaborator Author

I'm working on fixes for these. When I have them done, would you prefer I PR them against your branch so they can get included into your PR, or file a separate PR (if you don't plan to continue work on this)?

@ArcturusEmrys feel free to open a new PR, I am busy with everything in life so probably I will not continue on this anytime soon...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants