5·空间数据结构
空间数据结构 八叉树 作用:3D空间范围查询(快速找到范围内包含的所有测试对象) 数据结构:八叉树 实现 节点属性:映射的3DAABB包围盒(用左下前,右上后两个点表示),子节点指针(8个),父节点指针,是否是空节点(没有测试对象存储),是否是叶节点(到达最大层级),当前层级,测试对象数组 ...
空间数据结构 八叉树 作用:3D空间范围查询(快速找到范围内包含的所有测试对象) 数据结构:八叉树 实现 节点属性:映射的3DAABB包围盒(用左下前,右上后两个点表示),子节点指针(8个),父节点指针,是否是空节点(没有测试对象存储),是否是叶节点(到达最大层级),当前层级,测试对象数组 ...
几何 隐式: 数学表达式 bool运算:并集,差值,交集 距离函数SDF:两个物体求得距离函数后混合,可以得到有趣的几何体 分型 缺点:很难知道哪些点满足表达式 优点:容易判断一个点是否满足表达式,将点带入表达式,如果结果为负在物体内,0在物体表面,为正在物体外 显示 ...
渲染管线 GPU渲染流水线(for(阶段)) 应用阶段CPU:(准备数据和状态) 准备场景数据和状态 顶点数据(顶点位置,法线方向,纹理坐标) 摄像机(位置,方向,正交/透视,裁剪空间范围) 光源(位置,数量,颜色,...
光栅化 光栅化遍历每个图元为它们生成片元 采样法:遍历屏幕内每个像素中心的采样点,进行覆盖性测试,利用叉乘判断是否在图元内部 优化:根据顶点确定包围盒范围,仅遍历包围盒范围内的采样点 Aliasing走样问题:锯齿,摩尔纹(moire Patterns)(水波纹),车轮效应(分不清顺逆时帧旋转)…… 抗锯齿:SSAA,MSAA,FXAA,TAA……详见其他章节 傅...
变换 仿射变换: 线性变换和平移变换的组合 包括:旋转,缩放,位移,翻转,切变, 反射,错切…… 线性变换 缩放 S1 * x, S2 * y, S3 * z 旋转 ...
线性代数 区别: 点:数值,一维二维三维,(x,y,z,1),受位移影响 矢量(向量):数值和方向,一维二维三维,(x,y,z,0),不受位移影响 标量:数值,一维 矩阵:在程序中通常用2维数组表示,每个元素是数值, 用矩阵表示变换因为易组合分解 三角函数——直角三角形: 单位圆(半径...
法线贴图 优化:增加物体的细节,如果直接增加顶点,将产生大量开销,而通过纹理,开销少了很多,但由于网格表面实际是平整的,所以光照看起来不够真实,凹凸表面是一样的亮度,为了让代价最小,仍然用贴图,根据贴图的法线方向光照计算,总之就是用小的代价使得纹理的光照看起来更真实 存储:法线贴图每个像素存储法线方向,xyz用rgb表示,法线贴图大部分是蓝色的,因为法线一般垂直于物体表面,指向虚...
算法复杂度分析 性能测试:在编写程序后算法性能测试,精确性高,算法编写好运行,依赖数据规模 算法性能分析:在编写程序前对算法性能估计,精确性低,使用方便 算法复杂度与数据规模之间的增长关系,它并非实际执行时间/存储空间(具体数值),而是反应一种趋势(n相关的表达式) 四则运算 加:平行 乘:嵌套 减:去掉平行 除:...
名词 GNU:GNU计划创建一套完全自由的操作系统,他们几乎完成了所有必要的用户空间工具,但缺少内核 Linux:内核出现,和GNU组合在一起,形成完整可用的操作系统,称为Linux GNU 编译器集合 gcc、编译器,通常用于编译C g++,编译器,通常用于编译C++ Windows 操作系统 MinGW:通过Win...
特殊成员函数 架构 合成:编译器自动生成 默认:特殊成员函数的最基本形式 构造 默认构造函数:可以不用实参(也可以提供默认实参)进行调用的构造函数 能否重载:能 能否声明为虚函数:不嫩 合成默认构造函数的合成条件: 当没有自定义构造函数时,且需要触发以下条件之一: 含有类对象数据成员,且该类对象有默认...