草的交互的几种实现

这篇博客介绍了在UE4中实现草交互的三种方法。第一种方法基于顶点UV计算偏移权重,第二种利用草的Pivot进行旋转避免拉伸,第三种则依赖Mesh Distance Field,但需要特定条件。前两种方法受限于交互位置数量,而塞尔达传说的解决方案是使用VertexTextureFetch,通过纹理输入交互信息,提高了通用性和效率。
摘要由CSDN通过智能技术生成

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

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

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

草的Pivot信息是需要写进了UV2和UV3的通道里
这里写图片描述

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

前两种做法如果传入的玩家位置(或爆炸冲击波位置)数量是有限制的, 而且数量越多, s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值