Fix MTL color loading when vertices are shared across different faces #7441
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes:
A user on Discord discovered that their obj + mtl combo was not rendering correctly:
Zipped obj + mtl here
It turns out this can happen when vertices are reused between faces. Previously, when a vertex is used by a face for the first time, it adds the vertices to the
p5.Geometry
only if it has not been used in that color before. Then, when the face is added, it adds colors once per vertex, regardless of whether it is new or not. This means we might add a color to the color buffer a second time for a vertex that already exists in the buffer, pushing all subsequent colors out of sync.Now, colors are added at the same time as other vertex properties. This all-or-nothing structure will hopefully help prevent some properties from going out of sync.
PR Checklist
npm run lint
passes