Category: Devlogs

Foliage Rendering – 树叶体积感渲染(一)

通过修改法线的方式,制作出有自然柔和的体积感,并且跟随光影方向变化的树叶。 树叶的做法无非是插片,但是不管怎么插片,在平行光源下都不自然不好看,阴影边缘硬邦邦的。 我们想要的是有体块感的树叶。有个很简单出效果的方式就是把树叶的法线映射成球形的,因为我们最终想要的体块感很接近一个球形。 修改完法线后,就能360度无死角的显示出柔和的体块感。 配上贴图,把光源转几个方向看看,很完美。 实现球体Normal除了用修改法线的方式,还可以直接在Shader里通过物体Pivot计算出来,详细可参考第二篇:Foliage...

Volumetric Clouds – 体积云的做法

巧妙利用unity提供的Graphics.DrawMesh方法,配合基于uv偏移产生的立体光影效果,制作体积云。 这个Volumetric Cloud的做法简单来说,就是利用Graphics.DrawMesh的方法,将一个平面mesh垂直绘制n次,获得一个类似“千层糕”的立体结构。然后通过shader配合制作出云层的光影和飘动的变化效果。 首先简单介绍一下Unity提供的Graphics.DrawMesh方法: DrawMesh可以在一帧里把一个Mesh绘制一次。这个Mesh可以接受或产生光影。可以被一个或多个Camera绘制。而且注意他并不是立即执行绘制的,他只是把绘制需求提交给渲染中心去处理,所以它不是实时执行的。这玩意儿适合用来绘制数量庞大,但没有交互需求的对象,例如游戏中无关紧要的远景。 可参考Unity官方文档:https://docs.unity3d.com/ScriptReference/Graphics.DrawMesh.html...

Dynamic Grass – 动态草地制作

制作随风摇摆的草地,并且草碰到障碍物会弯折。  先看看Demo效果: 自定义草皮尺寸。 调整风向风速,对草皮的影响效果。  Unity发布的webGL不支持复杂For循环语句的shader,所以上图demo里只有主角跟草有交互。实际上可以多个对象跟草交互的。而且webGL里也不支持ShadowCaster,所以影子也无法显示。其他主流平台都是可以正常运行的。  ...

简易二次元角色渲染风格(一)

弱化光影,无描边,有轻微立体感的清爽二次元渲染方式。 首先看看最终效果(角色模型动画来自于网络): 按住鼠标左键可旋转角色 点击左上角按钮可切换视角和角色 日系二次元的渲染风格以自发光为主,特别是皮肤要白皙干净。模型贴图部分不要带强烈的阴影,衣服只要画出固有色和褶皱部分。皮肤需要根据立体结构有一点明暗变化,特别是脖子和衣服遮盖的暗部。 先看看纯自发光的效果:...

2D俯视角场景中制作简易的天气系统

在unity3d中制作俯视角2d风格的场景,并且搭配刮风下雨的天气系统,可以营造出一个很生动的场景。 以前做过一个战争策略游戏,玩法基本上都在地图上展现。于是把天气系统也加到玩法里去,例如刮风下雨可以影响角色的速度,下雪会冻住角色。 以下是Demo,可点击右上角的按钮切换各种天气效果。 首先我做了一个卡通风格的地图,视角是3D带透视的,并且加了景深模糊和Bloom,很有桌面小玩具的感觉。 然后就是加各种天气效果。卡通风格不追求写实,可以通过简单的粒子特效来营造出天气变化的感觉。玩家感受的是气氛。我选用了几种常见的天气效果: 晴天阴天:分了4个等级(晴天,多云,阴天,乌云密布)。我加了个乌云影子移动的效果,是通过一张贴紧地面的滚动贴图实现的。...

如何制作《家园2》风格的太空背景Skybox

我上学的时候有款太空RTS叫《家园2》,当时看他的太空表现效果相当震撼,即使现在看他的重制版也是在太空题材游戏里首屈一指。2011年的时候我开发了一款太空射击游戏,其skybox的做法就是像他学习的。 做天空盒是个纯美术工作,说起来做法也很简单: 先看看我12年做的宇宙战争题材的手游中用到的skybox: 《家园》开发商自己开发了一套Mod工具,其中包括天空球模型生成工具。不过这项目是2003年的太早了,这些工具现在好像也没法用了。我当时搜了不少老外文章关于他们天空球的做法。尤其是他们如何把星云的体块感和颜色渐变做得如此自然。这里有几篇老外文章链接: https://simonschreibt.de/gat/homeworld-2-backgrounds-tech/ https://simonschreibt.de/gat/homeworld-2-backgrounds/...