2017-08-31 125 views
0

我有以下消息时,我跑我的OSG应用:CullVisitor ::申请(的Geode&)检测的NaN,

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 
} 

什么这种警告/错误的手段吗?

由于提前,

罗慕洛

+0

当你剔除你的场景?场景是否已初始化? –

+0

我的代码中唯一的剔除是 _viewer-> getCamera() - > setComputeNearFarMode(osg :: CullSettings :: DO_NOT_COMPUTE_NEAR_FAR); –

+0

您可以更改DONT_COMPUTE_NEAR_FAR,并再次测试COMPUTE_NEAR_USING_PRIMITIVES之类的东西并测试它吗? –

回答

1

我发现和解决了这个问题!

当我第一次抓住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());