Files
AnyImage/openspec/changes/pad-cutout-material-edges/tasks.md
nan 591e62085a feat(cutout): implement boundary padding for cutout textures
- Introduced a new `Boundary Padding` preference in the Cutout Tool with a default of 2 px and a configurable range of 1-4 px.
- Updated the Cutout client to establish inward mapping from the final Mask, sampling in a fixed direction and processing independent material RGBA and Depth.
- Enhanced the handling of RGBA and Depth during cutout operations, ensuring proper mapping and preservation of source data.
- Added tests to validate the new boundary padding functionality and its integration with existing cutout processes.

feat(geometry): remove overall mesh smoothing from geometry nodes

- Removed the `Smooth` input from several geometry node groups to eliminate unnecessary overall mesh smoothing.
- Retained `Smooth Weight` for depth nodes while removing it from Cutout and Relief Plane nodes.
- Ensured that boundary, normal, and fill smoothing behaviors remain intact and consistent.
- Updated tests and documentation to reflect the changes in node interfaces and behaviors.

feat(normals): scale tangent normals with depth

- Reused the existing `o_normal_reduction` attribute to adjust Tangent Normal strength based on the geometry's `Depth Scale`.
- Ensured that Tangent Normal strength is consistent with the geometry depth, preserving full strength for materials that do not provide the attribute.
- Updated tests to verify the correct behavior of normal strength adjustments in both Tangent and Object Space.
2026-09-15 00:40:24 +08:00

27 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 1. Boundary Padding setting
- [x] 1.1 Add the Cutout Tool `Boundary Padding` preference with default 2 px, range 1–4 px and a clamped reader.
- [x] 1.2 Capture the configured value when each Cutout operation starts so synchronous and asynchronous responses use the same operation value.
## 2. Structural inward mapping
- [x] 2.1 Build a pure array mapping from the final threshold Mask that carries each boundary-band location along one local structural inward direction to the configured internal distance.
- [x] 2.2 Bound thin-structure rays to their last same-direction internal position and leave undefined directions unchanged without donor thresholds or fallback searches.
- [x] 2.3 Cover outer outlines, holes, concave corners, thin structures, scaled target resolutions and zero bypass.
## 3. Client-side image processing
- [x] 3.1 Apply the mapping to independent material Color RGBA for synchronous and AI Cutouts while preserving the source Image and AI input.
- [x] 3.2 Apply the mapping to Depth Z and validity, reconstruct target X/Y from Metadata intrinsics, and preserve reference depth.
- [x] 3.3 Update and repack processed Color and Depth Images before object consumption while preserving byte, float/HDR and CHANNEL_PACKED interpretation and cleanup.
## 4. Raw server artifacts
- [x] 4.1 Stop enabling server-side depth edge extension for Cutout and remove the unused extension path if no real caller remains.
- [x] 4.2 Update server tests to require raw MoGe Depth and unchanged Metadata generation.
## 5. Integration and validation
- [x] 5.1 Cover preference capture, synchronous/AI parity, unmodified geometry and UV, correct target-ray Depth projection, Normal isolation, packed ownership and failure cleanup.
- [x] 5.2 Run related tests, validate OpenSpec strictly, and inspect the final diff and stale references without rebuilding node assets or extension packages.