Preserve shared boundaries when smooth-meshing multi-colour layers
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- computer-graphics
Research direction
Start by reviewing the smooth-meshing implementation and the discussion in PR #38, then reproduce a layer with side-by-side and corner-contacting colour regions. Trace how shared boundaries and material faces are generated. Done means adjacent regions share boundaries without gaps, overlaps, duplicate boundary faces, or non-manifold edges, while the outer silhouette remains smooth and topology tests cover both cases.
Written by the indexing model from the issue text.
Description
Problem
When a multi-head layer contains multiple colour groups, Kromacut smooth-meshes each group independently. Each group treats a shared colour boundary as its outside edge and moves its boundary vertices inward, leaving visible gaps between adjacent colours. The gap is part of the generated mesh, so it affects exports as well as the 3D preview.
Reported during PR #38: https://github.com/vycdev/Kromacut/pull/38#issuecomment-4757223435
Expected behaviour
Adjacent colour regions in the same physical layer must meet exactly, with no gaps, overlap, duplicate boundary faces, or non-manifold edges. The outer silhouette should still benefit from smooth meshing.
Intended solution
Implement colour-aware smooth topology for a whole layer:
- Build one shared boundary and vertex field from the full labelled colour grid.
- Reuse the same boundary vertices at interfaces between colour groups.
- Assign faces/materials to their colour group without moving each side of an interface independently.
- Add topology and regression tests for side-by-side and corner-contacting multi-colour regions.
Scope
This should be a proper shared-topology solution. Do not solve it by silently falling back to greedy meshing for multi-colour layers.
- Dominant language
- TypeScript
- Stars
- 290
- Forks
- 32
- Avg merge
- 6h 2m
- Merged PRs (30d)
- 7
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from vycdev/Kromacut
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 48/100
-
Experimental WebAssembly acceleration for compute-heavy algorithmsMay be free again @vycdev claimed this 78 days ago, and no pull request is open. Openenhancement
-
enhancement good first issue help wanted
Difficulty 5/5 Over a week Newbie friendliness 55/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 42/100
Similar issues
-
area:deploy task
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
wilanis/wilanis-js#1017 ·
Maintainers usually reply within 1 day
-
documentation v2
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
modelcontextprotocol/servers#5133 ·
Maintainers usually reply within 1 day
-
budget bug feature frontend good-issue medium needs-review OSCI'26 payments
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
SatyamPandey-07/WorkSphere#5990 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
lugassawan/swe-workbench#799 ·
Maintainers usually reply within 1 day
-
bug good first issue javascript
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
yukikotani231/sqlsift#326 ·
Maintainers usually reply within 1 day