You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
978 B
25 lines
978 B
#include <test_common.h>
|
|
#include <igl/direct_delta_mush.h>
|
|
#include <igl/adjacency_list.h>
|
|
#include <iostream>
|
|
|
|
TEST_CASE("direct_delta_mush: cube", "[igl]")
|
|
{
|
|
Eigen::MatrixXd V, W, U, Omega;
|
|
Eigen::MatrixXi F;
|
|
|
|
// Test that direct delta mush with identity transform reproduces the rest state of the mesh.
|
|
// For simplicity, testing on a cube of dimensions 1.0 x 1.0 x 1.0,
|
|
// with all vertices bound strictly to one and only one imaginary bone (weight is a column of 1s)
|
|
igl::read_triangle_mesh(test_common::data_path("cube.off"), V, F);
|
|
W = Eigen::MatrixXd::Ones(V.rows(), 1);
|
|
|
|
// Parameters such as p, lambda, kappa, alpha do not matter given identity transform
|
|
igl::direct_delta_mush_precomputation(V, F, W, 1, 1., 0.5, 0.5, Omega);
|
|
|
|
std::vector<Eigen::Affine3d, Eigen::aligned_allocator<Eigen::Affine3d>> T_list;
|
|
T_list.push_back(Eigen::Affine3d::Identity());
|
|
igl::direct_delta_mush(V, T_list, Omega, U);
|
|
|
|
test_common::assert_near(U, V, 1e-4);
|
|
}
|
|
|