自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(284)
  • 收藏
  • 关注

原创 Unity相关blog声明

经人提醒,还是有必要声明一下,我的Unity相关blog目前都是自己跟着唐老狮(是“狮”不是“师“)的视频学习做的相关笔记,仅仅只是为了方便自己学习,所以一些注解写的都是【我自己能看懂就行】的程度,我一个菜鸡而已其中也不存在推销什么的利益关系,因此不会加入相关链接什么的(但还是要说老师讲课的确很nice),如果想学的更清楚请自行去搜索相关视频,若有任何侵权请麻烦告知,谢谢!...

2022-04-12 22:47:52 751

原创 渲染路径对比

主要用于处理影响该物体的一个高质量光源(平行光)、所有中(逐顶点处理)低质量(SH处理)光源 等。优点:适用于相对简单的场景和较少数量的光源,基本可以实现任何渲染效果。主要用于处理影响该物体的除平行光以外的其它高质量光源(每个高质量光源都会调用)利用G缓冲区中各个片元的相关信息进行真正的相关计算,最终将颜色写入颜色缓冲区。最后,在选择渲染路径时,我们应该根据项目的实际情况去进行考虑,比如。只会将光相关的数据填充到那些逐顶点相关的内置光源变量。基本思想就是所有的光都按照逐顶点的方式进行计算的。

2024-09-08 23:22:01 452

原创 延迟渲染路径

延迟渲染路径。理论上来说,即使场景中有成百上千个实时灯光,依然可以保持比较流畅的渲染帧率。延迟渲染的效率不依赖于场景的复杂度,而是和我们使用的屏幕空间的大小有关。这是因为延迟渲染路径中除了使用颜色缓冲和深度缓冲外,还会利用一个叫做G缓存的额外缓存区它会存储我们关心的表面(通常是离摄像机最近的表面)的其他信息,比如表面的法线、位置、材质属性等等。总之我们需要的信息都存储到缓冲区中,而这些缓冲区可以理解为一张张的2D图片,我们实际上是在这些图像空间中进行处理的。

2024-09-08 23:17:42 173

原创 顶点照明渲染路径

顶点照明渲染路径仅仅是前向渲染路径的一个子集,所有在顶点照明渲染路径中能实现的效果都可以在前向渲染路径中实现逐顶点顶点照明渲染路径只会将光相关的数据填充到那些逐顶点相关的内置光源变量不能像前向渲染路径中那样使用逐像素相关的内置变量。

2024-09-08 23:14:14 435

原创 前向渲染路径

球谐函数处理光照的方式是将光照场景投影到球谐函数的空间中,通过一组球谐系数来表示光照。内存换性能,细节表现效果差(不需要我们自己书写,Unity底层会帮助我们进行处理)

2024-09-08 22:25:39 1096

原创 Shader 渲染路径

实际的游戏开发中,场景中的光源肯定是更多、更复杂的,如果只有一个平行光的处理,完全不能满足需求。处理更多的光源,我们就需要了解Unity底层是如何处理这些光源的。

2024-09-08 22:14:41 304

原创 透明度测试 & 透明度混合

在游戏开发中对象的某些部位完全透明而其他部位完全不透明,这种透明需求往往不需要半透明效果,相对比较极端,只有看得见和看不见之分比如树叶、草、栅栏等等。(即一张图除了主要物体有颜色,其他区域都为透明)

2024-08-26 23:24:23 254

原创 Shader 透明相关

深度写入默认是开启,需要通过渲染状态中的 ZWrite off 指令主动关闭深度写入当我们把它写在Pass渲染通道中时,它只会影响该Pass若我们把它写在SubShader语句块中,它将影响其中的所有Pass。

2024-08-26 23:02:27 645

原创 Shader 中的渲染顺序

有了深度测试和深度写入发挥作用让我们不需要关心不透明物体的渲染顺序比如一个物体A 挡住了 物体B,即使底层逻辑中 先渲染A,后渲染B,我们也不用担心 B的颜色会把A覆盖,因为在进行深度测试时,远处的B的深度值无法通过深度测试,因为它的深度会比已经写入深度缓冲中A的深度值大,重合处的片元会被丢弃,颜色自然就不会写入,最终重叠处渲染出来的会是A的颜色。

