当前位置: 首页 > web >正文

山东大学计算机图形学期末复习整理5——CG10上

CG10上

  • Frenet-Serret框架

    • 空间中一条曲线可以写成参数形式

      C ( u ) = ( x ( u ) , y ( u ) , z ( u ) ) \mathbf{C}(u) = (x(u), y(u), z(u)) C(u)=(x(u),y(u),z(u))
      这表示:当参数 u u u 变化时,曲线在三维空间中移动,生成一条轨迹。每个参数值 u 0 u_0 u0 对应一个点 p = C ( u 0 ) \mathbf{p} = \mathbf{C}(u_0) p=C(u0)

    • 切线向量 T(Tangent Vector)

      定义为曲线的一阶导数:
      C u = d C ( u ) d u \mathbf{C}_u = \frac{d\mathbf{C}(u)}{du} Cu=dudC(u)
      它表示曲线在点 p = C ( u 0 ) \mathbf{p} = \mathbf{C}(u_0) p=C(u0) 处的“切线方向”,也就是“曲线在这个点要往哪里走”的方向。

      单位切线向量记作:
      T = C u ∥ C u ∥ \mathbf{T} = \frac{\mathbf{C}_u}{\|\mathbf{C}_u\|} T=CuCu

    • 二阶导数 Cuu 与曲率信息

      曲线的二阶导数
      C u u = d 2 C ( u ) d u 2 \mathbf{C}_{uu} = \frac{d^2 \mathbf{C}(u)}{du^2} Cuu=du2d2C(u)
      它反映了“切线变化的速度”,也就是曲率方向。但注意:它不一定垂直于切线。

    • 如何从 Cuu 得到“法线向量 N”

      因为 C u u \mathbf{C}_{uu} Cuu 不一定与切线垂直,所以我们要把它正交化,也就是去掉它在切线方向上的分量
      N = C u u − ( T ⋅ C u u ) T ∥ C u u − ( T ⋅ C u u ) T ∥ \mathbf{N} = \frac{\mathbf{C}_{uu} - (\mathbf{T} \cdot \mathbf{C}_{uu}) \mathbf{T}}{\|\mathbf{C}_{uu} - (\mathbf{T} \cdot \mathbf{C}_{uu}) \mathbf{T}\|} N=Cuu(TCuu)TCuu(TCuu)T

    • 副法线的定义:

      副法线(Binormal)是一个向量,与切线 T 和法线 N 都垂直,它保证了一个右手坐标系的存在。
      B = T × N \mathbf{B} = \mathbf{T} \times \mathbf{N} B=T×N
      也可以用一个更直接的定义来算:
      B = C u × C u u ∥ C u × C u u ∥ \mathbf{B} = \frac{\mathbf{C}_u \times \mathbf{C}_{uu}}{\|\mathbf{C}_u \times \mathbf{C}_{uu}\|} B=Cu×CuuCu×Cuu
      它本质上描述了曲线弯曲所在的平面法向量

    • 三个向量构成 Frenet-Serret 框架
      • T \mathbf{T} T:切线,方向
      • N \mathbf{N} N:法线,朝向曲率中心
      • B \mathbf{B} B:副法线,保证三维正交系统

      这个三元组 T , N , B \mathbf{T}, \mathbf{N}, \mathbf{B} T,N,B 就叫做Frenet-Serret Frame,在计算机图形学、机械臂、路径规划中非常常见。

    • 切向量:

      对参数曲面 S ( u , v ) S(u, v) S(u,v),求偏导:

      • ∂ u S = ∂ S ∂ u \partial_u S = \frac{\partial S}{\partial u} uS=uS 是曲面沿 u 方向的切向量;
      • ∂ v S = ∂ S ∂ v \partial_v S = \frac{\partial S}{\partial v} vS=vS 是曲面沿 v 方向的切向量。

      这两个向量定义了曲面在点 S ( u , v ) S(u,v) S(u,v) 处的“局部方向”。

      切平面:

      由这两个切向量张成的平面称为切平面,它是曲面在该点的一阶近似,即局部的“平面化”。

      任何落在这个切平面上的向量都可以表示为:
      w = a ⋅ ∂ u S + b ⋅ ∂ v S w = a \cdot \partial_u S + b \cdot \partial_v S w=auS+bvS

    • 法向量(Normal Vector)

      n = ∂ u S × ∂ v S \mathbf{n} = \partial_u S \times \partial_v S n=uS×vS
      通常会单位化,得:
      n ^ = ∂ u S × ∂ v S ∥ ∂ u S × ∂ v S ∥ \hat{\mathbf{n}} = \frac{\partial_u S \times \partial_v S}{\|\partial_u S \times \partial_v S\|} n^=uS×vSuS×vS

    • 曲面微分属性
      • 法平面(Normal Plane):

        在一个曲面点处,通过该点和法向量方向构成的平面。

      • 法截线(Normal Section):

        法平面与曲面相交得到一条曲线,称为法截线。它描述了曲面在该方向上的“弯曲性”。

      • 法曲率(Normal Curvature):

        法截线的曲率称为法曲率。因为通过一个点有无数个方向(即无数个法平面),所以有无数个法曲率。

    • 主曲率与主方向(Principal Curvatures & Directions)

      主曲率:

      在所有方向上的法曲率中,有两个极值:

      • 最大的称为 K max ⁡ K_{\max} Kmax
      • 最小的称为 K min ⁡ K_{\min} Kmin

      它们分别沿着某两个正交方向,称为主方向

      主曲率定义了曲面在该点的最大/最小弯曲强度。

    • 各向同性与各向异性(Isotropic vs Anisotropic)
      • 各向同性:

        如果曲面在该点处的所有方向的法曲率都一样,即:
        K max ⁡ = K min ⁡ > 0 K_{\max} = K_{\min} > 0 Kmax=Kmin>0
        那么该点是各向同性的,比如球面上的任意点,向任何方向看都一样。

        • 特例:如果 K max ⁡ = K min ⁡ = 0 K_{\max} = K_{\min} = 0 Kmax=Kmin=0,那该点是平坦的,例如平面。
      • 各向异性:

        如果两个主曲率不同,说明表面在不同方向上的弯曲程度不同,即各向异性,并分为:

        类型条件例子
        椭圆型 K min ⁡ > 0 , K max ⁡ > 0 K_{\min} > 0, K_{\max} > 0 Kmin>0,Kmax>0椭球表面
        抛物型 K min ⁡ = 0 , K max ⁡ > 0 K_{\min} = 0, K_{\max} > 0 Kmin=0,Kmax>0抛物面
        双曲型 K min ⁡ < 0 , K max ⁡ > 0 K_{\min} < 0, K_{\max} > 0 Kmin<0,Kmax>0马鞍面
    • 主曲率的计算:

      通常来自于一个称为**形状算子(Shape Operator)**的矩阵,它是法向量随参数方向变化的度量,求其特征值可得主曲率。

      在计算中经常用:
      K max ⁡ , K min ⁡ = eigvals ( S ) K_{\max}, K_{\min} = \text{eigvals}(S) Kmax,Kmin=eigvals(S)

    • 高斯曲率(Gaussian Curvature):

      K = K min ⁡ ⋅ K max ⁡ K = K_{\min} \cdot K_{\max} K=KminKmax

      • 如果 K > 0 K > 0 K>0:像球一样凸;
      • 如果 K < 0 K < 0 K<0:像马鞍一样弯;
      • 如果 K = 0 K = 0 K=0:平坦或呈抛物型。
    • 平均曲率(Mean Curvature):

      H = 1 2 ( K min ⁡ + K max ⁡ ) H = \frac{1}{2}(K_{\min} + K_{\max}) H=21(Kmin+Kmax)

      它衡量的是整体的弯曲程度,常用于表面平滑(如 Laplace 平滑)和模拟物理形变。

  • 网格质量(Mesh Quality)

    • 网格质量的视觉评估方法

      我们无法总是计算积分能量,因此常使用图形学视觉工具进行直观判断。

      (1) 镜面高光(Specular Shading)
      • 模拟真实光照产生的高光区域
      • 表面平滑 → 高光连续;
      • 表面不平滑 → 高光断裂或斑驳。

      高光是对法向量连续性的“放大镜”。

      (2) 反射线(Reflection Lines)
      • 虚拟“反射条纹”模拟物体映射周围环境;
      • 条纹不连续、破碎 → 表面不光滑;
      • 可检测高阶法向量变化。

      反射线的可微性比曲面低一阶(如果曲面是 C 2 C^2 C2,反射线是 C 1 C^1 C1),对法向不连续极其敏感。

      (3) 平均曲率与高斯曲率可视化
      • 平均曲率 H H H
        • H = κ 1 + κ 2 2 H = \frac{\kappa_1 + \kappa_2}{2} H=2κ1+κ2
        • 高值区域表示鼓起或凹陷
      • 高斯曲率 K K K
        • K = κ 1 ⋅ κ 2 K = \kappa_1 \cdot \kappa_2 K=κ1κ2
        • 用于识别曲面类型(球面、鞍面等)
    • 网格质量原则(Principles)

      总结所有度量和可视化方法,抽象为四大原则:

      (1) 光滑性 Smoothness
      • 表面应无法向突变;
      • 曲率连续,避免尖角或高频振动;
      • 关键指标:平均曲率、反射线连续性。
      (2) 低噪声 Low Geometric Noise
      • 指网格点无“跳动”;
      • 常由扫描误差或压缩失真引起;
      • 滤波和平滑算法可减少噪声。
      (3) 网格规则性(Regularity)
      • 网格元素(如三角形)应尽可能接近理想形状(等边);
      • 避免出现“长针”“瘦帽”等畸形三角形。
      形状分析:
      • Circumradius / shortest edge
        • 外接圆半径/最短边;
        • 值越大越畸形。
      常见畸形:
      • Needle:一条边极短;
      • Cap:一角极小,像帽子;
      • 两者都会引起插值不稳定、渲染噪声。
      (4) 低畸变 Low Distortion
      • 网格应尽可能忠实地表示原始几何;
      • 拉伸或压缩会导致纹理失真、动画失效;
      • 关键指标:面积/角度保持性、Jacobian determinant。

      按ppt是这四个:

      • 光滑性
        • 低的几何噪声
      • 网格的动态划分
        • 低复杂性
      • 三角形形状
        • 数值健壮性
      • 特征保持
        • 低的法向噪声
    • 网格质量优化(Mesh Optimization)
      核心目标:
      • 提升光滑性;
      • 保持几何特征;
      • 消除畸形元素。
      方法:
      • 重采样(Remeshing):重新生成网格,使其规则。
      • 光滑算法(Fairing)
        • Laplacian smoothing;
        • Taubin smoothing;
        • Mean curvature flow;
      • 能量最小化:如最小二乘曲率能量。
  • 网格噪声与网格光滑

    • 什么是网格噪声?
      • 定义:真实世界中通过3D扫描(如激光、结构光)得到的三角网格模型中常包含高频、不规则的小扰动,这些即为“网格噪声”。
      • 常见来源
        • ✳️ 激光扫描仪 / 投影扫描仪的测量误差;
        • ✳️ 环境光照/反射干扰;
        • ✳️ 逆向工程中点云拟合误差。
    • 网格噪声的特征
      • 局部小突起或凹陷
      • 曲率变化剧烈
      • 不能被肉眼立即识别但影响后续计算(如纹理贴图、物理仿真)
    • 网格质量评估指标
      • 曲率相关指标
        • 平均曲率 H
          H = κ 1 + κ 2 2 H = \frac{\kappa_1 + \kappa_2}{2} H=2κ1+κ2

        • 高斯曲率 K
          K = κ 1 ⋅ κ 2 K = \kappa_1 \cdot \kappa_2 K=κ1κ2

        • 高曲率处往往是噪声或尖锐几何特征

      • 能量函数
        • Strain Energy(应变能)
          E = ∫ S ( κ 1 2 + κ 2 2 ) d A E = \int_S (\kappa_1^2 + \kappa_2^2) \, dA E=S(κ12+κ22)dA

        • 表示曲面弯曲“剧烈程度”,越剧烈则能量越高。

      • 视觉分析
        • Specular Shading:高光断裂表明法向不连续;
        • Reflection Lines:反射线不平滑表明曲率突变;
        • Curvature Map:颜色映射曲率变化,红色表示“危险区”。
    • 网格去噪的目标与挑战
      • 目标:
        1. 消除高频扰动(低通滤波);
        2. 保持全局几何特征(如边缘、尖锐转角)。
      • 挑战:
        • 如果光滑过度 ➜ 会模糊特征
        • 如果保留所有特征 ➜ 噪声仍在
    • 网格光滑(Mesh Smoothing)方法
  • 拉普拉斯光滑(Laplacian Smoothing)

    • 核心思想

      拉普拉斯光滑等价于一种“扩散过程” —— 就像热量在金属中扩散一样,网格顶点也向“邻域平均”方向流动。

      数学模型(连续形式):
      d P d t = L ( P ) \frac{d\mathbf{P}}{dt} = \mathbf{L}(\mathbf{P}) dtdP=L(P)
      其中 P \mathbf{P} P 是顶点位置, L \mathbf{L} L 是拉普拉斯算子,代表“顶点 - 邻居中心”的方向。

    • 拉普拉斯算子的定义(邻域平均)

      最基本的均匀拉普拉斯算子定义为:
      L ( v i ) = ∑ j ∈ N ( i ) 1 ∣ N ( i ) ∣ ( v j − v i ) \mathbf{L}(v_i) = \sum_{j \in N(i)} \frac{1}{|N(i)|}(v_j - v_i) L(vi)=jN(i)N(i)1(vjvi)

      • N ( i ) N(i) N(i):顶点 v i v_i vi 的邻居集合;
      • 表示顶点朝“邻域平均位置”移动。

      也可以表示为:
      v i new = v i + λ ∑ j ∈ N ( i ) w i j ( v j − v i ) v_i^{\text{new}} = v_i + \lambda \sum_{j \in N(i)} w_{ij} (v_j - v_i) vinew=vi+λjN(i)wij(vjvi)
      其中 w i j w_{ij} wij 是邻居 j j j i i i 的影响权重。

