4.3 KiB
4.3 KiB
cutout-axis-convention Specification
Purpose
TBD - created by archiving change standardize-cutout-z-axis. Update Purpose after archive.
Requirements
Requirement: Cutout base mesh matches the source image plane
系统 SHALL 直接在源 Image Empty 的局部 XY 平面创建 Cutout BaseShape,基础顶点 MUST 使用 z = 0,逆时针正面 MUST 朝局部 +Z,且对象放置 MUST 保持裁切区域的世界空间位置。
Scenario: Inspect a Cutout before Geometry Nodes evaluation
- WHEN 系统已从源图片裁切区域创建 Cutout Mesh,但尚未求值或复用
O Image CutoutModifier - THEN Mesh 位于对象局部 XY 平面,正面朝向与源 Image Empty 一致,且 X/Y 范围对应原裁切区域
Scenario: Evaluate an undeformed Surface
- WHEN Surface Cutout 以零厚度和零平滑求值
- THEN 求值前后的平面内坐标、正面朝向和世界空间位置保持一致,不执行轴交换或补偿旋转
Requirement: Cutout Shape nodes use the local Z axis
O Image Surface、O Image Balloon、O Image Depth Balloon 与 O Image Depth Surface SHALL 接收局部 XY 平面几何,并统一使用局部 -Z 表示从图片平面向内的方向。外层 O Image Cutout 的默认 -Z 分支 MUST 直通该原生结果。平面内 X/Y 坐标 MUST 不因 Shape 求值而互换。
Scenario: Reuse a Shape group with XY geometry
- WHEN 任一 Cutout Shape 节点组直接接收位于 XY 平面的输入 Mesh
- THEN 节点组沿 Z 轴生成 Shape,并保持输入几何的 X/Y 方向
Scenario: Build Surface or Balloon thickness
- WHEN Surface 或 Balloon 使用正 Thickness 求值
- THEN 厚度和 Balloon 高度沿局部 Z 轴展开,图片内部一侧位于负 Z 方向
Scenario: Apply depth deformation
- WHEN Depth Balloon 或 Depth Surface 使用非零 Depth Scale 求值
- THEN 深度位置在统一的 XY / Z 对象空间中计算,不依赖 X 轴中间坐标系或最终轴变换
Requirement: Cutout exposes selectable output axes
系统 SHALL 保留 Inward Axis Scene Property、Operator 参数和 O Image Cutout 节点接口。-Z MUST 为默认值并直接使用原生 XY / Z Shape 结果;选择 +X 时,外层节点组 MUST 将 Z 轴结果转换为 +X 内向对象空间,对象矩阵 MUST 执行配对补偿以保持相同世界空间形状。
Scenario: Create a Cutout from the tool
- WHEN 用户打开 Cutout 工具设置并选择任一 Shape
- THEN 工具显示并传递 Inward Axis,默认
-Z创建结果直接沿用源 Image Empty 的局部轴
Scenario: Select the positive X output
- WHEN 用户把 Inward Axis 设为
+X - THEN
O Image Cutout将原生 Z 轴 Shape 转换为+X内向的局部几何,对象矩阵同步补偿,世界空间位置和外观与默认结果一致
Scenario: Reuse a Shape subgroup directly
- WHEN 调用方绕过外层
O Image Cutout并直接复用任一 Shape 子节点组 - THEN 子节点组始终使用原生 XY / Z 坐标,不公开或模拟旧 X 轴内部约定
Requirement: Depth Surface normals match the Z-axis object space
Depth Surface 的 Object Space Normal Artifact SHALL 编码原生 Z 轴 Cutout 对象空间;不可见区域 MUST 使用局部 +Z 中性法线。默认 -Z 输出 MUST 原样使用该图片;选择 +X 输出时,Blender MUST 将其转换到配对的 +X 对象空间。
Scenario: Encode a known object-space normal
- WHEN Server 为 Depth Surface 编码已知的相机空间法线
- THEN 输出通道直接对应最终 XY / Z Cutout 对象空间,且无需 Blender 后处理即可作为 Object Space Normal 使用
Scenario: Load a Depth Surface normal image
- WHEN Blender 收到
object-normal.png并以默认-Z创建 Depth Surface 材质 - THEN 图片像素保持 Artifact 原值并以 Object Space 连接到材质
Scenario: Load a positive X Depth Surface normal image
- WHEN Blender 收到
object-normal.png并以+X创建 Depth Surface 材质 - THEN 图片通道按 Z 到 X 的配对轴变换转换一次,再以 Object Space 连接到材质
Scenario: Fill an invisible normal region
- WHEN Object Space Normal 的像素不在可见内容区域
- THEN 该像素编码局部
+Z,不会在正面产生虚假的侧向法线