使用指南
数学运算 / 仿射变换 / AffineTransform节点
数学运算 / 仿射变换 / AffineTransform 节点手册,包含 11 个节点的用途、引脚、使用场景和注意事项。
学习目标
处理数值、向量、矩阵、颜色、矩形和旋转等游戏开发高频数学数据。
覆盖范围
- 节点数量:11
- 分类路径:数学运算 / 仿射变换 / AffineTransform
典型使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
通用注意事项
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
节点索引
| 节点 | 节点 ID | 输入/输出 | 执行方式 |
|---|---|---|---|
| 拆分仿射变换 | affineTransformBreak | 1 / 6 | 立即继续 |
| 创建仿射变换 | affineTransformCreate | 7 / 2 | 立即继续 |
| 从Mat4构造仿射变换 | affineTransformFromMat4 | 1 / 1 | 立即继续 |
| 仿射变换尺寸 | affineTransformTransformSize | 2 / 1 | 立即继续 |
| 仿射变换矩形 | affineTransformTransformRect | 2 / 1 | 立即继续 |
| 仿射变换拼接 | affineTransformConcat | 2 / 1 | 立即继续 |
| 仿射变换求逆 | affineTransformInvert | 1 / 1 | 立即继续 |
| 仿射变换向量 | affineTransformTransformVec2 | 2 / 1 | 立即继续 |
| 仿射变换有向包围盒 | affineTransformTransformObb | 3 / 4 | 立即继续 |
| 获取单位仿射变换 | affineTransformGetIdentity | 0 / 1 | 立即继续 |
| 克隆仿射变换 | affineTransformClone | 2 / 2 | 立即继续 |
拆分仿射变换
拆分二维仿射变换:将仿射变换拆解为 6 个独立的数值分量。 输出字段顺序为 a / b / c / d / tx / ty,与构造器参数顺序和持久化顺序一致。 公开字段在数学意义上对应矩阵布局 |a c tx| / |b d ty| / |0 0 1|,这些输出适用于后续数值处理、调试或重新组装。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformBreak |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
matrix | 仿射变换 | 数据 | affineTransform | 要拆分的二维仿射变换 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
a | a | 数据 | number | 仿射矩阵分量 a | - | 可选 |
b | b | 数据 | number | 仿射矩阵分量 b | - | 可选 |
c | c | 数据 | number | 仿射矩阵分量 c | - | 可选 |
d | d | 数据 | number | 仿射矩阵分量 d | - | 可选 |
tx | tx | 数据 | number | 仿射矩阵平移分量 tx | - | 可选 |
ty | ty | 数据 | number | 仿射矩阵平移分量 ty | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
创建仿射变换
创建二维仿射变换:根据 6 个数值分量构造一个新的 AffineTransform 实例。 字段顺序为 a / b / c / d / tx / ty,与 AffineTransform 构造器参数顺序、默认值存储顺序和编译输出顺序保持一致,不做额外的数学排版重排。 矩阵布局为 |a c tx| / |b d ty| / |0 0 1|。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformCreate |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 | - | 可选 |
a | a | 数据 | number | 仿射矩阵分量 a(线性变换第 0 行第 0 列) | 输入框 默认值:1 | 必填 |
b | b | 数据 | number | 仿射矩阵分量 b(线性变换第 1 行第 0 列) | 输入框 默认值:0 | 必填 |
c | c | 数据 | number | 仿射矩阵分量 c(线性变换第 0 行第 1 列) | 输入框 默认值:0 | 必填 |
d | d | 数据 | number | 仿射矩阵分量 d(线性变换第 1 行第 1 列) | 输入框 默认值:1 | 必填 |
tx | tx | 数据 | number | 仿射矩阵平移分量 tx | 输入框 默认值:0 | 必填 |
ty | ty | 数据 | number | 仿射矩阵平移分量 ty | 输入框 默认值:0 | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | - | 执行流 | 执行流 | 执行完成 | - | 可选 |
matrix | 仿射变换 | 数据 | affineTransform | 构造出的二维仿射变换 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
从Mat4构造仿射变换
从 4x4 矩阵提取二维仿射变换:从 Mat4 中提取二维相关分量构造一个新的 AffineTransform。 提取规则为 a=m00, b=m01, c=m04, d=m05, tx=m12, ty=m13。 注意:该节点只提取 Mat4 的二维相关分量,不是完整的 3D → 2D 语义压缩器。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformFromMat4 |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
mat | 4x4矩阵 | 数据 | mat4 | 源 4x4 矩阵 | 可编辑控件 默认值:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
result | 结果 | 数据 | affineTransform | 提取出的二维仿射变换 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
仿射变换尺寸
应用二维仿射变换到尺寸:将仿射变换矩阵的线性部分应用到尺寸上,返回变换后的新尺寸。 注意:该节点只对宽高应用线性部分变换(a/b/c/d),tx / ty 平移不会直接参与 Size 结果计算。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformTransformSize |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
size | 尺寸 | 数据 | size | 要变换的尺寸 | - | 必填 |
t | 仿射变换 | 数据 | affineTransform | 二维仿射变换矩阵 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
result | 结果 | 数据 | size | 变换后的尺寸 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
仿射变换矩形
应用二维仿射变换到矩形:将仿射变换应用到矩形上,返回变换后区域的轴对齐包围盒(AABB)。 2D 游戏开发中用于在物体旋转后快速计算其粗略碰撞区域。输出为包含变换后所有角点的最小轴对齐矩形,而非有向包围盒。如需获取变换后的四个有向角点,请使用 AffineTransformTransformObb 节点。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformTransformRect |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
rect | 矩形 | 数据 | rect | 要变换的矩形 | - | 必填 |
t | 仿射变换 | 数据 | affineTransform | 二维仿射变换矩阵 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
result | 结果 | 数据 | rect | 变换后的轴对齐包围矩形 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
仿射变换拼接
拼接两个二维仿射变换:将两个仿射矩阵相乘,用于组合多个 2D 变换。 计算语义为”先应用 t1,再应用 t2”。例如,先平移到某个位置,再进行缩放。适合实现复杂的 2D 变换链,如相机跟随或层级变换。 返回一个新的 AffineTransform 实例,输入不会被原地修改。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformConcat |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
t1 | 变换T1 | 数据 | affineTransform | 先应用的仿射变换 T1 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
t2 | 变换T2 | 数据 | affineTransform | 后应用的仿射变换 T2 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
result | 结果 | 数据 | affineTransform | 拼接后的仿射变换 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
仿射变换求逆
求逆二维仿射变换:计算输入仿射矩阵的逆变换,用于撤销 2D 变换。 例如,将 2D 物体平移后,用逆变换可以将其恢复到原位置。注意:当线性部分不可逆(行列式为 0)时,结果可能退化为含有 Infinity 或 NaN 的非有限数值。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformInvert |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
t | 仿射变换 | 数据 | affineTransform | 要求逆的仿射变换 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
result | 结果 | 数据 | affineTransform | 逆仿射变换 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
仿射变换向量
应用二维仿射变换到向量:将仿射变换矩阵应用到二维向量上,返回变换后的新向量。 2D 游戏开发中常用于坐标转换——将一个点从本地空间转换到世界空间,或者从父节点空间转换到子节点空间。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformTransformVec2 |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
point | 点 | 数据 | vector2 | 要变换的二维向量 | 可编辑控件 默认值:[0,0] | 必填 |
t | 仿射变换 | 数据 | affineTransform | 二维仿射变换矩阵 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
result | 结果 | 数据 | vector2 | 变换后的二维向量 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
仿射变换有向包围盒
应用二维仿射变换到矩形并获取有向包围盒:将仿射变换应用到矩形上,返回变换后的四个角点(有向包围盒)。 与 TransformRect 不同,该节点返回四个独立的 Vec2 角点,而非轴对齐包围盒。适合需要精确碰撞检测或旋转后的角点坐标的场景。 flipY 用于切换四个角点的纵向布局语义,默认值为 true,与引擎默认行为一致。当 flipY = true 时,topLeft 位于矩形原点位置;当 flipY = false 时,bottomLeft 位于矩形原点位置。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformTransformObb |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
rect | 矩形 | 数据 | rect | 要变换的矩形 | - | 必填 |
t | 仿射变换 | 数据 | affineTransform | 二维仿射变换矩阵 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
flipY | 翻转Y | 数据 | boolean | 是否翻转纵向角点布局语义,默认 true 与引擎一致 | 可编辑控件 默认值:true | 可选 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
bottomLeft | 左下角 | 数据 | vector2 | 变换后的左下角点 | - | 可选 |
topLeft | 左上角 | 数据 | vector2 | 变换后的左上角点 | - | 可选 |
topRight | 右上角 | 数据 | vector2 | 变换后的右上角点 | - | 可选 |
bottomRight | 右下角 | 数据 | vector2 | 变换后的右下角点 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
获取单位仿射变换
获取单位二维仿射变换:返回不进行任何变换的二维仿射矩阵,即无变换状态。 2D 游戏开发中常用于初始化 2D 变换的起点。矩阵布局为 |1 0 0| / |0 1 0| / |0 0 1|,即 [a=1, b=0, c=0, d=1, tx=0, ty=0]。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformGetIdentity |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
无。
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
matrix | 单位仿射变换 | 数据 | affineTransform | 单位二维仿射变换 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。
克隆仿射变换
克隆二维仿射变换:创建输入仿射变换的深拷贝副本。 返回一个新的 AffineTransform 实例,内容与输入相同但引用不同。
节点信息
| 字段 | 值 |
|---|---|
| 节点 ID | affineTransformClone |
| 分类 | 数学运算 |
| 二级分类 | 仿射变换 |
| 分组 | AffineTransform |
| 是否需要等待结果 | 否 |
| 是否需要先选择目标 | 否 |
输入引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
exe | - | 执行流 | 执行流 | 执行入口 | - | 可选 |
matrix | 仿射变换 | 数据 | affineTransform | 要克隆的二维仿射变换 | 可编辑控件 默认值:[1,0,0,1,0,0] | 必填 |
输出引脚
| 引脚 ID | 名称 | 连接方式 | 值类型 | 用途 | 默认或选择 | 连接要求 |
|---|---|---|---|---|---|---|
out | - | 执行流 | 执行流 | 执行完成 | - | 可选 |
matrix | 仿射变换 | 数据 | affineTransform | 克隆出的新仿射变换 | - | 可选 |
使用场景
- 计算角色移动方向、距离和插值
- 处理 UI 尺寸、碰撞范围和颜色变化
- 组合旋转、矩阵和仿射变换
注意事项
- 适合的工作流类型:component、library、method、function、class。
- 向量和矩阵节点要确认维度匹配。
- 角度、弧度、归一化等概念在不同节点中可能有不同约束。