在这里插入图片描述

  • 加权拉普拉斯(Weighted Laplacian)

    为更好反映网格几何特征,引入不同的加权策略:

    1. Umbrella Weights(雨伞权重)

    w i j = 1 ∣ N ( i ) ∣ w_{ij} = \frac{1}{|N(i)|} wij=N(i)1

    • 所有邻点贡献相等;
    • 简单但容易模糊尖锐特征。

    2. Mean Value Weights(均值权重)

    w i j = tan ⁡ ( ϕ i j / 2 ) + tan ⁡ ( ϕ i j + 1 / 2 ) w_{ij} = \tan(\phi_{ij}/2) + \tan(\phi_{ij+1}/2) wij=tan(ϕij/2)+tan(ϕij+1/2)

    • ϕ \phi ϕ 是邻域角;
    • 对于非均匀三角网格,效果优于 Umbrella。

    3. Cotangent Weights(余切权重)

    w i j = cot ⁡ ( α i j ) + cot ⁡ ( β i j ) w_{ij} = \cot(\alpha_{ij}) + \cot(\beta_{ij}) wij=cot(αij)+cot(βij)

    • α i j , β i j \alpha_{ij}, \beta_{ij} αij,βij:边对角的两个角;
    • 准确地考虑了网格局部几何;
    • 广泛用于曲率估计几何优化
  • 保留细节:限制沿法线方向平滑

    为防止顶点在切向方向滑动导致细节丢失,可以只让顶点在法线方向上移动:
    P new = P old + λ ⋅ ( L ( P old ) ⋅ n ) ⋅ n \mathbf{P}_{\text{new}} = \mathbf{P}_{\text{old}} + \lambda \cdot (\mathbf{L}(\mathbf{P}_{\text{old}}) \cdot \mathbf{n}) \cdot \mathbf{n} Pnew=Pold+λ(L(Pold)n)n

    • n \mathbf{n} n:顶点法向量;
    • 只在法线方向投影位移;
    • 可以保留曲线棱边或结构特征。
  • 拉普拉斯光滑等价于最小化以下二次能量函数:

    E ( P ) = ∑ ( i , j ) ∈ edges ∥ v i − v j ∥ 2 E(\mathbf{P}) = \sum_{(i,j)\in \text{edges}} \| v_i - v_j \|^2 E(P)=(i,j)edgesvivj2

    • 这个能量表示“网格的不平滑程度”;
    • 最小化该能量可使边尽可能均匀,曲面趋于光滑。
  • 拉普拉斯光滑中的特征保留技术详解

    • 为什么需要特征保留的拉普拉斯光滑?

      问题
      标准的拉普拉斯光滑通过顶点向邻居平均位置靠拢来减少噪声,但也容易模糊模型的重要几何特征(如折线边、尖角、细节部位)。

      目标
      在实现整体平滑的同时,保留曲面重要形状结构

    • 形状保留方法概览
      方法类型原理实现方式
      固定点 / 区域直接不动某些点设置拉普拉斯为 0,即 L ( v i ) = 0 L(v_i) = 0 L(vi)=0
      软约束局部减少光滑强度对不同区域设定不同 λ \lambda λ,如边缘附近小、内区大
      全局优化整体建模优化问题一次性求解全局最小二乘问题
      面约束限制局部面片的重心变化防止局部形状偏移
      特征检测预识别需保留的结构边缘检测、法向量变化检测等
    • 全局拉普拉斯光滑框架(Global Smoothing)
      优势
      • 一次性求解整个网格的顶点位置;
      • 更适合配合多种约束;
      • 具有数值稳定性和整体性。
    • 添加约束实现特征保留
      • 顶点约束(Vertex Constraints)

        目的:保持某些关键点(如边缘、尖角)位置不变。

        形式

        • 软约束:
          ∥ L X ′ ∥ 2 + μ − 2 ∑ i ∈ C ∥ v i ′ − v i ∥ 2 \| L X' \|^2 + \mu^{-2} \sum_{i \in C} \| v_i' - v_i \|^2 LX2+μ2iCvivi2

        • 强约束(硬约束):
          v i ′ = v i 直接固定 v_i' = v_i \quad \text{直接固定} vi=vi直接固定

        结果:保留特征点,其他区域仍可平滑。

      • 面约束(Face Constraints)

        目的:限制面片的整体形状变化(如三角形的重心不偏移)。

        能量函数
        min ⁡ X { ∥ L X ′ ∥ 2 + ∑ ⟨ i , j , k ⟩ ∈ T λ 2 ∥ ( v i ′ + v j ′ + v k ′ ) − ( v i + v j + v k ) ∥ 2 } \min_X \left\{ \| L X' \|^2 + \sum_{\langle i,j,k \rangle \in T} \lambda^2 \left\| (v_i'+v_j'+v_k') - (v_i+v_j+v_k) \right\|^2 \right\} Xmin LX2+i,j,kTλ2 (vi+vj+vk)(vi+vj+vk) 2

        • T T T:所有三角面片索引集合;
        • 控制重心不变,保留局部形状;
        • 参数 λ \lambda λ 控制保留强度。
      • 其他线性约束
        约束类型用途
        边约束保留边的长度或方向,避免折线模糊
        一阶邻域重心约束控制小区域不整体漂移
        法向量约束保持曲面的朝向不变(例如用于光滑法向)
      • 总目标函数为:

        min ⁡ X { ∥ L X ′ ∥ 2 + ∑ i ∈ C μ ∥ v i ′ − v i ∥ 2 + ∑ ⟨ i , j , k ⟩ ∈ T λ 2 ∥ ( v i ′ + v j ′ + v k ′ ) − ( v i + v j + v k ) ∥ 2 } \min_X \left\{ \| L X' \|^2 + \sum_{i \in C} \mu \| v_i' - v_i \|^2 + \sum_{\langle i,j,k \rangle \in T} \lambda^2 \| (v_i'+v_j'+v_k') - (v_i+v_j+v_k) \|^2 \right\} Xmin LX2+iCμvivi2+i,j,kTλ2(vi+vj+vk)(vi+vj+vk)2

        • 第一项:拉普拉斯平滑能量;
        • 第二项:顶点位置保留;
        • 第三项:面片重心保留;
        • 参数 μ , λ \mu, \lambda μ,λ:控制权重,平衡保留与光滑程度。
      • 线性系统求解方法

        设系统矩阵为 A A A,未知顶点为 x x x,构成超定系统:
        A x = b A x = b Ax=b
        使用最小二乘法解得:
        x = ( A T A ) − 1 A T b x = (A^T A)^{-1} A^T b x=(ATA)1ATb
        优点:

        • 数值稳定;
        • 可加入任意线性约束;
        • 利用稀疏矩阵求解器效率更高。
      • 特征检测用于约束预处理

        为自动设置约束位置,可使用启发式特征检测方法,例如:

        ✅ 法向量变化检测
        • 若相邻面片法向量夹角大于阈值 → 识别为折线;
        • 这些点加入顶点约束集合 C C C
        ✅ 曲率检测(可选)
        • 利用高斯曲率 / 平均曲率高值区识别尖角;
        • 保留这些高曲率点或边界。
      输入网格 → 特征检测 → 添加约束(点、面) ↓构造拉普拉斯矩阵 + 约束矩阵↓求解最小二乘系统↓输出平滑网格(保留特征)
      
  • 视图

    • 定义视图:从不同角度或方式观察物体生成的图像。
    • 视图生成的关键因素:
      • 物体本身的几何形状和尺寸。
      • 观察者的视点位置和观察方向。
  • 图形渲染管线(Graphics Pipeline):

    • 几何管线:
      • 变换(Transform):包括模型变换、视图变换、投影变换。
      • 裁剪(Clip):移除视体外的几何体。
      • 投影(Project):将3D场景映射到2D平面。
    • 像素管线:处理像素操作(如纹理映射、颜色混合)。
    • 框架:OpenGL程序控制管线,渲染结果存储在帧缓冲区(Frame Buffer)。
  • 视图生成相关的变换类型:

    • 3D变换:模型的平移、旋转、缩放等。
    • 视图变换:将世界坐标系转换为相机坐标系。
    • 相机变换:调整相机位置和方向(与视图变换类似)。
    • **投影变换:**将3D场景映射到2D平面,分为:
      • 正交投影(Orthographic):平行投影,保持尺寸不变。
      • 透视投影(Perspective):模拟人眼,远处的物体显得更小。
  • 经典视图的三个基本元素:

    • 物体:需要渲染的3D几何体。
    • 观察者与投影面:观察者的视点和投影平面(如屏幕)。
    • 投影线:从物体到投影面的映射路径。
  • 投影:将3D场景映射到2D平面。

    两种主要投影类型:

    • 正交投影:投影线平行,保持物体尺寸。
    • 透视投影:投影线汇聚于一点,模拟远近大小变化。
  • 平面几何投影的分类

    • 平行投影:
      • 多视图正交投影:如正面、顶面、侧面图。
      • 轴测投影:
        • 等轴测(Isometric):三个轴角度相等。
        • 二轴测(Dimetric):两个轴角度相等。
        • 三轴测(Trimetric):三个轴角度不同。
      • 斜投影:投影线与投影平面非垂直。
    • 透视投影:
      • 一点透视:一个消失点。
      • 两点透视:两个消失点。
      • 三点透视:三个消失点。

    在这里插入图片描述

  • 计算机视图生成的三个关键步骤:

    • 相机定位:通过模型-视图矩阵(model-view matrix)设置相机位置和方向。
    • 选择镜头:通过投影矩阵(projection matrix)定义投影类型(如透视或正交)。
    • 裁剪:定义视体(view volume),移除体外的几何体。
  • OpenGL相机模型的默认设置:

    • 相机与物体坐标系初始重合(单位模型-视图矩阵)。
    • 相机位于原点,朝负z轴方向。
    • 默认视体:边长为2的立方体,中心在原点。
    • 默认投影矩阵:单位矩阵,相当于正交投影。

    在这里插入图片描述

  • 相机移动的实现:

    通过旋转和平移序列调整相机到任意位置。

    示例(侧视图):

    glTranslatef(0.0, 0.0, -d);
    glRotatef(-90.0, 0.0, 1.0, 0.0);
    
    • 旋转相机(绕y轴旋转-90°)。
    • 平移相机(沿负z轴移动d)。
    参数解释
    -90.0旋转角度,单位是度(degree)。负号表示 顺时针旋转(沿指定轴的右手法则反方向
    0.0, 1.0, 0.0旋转轴向量,即绕哪个轴旋转。这里是绕 y 轴 旋转,因为只有 y 分量是 1

    模型-视图矩阵:C = T * R(先旋转后平移)。

    **变换顺序:最后定义的变换(旋转)先应用,然后是平移。**即,后定义先使用

    完整:

    glMatrixMode (GL_MODELVIEW)
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -d);
    glRotatef(-90.0, 0.0, 1.0, 0.0);
    
  • 视口内容的四个相机参数:

    • 相机位置:视点坐标。
    • 观察方向:相机指向的方向。
    • 相机朝向:相机的上下方向(避免翻转)。
    • 视口大小:投影平面的尺寸。

    gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz)

    • 眼位置:相机所在点。

    • 观察点:相机指向的,定义观察方向。view direction=(atx-eyex, aty-eyey, atz-eyez)

    • 上向量:定义相机的朝上方向,避免翻转。

    gluLookAt生成模型-视图矩阵,将世界坐标系变换到相机坐标系。

http://www.xdnf.cn/news/6516.html

相关文章:

  • FTP 工具 vs. 命令行 SCP/RSYNC
  • (十九)Java集合框架深度解析:从基础到高级应用
  • Linux 内核核心知识热点题分析:10 个连环打通的难点
  • Modern C++(一)基本概念
  • 养生:健康生活的极简攻略
  • free void* 指令
  • list简单模拟实现
  • miniconda
  • 智能手表集成测试报告(Integration Test Report)
  • 磁盘性能测试与分析:结合fio和iostat的完整方案
  • muduo库中Channel模块的深度解析
  • LeetCode 3337.字符串转换后的长度 II:矩阵快速幂(也没有想象中的那么高级啦)
  • 小白上手RPM包制作
  • InforSuite RDS 与django结合
  • 21、工业大数据分析与实时告警 (模拟根因分析) - /数据与物联网组件/bigdata-root-cause-analysis
  • 创建你的第一个MCP服务
  • 【ROS2】ROS节点启动崩溃:rclcpp::exceptions::RCLInvalidArgument
  • Redis 大 key 问题解决方案
  • Windows软件插件-音视频捕获
  • 配置别名路径 @
  • 【落羽的落羽 C++】进一步认识模板
  • SpringBoot应用启动过程
  • 如何通过高防CDN让CC攻击有来无回?
  • 数学复习笔记 10
  • 鸿蒙OSUniApp 开发的文件上传与下载功能#三方框架 #Uniapp
  • CAPL编程系列_04
  • std::vector c++
  • LeetCode 热题 100 1.两数之和
  • 竞品分析是什么,包括哪些内容?AI竞品分析生成器推荐!
  • 20250515让飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG为4线百兆时的接线图