Unity Shader 学习15:可交互式雪地流程

本质是 利用顶点变换实现的:
通过一个俯视整个场地的正交摄像机,根据绑定在移动物体身上的粒子系统,来获取物体移动过的位置,记录到一张RenderTexture上作为轨迹图,再通过这张图来对雪地做顶点变换。

1. 由于顶点变换需要,用建模软件建一个高精度的地面,导入unity

2. 使用simple noise模拟雪地基本的凹凸起伏

很简单啦,对每个顶点的y坐标根据噪声图的黑白值进行抬起。

3. 创建粒子系统,并将其作为移动物体的子物体绑定

创建一个绑定在角色身上能跟着角色水平移动的粒子,贴图选择白色图案的(因为后面我会设置设置摄像机的背景为黑色),注意它需要旋转至面朝上(这样才能被后续俯视的摄像机拍到内容)。粒子创建后,将其layer设置为particles(用于摄像机设置其可见性)。

4. 创建记录轨迹图的摄像机

创建一个正交相机,俯视场景,让其拍摄范围与雪地范围尽量完全一致,这样才能保证记录下来的轨迹图信息映射到顶点变换时能不出现位移偏差。设置摄像机只渲染particles层,并将背景色设为黑色,这样粒子移动时就能拍摄到黑底白线的轨迹图啦。

5. 将轨迹图计入雪地凹凸的计算


遗留问题:

  1. 顶点变换只针对gpu有效,做碰撞检测的cpu不知道有变换,该如何同步?
  2. 该方法只能简单地检测到一个整体的交互,想要获得更精细的记录该怎么做?
  3. 只能对边界有限的小场景有效,该如何优化?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值