vid2rig / tests /test_bake.py
BladeSzaSza's picture
Upload folder using huggingface_hub
3d348c4 verified
Raw
History Blame Contribute Delete
1.06 kB
import numpy as np, pygltflib
from vid2rig.glb_exporter.bake import bake
from vid2rig.retarget.retarget import TargetAnimation
from vid2rig.tests.fixtures import make_mixamo_glb
def test_bake_adds_animation_with_minmax(tmp_path):
rig = make_mixamo_glb(tmp_path / "rig.glb")
F = 3
rot = np.tile([0, 0, 0, 1.0], (F, 1))
anim = TargetAnimation(
bone_names=["mixamorigHips", "mixamorigSpine", "mixamorigHead"],
rotations={"mixamorigSpine": rot, "mixamorigHead": rot, "mixamorigHips": rot},
hips_translation=np.array([[0, 0, 0], [0, 0.1, 0], [0, 0.2, 0.0]]), fps=30.0)
out = bake(str(rig), anim, str(tmp_path / "out.glb"))
g = pygltflib.GLTF2().load(out)
assert len(g.animations) == 1
ch_targets = {c.target.path for c in g.animations[0].channels}
assert "rotation" in ch_targets and "translation" in ch_targets
for s in g.animations[0].samplers:
acc = g.accessors[s.input]
assert acc.min is not None and acc.max is not None
assert abs(acc.max[0] - (F - 1) / 30.0) < 1e-6