Revolve: a group's faces keep one back-to-front order when a member is transparent

When any member of a revolved group had an opacity below 100% or a
blending mode, every member's surface was drawn whole in member order,
so the opaque members lost their shared depth sort and a transparent
member drew entirely over or under the others.

Every member's faces are now sorted into one order. Opaque faces go in
that order on their own. A transparent member's faces share one group
with its opacity and blending mode, and its scopes group them further,
unless a face of another member that overlaps them on the page lies
between them in the order; only there is the member split. Faces
overlap when the convex hulls of their outlines come within the 0.75 pt
seam stroke of each other. Faces that paint nothing never split a
member. Past 4,194,304 overlap tests on one group, each further face
of such a member is drawn as a part of its own.

Docs: docs/revolve.md.
This commit is contained in:
dotCooCoo
2026-11-09 20:49:13 -08:00
parent 5488e0d9e5
commit af2ee68bf3
2 changed files with 299 additions and 36 deletions
+5
View File
@@ -6,6 +6,11 @@ Select a path, compound path, type, or a group or layer of them, then choose **E
On a group or layer, every visible member sweeps about one axis, as [the help page](https://helpx.adobe.com/illustrator/desktop/special-effects-styles/create-3d-graphics/create-3d-objects.html)
describes for a group. The following rules are VectorCraft's own: type stays editable and sweeps as its glyph outlines,
the shared axis lies on the chosen edge of the members' bounds together, and each member keeps its own paint.
The faces of all members draw in one back-to-front order. The opacity and blending mode of a member, or of a group
inside the group, apply once to all its faces. Where a face of another member lies between its faces in that order
and overlaps them on the page, its faces are split there, and the opacity and blending mode apply once to each part.
Two faces overlap when the convex hulls of their outlines come within the 0.75 pt seam stroke of each other. After
4,194,304 overlap tests on one group, each further face of such a member is drawn as a part of its own.
The profile's horizontal distance from a vertical axis is its radius. **Axis side** chooses the left or right
edge of the profile's bounds; **Offset** moves the axis outward. For a cylinder made from a vertical
line, give it a nonzero offset. A vertical line at zero offset lies on the axis and has no surface.