3.0 KiB
3.0 KiB
1. Internal attribute naming and wildcard cleanup
- 1.1 Rename
CUT_ATTRIBUTEfrom.o_anyimage_depth_cutto_o_anyimage_depth_cutand updatedepth_surface.py,image_depth_panorama.py, and asset checks. - 1.2 Replace the internal split-marker removal path with one wildcard
Remove Named Attributematching_o_*before each depth surface output. - 1.3 Update
tests/tools/nodes/test_temporary_attributes.py,test_depth_surface_split.py, andtools/nodes/check.pyto assert the new prefix and remove stale.o_anyimage_*expectations.
2. Reuse the projected outline field
- 2.1 Change
build_volume_fields,original_boundary_field, andsmooth_cut_boundaryto accept an already-evaluated boundary field instead of creating their ownedge_boundary_field. - 2.2 In
_build_depth_surface, compute the post-cleanup outline once and pass it to projection-time consumers and boundary smoothing. - 2.3 Add a node-count or evaluation-equivalence test proving the projected outline consumers share one field on the same topology.
3. Derive center from shared low-frequency fields
- 3.1 Restructure
build_volume_fieldsandbuild_front_fieldssodepth_slowandprofile_sloware computed once with the existing blur settings. - 3.2 Replace the direct
blur(depth - profile)center computation withdepth_slow - profile_slow. - 3.3 Add a regression test comparing derived center values and Balloon geometry to the previous behavior within floating-point tolerance.
4. Use triangle-only strip cleanup in Depth Cutout
- 4.1 Split
_remove_strip_facesor add a triangle-only helper so quad cleanup nodes are built only for non-triangle callers. - 4.2 Update
split_depth_surfacecallers soO Image Depth Cutoutuses the triangle-only path while Depth Plane and Depth Panorama keep the existing quad path. - 4.3 Update strip cleanup tests to cover both paths and verify Depth Cutout output is unchanged.
5. Short-circuit zero-thickness branches
- 5.1 In
image_cutout.py, gate_build_balloonand_build_shellso thickness below the existing zero threshold returns the original surface before extrusion or Repeat. - 5.2 In
image_depth_cutout.py, return the projected front surface when the selected thickness is zero, and only buildthicken_depth_surfaceplus shell field sampling for positive thickness. - 5.3 Add tests verifying zero-thickness modes produce the single surface, preserve UV/public attributes, and emit no thickness-related node warnings.
6. Rebuild assets and run regression
- 6.1 Run the focused Cutout and Depth Cutout test files and fix any behavioral differences.
- 6.2 Run
uv run node-group buildto rebuild and validateO_AnyImage.blend. - 6.3 Run the full
uv run pytestsuite and confirm normal exit with no new expected failures. - 6.4 Review
git diff --checkand the final node/attribute inventory to confirm no stale.o_anyimage_*references remain.