2024-08-26 22:30:21 675

原创 遮罩纹理的使用

遮罩纹理通常用于控制或限制某些效果的显示范围。它允许我们可以保护某些区域,使它们免于某些修改。)等相关的计算中 从而来让指定区域达到我们想要的效果我们以高光遮罩纹理举例,下面三个胶囊体的对比就是高光遮罩纹理起到的效果,利用高光遮罩纹理,我们可以控制模型上的各个区域,受到高光影响的强弱。

2024-08-22 00:07:13 302

原创 渐变纹理的使用

通过单张纹理和凹凸纹理相,我们知道图片中存储的数据不仅仅可以是颜色数据,还可以是高度、法线数据。理论上来说,图片中存储的数据我们可以自定义规则,我们可以往图片中存储任何满足我们需求的数据用于渲染。而渐变纹理就是用于控制漫反射光照结果的一种存储数据的方式它的主要作用是让游戏中的对象具有插画卡通风格。

2024-08-20 23:13:30 211

原创 法线纹理贴图计算(切线空间&世界空间)

在切线空间中计算,效率更高,因为可以在顶点着色器中就完成对光照、视角方向的矩阵变换,计算量相对较小。( 矩阵变换在顶点着色器中计算)在世界空间中计算,效率较低,由于需要对法线贴图进行采样,所以变换过程必须在片元着色器中实现,我们需要在片元着色器中对法线进行矩阵变换。( 矩阵变换在片元着色器中计算)在切线空间中计算,对全局效果的表现可能会不够准确,在处理一些列如镜面反射、环境映射效果时表现效果可能不够准确在世界空间中计算,对全局效果的表现更准确,可以更容易的应用于全局效果的计算。

2024-08-16 00:40:47 1103

原创 凹凸纹理概念

凹凸纹理是用来做什么的?通过高度纹理或法线纹理在不添加顶点(不增加面)的情况下让模型看起来同样充满细节(凹凸感)原理:计算“假”凹凸面时,使用“真”凹凸面的法线参与计算高度纹理贴图RGB都存储高度值,表现为一张灰度图,由于需要更多额外计算,我们一般不使用法线纹理贴图RGB分别存储法线的XYZ值,有相对模型空间(彩色)和切线空间(蓝色)两种法线贴图为什么要使用切线空间下的法线纹理贴图切线空间法线贴图虽然要产生额外计算,但是能让法线贴图更加的通用,灵活。

2024-08-14 22:17:29 1010

原创 Blinn-Phong 光照模型 & 纹理结合

【代码】Blinn-Phong 光照模型。

2024-08-08 00:33:10 191

原创 Blinn-Phong 高光反射光照模型

Blinn - Phong式高光反射光照模型的理论是,它是对Phong式高光反射光照模型的改进,它不再使用反射向量计算镜面反射,而是。高光反射光照颜色 = 光源的颜色 * 材质高光反射颜色 * max(0, 标准化后顶点法线方向向量 · 标准化后半角向量方向向量)幂。的高光散射,因为它基于观察者和光源之间的夹角。,因为它考虑了表面微观凹凸之间的相互作用,使得光照在表面上更加均匀分布。,特别是在观察者和光源夹角较小时,可能表现为小而亮的点。,因为它的高光散射可能会使纹理和细节更加突出。

2024-08-07 23:18:56 318

原创 Phong 光照模型

当是Skybox和Color时,我们可以通过 UNITY_LIGHTMODEL_AMBIENT 获取到对应环境光颜色。,计算两个颜色混合时一般用颜色相乘,因为真实世界中多个颜色混在一起最终会变成黑色。,计算光照反射时一般用颜色相加,因为向白色靠拢能带来 更亮的感觉,复合光的表现。物体表面光照颜色 = 环境光颜色 + 漫反射光颜色 + 高光反射光颜色。当是Gradient(渐变)时,通过以下3个成员可以得到对应的环境光。环境光变量其实是可以在Unity中进行设置的。PS:两个颜色相乘和相加的区别。

