Exact planes from snapped vertices, so faces that meet at a corner meet exactly
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- computer-graphics
Hướng nghiên cứu
Start with ExactBrushes.AddPlanes, ExactPlane.Quantize, and ExactJudge to trace how brush planes are created and validated; the issue also names OutputModelWeld and ChiselGeneratorSizeTests.SpiralStairsFilledDown_HaveWallsDownToTheFloor. The change requires snapping brush vertices, deriving shared face planes consistently, and revisiting integer widths and validation. Done when the spiral stairs tests pass with corners meeting exactly and the input check matches the new plane construction.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
The exact CSG rounds every plane of a brush on its own (ExactBrushes.AddPlanes -> ExactPlane.Quantize: unit normal to 2^-20, offset to 1/16384 m). Planes that meet in one point in the brush's float mesh generally no longer meet in one point after rounding. Where more than three planes meet at a corner, the exact polytope gets small extra edges near that corner.
When two of those planes are nearly parallel, the extra edge is long: about 0.03 mm / sin(angle between them). A spiral stairs rail piece is one convex brush whose twisted top is two triangles. At both ends of the fold between them, four planes meet: the end, the side and both triangles, which are only a degree or two apart. The fold then ends 1.65 mm from the corner instead of at it. That leaves a vertex in the middle of the rail's top edge.
The output weld collapses edges shorter than 1 mm (OutputModelWeld.kCollapseLength) to hide these slivers after the fact. It can't reach this one.
Failing tests that show it: ChiselGeneratorSizeTests.SpiralStairsFilledDown_HaveWallsDownToTheFloor (Up and Down).
What the literature does
Plane-based exact Booleans import a mesh by rounding its vertices to an integer grid, and derive each face's plane exactly from three of them (normal = e12 x e13, d = -v.n). Every face plane then passes exactly through its vertices, so faces meeting at a corner meet there exactly, however many there are.
- Bernstein & Fussell 2009, Fast, Exact, Linear Booleans
- Campen & Kobbelt 2010, Exact and Robust (Self-)Intersections for Polygonal Meshes
- Nehring-Wirxel, Trettner & Kobbelt 2021, Fast Exact Booleans for Iterated CSG using Octree-Embedded BSPs (arXiv 2103.02486). Section 1 describes this failure for planes made separately, and section 3.2 gives the bit bounds (27 bit positions, 55 bit normals, 256 bit arithmetic).
- Trettner, Nehring-Wirxel & Kobbelt 2022, EMBER
What it would take in Chisel
- Snap each brush's vertices to a grid in tree space, and make each face's exact plane from three of its snapped vertices. Brushes that share a face must pick the same three, by position, so their planes come out exactly opposite.
- Bit widths: a cross-product normal needs about twice the bits of the coordinates.
ExactPlaneallows normals below 2^32 and offsets below 2^56 (Int128/Int192 maths). That leaves about 15-16 bits of coordinates across a brush, about 2.8 m on the current 1/16384 m grid. So the exact maths needs wider integers, or the vertex grid needs to be coarser. - Snapping nearly-coplanar faces of different brushes onto one plane would then come from the vertex grid, not from rounding the planes.
- The
ExactJudgeinput check, which rebuilds the expected planes withQuantize, has to follow. - Once corners are exact,
OutputModelWeld's short-edge collapse may no longer be needed.
- Ngôn ngữ chính
- C#
- Star
- 135
- Fork
- 15
- Merge trung bình
- 33 phút
- Pull request đã merge (30 ngày)
- 122
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của RadicalCSG/com.chisel
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
RadicalCSG/com.chisel#221 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
RadicalCSG/com.chisel#248 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
RadicalCSG/com.chisel#245 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 28/100
RadicalCSG/com.chisel#244 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
RadicalCSG/com.chisel#241 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của RadicalCSG/com.chisel
Issue tương tự
-
area/access-management Frontend onboarding candidate :handshake:
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Altinn/altinn-auth#4941 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
aws/aws-sdk-net#4586 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
30-minutes algorithm any-language beginner-friendly c community cpp csharp data-structures go good first issue hacktoberfest help wanted kotlin learning leetcode php ruby rust swift
Độ khó 2/5 Dưới một giờ Mức phù hợp với người mới 85/100
Huerte/algo-solutions-python#211 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
QuantConnect/Lean#10047 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Windows Native Setup Fails on "Finishing setup" Due to 10s Gateway Health Check TimeoutĐang mởbug bug:behavior impact:ux-release-blocker P0
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
openclaw/openclaw#196251 · 2 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày