You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:13:14