Posted on 2011-12-01 12:02
Husman 阅读(1321)
评论(2) 编辑 收藏 引用
网上公开的描边的算法有很多,比较有代表性的是用2个pass,第一个pass在VertexShader中将顶点位置沿法线方向做些偏移,达到模型扩大的效果,第二个pass用正常方式画原来的模型。不过有些特殊模型需要做一下特殊处理,比如像野猪这样的模型背部有个隆起的面,其实其实际的顶点并非在游戏中看到的,其背上的纹理一般用了apha_test,丢弃掉无用的像素,所以在第一个pass的时候要把这种情况考虑进去,可是这个方法有个很致命的缺点就是碰到形状尖锐的物体,扩边后在尖锐的处形状会失真,所以在游戏中没有应用价值。这种方法后来被我抛弃,最好的解决办法是从像素上去考虑,而不要通过顶点变换的方式去入手。具体的技术解决方案我不在此博客上提及。现在我在我们的游戏《超神传OL》中实现的描边效果已经和Diablo3很接近了,并解决了遮挡问题。
下面两张是Diablo3描边截图:
我们游戏的选人描边:
NPC描边:
怪物描边: