U3D——刀光轨迹插件

来源:互联网 发布:淘宝美津浓官方旗舰店 编辑:程序博客网 时间:2024/05/03 09:40

原文地址:http://www.cnblogs.com/hellohuan/p/3478907.html

之前在PC端的游戏中实现过轨迹,算法喜闻乐见,收集每帧的控制点,对其进行B样条插值,生成D3DTriStrip。

这两天刚刚接触U3D,美术给了一个轨迹的插件,要求我扩展脚本,支持锁链刀弯刀的刀光计算,暂且命名多控制点的轨迹。

算是U3D的第一个纯技术需求吧,记录一下。

新增加了一个脚本:Hello_MeleeWeaponTrail.cs,增加了多控制点编辑,调整使用了NewCatmullRom差值算法(使用线性和NewBezier效果不好)。


刀光的效果如下:


根据前东家的规范,写了一下方案的非功能性评估:

通过Unity的stat面板并未发现与之前性能明显的区别。

不过算法会动态生成TriangleMesh,控制点越多生成顶点和三角形数会增加,影响内存显存和显卡带宽填充。

空间:

         内存

                   单个顶点position+uv+vcColor大约32字节。下表展示增加控制点增加的内存消耗。

控制点数量

2

3

n

顶点数量

2X

3X

nX

三角形数量

X

2X

(N-1)X

 

         显存:

                   顶点和索引会增加相应空间的显存。

时间:

         CPU:与控制点数量的时间复杂度为O(n)。

         GPU:随着顶点数量的增加,VS阶段带宽增加,绘制的三角形数量变多。

 

总体来讲,效率影响不是太大,场景中刀光数量不多的话,使用无大问题。

建议:

     逻辑来控制刀光的Emit,即,只在挥刀的时候置成true,其他时候是false,再精致点就要用动画的时间控制刀光的显示和隐藏,比如只有当刀砍下时有刀光,抬起时没有刀光等。

代码放附件了,供参考吧。U3D_trail.rar


0 0
原创粉丝点击