in "compute()" there is a loop on "executeEdgeContraction" that can remove elements from the queue, but the loop's condition doesn't check whether the queue is empty
The reason I ask is I have tried this on a surface mesh of a car which is attached. At first it just sat on "Filling Holes" indefinitely then I removed this operation and recompiled and it will now decompose the geometry but in to a single convex hull.
When using bounding-convex-decomposition this assertion fails:
bounding-convex-decomposition: /usr/include/eigen3/Eigen/src/Core/DenseBase.h:257: void Eigen::DenseBase::resize(Eigen::Index, Eigen::Index) [with Derived = Eigen::Block<Eigen::Diagonal<Eigen::Matrix<double, 3, 3>, 0>, -1, 1, false>; Eigen::Index = long int]: Assertion `rows == this->rows() && cols == this->cols() && "DenseBase::resize() does not actually allow one to resize."' failed.
I tracked the error down to the last line in VoxelSubset::ComputePrincipalAxes within SegmenterDownsampling.cpp, in case the svd contains singular values which are 0. Here svd.singularValues() returns all singular values including zeros while the left hand side only wants to assign the non-zero elements due to "head(svd.nonzeroSingularValues())". Removing the .head(...) part from the assignment solved the assertion error.
Hello, I attended your presentation at the RSS Workshop and I am interested in using this for model simplification for ROS. I am also interested in the items below listed in the readme but the links appear to be broken.
The assertion 'rows() == other.rows()' fails in Debug mode inside Decimator::solveConstrainedMinimizationInequalities.
This always happens, for instance in the first test case:
test 1
Start 1: testBoundingmeshTorus
1: Test command: Debug/boundingmesh "-v" "100" "examples/torus/torus.off" "Debug/torus_decimated.off"
1: Test timeout computed to be: 9.99988e+06
1: boundingmesh: /usr/include/eigen3/Eigen/src/Core/Assign.h:505: Derived& Eigen::DenseBase::lazyAssign(const Eigen::DenseBase&) [with OtherDerived = Eigen::Matrix<double, -0x00000000000000001, -0x00000000000000001>, Derived = Eigen::Matrix<double, -0x00000000000000001, 1>]: Assertion `rows() == other.rows() && cols() == other.cols()' failed.
1/6 Test # 1: testBoundingmeshTorus ...................***Exception: Other 0.18 sec
test 2
I would like to use the bounding-mesh core library as an optional dependency and would like to let the user of my application the choice to install the boundingmesh library.
Is there any reason not to provide an installation script for the core library and only installing the binaries ? If not, I can PR the cmake script that I am currently using to install it.
When working with a set of meshes I found that one could not be convexly decomposed due to the above assertion in Mesh.cpp, line 134.
After a quick look I concluded that the assertion should not be really necessary as it only tests if a point was newly added to the set and otherwise a pointer to the already existing point would be returned. And indeed removing the assertion allowed to process the mesh and resulted in a decomposition which looks reasonable in Meshlab.