0

我正在使用 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());

我有飞机和机场。

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

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

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

4

1 回答 1

0

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

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

  • 如果您的场景中有移动节点,则可能是这种情况。矩阵需要重新计算。随着场景边界(从光源的 POV)发生变化,这可能会导致下一次传递到您提到的“振动”阴影。

尽量做到这一点,以便您的场景中投射阴影的部分不会改变它们在动画中的组合体积边界。

于 2013-10-23T08:30:25.903 回答