2024-08-05 23:55:38 331

原创 Phong 高光反射模型

Phong式高光反射光照模型的理论是,基于光的反射行为和观察者的位置决定高光反射的表现效果认为高光反射的颜色和光源的反射光线以及观察者位置方向向量夹角的余弦成正比,并且通过对余弦值取n次幂来表示光泽度(或反光度)

2024-08-04 23:52:24 267

原创 兰伯特光照模型

漫反射(DIFFUSE REFLECTION)是光线撞击一个物体表面后以各个方向均匀地反射出去的过程在漫反射下,光线以无规律的方式散射,而不像镜面反射那样按照特定的角度反射。这种散射导致了物体表面看起来均匀而不闪烁的效果。

2024-08-04 18:41:08 290

原创 导航网格动态障碍组件

在游戏中常常会有这样的一个功能:场景中有一道门,如果这道门没有被破坏是不能自动导航到门后场景的,只有当这道门被破坏了,才可以通过此处前往下一场景,而类似这样的物体本身是不需要进行寻路的所以没有必要为它添加NavMeshAgent脚本,这时就会使用动态障碍组件实现该功能。为需要进行动态阻挡的对象添加NavMeshObstacle组件。代码逻辑控制其的移动或者显隐。

2023-02-19 23:49:29 288 1

原创 网格外连接组件

我们在烘焙地形数据的时候,可以生成网格外连接,但是它是满足条件的都会生成,而且是要在编辑模式下生成。如果我们只希望两个未连接的平面之间只有有限条连接路径可以跳跃过去,并且运行时可以动态添加,就可以使用网格外连接组件。使用两个对象作为两个平面之间的连接点(起点和终点)添加Off Mesh Link脚本进行关联。

2023-02-19 23:42:58 191

原创 导航网格寻路组件

寻路组件的作用就是帮助角色可以在地形上准确的移动起来,本质就是根据烘焙出的寻路网格信息,通过基于A星寻路的算法计算出行进路径让我们在该路径上移动起来。导航网格寻路组件——Nav Mesh Agent(导航网格代理人)

2023-02-19 23:36:42 316

原创 导航寻路系统

Unity中的导航寻路系统是能够让我们在游戏世界当中,让角色能够从一个起点准确的到达另一个终点,并且能够自动避开两个点之间的障碍物选择最近最合理的路径进行前往,Unity中的导航寻路系统的本质,就是在。导航网格(NavMesh)的生成——要想角色能够在场景中自动寻路产生行进路径,那么必须得先有场景地形数据,导航网格生成就是生成用于寻路的地形数据。导航网格动态障碍物组件(NavMesh Obstacle)——地形中可能存在的可以移动或动态销毁的障碍物需要挂载的组件。的基础上进行了拓展和优化。

2023-02-16 23:47:52 274

原创 角色控制器

角色控制器是让角色可以受制于碰撞,但是不会被刚体所牵制,如果我们对角色使用刚体判断碰撞,可能会出现一些奇怪的表现,比如:在斜坡上往下滑动不加约束的情况碰撞可能让自己被撞飞等等。而角色控制器会让角色表现的更加稳定,Unity提供了角色控制器脚本专门用于控制角色注意:添加角色控制器后,不用再添加刚体,能检测碰撞函数、触发器函数、能被射线检测。

2023-02-16 23:44:06 216

原创 Unity UI合批的问题

今天看到一个问题,主要说的是Unity中的UI资源合批的问题之前一直以为主要和UI资源在Hierarchy中的排列顺序有关,但其实这并不是最主要的,因为Unity会对同一个Canvas下的UI进行排序(注:不同Canvas下的资源是不能够合批的)而合批的关键就是这个【排序】先简单来说,排序主要根据三个键值:Depth、Material Id、Texture Id。

2023-02-11 16:55:25 919

