nanee-animation / tests /test_transforms.py
ygauravyy's picture
Upload 62 files
e3df007 verified
raw
history blame
1.78 kB
# Copyright (c) Meta Platforms, Inc. and affiliates.
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
from animated_drawings.model.transform import Transform
from animated_drawings.model.quaternions import Quaternions
import numpy as np
def test_init():
t = Transform()
for m in [t._rotate_m, t._translate_m, t._scale_m, t._local_transform, t._world_transform]:
assert np.array_equal(m, np.identity(4))
def test_set_position():
t = Transform()
t.set_position(np.array([1.0, 1.0, 1.0]))
t.set_position(np.array([2.0, 2.0, 2.0]))
t.update_transforms()
assert np.array_equal(
t._local_transform[:-1, -1], np.array([2.0, 2.0, 2.0]))
def test_offset():
t = Transform()
t.offset(np.array([1.0, 1.0, 1.0]))
t.offset(np.array([2.0, 2.0, 2.0]))
t.update_transforms()
assert np.array_equal(
t._local_transform[:-1, -1], np.array([3.0, 3.0, 3.0]))
def test_update_transforms():
t1 = Transform()
t2 = Transform()
t1.add_child(t2)
t1.set_position(np.array([3.0, 0.0, 0.0]))
t1.update_transforms()
assert np.array_equal(
t2._world_transform[:-1, -1], np.array([3.0, 0.0, 0.0]))
def test_rotate():
t = Transform()
q = Quaternions.from_euler_angles('y', np.array([-90]))
t.set_rotation(q)
t.update_transforms()
m = np.identity(4)
m[0, 0] = 0.0
m[2, 0] = 1.0
m[2, 2] = 0.0
m[0, 2] = -1.0
assert np.isclose(t._local_transform, m).all()
def test_look_at():
t = Transform()
fwd = np.array([0, 0, -1])
t.look_at(fwd)
t.update_transforms()
m = np.identity(4)
m[0, 0] = -1.0
m[2, 2] = -1.0
assert np.isclose(t._local_transform, m).all()