艾尔之光中刀光的ogre实现

模拟艾尔之光的刀光,很相似.

1 实现随时间或帧速的控制.

    参照ogre中的关于轨迹的一个实现:RibonTrail.该实现对于轨迹面片使用类似公告板的技术,面始终朝向摄像机.这不是我们需要的效果.我们需要刀光面片能够沿着刀面的方向展开.所以请忽略它的画法,使用它的整个逻辑结构即可,包括监听节点,面片颜色和宽度随时间的变化.面片使用manualobject或者vertexdata直接构造.使用manualobject记得加上setdynamic函数.我使用1d纹理.

2 插值算法.

    我一开始使用三次插值.确实非常精确.可这并不是我们想要的.因为帧率的原因,你监听节点或随时间控制刀光更新时,并不是能无限细分的.极端点你debug时甚至只能看到6-7个更新点,意味着刀光转一圈你只能看到一个六边形.三次插值能圆滑边与边的的衔接点.可是如果2点之间跨度大的话,边仍然是直的.所以我们要做的是降低精确性,反映在公式里就是降低插值次幂,改为2次插值.那就直接是个抛物线了.不要担心抛物线很奇怪,实际实现起来效果很好.实现过程中亦尝试了其他插值,发现还是简单一点比较好.

3 shader或纹理.

   实现边缘白光和刀光透明的效果.实际上可以直接使用一张1d的纹理.在一个方向上逐渐加深颜色,在尖端处流出空白即为白光.我自己这里是使用了shader寻找一个1d纹理得到阶梯值来制作白光.只是为了好玩,最近在学shader.

 

  若不想自己写,google搜索swordtrail,应该有个老外写了对应的使用面片构造刀光的代码.小改一下即可,需要自己添加.

注意随时间变化调整插值过程的速度参数可防止产生类似水波曲线.

最好绑定到2个节点,效果会好很多.

  

  一些可能的变化:

    尝试使用2d纹理,可能做出更特别的效果.

    插值算法可采用圆弧逼近.但实现比较困难,特别是当出现连续逆方向的拐点时,很难处理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值