- Introduced a new design for selection rasterization that decouples the selection geometry from the image content, ensuring that the SelectionMask is independent of the source image's alpha and color. - Updated the `rasterize_selection_path` function to only accept selection paths and image dimensions, removing parameters related to source alpha and alpha thresholds. - Implemented a new approach for handling selection paths using non-zero winding fill, ensuring overlapping areas are preserved. - Enhanced performance by utilizing a scanline algorithm for rasterization, significantly reducing processing time for high-resolution images. - Updated internal documentation and added comprehensive tests to validate the new behavior and performance improvements. - Ensured backward compatibility by maintaining existing interfaces where necessary while introducing breaking changes in the selection processing logic.
4.3 KiB
4.3 KiB
1. Center Plane Origins
- 1.1 Refactor the shared Plane mesh placement so centered local vertices and the compensated object matrix preserve the source Image Empty rectangle in world space.
- 1.2 Apply the centered placement to Convert to Plane and Convert to Depth Plane without changing their UV range, selection replacement, names, or custom shape markers.
- 1.3 Add Blender tests for offset Image Empty bounds and transformed sources, verifying centered origins and unchanged world-space corners for both conversion paths.
2. Unify Plane Material Ownership
- 2.1 Remove the
Materialinterface, Group Input, and Set Material node fromO Mesh Plane, leaving generated faces on material index0. - 2.2 Remove the
Materialinterface and forwarding fromO Image Depth Plane, and simplify runtime Modifier input assignment while keeping image materials in Mesh slot0. - 2.3 Update Plane, thickness block, Depth Plane, and clipboard Plane validations to prove evaluated faces resolve the Mesh slot
0material without a Modifier material input.
3. Rebuild Depth Plane Geometry
- 3.1 Replace the single-extrude Depth Plane graph with the
O Mesh Planethickness topology positioned from the original image plane toward the positive-normal displaced face. - 3.2 Implement Z Depth sampling,
Base Plane Depthzero calibration,Depth Scale, and linear layer weighting from the fixed base to the fully displaced face. - 3.3 Clamp inward displacement before the fixed base with a nonzero safety gap, preserve unrestricted outward displacement, and retain a single displaced surface when Thickness is zero.
- 3.4 Ensure positive Thickness produces adaptive intermediate side-wall rings with a minimum useful ring count and stable UV/material indices.
4. Replace Interfaces and Defaults
- 4.1 Replace
Depth AmountwithDepth ScaleandReference DepthwithBase Plane Depthacross the node builder, runtime Modifier inputs, validators, and tests without compatibility aliases. - 4.2 Set Convert to Depth Plane and its generated job handoff to default
Subdivideto6, while keeping ordinary Plane default0and Metadata-derived hidden data unchanged. - 4.3 Add evaluated-geometry tests for zero Depth Scale thickness, fixed base vertices, zero-plane calibration, displacement direction and scale, side-ring interpolation, negative non-crossing, and outward displacement beyond the base thickness.
5. Rebuild Assets and Documentation
- 5.1 Update node interface and layout validations, then rebuild
src/anyimage/assets/O_AnyImage.blendwith the finalO Mesh PlaneandO Image Depth Planegraphs. - 5.2 Update the Plane conversion and node asset internal documentation to describe centered origins, Mesh-slot material ownership, terrain-block topology, and the final control names.
- 5.3 Run the node asset build pipeline and complete test suite, fixing any interface, topology, packaging, registration, or documentation consistency failures.
6. Correct Material Transfer and Thickness Anchor
- 6.1 Preserve the source Mesh material set in generated
O Mesh Planegeometry by joining a captured source marker, setting material index0, and deleting the source geometry. - 6.2 Anchor the fixed Depth Plane base at the original image plane so
Thicknessonly moves the displaced face and intermediate side-wall rings. - 6.3 Update evaluated-geometry tests, OpenSpec artifacts, and documentation, then rebuild the node asset and run the complete validation suite.
7. Add Depth Plane Material Normal
- 7.1 Make the Depth Plane Job request Z Depth and Tangent Normal from one shared
generate_moge2_artifacts()call, returningz_depth,depth_metadata, andtangent_normalwithout a second inference. - 7.2 Load and Pack the Tangent Normal as Non-Color data, connect it to the Depth Plane image material in Tangent Space, and clean up unused Depth and Normal images on failure.
- 7.3 Add server and Blender tests for the combined artifacts, material node connection, default
Subdividevalue, and failure cleanup; update documentation, rebuild the node asset, and run the complete validation suite. - 7.4 Set the Depth Plane image material Principled IOR to
1.2, matching Cutout, and update its response test and documentation.