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

简单聊聊光栅化技术

参考文章

https://zhuanlan.zhihu.com/p/450540827

https://zhuanlan.zhihu.com/p/27846162

光栅化技术做了什么?

关于光栅化,广义上来说,就是将连续的几何图元转换为离散的像素片段。这听起来是不是还是有点的抽象,接下来,我来逐步解释这些概念。

光栅化技术的应用:

光栅化技术的一个主要应用场景就是:将现实中的3D物体,转化到二维的显示屏上。

光栅化技术原理解释:

这里首先有一个问题,就是现实世界中的真实物体,如何在计算机中表示?显然,现实中的物体是连续的,可以认为是由无数多点构成的。显然计算机并不能通过模拟这无数个点的坐标来还原现实中的物体。

一种常见的处理方式是:用许多小的三角块来模拟现实中的真实物体。为什么这么做呢?因为三个点构成一个平面,这样,采用微元的思想,只要有足够多的三角块,就能够还原出现实中的某个物体。

事实上,物体的3D建模也可以采用这种方式。当然,三角形是最简单的,现在也有了更复杂的其他多边形。

这种方法有点像计算机绘制直线一样,本质上是许多点;在计算机中绘制3D物体的表面,本质上也可以是许多的小三角形。

回到定义,这里连续的几何图元就可以指代3D场景中的三角形或其他多边形等。

对于上面提到的三角形,因为是在3D空间中,用于形成物体的表皮轮廓,姑且称为3D三角形,以区别于接下来提到的2D三角形;

对于一个3D三角形,我们显然可以用三组三维坐标来衡量。比如某个3D三角形的三个顶点A(x,y,z)B(x,y,z)C(x,y,z)。

现在又有了新的问题,我们知道屏幕是由像素构成的,一个屏幕可以看做是许多个离散的像素点构成的。而且屏幕是一个二维空间,那么如何将某个3D物体,在2D的屏幕上显示呢?

这就需要构建一种映射关系,也即实现前文提及的将每个3D三角形映射到屏幕上的2D三角形。

这里的2D三角形,最明显的特征就是少了z这个维度,也可以用三个点来表示A’(x,y)B’(x,y)C’(x,y)

而屏幕上的某个2D三角形,又是由许多的像素点构成的。所以,再次回看光栅化的作用:将连续的几何图元,转换为离散的像素片段。是不是好理解了一点。

光栅化的任务就是解决了一个关键问题:3D空间中的几何图元,用屏幕中的哪些像素来表示,以及怎么表示?

关于3D高斯泼溅技术:

3D高斯泼溅技术是一种3D重建技术,他的创新点在于,使用了大量的高斯粒子来重建物体。这一点是和常用的方法如三角形来重建,是有显著的不同。

这里的高斯粒子也可以称为“高斯椭球”,每个高斯椭球包含了位置,协方差矩阵,颜色等参数信息。通过光栅化技术,可以得到对应某个相机角度下的图片,这样就可以通过反向传播的方式来不断修正每一个高斯粒子,以优化3D高斯重建的效果。

关于“高斯椭球”,严格意义上,他并不是一个像三角形这样的椭球面之类的“几何面”,而是一个概率密度分布,而协方差矩阵正是控制这个概率分布的形状的参数。

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

相关文章:

  • 虚拟机中kubeadim部署的k8s集群,虚拟机关机了,重新开机后集群状态能否正常恢复的两种可能(详解)
  • vue2 创建threejs场景
  • ubuntu20.04 终端安装claude
  • 事件驱动架构详解
  • .gitignore 文件相关使用配置
  • 服务器数据恢复—热备盘上线失败如何恢复数据?
  • Ansible 自动化运维工具:介绍与完整部署(RHEL 9)
  • 如何基于阿里云OpenSearch LLM搭建智能客服平台
  • 亚马逊类目合规风暴:高压清洗机品类整顿背后的运营重构与风险防御
  • 零基础构建MCP服务器TypeScriptPython双语言实战指南
  • 零基础也能照做的WordPress网站安全漏洞修复 + 高级优化保姆级教程。
  • 【JavaEE】了解volatile和wait、notify(三)
  • 算法题打卡力扣第209题:长度最小的子数组(mid)
  • 【强化学习】区分理解: 时序差分(TD)、蒙特卡洛(MC)、动态规划(DP)
  • THM El Bandito
  • 使用C++与Qt6,在windows上打造MacOS风格桌面应用窗口
  • SELinux
  • Mac测试端口连接的几种方式
  • 【制作100个Unity游戏】从零开始构建类《月圆之夜》《杀戮尖塔》的卡牌游戏(附带项目源码)
  • CSS 结构伪类选择器
  • C语言开发入门教程:从环境搭建到第一个程序
  • 【lucene】SpanNotQuery 存在的意义
  • 国产化Excel开发组件Spire.XLS教程:Python 读取 CSV 文件,从基础到进阶指南
  • 一文看懂@Bean注解的原理
  • 【C++】用哈希表封装实现unordered_set和unordered_map
  • Ubuntu 操作系统
  • 自动化测试概念与 Web 自动化实战(基于 Selenium)
  • Tensor常见操作
  • pycharm 远程连接服务器报错
  • Java基础第二课:hello word