使用FCL库对OBJ网格模型执行距离查询时出现栈溢出问题
FCL库距离查询栈溢出问题求助
我正在学习使用Flexible Collision Detection(FCL)库,按照官方教程编写代码,尝试对OBJ格式的222立方体网格模型执行距离查询时,调用distance(obj0, obj1, request, result)函数出现0xC00000FD: Stack overflow错误。调用栈中出现大量distanceRecurse递归调用,对比类似GitHub代码未发现差异,附上代码及相关信息,恳请解决建议。
代码示例
#include <iostream> #include "fcl/math/bv/utility.h" #include "fcl/narrowphase/collision.h" #include "fcl/narrowphase/detail/gjk_solver_indep.h" #include "fcl/narrowphase/detail/gjk_solver_libccd.h" #include "fcl/narrowphase/detail/traversal/collision_node.h" #include "fcl/narrowphase/continuous_collision.h" #include "corecrt_math_defines.h" #include "test_fcl_utility.h" #include "fcl_resources/config.h" using namespace std; using namespace fcl; using namespace Eigen; int main() { std::vector<fcl::Vector3f> p1, p2; std::vector<Triangle> t1, t2; fcl::test::loadOBJFile("OBJModel/cubic1.obj", p1, t1); fcl::test::loadOBJFile("OBJModel/cubic1.obj", p2, t2); typedef BVHModel<OBBRSSf> Model; shared_ptr<Model> arm0 = make_shared<Model>(); shared_ptr<Model> arm1 = make_shared<Model>(); arm0->beginModel(); arm0->addSubModel(p1, t1); arm0->endModel(); arm1->beginModel(); arm1->addSubModel(p2, t2); arm1->endModel(); Vector3f T0 = Vector3f(3.,3,3); Vector3f T1; T1 << 3., 0, 0; Transform3f tf0 = Transform3f::Identity(); tf0.translation() = T0; Transform3f tf1 = Transform3f::Identity(); tf1.translation() = T1; CollisionObjectf* obj0 = new CollisionObjectf(arm0, tf0); CollisionObjectf* obj1 = new CollisionObjectf(arm1, tf1); // set the distance request structure, here we just use the default setting DistanceRequestf request; // result will be returned via the collision result structure DistanceResultf result; // perform distance test distance(obj0, obj1, request, result); cout << result.min_distance << endl; }
错误信息
Problem occured 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x0000002DD6403F70)。
相关截图说明
- 调用栈:显示调用链中存在大量重复的
distanceRecurse递归调用,栈深度超出系统限制 - 递归函数:展示
distanceRecurse函数的实现逻辑,确认递归过程未正确终止
内容的提问来源于stack exchange,提问作者Zerox
相关产品推荐
相关产品推荐