原创 状态机行为脚本 & 状态机复用

游戏开发时经常遇到这样的情况,有n个玩家和n个怪物,他们的动画状态机行为都是一致的,只是对应的动作不同而已,这时如果我们为他们每一个对象都创建一个状态机进行状态设置和过渡设置无疑是浪费时间的。简单解释就是为Animator Controller状态机窗口中的某一个状态添加一个脚本,利用这个脚本我们可以做一些特殊功能。状态机行为脚本时一类特殊的脚本,继承指定的基类,它主要用于关联到状态机中的状态矩形上。子状态机退出时调用,最后一个Update中调用。子状态机进入时调用,第一个Update中调用。

2023-02-05 17:45:20 553

原创 动画目标匹配

动画目标匹配主要指的是:当游戏中角色要以某种动作移动,该动作播放完毕后,人物的手或者脚必须落在某一个地方比如:角色需要跳过踏脚石或者跳跃并抓住房梁那么这时我们就需要动作目标匹配来达到想要的效果Unity中的Animator提供了对应的函数来完成该功能使用步骤是。

2023-02-05 17:36:59 389

原创 子状态机 & 动画IK控制

子状态机顾名思义就是在状态机里还有一个状态机,它的主要作用就是某一个状态时由多个动作状态组合而成的复杂状态,比如某一个技能它是由3段动作组合而成的,蹲下,开火,站起,当我们释放这个技能时会连续播放这3个动作,那么我们完全可以把他们放到一个子状态机中。

2023-02-05 16:39:48 554

原创 1D/2D动画混合

在Animator Controller窗口 右键->Create State->From New Blend Tree。可以理解是高级版的动画过渡,之前的动画过渡是处理。往混合树里面加入动作时需要找到动画文件进行关联。1D混合就是通过一个参数来混合子运动。

2023-01-02 22:04:22 721

原创 动画分层与遮罩

3D游戏中我们常常会面对这样的需求,人物站立时会有开枪动作,人物跑动时会有开枪动作,人物蹲下时会有开枪动作,从表现上来看光是开枪动作可能就有3种,如果要让美术同学做3种开枪动作费时又费资源。:在游戏中会有这样的需求,人物健康状态时播放正常动画,人物非健康状态时播放特殊动画,比如血量低于一定界限,人物的大部分动作将表现为虚弱状态,我们可以利用动画分层来快速实现这样的功能。

2023-01-02 20:58:58 319

原创 Unity 3D动画

Has Exit Time是否启用 如果希望瞬间切换动画不需过多等待,取消该选项Can Transition To self是否启用 如果希望自己不要打断自己,取消该选项。

2023-01-02 20:47:35 283

原创 Model Animation动画页签

当我们选中包含动画剪辑的的模型时,该页签将显示动画设置相关的内容。动画剪辑是Unity动画的最小构成元素,代表一个单独的动作。当美术同学做好动画导出时建议将模型和动画文件分别导出。具体的导出规则可以参考。

2023-01-02 13:40:29 357

原创 Unity模型

当他们制作完模型后,虽然Unity支持很多模型格式,但是官方建议是将模型在建模软件中导出为FBX格式后再使用。大部分模型都不是在Unity中制作的,都是美术人员在建模软件中制作,如 3DMax、Maya等等。在Project窗口选中导入的模型,在Inspector窗口进行相关设置,4个页签分别是。Unity支持很多模型格式,比如:.fbx,.dae,.3ds,.dxf,.obj等等。通过这4个页签对模型动作相关信息设置完成后,之后我们才能在场景中更好的使用这些模型资源。美术同学在导出模型时需要注意。

2022-12-29 22:54:18 3232 1

原创 同一图片的资源换装

换装较少的游戏 比如只有面部表情更换 可以使用同一psb文件方案换装较多的游戏 比如各部位有n种装备 可以使用不同psb文件方案不同psb文件 拓展性更强。

2022-12-27 21:52:32 716

原创 反向动力学IK

