笔记
文章平均质量分 58
冬眠的关刀
这个作者很懒,什么都没留下…
展开
-
游戏设计与刚体力学
旋转,角速度,角加速度,转动惯量,角动量,力矩刚体为什么会旋转?物体内部力和力之间的约束造成的。角速度变量除以时间 得到角加速度(如果这期间轴变化了,就很复杂)转动惯量在旋转动力学中的角色相当于线性动力学中的质量,可形式地理解为一个物体对于旋转运动的惯性,用于建立角动量、角速度、力矩和角加速度等数个量之间的关系。简单理解就是长轴旋转的难,短轴旋转的容易转动惯量不是一个标量,而是3x3的一个张量芭蕾舞演员展开双臂旋转速度减低,收起双臂旋转速度增加。原创 2022-10-28 19:38:31 · 1208 阅读 · 0 评论 -
【GAMES104 Lec3】组件化思想 优于 继承 / 空间划分的方法
把飞机类和船类的属性和方法封装到组件,这是一个面向对象编程的一个很大的缺陷。在面向对象编程中需要继承哪个类呢?现代游戏引擎中建议使用组件化思想,想要同时用飞机类和船类的方法,再让这个新类创建两种组件。原创 2022-09-22 11:54:05 · 683 阅读 · 0 评论 -
GAMES202 Lec14 工业界做法
Temporal Anti-Aliasing (TAA)时间上的反走样。一帧取左上角,一帧取右上角,一帧取右下角,一帧取左下角,就相当于当前帧做了四倍的超采样。为什么不随机而使用固定的样本?因为随机会额外引入一些高频信息。如果场景运动了怎么办?考虑场景运动的物体在上一帧的哪个像素。用motion vector。SSAA 与 MSAASSAA 基于超采样,严格掉帧率的。SSAA4倍就会掉到差不多1/4帧率。MSAA 四倍不见得会掉到1/4。MSAA 在一个像素里有多个感知样原创 2022-05-08 19:36:51 · 1130 阅读 · 0 评论 -
视口变换 世界坐标系变换到局部坐标系
为什么变换?MVP矩阵,让空间中的图元显示在屏幕空间上PBR材质的上半球采样,生成随机数在世界坐标系的上半球范围内,需要变换到顶点法线上半球范围内,进行采样变换矩阵视口变换矩阵将绕x,y,z轴旋转的矩阵(可以分成三个,也可以组合起来变成一个矩阵)相乘,在x,y,z轴上的平移组装成一个矩阵相乘。坐标系变换矩阵已知,每个新x,y,z轴基向量,可以由原来的x,y,z轴表示xnew = [0,1,0]ynew = [1,0,0]znew = [0,0,1]比如,我们把x轴和y轴互换一下原创 2022-05-06 14:50:54 · 571 阅读 · 0 评论 -
GAMES101 Lec6 反走样与深度缓冲
这一节讲的太好了,看到GAMES202的第13讲回来继续深入学习一下信号处理。采样理论空间采样和时间采样空间采样:照片上一格一格的像素。时间采样:视频一秒只有固定的帧数。并不是记录了真实世界中连续的过程。...原创 2022-04-21 18:27:28 · 332 阅读 · 0 评论 -
GAMES202 作业3
总览本轮作业中,我们需要在一个光源为方向光,材质为漫反射 (Diffuse) 的场景中,完成屏幕空间下的全局光照效果(两次反射)。为了在作业框架中实现上述效果,基于我们需要的信息不同我们会分三阶段着色,每个阶段都有相对应的任务。第一次着色负责计算 Shadow Map 所需的深度值并保存到贴图中。第二次着色负责计算屏幕空间中,每个像素对应的世界坐标系下位置、世界坐标系下法线、漫反射反射率和可见性信息并最终保存到对应贴图中。第三次着色基于之前得到的场景几何信息 (像素对应的位置,法线),场景与光源原创 2022-04-12 21:22:46 · 1359 阅读 · 0 评论 -
对SH 球面谐波函数的理解
例如我们对一个环境光照使用三阶球面谐波函数一共存储九个参数,a11,a21,a22,a23,a31,a32,a33,a34,a35通过这九个系数投影到SH基函数上,可以还原出各个方向的光线(单个值)。需要RGB值的话,需要把这样的数据存三份。取某一个方向光线SH基函数SHEval(x,y,z,band = 3)x是光线的x方向y是光线的y方向z是光线的z方向band是阶数得到的是一个九维的基向量。做点乘操作还原光线值把预计算的九维向量与SH基向量点乘,还原光线在这个方向的值,原创 2022-03-07 15:17:20 · 998 阅读 · 1 评论 -
GAMES 202 作业2 Part2
第七步 实时球谐光照计算歪打正着function getRotationPrecomputeL(precompute_L, rotationMatrix){ result = []; for(xx = 0;xx < 3;xx++) { result[xx] = []; rr = []; for(yy =0;yy < 9;yy ++) { result[xx][yy] = precompute_L[yy][xx]; rr[yy] = rotationMatri原创 2022-03-04 10:45:15 · 930 阅读 · 0 评论 -
GAMES 202 作业2
我采用的编译方案是cmake 3.22.2-windows.msi然后vs2019 使用release模式编译产生报错prt\src\prt.cpp(219): error C4716:“<lambda_9ed74708f63acbd4deb1a7dc36ea3ac3>::operator()”: 必须返回一个值论坛大神给出解决方案MSVC 对于代码中的中文字符支持有问题(应该是会吞换行符),需要启用 utf-8 编译选项:在 prt/CMakeLists.txt 112.原创 2022-03-01 18:15:45 · 3457 阅读 · 3 评论 -
网络传输中的大端和小端最详细解答
大端高字节存放低地址小端低字节存放低地址为什么叫高字节和低字节,而不是高位和低位?因为字节是网络传输中的最小单位,底层接口每次发送数据为一个字节,所以对于大端和小端来说,一字节内部的8位的顺序是一样的什么是高字节?字节的高低和进制的高低是一致的,比如十进制,十位要比个位高,也就是左边的位比右边的位高那么左边的字节也比右边的字节高。什么是低地址?在内存中每块地址都有一个索引号,比如从0x00到0xff索引号越小的地址越低。如何进行大小端的转换?在C++中,以4字节的int为例,假设传原创 2021-04-01 08:03:34 · 5047 阅读 · 0 评论