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

【C++游戏引擎开发】第18篇:视锥体裁剪与光源剔除

一、视锥体裁剪的数学原理

1.1 视锥体的几何表示

1.1.1 三维空间平面方程

视锥体的六个平面由标准形式定义:
a x + b y + c z + d = 0 ax + by + cz + d = 0 ax+by+cz+d=0
其中法向量 n ⃗ = ( a , b , c ) \vec{n} = (a,b,c) n =(a,b,c),平面到原点的距离为 d / ∣ ∣ n ⃗ ∣ ∣ d/||\vec{n}|| d/∣∣n ∣∣

1.1.2 投影矩阵参数分解

透视投影矩阵由以下参数构成:
FOV = 4 5 ∘ Aspect = 16 : 9 Near = 0.1 Far = 100.0 \begin{aligned} \text{FOV} &= 45^\circ \\ \text{Aspect} &= 16:9 \\ \text{Near} &= 0.1 \\ \text{Far} &= 100.0 \end{aligned} FOVAspectNearFar=45=16:9=0.1=100.0
通过逆矩阵计算可得到视锥体8个角点的三维坐标,其齐次坐标转换公式为:
P w o r l d = ( M p r o j e c t i o n ⋅ M v i e w ) − 1 ⋅ P c l i p P_{world} = (M_{projection} \cdot M_{view})^{-1} \cdot P_{clip} Pworld=(MprojectionMview)1Pclip

1.2 平面方程生成算法

1.2.1 三点确定平面法向量

给定视锥体角点 P 0 , P 1 , P 2 P_0,P_1,P_2 P0,P1,P2,平面参数计算过程:
v 1 ⃗ = P 1 − P 0 v 2 ⃗ = P 2 − P 0 n ⃗ = v 1 ⃗ × v 2 ⃗ d = − n ⃗ ⋅ P 0 \begin{aligned} \vec{v_1} &= P_1 - P_0 \\ \vec{v_2} &= P_2 - P_0 \\ \vec{n} &= \vec{v_1} \times \vec{v_2} \\ d &= -\vec{n} \cdot P_0 \end{aligned} v1 v2 n d=P1P0=P2P0=v1 ×v2 =n P0

1.2.2 六个平面构造方法
  1. 近平面:直接使用投影矩阵的Near值
  2. 远平面:通过矩阵第四列参数计算
  3. 侧平面​(左右上下):
    n
http://www.xdnf.cn/news/60121.html

相关文章:

  • XMLXXE 安全无回显方案OOB 盲注DTD 外部实体黑白盒挖掘
  • 基于LangChain与Neo4j构建企业关系图谱的金融风控实施方案,结合工商数据、供应链记录及舆情数据,实现隐性关联识别与动态风险评估
  • AI 赋能 3D 创作!Tripo3D 全功能深度解析与实操教程
  • 从本地存档到协作开发的Git简单使用
  • visionpro案例: 轴承缺珠检测
  • 递归神经网络
  • 互联网大厂Java面试:Spring Cloud与微服务的奇妙之旅
  • JAVA:利用 Apache Tika 提取文件内容的技术指南
  • 并发编程之ReentrantLock
  • xpath选择器
  • Spring AI 框架-快速搭建以及会话日志(笔记)
  • Java实现希尔排序算法
  • 在线查看【免费】 jpg, jpeg, png, gif, bmp, ico, jfif, webp 等图片预览(翻转,缩放,镜像)文件格式网站
  • 突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
  • Nginx详细使用
  • 规则引擎 - Easy Rules
  • 使用openssl为localhost创建自签名
  • 运维概述(linux 系统)
  • 【Python核心库实战指南】从数据处理到Web开发
  • MCP + 数据库,一种比 RAG 检索效果更好的新方式!
  • Python+CoppeliaSim+ZMQ remote API控制机器人跳舞
  • 【c语言】指针进阶
  • 2025年首届人形机器人半程马拉松比赛(附机器人照片)
  • [BJDCTF2020]EzPHP
  • JVM有什么调优参数?
  • RSS 2025|苏黎世提出「LLM-MPC混合架构」增强自动驾驶,推理速度提升10.5倍!
  • 阿里云人工智能大模型MCP协议
  • Node.js和js到底什么关系
  • Hyperlane:Rust Web框架的性能新标杆
  • Vue如何获取Dom