计算机视觉图形学【免费下载链接】AnimatedDrawingsCode to accompany A Method for Animating Childrens Drawings of the Human Figure项目地址https://gitcode.com/GitHub_Trending/an/AnimatedDrawings点击查看免费下载本指南以仓库中 examples/quadruped/README.md 为核心系统讲解 AnimatedDrawings 项目中 Quadruped四足动物扩展的完整使用流程从一张儿童画开始依次完成人物标注生成、人体骨架到四足骨架的自动转换human_to_animal.py、MVC 渲染配置编写最终通过render.start()输出四足角色行走/跳舞动画视频。读完本文你将掌握四足扩展的端到端操作步骤并理解其底层关节映射、腿部验证与重配置算法以及配套的 retarget 配置原理。一、Quadruped 扩展是什么AnimatedDrawings 是一套让儿童画动起来的开源工具链其核心流程是输入一张人物简笔画 → 检测/分割/姿态估计生成角色标注char_cfg.yaml、texture.png、mask.png→ 用 BVH 动作数据驱动 2D 角色完成动画渲染。默认管线只支持两足直立的人形角色而Quadruped 扩展位于examples/quadruped/目录的目标是把这一能力延伸到四条腿的动物形态——例如马、狗、恐龙等长着四条腿的涂鸦角色。从 human_to_animal.py 的源码结构可以推断该扩展的核心思路并非训练新模型而是在标注层做一次骨架重命名 拓扑重构把人体姿态估计得到的关节hip、torso、neck、shoulder、elbow、hand 等映射为四足动物关节right_hip_f/right_knee_f/right_foot_f、right_hip_b/right_knee_b/right_foot_b等前后腿再用同一条四足 retarget 配置把 BVH 动作绑到新骨架上。整个过程只需要两个 Python 文件与一个 YAML 配置不改动渲染内核。二、整体工作流一览原始儿童画 │ python image_to_animation.py path/to/your/file ▼ 角色标注目录char_cfg.yaml texture.png mask.png bounding_box.yaml │ python human_to_animal.py path/to/your/yaml ▼ animal_config.yaml四足骨架角色配置 │ 编辑 four_legs_example.yaml将 character_cfg 指向它 ▼ render.start(./examples/config/mvc/four_legs_example.yaml) ▼ 四足角色动画视频video.gif / video.mp4下文将按照这条链路逐一展开并在关键节点给出源码级原理说明。三、第一步生成角色标注image_to_animation.py四足扩展的输入同样是一张画有人物的图片。原文档给出的启动命令是python image_to_animation.py path/to/your/file在仓库中该入口脚本位于 examples/image_to_animation.py它内部做了两件事见其第 18–22 行的调用链调用 image_to_annotations.py 中的image_to_annotations(img_fn, char_anno_dir)将图片送入本地运行的 TorchServe 服务drawn_humanoid_detector与drawn_humanoid_pose_estimator两个模型完成人物检测、分割与姿态估计调用 annotations_to_animation.py 中的annotations_to_animation(...)把标注结果整理成动画所需的角色配置。从 image_to_annotations.py 的源码可以看出该步骤会在输出目录中生成image.png原始图片副本bounding_box.yaml检测到的人物包围盒包含left / top / right / bottom四个像素坐标源码第 79–85 行直接写入该文件。仓库中的 examples/characters/char5/bounding_box.yaml 与 examples/characters/char6/bounding_box.yaml 即为其产物示例char_cfg.yaml角色配置文件包含height、width与skeleton关节列表texture.png/mask.png纹理图与分割掩码。关于char_cfg.yaml的字段examples/config/README.md 中给出了权威说明height/width是纹理与掩码的像素尺寸skeleton是关节列表每个关节含loc图像像素坐标(0,0)为左上角、name关节名、parent父关节名唯一例外是root其parent必须为null。例如 examples/characters/char6/char_cfg.yaml 中right_hip_b的parent是rootright_knee_b的parent是right_hip_b构成一条完整骨骼链。提示image_to_annotations.py依赖本地 TorchServe 服务默认地址http://localhost:8080请先确保docker_torchserve容器处于运行且健康状态否则会抛出检测失败异常源码第 52–53 行有明确校验。四、第二步人体骨架转四足骨架human_to_animal.py4.1 运行方式生成角色标注后把 human_to_animal.py 放到角色标注所在目录或确保以可访问路径执行然后运行python human_to_animal.py path/to/your/yaml原文档特别强调human_to_animal.py要么与待转换的char_cfg.yaml位于同一目录要么在输入参数中给出其文件夹路径。从脚本主入口第 379–386 行看第一个参数是角色 YAML 路径脚本内部会读取该 YAML 的height、width、skeleton三部分转换完成后在输入文件同目录下写出animal_config.yaml源码第 372–376 行output_dir os.path.dirname(human_yaml_path)并打印输出路径。4.2 关节映射表人体关节 → 四足关节转换的核心是一张关节映射表源码第 229–245 行part_mapping人体关节原骨架四足关节新骨架含义hiphip髋部torsotorso躯干neckneck颈部right_hipright_hip_b右后腿髋right_kneeright_knee_b右后腿膝right_footright_foot_b右后腿足left_hipleft_hip_b左后腿髋left_kneeleft_knee_b左后腿膝left_footleft_foot_b左后腿足right_shoulderright_hip_f右前腿髋由肩部充当right_elbowright_knee_f右前腿膝由肘部充当right_handright_foot_f右前腿足由手部充当left_shoulderleft_hip_f左前腿髋left_elbowleft_knee_f左前腿膝left_handleft_foot_f左前腿足同时四足骨架显式引入一个root关节四条腿的髋关节right_hip_f/left_hip_f/right_hip_b/left_hip_b的parent统一指向root源码第 248–253 行parent_mapping。如果原骨架没有root脚本会以hip的位置补插一个第 307–314 行。颈部位置会被重算脚本以髋→躯干方向向量作为前向参考把颈部放到躯干前方 30% 的位置第 262–271 行使四足动物的头颈比例更自然forward_vector [torso_pos[0] - hip_pos[0], torso_pos[1] - hip_pos[1]] neck_pos [torso_pos[0] - forward_vector[0] * 0.3, torso_pos[1] - forward_vector[1] * 0.3]4.3 腿部验证与自动重配置关键算法转换完成后四条腿前后各两条并不保证几何合理。脚本为此实现了validate_leg_group第 48–113 行校验函数从三个维度把关段长比例knee→foot与hip→knee的距离之比不得超过阈值膝部关节角髋、膝、足三点在膝处的夹角必须足够大腿部不能反向折叠垂直次序在图像坐标系y 轴向下中膝必须位于髋之下、足必须位于膝之下。前腿使用了更严格的标准源码第 83–88 行比例阈值由默认2.0收紧到1.5膝角阈值由150°提高到160°。未通过的腿会被送入reconfigure_leg_group第 143–215 行进行候选关节搜索以对侧已验证的腿或默认 20 像素垂直偏移为参照估算期望的膝/足位置再回到原始骨架中查找距离该期望位置 30 像素以内的关节作为替代candidate_search_for_jointtolerance 默认 30并做越界钳制validate_y_within_bounds保证关节 y 坐标不超过图像高度。整体转换入口convert_human_to_animal第 217–356 行的处理顺序是先对四组腿(hip, knee, foot)逐一验证收集通过验证的腿作为对称参照再对未通过的腿用对侧参照进行重配置。4.4 输出脚本通过自定义 YAML representer第 366–369 行避免别名引用将{height, width, skeleton}写为结构清晰、可直接被渲染管线读取的animal_config.yaml。这一步完成后你的画就长出了四条腿。五、第三步编辑 MVC 渲染配置转换得到animal_config.yaml后需要把它接入渲染管线。原文档给出的方法是编辑 examples/quadruped/four_legs_example.yaml仓库examples/config/mvc/目录下也有一份同名示例把character_cfg指向新生成的动物配置scene: ANIMATED_CHARACTERS: - character_cfg: path/to/your/new/animal/config motion_cfg: examples/config/motion/zombie.yaml retarget_cfg: examples/config/retarget/four_legs.yaml controller: MODE: video_render OUTPUT_VIDEO_PATH: ./video.gif各字段含义依据 examples/config/README.md 的权威说明scene.ANIMATED_CHARACTERS场景中的角色列表每个角色由三个配置组成——character_cfg角色配置路径即上一步生成的animal_config.yamlmotion_cfg动作配置路径指定驱动角色的 BVH 动作文件retarget_cfg重定向配置路径定义如何把 BVH 骨架动作绑定到 2D 角色骨骼上。列表中可追加多个字典实现多角色同屏。controller.MODE控制器模式。video_render表示直接渲染视频到文件interactive则打开可交互窗口此时不能与view.USE_MESA同时使用。controller.OUTPUT_VIDEO_PATH输出视频路径仅video_render模式生效。目前仅支持.gif与.mp4且透明度仅.gif可用。仓库自带的 examples/config/mvc/four_legs_example.yaml 完整示例中character_cfg直接指向了 examples/characters/char6/char_cfg.yaml——从该文件可以看出char6的角色骨架已经采用right_hip_b/right_hip_f等四足关节命名是一个预标注好的四足角色非常适合作为对照样板。六、第四步运行四足动画配置完成后用 MVC 配置路径调用渲染入口即可。原文档给出的调用方式from animated_drawings import render render.start(./examples/config/mvc/four_legs.yaml)render.start()是仓库统一的渲染入口核心实现位于 animated_drawings/render.py。它会读取基础配置 animated_drawings/mvc_base_cfg.yaml再用你提供的 MVC 配置中的字段覆盖默认值然后实例化 Model场景/ View渲染视图/ Controller视频渲染控制器三层组件完成动画输出。关于 MVC 配置的更多参数如view.WINDOW_DIMENSIONS、view.CAMERA_POS、view.USE_MESA无头渲染、scene.ADD_FLOOR地面、scene.ADD_AD_RETARGET_BVH显示原始 BVH 骨架等可查阅 examples/config/README.md 的 MVC Config File 一节。七、底层支撑four_legs.yaml 重定向配置解析四足扩展之所以一套配置通吃关键在于配套的 examples/config/retarget/four_legs.yaml。这份重定向配置把 BVH 骨架人形动作数据与四足角色骨骼桥接起来其主要结构如下char_starting_location: [-0.3, -0.2, -0.5]角色根关节的起始 xzy 位置。bvh_projection_bodypart_groups将 BVH 关节分组并指定投影平面——手臂组与腿部组使用pca自动挑选最合适的投影平面躯干组使用frontal。这是重定向器把 3D 动作投影到 2D 角色平面上的关键机制。char_bodypart_groups定义 2D 角色各部位前腿组、后腿组、躯干组的渲染先后顺序通过bvh_depth_drivers如LeftFoot、RightFoot、Hips在投影平面上的平均深度决定前后遮挡关系。char_bvh_root_offset处理 BVH 骨架的位移——用Lower Limbs下肢组的投影平面承载根偏移并以 BVH 关节链与角色关节链的长度之比作为尺度启发式将骨架平移量等比施加到 2D 角色上。char_joint_bvh_joints_mapping关节对映射表。例如left_foot_b → (LeftLeg, LeftFoot)、left_knee_b → (LeftUpLeg, LeftLeg)渲染时把角色骨骼旋转到与 BVH 关节对向量一致的方向。四条腿的膝/足关节都映射到 BVH 下肢关节实现人形动作 → 四足姿态的驱动。同时注意配套的动作配置 examples/config/motion/zombie.yamlfilepath: examples/bvh/fair1/zombie.bvh start_frame_idx: 0 end_frame_idx: 779 groundplane_joint: LeftFoot forward_perp_joint_vectors: - - LeftShoulder - RightShoulder - - LeftUpLeg - RightUpLeg scale: 0.025 up: z其中groundplane_joint: LeftFoot用于把骨架对齐到地面、up: z指定 BVH 的上方向、scale对骨架做整体缩放以适应场景尺度。原文档示例默认使用zombie动作你也可以把motion_cfg换成 examples/config/motion 下的jumping.yaml、dab.yaml等其他动作配置让四足角色做出跳跃、摆 pose 等不同表演。八、注意事项与调优建议原文档在 Notes 一节明确了两条实操要点结合源码可以进一步展开脚本位置human_to_animal.py必须与待转换 YAML 同目录或通过参数指定其所在文件夹。从源码实现看输出文件animal_config.yaml总是写入输入 YAML 所在目录与当前执行目录无关因此推荐把该脚本复制到标注输出目录中运行便于管理产物。包围盒bounding box调优原文档指出为获得最佳四足动画效果可能需要编辑image_to_animal.py中的包围盒配置。结合 image_to_annotations.py 源码第 74–85 行检测器返回的bbox会被四舍五入后直接写入bounding_box.yaml如果人物在画中的裁剪范围不理想如手腿被切、留白过大可以手动调整该文件中的left/top/right/bottom四个值再配合仓库提供的标注修正工具 examples/fixer_app 与 examples/fix_annotations.py基于 Flask 的交互式标注网页修正关节位置从而让骨架转换与腿部验证获得更合理的输入。四肢合理性由于四足骨架是由手臂当后腿参考的前腿重构而来画中人物的站姿与四肢展开程度直接决定转换质量。前腿使用了更严格的验证阈值段长比 ≤ 1.5、膝角 ≥ 160°若画面中手臂过短或折叠可能触发候选关节搜索此时留意输出日志中Reconfigured leg group: ...的提示源码第 214 行必要时重新绘制或调整标注。九、源码与示例索引为便于继续深入阅读本文涉及的仓库关键文件汇总如下四足扩展说明examples/quadruped/README.md骨架转换脚本examples/quadruped/human_to_animal.py四足 MVC 示例examples/quadruped/four_legs_example.yaml、examples/config/mvc/four_legs_example.yaml四足重定向配置examples/config/retarget/four_legs.yaml动作配置examples/config/motion/zombie.yaml预标注四足角色examples/characters/char6/char_cfg.yaml骨架已使用*_hip_f/*_hip_b四足关节命名标注生成管线examples/image_to_annotations.py、examples/annotations_to_animation.py渲染入口animated_drawings/render.py配置文件权威说明examples/config/README.md按照本指南四步操作即可让任意一幅画着人物的儿童涂鸦以四足形态在场景中行走、跳跃甚至跳僵尸舞若要进一步定制可从human_to_animal.py的关节映射表与four_legs.yaml的关节对映射入手调整映射关系以适配更多动物形态如更多腿、更长脖颈。赞分享计算机视觉图形学【免费下载链接】AnimatedDrawingsCode to accompany A Method for Animating Childrens Drawings of the Human Figure项目地址https://gitcode.com/GitHub_Trending/an/AnimatedDrawings点击查看免费下载相关推荐告别人形限制AnimatedDrawings四足动物动画化终极指南告别人形限制AnimatedDrawings四足动物动画化终极指南 想要将可爱的小狗、猫咪甚至小猪简笔画变成生动的动画吗AnimatedDrawings计算机视觉图形学非人类角色动画新纪元AnimatedDrawings四足动物动画技术全解析非人类角色动画新纪元AnimatedDrawings四足动物动画技术全解析 传统2D角色动画制作中四足动物Quadruped一直是难以攻克的难关。画师精计算机视觉图形学Buffer当作C结构体用揭秘turbo-net零拷贝内存模型的精妙设计Buffer当作C结构体用揭秘turbo net零拷贝内存模型的精妙设计 turbo net 是一个面向 Node.js 的 低层 TCP 网络库 主打 零上一篇Arduinoggwave打造低成本无线通信硬件接线与代码实现全解析下一篇FastDFS客户端连接池架构设计图示解析与性能优化指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考