用途 anymove-rig 用于为 anymove 中的任意生物搭建一套可复用的骨架与配套资产。每只生物的全部内容放在 assets/<c>/ 下:model.glb(网格)、creature.json(取景、上色、提示词用词)、rig.json(骨架)。可从相近示例起步:assets/wolf(四足)、assets/dragon(带翼四足)、assets/spider(八足)、assets/demon(带翼和尾的双足)。
主要能力
- 网格准备:接受任意带贴图的 GLB。示例网格为 Tripo H3.1(tripo3d/h3.1/image-to-3d on fal,HD 贴图 $0.40),由一张 FLUX 3 概念图生成,要求 3/4 视角、中性背景、全身入镜、四肢分开。文档建议让每个肢体可清晰分辨,避免火焰、烟雾、披风、武器和长发遮挡关节。
- 朝向、缩放与落地:在 creature.json 的 prep 中填写 length_m、rotz_deg、axis(y 为鼻到尾,x 为跨度大于长度如蜘蛛腿展,z 为高个双足)。运行 tools/prep.sh <c> 生成 assets/<c>/prep/static.blend、verts.npy 和带 10cm 网格的 views.png(侧、前、顶)。检查侧视头部在右、脚在 z=0、前视双脚水平;Tripo 的 align_image 可能留下几度偏转,需调整 rotz_deg(示例中 demon 用了 -73 而非 -90)。方向不明时可运行 blender -b -P blender/inspect_mesh.py -- assets/<c>/model.glb runs/<c>/inspect 查看四视图。
- 骨架定义 rig.json:单位为米,生物面向 -Y,左侧为 +X,Z 向上,地面 z=0。joints 为名称到 [x,y,z];除显式提供 _R 外,_L 关节会自动镜像(x 取反),不对称网格需两边都写(如龙翼)。bones 为 [名称, 头关节, 尾关节, 父骨骼],第一根为可自由转向和移动的根骨骼,_L 骨骼同样镜像。应在视频需要控制的位置放关节:爪尖、翼尖、尾节(长尾 6 节)、可张嘴的下颌。limits_deg 按骨骼名或去掉 _L/R 的茎名定义 [[x lo,x hi],[y lo,y hi],[z lo,z hi]];局部 X 为弯曲轴,Y 沿骨骼(扭转,脊柱和腿小、±8–20,手臂可到 ±40),Z 为侧摆。限制既塑造训练姿态也影响拟合。关节应放在肢体内部枢轴处(肘在弯折处而非皮肤上);腿取侧视与前视中心线,翼的腕与指尖放在膜边缘。每次修改后运行 tools/prep.sh <c> 重绘带关节和骨骼的 views.png,运行 tools/rig.sh <c> preview 在网格透视图上预览 joints{side,front,top}.png。
- 构建、蒙皮、上色、渲染参考:在 creature.json 的 paint 中按肢体分组,每组一种颜色并列出覆盖的骨骼,左右不同色且颜色差异大(粉 #F53CD1、蓝 #2F6BFF、黄 #FFD21F、青 #19D3E0、橙 #FF7A1A、绿 #2BD94A、紫 #9B4DFF、红 #FF2B2B)。feet 设为爪或脚关节(同步评分使用)。运行 tools/rig.sh <c> 生成 assets/<c>/rigged/{rigged.blend, rig_info.json, testpose_*.png} 与 runs/<c>/ref/ref.png。build_rig.py 先合并接缝顶点(Tripo 在每条贴图接缝处拆分网格,跳过会让大腿弯曲时裂开),再用 Blender 自动权重蒙皮、平滑并限制每顶点 4 骨骼。检查 testpose_front.png 与 testpose_side.png,确认弯曲肢体完整、只有上色部分移动。
- 双机位取景 creature.json 的 layout:W_FRONT、W_SIDE(像素宽,合计 1280;长窄四足可用 420+860,宽体用 640+640)、M_PER_PX(米/像素)、GROUND_V(720 行画面中地面的像素行)。最大姿态须在两视图内留边:高度约低于 GROUND_V × M_PER_PX × 0.85,宽度低于 W_FRONT × M_PER_PX,长度低于 W_SIDE × M_PER_PX。修改后重跑 tools/rig.sh <c> 并查看 runs/<c>/ref/ref.png:全身、双视图、中间深色分隔、不触边。
- 提示词用词:creature.json 中还有 name、noun、describe、colour_code、count、flank、limbs,tools/make_prompt.py(anymove-film)据此生成所有提示词。camera 字段 {"cam":"-5.4,-6.0,1.4","target":"0,-0.3,1.5","lens":32} 是 tools/capture.sh 渲染每个动作所用的 3/4 视角;不填则沿用 wolf 的设置。
适用场景 适合在影视化生物动作生成前,为单只生物建立可检查、可复用、可预览的 rig 资产,并统一取景与提示词。
限制与已知失败模式 腿弯时大腿撕裂或张口:接缝顶点未合并(网格非 build_rig.py 产出)或关节在肢体外。肢体只涂一半:paint 组漏骨或权重溢出到身体,需移动关节重建。骨架弯错方向:骨骼局部 X 非弯曲轴,应让同一肢体骨骼共面。自动绑定(UniRig)可替代手工摆放,但其安装会从 GitHub 拉取预编译 flash-attn 轮子。