From 8f07bb7088d01af41aa18bc0589d22c8143ebb3b Mon Sep 17 00:00:00 2001 From: Sssnap <143506979+SS-snap@users.noreply.github.com> Date: Wed, 16 Apr 2025 17:05:50 +0800 Subject: [PATCH] Create README.md --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ac21a0b --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# ApplyPoseDiff – 姿态缓动调整节点 for ComfyUI + +A smooth pose transformation node for OpenPose keypoints in ComfyUI, supporting easing-based motion, joint locking, and dynamic action scaling. + +一个适用于 ComfyUI 的 OpenPose 姿态平滑过渡节点,支持线性缓动、比例缩放和关节锁定,帮助你生成自然连贯的动画动作。 + +--- + +## 🧠 Features | 功能特点 + +- ✅ 支持 COCO‑18 与 BODY‑25 两种姿态格式 +- ✅ 锁定肩膀与髋部关键点,避免躯干漂移 +- ✅ 手动开启末端关键点(腕、肘、膝、踝、颈部)是否参与比例计算 +- ✅ 使用线性缓动,t ∈ [0,1] 实现平滑过渡 +- ✅ 自动根据前后帧动作幅度,动态调整差值比例 +- ✅ 可选的 `scaled_pose_diff` 实现全局过渡到指定目标姿态 +- ✅ 可用于任何支持 `POSE_KEYPOINT` 的渲染节点,如 `RenderPeopleKps` + +--- + +## 🚀 Use Cases | 应用场景 + +- 姿态动画过渡平滑化 +- 机器人 / 机甲 动作调整(保持躯干刚性) +- 手工编辑后的关键帧修复 +- OpenPose 驱动的动作补间与矫正 +- 多段姿态插值动画构建 + +--- + +## 🔧 Node Inputs | 节点输入说明 + +| 输入名 | 类型 | 描述 | +|---------------------|------------------|------| +| `pose_diff` | `POSE_KEYPOINT` | 初始差值(调整后 - 原始) | +| `original_frame_pose` | `POSE_KEYPOINT` | 当前帧原始姿态 | +| `prev_original_frame_pose` | `POSE_KEYPOINT` | 上一帧原始姿态,用于动作幅度计算 | +| `scaled_pose_diff` *(可选)* | `POSE_KEYPOINT` | 全局目标位置差值(最终 - 当前),用于缓动过渡 | +| `current_step` *(可选)* | `INT` | 当前帧序号(用于插值) | +| `total_steps` *(可选)* | `INT` | 总帧数(用于插值) | +| `canvas_width` | `INT` | 输出图像宽度 | +| `canvas_height` | `INT` | 输出图像高度 | +| *末端关节开关* | `BOOLEAN` | 是否启用该关键点的比例变换(如 left_wrist、right_ankle 等) | + +--- + +## ⚙️ Internal Logic | 节点核心逻辑 + +### 1. 应用姿态差值 + +使用 `pose_diff`(初始调整差)对每帧姿态进行叠加,肩部和髋部始终应用,不做比例调整。 + +### 2. 动作幅度比例控制 + +动态计算当前帧动作与初始差值的比例: + +```python +ratio = ||cur - prev|| / (||pose_diff|| + ε)