Tag: Unity3d

Unity DOTS学习笔记(二)SoftBody2D软体物理

写物理的过程就是心态跟着几何体的不停崩裂而崩裂。 上个月心血来潮想做个2d软体物理的PinBall Game。于是上网找了一些软体物理教程就开始动手搞了。但整个过程就是实现效果一两天,后期踩坑一个月,心态崩的怀疑人生。 弹簧质点是当前主流的物理实现方式之一。我看到youtube有完整公式介绍,就开始直接按这套函数在dots里实现。 参考: https://www.youtube.com/watch?v=kyQP4t_wOGI&t=124s...

Unity DOTS 学习笔记(一) Nav-Field寻路场

从零开始的ECS学习之路——冒险的黎明 Unity DOTS Unity dots 1.0发布快一年了。网上不少大佬表示ECS框架没有价值,可能是站在不同角度或者根据自己的喜好和目标来评判的吧。作为一个熟悉C#又不想改引擎的独立游戏开发者来说,dots无疑是提供了一个巨大的可能性空间。例如做一个同屏万人的弹幕射击游戏;又例如做一个Boids集群算法的特效。由于Unity传统框架都是单线程执行的,这些需要利用到多线程并行计算的功能直到有了dots...

Bump Noise Cloud – 3D噪点+GPU instancing制作基于模型的体积云

用3D噪点贴图,配合GPU instancing将模型沿着法线挤压渲染多层,制作类似《sky光遇》里的的体积云。 最近上线的《sky光遇》里的体积云做的很赞,忍不住想尝试做做看。试了很多不同的做法,一开始想到的就是比较流行的Ray marching。但是光线步进一般的做法是代码算出几何体形状和坐标,然后依赖3D噪点图的随机形状,不能自由的用模型捏云的造型。所以转向用一个比较“土”的方式来做。 最终效果: H5...

《塞尔达-荒野之息》中角色受多个点光源影响的做法

收集多个点光源的坐标和颜色等信息传递给Shader,在Shader中用循环函数计算出点光源的光照。 先看看《荒野之息》的实际效果: 图中1,2,3处的点光源都会对主角和NPC产生影响。 《荒野之息》可以支持很多点光源。但Unity的光照系统只支持4盏动态点光源,所以不能用Unity的点光源,必须自己另外实现一套。 因为是用点卡通渲染,不追求真实光照,所以可以用讨巧的方式。做法就是用代码将多个点光源相对于物体的角度,距离和颜色传递到shader里。然后在shader中做循环运算。 我一开始尝试的做法是:先在C#里收集角色坐标和所有点光源的坐标和颜色信息,然后计算粗出点光源相对于角色的角度“LightDir”和他们之间的距离,最后把这些参数一起传递给Shader。...

PBR Lego Shading – 基于PBR的偏风格化的乐高材质

采用PBR的思路,用自定义的光照系统制作《乐高大电影》那种偏欧美浓艳色调的风格化的乐高材质。 首先我找了挺多现有的乐高作品的画面参考图。有游戏的,玩具官宣图的,也有近几年的乐高大电影的。可以看出风格是在一步步进化的。 乐高游戏的画面渲染质感普遍很单一,角色基本都是PBR-Specular这一套,场景也是写实风格的PBR风格。但缺点也很明显,完全写实的PBR会有点脏脏的,特别是灯光暗的地方全是黑色,没有动画电影那种可爱舒服的色调。感觉这些老美开发者也不太考究卡通色调的风格,基本就是把乐高当作《Call of Duty》系列的写实画风在做。 而乐高玩具的官宣图跟乐高官方的大电影系列现在都明显偏向了主流的欧美卡通渲染方向,并不是一味追求写实材质的。而且场景打光很厉害,颜色比较浓艳,整体气氛烘托得很好。...

火力大作战 – .IO类型的俯视角射击手游

在心动网络参与的一款手游项目,作为TA给项目的美术和技术方面提出优化方案。 我接触这个项目的时候已经是项目做完进入测试阶段了。看到当时的画面还是挺多问题,有很大改进空间的。于是整理了不少修改意见,并且开始着手从主界面的角色展示场景和UI风格上进行改进。我前后也就做了3周,但后来项目测试下来觉得数据不好,就决定砍掉了。 刚拿到手的时候画面是这样的: 感觉整体画面很平,缺少欧美卡通的质感和冲击力。因为之前项目都没有TA支持,都是靠程序员用Unity自带的Shader搞出来的。 首先我改掉了角色渲染: 我调整了镜头视角,角色的渲染方式,和场景的光影效果,增强了透视感和光影的立体感。本来想尝试PBR渲染,但我觉得这种休闲卡通风格的材质未必需要做得那么写实,另外PBR会阻碍掉大批的低端手机,所以没有采用。因为角色本身的设计和模型动画都做的不错,所以渲染风格到位了,整体表现也不会差。...

代码自动创建AnimatorController和动画测试环境

用所选动画一键创建Animator Controller,并且搭建好动画测试环境,添加测试动画的UI按钮。 手动创建Animator挺费事的,特别是反复修改动画再倒入Unity里测试的时候。我当前参与的项目用的Live2D做纸片人动画,做的AnimatorController只是把所有的AnimationClip分别填再一个State里,然后都是创建AnyState的Transition。如下图。 规则很简单,所以很容易用代码创建。 代码如下: 这样在unity主菜单里就可以直接点按钮执行这个方法了。...

Sparkle Shader – 闪烁亮片材质

两种方法用躁点图配合Bloom后期效果做出闪烁亮片材质。 闪耀亮片的基本原理很简单:做法就是用一张躁点图,做pow运算,让少数躁点亮度提高,配合post-processing中的bloom效果,让少数躁点亮爆。 但其实具体做各种材质的时候,有很多不同的手段可以实现亮片效果。 方式一:在fragment阶段做normalDir躁点扰动。 做法就是用一张彩色Noise贴图,在fragment阶段将normalDir干扰。然后与viewDir或者lightDir做dot运算(受视点影响或者光源影响),最后再做一次Pow运算。 如下图,基于视点的亮片,所以中间亮片较大,边缘的亮片较小。...