2013-10-11 44 views
0

我使用osgShadow ::陰影貼圖來創建陰影:OSG陰影的振動

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()); 

我有飛機和機場。

當我有飛機移動陰影是振動。

當我刪除飛機沒有問題。

我已經嘗試過所有可能的陰影技術,但找不到任何解決方案。

回答

0

我不知道的陰影映射是如何在OSG中使用的細節,但是從我在「普通」 OpenGL實現陰影貼圖的經驗,我有什麼可以發生一個想法:

  • 一個陰影貼圖技術中的步驟是從光源的POV渲染場景。視圖和投影矩陣被配置爲使得該通道渲染投射陰影的所有場景。

  • 如果您的場景中有移動節點,則可能是這種情況。矩陣需要重新計算。因爲場景邊界(來自光源的POV)發生了變化,這可能導致下一次通過「振動」您提到的陰影。

打算進軍讓這個場景的投射陰影的部分不改變他們的動畫相結合的體積界限。

+0

我在我的場景中有移動節點 - 飛機。當我刪除他們振動(閃爍)停止。有沒有辦法不重新計算移動物體的矩陣或重新計算它在3.秒或類似的東西? – mucisk