草的交互的几种实现

Posted xoyojank

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了草的交互的几种实现相关的知识,希望对你有一定的参考价值。

基本原理都差不多, 通过在VertexShader种更改顶点的位置实现, 各种做法的差别主要是偏移量的计算.

第一种做法: 根据顶点的UV来计算顶点偏移的权重, 因为草叶一般是沿纹理的一个轴方向分布的. 偏移的远近是根据顶点位置和玩家位置(寄存器传入)计算距离后得出.

第二种做法: 根据草的Pivot来计算旋转, 这种做法比直接拉伸顶点的效果要好一些, 不会出现草被拉长的情况.

草的Pivot信息是需要写进了UV2和UV3的通道里

第三种做法: 使用Mesh Distance Field求出顶点到最近碰撞面的位置, 不过只有在UE4中使用高画质和开启DistanceField之后才生效, 不是很通用和可控的做法.

前两种做法如果传入的玩家位置(或爆炸冲击波位置)数量是有限制的, 而且数量越多, shader的复杂度越高. 那比较好的做法是像赛尔达那样使用VertexTextureFetch的方式, 使用纹理输入交互单位的位置信息, 这样的话雪地和沙地也可以共享这些信息:

下面这张图就有主角和一个NPC的位置信息:

参考资料

以上是关于草的交互的几种实现的主要内容,如果未能解决你的问题,请参考以下文章

实现交互式shell的几种方式:python pty 方式升级ncsocatscript获取pty

实现交互式shell的几种方式:python pty 方式升级ncsocatscript获取pty

Android Fragment与Activity交互的几种方式

Python 与 C/C++ 交互的几种方式

Python 与 C/C++ 交互的几种方式

Python 与 C/C++ 交互的几种方式