M-V-P变换与透视投影矩阵的推导
M-V-P变换即Model(模型变换)、View(视图变换)、Projection(投影变换)的结合变换。我们知道我们在屏幕上看见的画面其实都是二维的,那么是怎么做到把三维空间中所展示的内容显示到一个二维空间上呢?这里就需要用到 M-V-P 变换与视口变换。让我们通过一个摄影的例子来理解到底这四个步骤的具体含义是什么:
M-V-P变换即Model(模型变换)、View(视图变换)、Projection(投影变换)的结合变换。我们知道我们在屏幕上看见的画面其实都是二维的,那么是怎么做到把三维空间中所展示的内容显示到一个二维空间上呢?这里就需要用到 M-V-P 变换与视口变换。让我们通过一个摄影的例子来理解到底这四个步骤的具体含义是什么:
最近在 Bilibili 看到了闫令琪大佬讲的图形学教程,直接上链接: https://www.bilibili.com/video/BV1X7411F744 感觉深受启发,作为一门图形学的入门教材,真的讲的通俗易懂,极力推荐感兴趣的同学一起来学习。学习的笔记通过整理以博客的形式展示,今天学习的是图形学中数学(尤其是线性代数相关)的内容 —— 变换矩阵 (Transformation Marices) 在图形学中的重要性不用多说,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到。同时在投影变换的时候也有很多应用,本文将会介绍一些简要的变换矩阵以及齐次坐标的由来。
本次来看看Unity编辑器创建资源优化之物理系统的选择和使用,碰撞检测与物理碰撞混用乱用等问题,以及动画系统的优化,本次主要这两点内容。Unity 的内置物理系统 (Nvidia PhysX) 在移动设备上开销较大,应该尽量简化碰撞体,网格碰撞体开销较大,或者一开始就预先烘焙碰撞网格,使用物理方法移动刚体,根据目标帧率修改固定时间间隔等都是优化方案,下面看看具体的优化项有哪些吧。
本次来看看Unity编辑器创建资源优化,一是合理的场景管理,合理使用预制体来定义场景中重复使用的元素,二是关注Unity UI性能的四类问题,UGUI其实平时使用的比较多,但是误区也多(比如多Canvas独立管理)。而且UI的性能和优化往往是最容易被忽略的一点,看似影响不大,但当一个项目达到了瓶颈的时候,在去优化UI,其中的收益还是非常大的,所以还是需要重视的。
这是Unity性能优化的资源优化第二篇,主要是Texture优化和Animation优化,其实在 SUNTAIL - Stylized Fantasy Village 这个工程里面纹理优化的空间挺大的,主要优化方式是纹理压缩。之前专门调研过各种纹理压缩格式在Android设备上的支持情况(主要是部分OpenGL ES3.0的不支持ASTC压缩),顺便也记录在这里了。
Unity的性能优化是一个永恒的话题,性能优化主要是围着CPU、GPU和内存三大方面进行。先从资源优化开始吧,资源优化涉及到资源加载(CPU、内存),资源渲染(GPU、显存)等方面,也是最容易着手优化的点。主要涵盖了Audio资源、Model资源、Texture资源、Animation资源等,现在逐个来看看优化点以及优化方法,以及最后的对 SUNTAIL - Stylized Fantasy Village 工程的优化前后对比。
Shader 在 Unity 2018 之前都是需要写代码编辑的, Unity 2018 推出了 Shader Graph 插件, Shader Graph可以通过可视化界面拖拽就可以实现着色器的创建和编辑。 后续学习 Shader 的相关笔记都会放在这里,实现了基础的PBR Shader、水面效果、溶解(带边缘溶解)效果、积雪效果等,通过这些 Shader 的学习对 Shader Graph 中基本的 Node 有所了解。
最近通过代码控制Canvas的旋转的时候, 用到了Quaternion表示旋转,这是一种四元数表示方法,Quaternion的内部属性eulerAngles即时旋转的欧拉角表示方式。本文记录一下四元数、欧拉角、旋转矩阵的概念,旋转矩阵的推导过程,以及他们之间的相互转换方式。