Home
Yzngo
Cancel

Unity Hfsm

UnityHFSM hierarchical finite state machine - 分层状态机 UnityHFSM 安装 通过 [[OpenUPM]] 安装。 openupm-cn add com.inspiaaa.unityhfsm 创建状态机 using FSM; public class EnemyController : MonoBehavi...

Gc

什么是GC 游戏运行的时候,数据主要存储在内存中,当游戏数据不再需要的时候,当前这部分内存就可以被回收,以便再次利用。内存垃圾指当前废弃数据所占用的内存,GC是指将废弃的内存进行回收,使其可以再次被使用的过程。 垃圾回收器只回收内存,不回收其他资源,如:数据库连接,文件句柄,网络端口,硬件设备等。 GC原理 mark-and-compact算法,mark是指先确定所有...

贴图映射

UV坐标 即纹理坐标 UV:映射模型的蒙皮贴图 UV2:也叫2U,计算光照,映射光照贴图 UV3:为实时全局光照服务 UV4~UV8:程序可以自定义使用的UV数据 UV展开 纹素 纹素指纹理上的一个像素,比如512x512的纹理,U轴有512个纹素,V轴也有512个纹素。 贴图采样 当物体离摄像机很近时,一个像素会对应纹理上很小的一...

A星寻路算法

参考资料 Amit’s A* Pages A星算法只是一个寻路算法,需要有配套数据结构支撑。寻路数据结构见:[[寻路导航网格]] A星算法 A星算法只选择当前步骤的最优路径,只关注当前的最优解,所以会忽视全局的最优解,走“弯路“是常有的事情。 A星是对 [[Dijkstra最短路径算法]] 的一种优化。 A星算法是一种启发式算法,由人工预先设定的估算距离作为启发信息...

寻路导航网格

2D数组构建网格 使用数组存储网格,其中的每个单元可以代表多种状态,比如 0 代表可行走,1 代表不可行走,2代表草地等等。 每个单元的尺寸需要与地图的大小对应起来,比如每个单元代表地图上的 10 米。要综合考虑地图的大小和障碍物的大小,来确定地图的匹配关系。如果单元格很大,无法实现细腻的路径与障碍;如果单元格很小,过大的数组会造成内存的浪费。 邻接点 每个点的邻接点...

平面三角形的剖分问题

概念 三角形作为最简单的平面图形,较其他平面图形在计算机表示,分析和处理等方便要方便的多。 平面三角形的剖分问题意思是在一张平面图上有很多颜色,颜色边界形成了很多点和线,根据这些点和线将这幅图分解成由许多三角形组成的多边形。 三角剖分是研究其他很多问题的前提。 应用领域 模式识别 图像处理 计算机图形学 机器人领域 Delaunay三角剖分算法 ...

渲染优化

渲染优化方法 渲染面数太多 同屏三角面数最多 20 ~ 50万。整个场景面数太多,只会让内存上升,同屏展示的面数太多才会让GPU压力变大。 利用好CPU摄像机裁剪,摄像机外的模型尽量不让其进入渲染管线。 拆分模型中很大,很长的模型,不然露出一点点就会全部渲染,使摄像机裁剪失效。 使用 [[LOD]],使远距离顶点减少。 Batching 合批用于解决DrawCal...

Unity渲染队列

渲染顺序关注的是所有的 drawcall 以什么样的顺序渲染;每个网格谁先渲染,谁后渲染。 所有的网格先在CPU中排序,按照排好的顺序依次调用drawcall指令进入渲染管线进行渲染。 如果先渲染离屏幕近的物体,那么就能在ZTest的机制下早早地屏蔽掉后面地片元,提升GPU地效率。 Unity渲染队列 每个物体进入不同的渲染队列,Queue值越小的越先渲染;每个队...

光照烘焙

烘焙光照 烘焙光照就是预计算全局光照信息。 光照贴图中只记录间接光照,直接光照的计算代价不高,由着色器自己计算直接光照。 在一个场景中,如果这些物体只考虑直接光照的影响,则会缺乏很多光影细节,导致视觉效果很“平”。而间接光照则描述了光线在物体表面之间的折射,增加了场景中的明暗变化以及光线折射的细节,提高了真实感。 光照贴图使用UV2做贴图映射。 模型烘焙光照,会改写模...

Mesh

Mesh FBX 文件在Unity中会实例化成GameObject,MeshFilter 中的 Mesh 存储了网格的顶点,三角形索引,UV,顶点颜色,切线,法线,骨骼等渲染所需的必要数据。 从头开始构建mesh 先设置顶点(vertices),再设置三角形(triangles)。 Vector3[] newVertices; Vector2[] newUV; ...