Blender V4.3
#include "slim.h"
#include "doublearea.h"
#include "flip_avoiding_line_search.h"
#include "BLI_assert.h"
#include "BLI_math_base.h"
#include <vector>
#include <Eigen/Geometry>
#include <Eigen/IterativeLinearSolvers>
#include <Eigen/SVD>
#include <Eigen/SparseCholesky>

Go to the source code of this file.

Namespaces

namespace  slim
 

Functions

template<typename DerivedV , typename DerivedF >
static void slim::grad (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::SparseMatrix< typename DerivedV::Scalar > &G, bool uniform=false)
 
template<typename DerivedA , typename DerivedR , typename DerivedT , typename DerivedU , typename DerivedS , typename DerivedV >
static void slim::polar_svd (const Eigen::PlainObjectBase< DerivedA > &A, Eigen::PlainObjectBase< DerivedR > &R, Eigen::PlainObjectBase< DerivedT > &T, Eigen::PlainObjectBase< DerivedU > &U, Eigen::PlainObjectBase< DerivedS > &S, Eigen::PlainObjectBase< DerivedV > &V)
 
static void slim::compute_surface_gradient_matrix (const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &F1, const Eigen::MatrixXd &F2, Eigen::SparseMatrix< double > &D1, Eigen::SparseMatrix< double > &D2)
 
static void slim::compute_weighted_jacobians (SLIMData &s, const Eigen::MatrixXd &uv)
 
static void slim::compute_unweighted_jacobians (SLIMData &s, const Eigen::MatrixXd &uv)
 
static void slim::compute_jacobians (SLIMData &s, const Eigen::MatrixXd &uv)
 
static void slim::update_weights_and_closest_rotations (SLIMData &s, Eigen::MatrixXd &uv)
 
template<typename DerivedV , typename DerivedF >
static void slim::local_basis (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::PlainObjectBase< DerivedV > &B1, Eigen::PlainObjectBase< DerivedV > &B2, Eigen::PlainObjectBase< DerivedV > &B3)
 
static void slim::pre_calc (SLIMData &s)
 
static void slim::buildA (SLIMData &s, Eigen::SparseMatrix< double > &A)
 
static void slim::buildRhs (SLIMData &s, const Eigen::SparseMatrix< double > &At)
 
static void slim::add_soft_constraints (SLIMData &s, Eigen::SparseMatrix< double > &L)
 
static void slim::build_linear_system (SLIMData &s, Eigen::SparseMatrix< double > &L)
 
static double slim::compute_energy_with_jacobians (SLIMData &s, const Eigen::MatrixXd &Ji, Eigen::VectorXd &areas, Eigen::VectorXd &singularValues, bool gatherSingularValues)
 
static double slim::compute_soft_const_energy (SLIMData &s, Eigen::MatrixXd &V_o)
 
static double slim::compute_energy (SLIMData &s, Eigen::MatrixXd &V_new, Eigen::VectorXd &singularValues, bool gatherSingularValues)
 
static double slim::compute_energy (SLIMData &s, Eigen::MatrixXd &V_new)
 
static double slim::compute_energy (SLIMData &s, Eigen::MatrixXd &V_new, Eigen::VectorXd &singularValues)
 
void slim::slim_precompute (Eigen::MatrixXd &V, Eigen::MatrixXi &F, Eigen::MatrixXd &V_init, SLIMData &data, SLIMData::SLIM_ENERGY slim_energy, Eigen::VectorXi &b, Eigen::MatrixXd &bc, double soft_p)
 
double slim::computeGlobalScaleInvarianceFactor (Eigen::VectorXd &singularValues, Eigen::VectorXd &areas)
 
static void slim::solve_weighted_arap (SLIMData &s, Eigen::MatrixXd &uv)
 
Eigen::MatrixXd slim::slim_solve (SLIMData &data, int iter_num)