Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/softbody/src/admmpd_solver.cpp')
-rw-r--r--extern/softbody/src/admmpd_solver.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/extern/softbody/src/admmpd_solver.cpp b/extern/softbody/src/admmpd_solver.cpp
index 17bd8c7d008..5f81c9c565c 100644
--- a/extern/softbody/src/admmpd_solver.cpp
+++ b/extern/softbody/src/admmpd_solver.cpp
@@ -49,7 +49,8 @@ bool Solver::init(
int Solver::solve(
const Options *options,
- SolverData *data)
+ SolverData *data,
+ Collision *collision)
{
BLI_assert(data != NULL);
BLI_assert(options != NULL);
@@ -71,7 +72,7 @@ int Solver::solve(
solve_local_step(options,data);
// Perform collision detection and linearization
- update_constraints(options,data);
+ update_constraints(options,data,collision);
// Solve Ax=b s.t. Kx=l
data->b.noalias() = data->M_xbar + data->DtW2*(data->z-data->u);
@@ -152,18 +153,24 @@ void Solver::solve_local_step(
void Solver::update_constraints(
const Options *options,
- SolverData *data)
+ SolverData *data,
+ Collision *collision)
{
BLI_assert(data != NULL);
BLI_assert(options != NULL);
+ if (collision==NULL)
+ return;
+
+ collision->detect(&data->x_start, &data->x);
+
std::vector<double> l_coeffs;
std::vector<Eigen::Triplet<double> > trips_x;
std::vector<Eigen::Triplet<double> > trips_y;
std::vector<Eigen::Triplet<double> > trips_z;
// TODO collision detection
-// FloorCollider().jacobian(
+// collision->jacobian(
// &data->x,
// &trips_x,
// &trips_y,