C++ CullVisitor::应用(大地测量)检测到NaN,

C++ CullVisitor::应用(大地测量)检测到NaN,,c++,ruby,openscenegraph,C++,Ruby,Openscenegraph,运行OSG应用程序时,我收到以下消息: CullVisitor::apply(Geode&) detected NaN, depth=nan, center=(1.79588 1.50488 1.42179), matrix={ nan nan -nan -nan nan nan -nan -nan nan nan -nan -nan nan nan -nan -nan } 这种警告/错误意味

运行OSG应用程序时,我收到以下消息:

CullVisitor::apply(Geode&) detected NaN, 
    depth=nan, center=(1.79588 1.50488 1.42179), 
    matrix={ 
        nan nan -nan -nan 
        nan nan -nan -nan 
        nan nan -nan -nan 
        nan nan -nan -nan 
}
这种警告/错误意味着什么

提前感谢,

Rômulo

来自

我认为这是一个由于深度的问题

    RefMatrix& matrix = *getModelViewMatrix();
...
    float depth = bb.valid() ? distance(bb.center(),matrix) : 0.0f;

来自

我认为这是一个由于深度的问题

    RefMatrix& matrix = *getModelViewMatrix();
...
    float depth = bb.valid() ? distance(bb.center(),matrix) : 0.0f;

我发现并解决了这个问题

当我第一次抓取osg场景时,我的视图矩阵是NaN;从第二次开始,该矩阵已正确填充

然后我执行一个检查:如果视图矩阵无效,我将用标识矩阵替换它,如下所示:

   // if the view matrix is invalid (NaN), use the identity
    osg::ref_ptr<osg::Camera> camera = _viewer->getCamera();
    if (camera->getViewMatrix().isNaN())
        camera->setViewMatrix(osg::Matrix::identity());
//如果视图矩阵无效(NaN),请使用标识
osg::ref_ptr camera=\u viewer->getCamera();
如果(摄影机->getViewMatrix().isNaN())
摄像头->setViewMatrix(osg::Matrix::identity());

我发现并解决了这个问题

当我第一次抓取osg场景时,我的视图矩阵是NaN;从第二次开始,该矩阵已正确填充

然后我执行一个检查:如果视图矩阵无效,我将用标识矩阵替换它,如下所示:

   // if the view matrix is invalid (NaN), use the identity
    osg::ref_ptr<osg::Camera> camera = _viewer->getCamera();
    if (camera->getViewMatrix().isNaN())
        camera->setViewMatrix(osg::Matrix::identity());
//如果视图矩阵无效(NaN),请使用标识
osg::ref_ptr camera=\u viewer->getCamera();
如果(摄影机->getViewMatrix().isNaN())
摄像头->setViewMatrix(osg::Matrix::identity());

当您选择场景时?场景是否在那里初始化?我的代码中唯一的cull是_viewer->getCamera()->setComputeNearFarMode(osg::CullSettings::DO_not_COMPUTE_NEAR\u FAR);你能不能改变Don_COMPUTE_NEAR_FAR,然后用_原语再次测试类似于COMPUTE_NEAR_的东西并进行测试?Hi@CherkesgillerTural,我用这个新参数进行了测试,问题依然存在……在我下面的回答中,你可以看到你有某种深度问题,解决这个问题,我想你的问题也会在你挑选场景时得到解决?场景是否在那里初始化?我的代码中唯一的cull是_viewer->getCamera()->setComputeNearFarMode(osg::CullSettings::DO_not_COMPUTE_NEAR\u FAR);你能改变Don_COMPUTE_NEAR_FAR,然后用_原语再次测试类似于COMPUTE_NEAR_的东西并进行测试吗?Hi@CherkesgillerTural,我用这个新参数进行了测试,问题依然存在……在我下面的答案中,你可以看到你有某种深度问题,解决这个问题,我认为你的问题也会解决我能够解决这个问题,@Cherkesgiller,谢谢你的评论。我能够解决这个问题,@Cherkesgiller,谢谢你的评论。