type
status
date
slug
summary
tags
category
icon
password
主要讲了Dead Zone的生成切换,以及相关攻击特效。
目标
- 体现死域的威胁感
- 此区域对玩家有威胁感
- 和其他区域有鲜明的对比
- 区域内除了有乱长的根茎、尖刺外,还要强调恢复过程
- 实时性
- 场景区域转换最好是实时的
- 除了在过场动画中有实时改变,游玩时角色行为也会触发转换
- 通过VFX讲好Rot(腐灵)故事(表现、设定等)
- Kena拥有控制Rot的能力后,相关技能会触发场景转换
原型1展示
第一个prototype是基于物理的,dead zone效果是通过场景中碰撞体和相关模型展现的。
这个原型效果实际上是在可用级别,但是从设计考虑毙掉了。
简单来说,就是通过物理系统进行消除dead zone的操作,由此进行区域转换,还是很好理解的。
原型2展示
通过一张RenderTexture对Rot影响范围做一个遮罩,其他材质采样这张RT来进行相关变化。
原型2的问题在于dead zone内的模型将顶点垂直向下推入到terrain中,这会出现一些artifact。
此外,因为是实时移动顶点以贴近RT范围的方法,所以这需要Mesh的顶点数较多,贴近地表的植被也需要被取代掉。
同时,碰撞体也比较难做,因为并不想根据模型区域动态修改碰撞体形状。这个版本同样基于碰撞,角色攻击将地形上dead zone的碰撞关闭,以此更新RT。
碰撞体的方案也会导致navmesh相关的问题。
最后可以看到这个版本dead zone的清除不是完全实时的。
dead zone消失后生长出来的蓝色、紫色的花都是在镜头黑一下之后,播放动画展现的。
构建DeadZone引擎
- Landscape - terrain的基本层级
- Foliage - 植被叶子的生成和清除
- Dead Zone Meshes - 更大的dead zone网格
- Lighting and Ambience - 光照、环境光
Landscape
分为两层,UE中层级勾选
No Weight-Blend
。DeadMask用于使基本地形展现腐败的样子。
Harmful Deadzone 指示玩家在范围内减速并掉血。
- DeadMask降低baseColor的对比度,增加一点光滑度。
- 不同的tiled map覆盖在基本地形上,使边缘更加清楚一点。
- 修改了物理材质,这样可以判断玩家是否站在上面。
清除dead zone
画一张从上向下的RT。
R通道为干净状态的mask,用于标记哪些区域被清理(状态转换)了,这个值也可以用于制作渐变:
补充:实际上是两个RT,用类似于级联阴影的方式进行分级,近处的精度高,远处的用于远景保持状态。
与级联阴影一样,RT保证贴近到像素以避免artifact。
缺点是没有办法进行垂直高度的分级,但在实际使用中影响不大。
Foliage
地表植物(蕨类等)增加场景的丰富程度和纵深感。使用UE自带的Instanced Foliage来放置和渲染植物资产。
为了适应Deadzone的切换,每一个植物资产上有两种树叶类型,也就有两种材质方便切换。
本来想做成通过一个property(类似于一个float)来在一个shader上实现两种效果,但这比想象的更麻烦:增加shader复杂度、传入property的范围很难控制,应用范围狭窄(只在转换中的区域效果好)。因此在这里做了一个权衡,直接用了两套材质球。
这里同样通过RT的R通道来判断切换区域。
有些mesh在切换后消失了,这是在vertex shader中进行了缩放。
这会导致植物密度进行了改变,气氛也有修改(毕竟有模型隐藏掉了)。
所以添加了一个B通道用于其它类型的植被的生长。
添加一个新的通道,是为了想让🌼的生长比起landspace切换更慢一点。
这也会让玩家更明显的体会到landspace切换后,对比度的变化,从而让场景更加丰富、富有活力。
这有个很明显的问题,在区域内外,永远都存在两套植被资源(一套显示,一套scale为0隐藏),他们尝试写了一些代码去干掉instanced植被scale为0的mesh,不过没时间去调了,所以就仅保证效果正确,起码scale是0的应该是会被cull掉。
G通道用在另一个功能:过度生长上
过度生长会让植被对比度更高(更鲜艳了!),会让植被长得更大。这会让场景变得更具有动画感。
最终结果:
可以看到B通道会比R通道更慢一些,而G通道是不会保留的。
Deadzone Meshes
这些mesh在dead zone中生长,阻挡玩家步伐,切换区域状态后可以正常通行。
这些mesh使用蓝图而不是instanced foliage,原因是不想采样RT,只修改碰撞体就行,另外清理过程速度很快,所以没太大必要,够用。(有性能问题)
mesh消失就是基于噪声的溶解,添加了一些粒子特效、扭曲等丰富最终效果。
一些植被溶解成了另一种材质。
但有性能问题:
主意这是per primitive设置的,也就是一个mesh上有多个材质球,给不同的data是做不到的。因此如果想要达到这样的效果,就退回到蓝图版本。
Lighting and Ambience
科娜全实时光,通过Custom post-process volumes控制不同区域的氛围。
- lighting & fog
- 制作了预制(方便切换,方便版本管理)
- 通过toggle切换污染前后的不同氛围
Rot Abilities
腐灵技能
目标
- 腐灵能被收集
- 在区域清理时能够发挥作用
腐灵的制作包含这些:
- 动画mesh
- Niagara粒子
动画mesh方便,制作了lowpoly的mesh跟随动画曲线,一般技能中跟随的mesh顶点数并不是很多。
这些mesh也会对衣物等有物理影响。
Niagara这里并不是很懂,希望大佬能看一下。
大概意思是有两种版本的动画,一个版本是mesh动画,另一个版本是通过Niagara来控制的,这样能达到性能和效果的平衡,并且方便程序控制。
Niagara通过这个动画曲线来控制,他也会出现在模型动画内部。
然后是看不懂的Niagara参数,通过动画曲线控制,使得Niagara粒子匹配模型动画的运动。
技能动画分三个部分:
- geometry cache:
- Niagara粒子
- Skeletal Mesh
此外,技能会影响之前说的RT,绘制时会判断与地面的距离,来影响绘制颜色的强度。
总结
整体场景制作基于分层的思想进行制作,通过绘制RT的系统来对场景进行交互影响。
- 作者:Daachun
- 链接:https://Daachun.com/article/GDC0
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章