Osg Shadows正在振动

时间:2013-10-11 08:51:32

标签: shadow openscenegraph

我使用osgShadow :: ShadowMap创建阴影:

shadowedScene = new osgShadow::ShadowedScene;

        shadowedScene->setReceivesShadowTraversalMask(ReceivesShadowTraversalMask);
        shadowedScene->setCastsShadowTraversalMask(CastsShadowTraversalMask);

        sm = new osgShadow::ShadowMap;
        //sm->setLight();
        int mapres = 8192;
        sm->setTextureSize(osg::Vec2s(mapres,mapres));


        shadowedScene->setShadowTechnique(sm.get());

我有飞机和机场。

当我有飞机移动时,阴影在振动。

当我移除飞机时没有问题。

我已经尝试了所有可能的阴影技术,但找不到任何解决方案。

1 个答案:

答案 0 :(得分:0)

我不知道如何在OSG中使用阴影贴图的细节,但根据我在“普通”opengl中实现阴影贴图的经验,我知道可能发生的事情:

  • 阴影贴图技术的一个步骤是从POV光源渲染场景。配置视图和投影矩阵,以便此过程渲染投射阴影的场景的所有perts。

  • 如果您的场景中有移动节点,则可能是这种情况。矩阵需要重新计算。因为场景边界(来自光源的POV)已经改变,这可能导致下一次传递给你提到的“振动”阴影。

尝试将其设置为使投射阴影的场景部分不会更改动画中的组合体积边界。