- Introduced `test_edge_depth.py` to validate the functionality of edge depth extension, ensuring core alpha preservation, proper depth handling, and edge padding behavior. - Created `test_empty_image_edits.py` to verify the behavior of image edits in Blender, focusing on shared edits, preservation of image properties, and handling of failed operations. - Developed `test_material_view_adaptation.py` to test material adaptation preferences, ensuring color space and alpha settings are correctly applied and preserved across various scenarios.
5.2 KiB
5.2 KiB
ADDED Requirements
Requirement: Preferences expose material view adaptation
AnyImage SHALL 在 Preferences 的 Shading 分组提供 Adapt to Scene View Transform 布尔选项,默认关闭。扩展设置及读取入口 SHALL 位于 preferences.py,并通过 addon_preferences() 读取。
Scenario: Preferences use the default
- WHEN 用户尚未设置该选项或读取不到扩展偏好
- THEN 材质颜色贴图 SHALL 使用关闭适配的行为
Requirement: Material color space determines alpha presentation
开启适配时,AnyImage SHALL 按当前场景 View Transform 选择既有映射中的 inverse 颜色空间,并使用 STRAIGHT。关闭适配时 SHALL 使用 sRGB + PREMUL。实际回退为 sRGB 时 SHALL 使用 PREMUL,并保持 Preferences 中的适配开关原值。
Scenario: A supported view is adapted
- WHEN 适配开启,当前场景为 AgX,且
AgX Base sRGB可用 - THEN 材质 Color Image SHALL 使用
AgX Base sRGB+ STRAIGHT
Scenario: Other mapped views are adapted
- WHEN 适配开启,场景使用 ACES 1.3、ACES 2.0、Filmic 或 Khronos PBR Neutral,且对应空间可用
- THEN Color Image SHALL 分别使用
ACES 1.3 sRGB、ACES 2.0 sRGB、Filmic sRGB或Khronos PBR Neutral sRGB - AND Alpha 模式 SHALL 为 STRAIGHT
Scenario: Adaptation is disabled
- WHEN 适配关闭,创建任意受支持入口的材质
- THEN Color Image SHALL 使用 sRGB + PREMUL
Scenario: The scene resolves to sRGB
- WHEN 适配开启,但场景为 Standard、视图未匹配、场景不可用或 inverse 空间不被支持
- THEN Color Image SHALL 使用 sRGB + PREMUL
Scenario: The fallback color space is unavailable
- WHEN 所需颜色空间及 sRGB 均无法应用
- THEN 配置 SHALL 明确报错并保留贴图之前的有效配置
- AND Preferences 中的适配开关 SHALL 保持原值
Requirement: Material entry points apply the same policy
AnyImage SHALL 在 Plane、Depth Plane、Cutout 和剪贴板 Mesh 材质创建时统一配置 Color Image。最终模式 SHALL 在后续绑定及交付步骤中保留。Depth 与 Normal SHALL 保留各自的数据解释约定。
Scenario: A material is created from an edited color result
- WHEN 一个 PREMUL 编辑结果进入开启适配的 inverse 材质
- THEN 最终材质 Color Image SHALL 为 STRAIGHT
- AND 材质交付后 SHALL 保留该模式
Scenario: Shadeless material is created
- WHEN 用户通过支持 Shadeless 的入口创建材质
- THEN Color Image SHALL 应用相同颜色空间与 Alpha 配对策略
Requirement: Configuration preserves business pixels and source ownership
材质 Color 配置 SHALL 保留原有业务 RGB、Alpha 和完全透明区域 RGB,并在 Pack、保存重载和再次编辑后保持可读取。配置 SHALL 作用于材质专用 Color Image 或独立 Color 副本。
Scenario: The source image has other users
- WHEN 源 Image 同时被其他对象引用
- THEN 配置 SHALL 作用于独立 Color 结果
- AND 原 Image 的颜色空间、Alpha 模式和业务像素 SHALL 保持原值
Scenario: A color result is packed and reopened
- WHEN byte、float、generated、dirty 或 packed 来源的 Color 完成配置并保存重载
- THEN 业务 RGB/Alpha SHALL 在既有编码精度内保留
- AND 结果 SHALL 保持所选颜色空间和 Alpha 模式
Requirement: Preferences exclusively control material adaptation
Preferences SHALL 是适配开关的唯一控制来源。新建材质 SHALL 读取当前偏好;已创建的材质颜色贴图 SHALL 保留原配置。创建操作和颜色空间解析 SHALL 保持偏好值。
Scenario: The preference changes
- WHEN 用户在 Preferences 开启或关闭适配
- THEN AnyImage 已创建的材质颜色贴图 SHALL 保持原颜色空间、Alpha 模式和像素
- AND 后续新建材质 SHALL 使用新的偏好设置
Scenario: A new material shares its source with an existing material
- WHEN 切换偏好后,使用已被现有材质引用的源 Image 创建新材质
- THEN 新材质 SHALL 使用独立 Color Image 并应用当前偏好
- AND 已有材质的贴图及其配置 SHALL 保持原值
Scenario: A material is created or an inverse space is unavailable
- WHEN 创建材质或颜色空间解析发生回退
- THEN Preferences 中的适配开关 SHALL 保持操作前的值
Requirement: Adaptation affects only material color textures
本选项 SHALL 仅配置 AnyImage 材质的 Color 贴图。Empty、普通图片编辑结果、Depth、Normal 和非目标材质 SHALL 保持原有行为与数据。
Scenario: A material color image is shared with an Empty
- WHEN 新建材质的源 Color Image 同时被 Empty 引用
- THEN 系统 SHALL 为材质 Color 创建独立副本并重新绑定目标节点
- AND Empty 引用的原 Image 的颜色空间、Alpha 模式与业务像素 SHALL 保持原值
Scenario: Ordinary image editing runs with adaptation enabled
- WHEN 开启适配后执行 Mask、Frame、Rectify 或图片编辑 Job
- THEN 编辑结果 SHALL 沿用各自已有颜色空间与 Alpha 规则