用Ogre生成天龙八部的lightmap和minimap的简单方法

来源:互联网 发布:莱阳螳螂拳淘宝 编辑:程序博客网 时间:2024/05/25 16:37

自从在一家创业小公司当了客户端主程以后,就忙的没有时间写博客了,整个公司没有一个人有完整的项目经验,所有一切都在摸索中前进,但初生牛犊不怕虎,项目还算进展顺利。但我始终认为,安静下来总结整理一下工作心得是必要的,可惜这个愿望恐怕得等到这个项目忙完以后。

 

周末有点时间,还是可以抽空随便写点东西。

 

lightmap的重要性不用多说,没必要所有阴影都动态去渲染,那些一辈子也不会动的静态物体,贴一张lightmap就行了,可惜Ogre只提供动态阴影给我们,帮人也不帮到底。

 

如何生成天龙八部一样lightmap,如果你去百度一下,他们会告诉你各种方法,什么光线追踪,shader,之类

 

以上都是告诉你,自己去产生一个阴影。但是Ogre已经帮我们产生了动态阴影,我们就没必要再自己去生成阴影,

 

只要用动态阴影的渲染一张静态阴影图,保存下来不就行了么。

 

那么如何用Ogre的动态阴影去产生一张静态的阴影图呢?

 

1)先学会渲染一张minimap的缩略图,缩略图大家都应该会吧,创建一个垂直俯瞰的摄像机,平行投影拍一张就是

 

2)改进minimap,让垂直俯瞰的摄像机的视口只渲染地形队列。不渲染其他队列

这样拍出来的minimap就只有阴影和地形纹理混合后效果了

   Ogre::RenderQueueInvocationSequence* rqis =
    Ogre::Root::getSingleton().createRenderQueueInvocationSequence("Lightmap maker");
   Ogre::RenderQueueInvocation* rqi =
    rqis->add(Ogre::RENDER_QUEUE_WORLD_GEOMETRY_1, "World Geometry");
   viewport->setRenderQueueInvocationSequenceName("Lightmap maker");

 

3)再改进一下,把地形材质设置为BaseWhite,全白,那么minimap就变成了lightmap了。

 

4)Ogre的阴影并不好用,所以你需要优化,怎么优化,或者用shader实现,以后再写。

 

//////////这是动态阴影的图片、、、、、、、、、、、、、、、、、、、、、、、、、、

 

//////////////////////////这是贴上lightmap的图片

./////////////这是阴影图、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

 

附上代码,看看思路就好!

 

原创文章,转载请注明,谢谢!

原创粉丝点击