在骨骼动画中,构建骨骼的方法被称为正向动力学,它的表现形式是,子骨骼(关节)的位置根据父骨骼(关节)的旋转而改变,用我们人体举例子:当我们抬起手臂时,是肩部关节带动的整个手臂的运动,用父子骨骼理解的话就是父带动了子。IK全称是Inverse Kinematics,翻译过来的意思就是反向动力学的意思,它和正向动力学恰恰相反它的表现形式是,子骨骼(关节)末端的位置改变会带动自己以及自己的父骨骼(关节)旋转。

2022-12-12 23:53:09 621

原创 psb图片骨骼编辑

由于在PSB文件是分层的,因此在实际导出后,可以不用我们去手动拼凑各个部分的图片,而是直接显示的完整个体,同时各个部分的层级也是自动设置好了的,而且骨骼编辑界面右侧是各个部分,之后的骨骼动画制作与之前基本一致。PSD和PSB两种格式并没有太大的区别,最大的区别是PSD格式兼容除PS以外的其它一些软件,而PSB只能用PS打开,在Unity中官方建议使用psb格式。PSB文件是由PS导出的图片格式,在游戏行业中也是美术同学使用最多的图像处理软件之一。

2022-12-08 23:55:42 896

原创 骨骼动画——2D Animation

传统的序列帧动画为了达到好的动画效果,理论上来说,图片越多,动作越流畅,往往需要较多的美术资源,虽然效果好但是资源占用较多而2D骨骼动画是利用3D骨骼动画的制作原理进行制作的,将一张2D图片分割成n个部位,为每个部位绑上骨骼,控制骨骼旋转移动,达到用最少的2D美术资源做出流畅的2D动画效果(用性能换内存)主要方式有两种导入工具后 在Sprite Editor窗口会多一个选项 Skinning Editor,主要步骤是:当动画对象的各个部位没有绘制在一起,而是通过图集表示时(例如一个人,头身手脚都是分开绘制的

2022-12-07 00:36:19 1815

原创 Animator动画状态机

有限状态机(Finite - state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。在每一个动画状态播放完毕后,如果没有设置切换条件,会自动跳转到连线相关联的另一个动画状态。在左侧面板点击参数页签可以在这里添加4中类型的切换条件。我们每天都会在这些状态中切换,而且这些状态虽然多但是是有限的。当达到某种条件时,我们就会在这些状态中进行切换。有限:表示是有限度的不是无限的。而且这种切换时随时可能发生的。状态:指所拥有的所有状态。

2022-11-29 23:54:30 844

原创 Animation

Animation窗口 直译就是动画窗口,它主要用于在Unity内部创建和修改动画,所有在场景中的对象都可以通过Animation窗口为其制作动画。每一个动画文件都有自己的一个生命周期,从动画开始到结束,我们可以在动画时间轴上编辑每一个动画生命周期中变化。在创建动画之前为对象添加Animation组件之后再制作动画,这时制作出的动画和之前的动画格式是有区别的。播放动画时:将制作动画时记录的数据在固定时间点进行改变,产生动画效果。制作动画时:记录在固定时间点对象挂载的脚本的变量变化。

2022-11-27 23:33:09 839

原创 Tilemap瓦片资源

Tilemap一般称之为 瓦片地图或者平铺地图,是Unity2017中新增的功能,主要用于快速编辑2D游戏中的场景,通过复用资源的形式提升地图多样性。方法二:在Tile Palette瓦片调色板窗口创建:Window——>2D——>Tile Palatte。它和SpriteShape都是用于制作2D游戏的场景或地图的,但不同点的是。使用时需要从PackageManager中引入Tilemap包。方法一:Assets——> Create——> Tile。工作原理就是用一张张的小图排列组合为一张大地图。

2022-11-19 17:26:33 1186

原创 SpriteShapeProfile

通过 Create——>Sprite Shape Profile来创建对应的资源,使用时直接将该资源拖入 Hierarchy 窗口即可。SpriteShapeProfile 主要是方便我们以节约美术资源为前提,制作2D游戏场景地形或者背景。

2022-11-13 22:41:20 847

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除