• 中文
    • English
  • 注册
  • 问答 问答 关注:6 内容:50

    #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧

  • 查看作者
  • 打赏作者
  • 当前位置: CGHUB_在线CG视觉艺术交流平台 > 问答 > 正文
    • 问答
    • Lv.10
      头牌管理
      #unitytips Dev Takeover 是 @unitygames Twitter 上的一个 Unity 技巧总结系列。Unity 团队会邀请社区里的大牛们与大家分享自己的见解、技巧和诀窍。本次我们邀请到了 Harry Alisavakis,Jumpship 工作室的技术美术、一位极具才华的视觉特效魔法师。
      即使不认识 Harry,你也一定见过他荧光绿背景的头像。他经常活跃在有关着色器的讨论中。这里简要介绍一下 Harry 是如何成为视觉效果方面的名人的:
      目前,Harry 在 Jumpship 为即将发售的游戏 Somerville 担任技术美术,他用 “业余”时间学习 VFX 和着色器。实际上,Harry 每周会围绕着游戏开发推出一系列的“Technically Art”推文来激励创作者们,同时推广其他艺术家的作品(一定要去关注哦!)。在他 Discord 频道的 Technically Speaking 里,Harry 还会主持技术美术讨论、Unity 创意挑战,在有问必答(AMA)环节中也尽可能地回答其他人的问题。请在此处了解有关他的更多信息。
      下方为 Harry 部分最近作品的截图。你可以在他的作品集中发现更多内容。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      接着我们来看看 Harry Alisavaskis 带来的 #unitytips。
      Particle System 时间轴
      我们先来了解一条能立即上手的 VFX 小技巧。如果排布粒子系统效果有点麻烦,你可以使用更简单的时间轴方法来编辑视觉效果。 🧵
      Unity 的时间轴功能原生支持粒子系统,无需自定义脚本。只需将粒子系统直接拖入,就能拖动时间指示器查看效果。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      你可以将粒子系统的时间轴与其他动画轨整合在一起,更好地安排各种动画元素的顺序,制作出更美妙的视觉效果。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      自定义顶点流
      在使用粒子系统和自定义着色器时,你可以用一个超级有趣的方法:自定义顶点流,来做出更亮眼的效果。
      我们先来花点时间了解一下它是什么,再来研究怎样用它做出更高级的粒子效果。 🧵
      大家知道,Unity 里的模型是由三角形构成的,三角形又由顶点组成。顶点包含着模型的基本信息,比如各自的位置、UV 坐标和顶点色。
      而我们可以向顶点添加任意数据,并在自定义着色器中随意使用。✨这就是自定义顶点流的魅力所在:我们可将粒子信息传给顶点,仅在需要时调用它们。
      自定义顶点流的选项可在粒子系统的 Renderer 模块下找到。模块在启用后将显示所有使用中的顶点流,包括 UV 坐标和顶点色。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      Shader Graph 相关技巧
      最后,我们来试着用 Shader Graph 给粒子系统制作一个简单的溶解效果。这里要做的是一个不受光、双面、带有透明通道裁剪的通用渲染管线(URP)着色器。这里要注意的是驱动溶解效果的元素:UV 的第三个组件。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      你可能在想为什么,因为我们一般是用 x 和 y 两个数值来在 UV 坐标上进行纹理采样。
      其实,你可以在每条顶点流的名称旁边看到数据的存储位置。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      这里,新的顶点流存储在 TEXCOORD0.z 中,它对应着第一条纹理坐标通道的第三个分量(即 UV0.z)。通过增加寿命百分比(Lifetime > AgePercent),这个值在粒子的生命周期内将从零开始逐渐增加到一。
      这样再使用我们的着色器,粒子就能随着时间的推移而溶解。将该着色器应用在粒子系统上后,我们就能得到下面的效果:
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      目前看来都很好,但如果我们想进一步控制粒子的寿命呢?寿命百分比(age percentage)的确能用,但它只能线性地变化,难以做出更为复杂的效果。问题的答案就在 Custom Data 模块里:
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      我们可以使用 Custom1.x 来代替 age percentage,这样我们就能用一条类似 Size over Lifetime 的内置曲线来改变粒子生命周期的值。
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      这下我们就能更精细地控制粒子的溶解速度了。✨ 是不是超棒?
      #unitytips Dev Takeover:向 Harry Alisavakis 学习 VFX 和着色器技巧
      当然,除了这些信息外,自定义顶点流还可接收许多其他的数据。在着色器中启用它们能带来很大的创作可能。
      我们很期待看到大家在评论中提出自己的创造性用法。
      祝各位创作愉快!✨
      想要学习更多 #unitytips?
      那就来 Twitter 关注 Unity for Games,参与每周一次的 #unitytips 和每月一次的 Dev Takeovers 技巧分享。如果你有特别希望在 Dev Takeovers 上见到的社区大牛,也可以在评论里给我们留言。

      请登录之后再进行评论

      登录
    • 发表内容
    • 实时动态
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置: