梳理从MVP变换到光栅化的过程

news2024/11/22 18:34:21

1.梳理从MVP变换到光栅化的过程

相关博客:
1.MVP变换
2.Rasterization(光栅化)

1.1 View/Camera transformation


此例中相机初始位置为(0,0,5)【备注:详见主函数中输入的值】经过 M view M_{\text{view}} Mview将相机移动到原点且相机方向朝向z轴负向,zNear与zFar均为负数
下图仅为示意图

1.2 Model Transformation



此例中将空间中三角形绕z轴旋转,每一次按键A则左旋10度,每一次按键D则右旋10度

1.3 Projection Transformation

Projection Transformation包含两种:
1.Orthographic projection(正交投影)

2.Perspective projection(透视投影)

MVP变换中的投影变换



我们这里用透视投影(Perspective Projection)
透视投影的过程需要将视锥(Frustum)的远处面zFar挤压到与zNear同大小,随后进行正交投影


下图仅为示意图


为什么要挤压?因为要进行透视投影,只有挤压后才能体现出近大远小(小就是因为被挤压了)
挤压过程中zNear平面不变,即近处画面不变,zFar中心点位置不变,zNear与zFar之间的所有物体均被挤压
如果是进行正交投影,则无需挤压,直接进行投影即可

1.4 Viewport Transformation

空间中的物体透视投影后,经过视口变换,将其投影缩放到与屏幕相适应的大小



左侧为透视投影结果,右侧为空间的俯视图


经过视口变换后的效果如下

1.5 Rasterization

如何用像素描述这个图像的投影?就是光栅化的意思,光栅化的本意是drawing onto the screen
三角形可以构成复杂图形,3D物体经过MVP变换到2D平面,随后通过光栅化进行渲染

利用三角形三边的三个向量叉积来判断像素中心点是否在三角形内,如果在三角形内,则对该像素进行采样(也就是所有屏幕中的像素中,属于图形内部的像素被选中),被采样的像素将进行上色


如果直接采样进行光栅化容易产生锯齿等走样问题


为了减轻锯齿问题,我们需要进行抗锯齿
需要的操作是光栅化之前进行模糊处理(滤波或者卷积操作),随后进行光栅化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1394423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell编程-uname命令详解(超详细)

文章目录 前言一、介绍二、语法格式三、常见选项四、示例用法1. 输出所有信息2. 查看内核名称3. 查看主机名4. 查看内核发行号5. 查看内核版本6. 查看硬件架构名称7. 查看处理器类型8. 查看硬件平台9. 查看操作系统名称10. 查看版本信息 总结 前言 在本文中,我们将…

智能小程序开发项目步骤流程

快速开始 在开发小程序之前,请确保电脑上已经安装node运行环境。可前往Node.js官网(opens in a new tab)下载安装。智能小程序环境搭建和面板小程序一致,请参考面板小程序搭建环境指南。 开发小程序的流程: 使用涂鸦开发者 IoT 账号登录 T…

鸿蒙千帆起~ 是转? 还是留?

近期鸿蒙系统相关行业热度一度高涨,像今天2024年1月18日 鸿蒙OS Next开发者预览版正式发布引起了不少业内人士关注,再度冲上了热榜。余承东老余之前就说过2024年是鸿蒙关键的一年,从这句话就可以看出后一定有大的动作。 就像去年有业内人士网…

Unreal Engine(UE5)中构建离线地图服务

1. 首先需要用到3个软件,Unreal Engine,gis office 和 bigemap离线服务器 Unreal Engine下载地址:点击前往下载页面 Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unreal Engine用于数字孪生项目开发&#x…

【python】—— 集合

目录 (一)集合的概念 (二)集合的使用 2.1 集合的创建 2.2 集合元素的唯一性 2.3 集合的操作 2.3.1 并集 2.3.2 交集 2.3.3 差集 2.3.4 补集 2.4 遍历集合 2.5 其他集合操作 2.5.1 添加元素 2.5.2 移除元素 2.5.3 清…

15分钟学会Pinia

Pinia 核心 Pinia 介绍 官方文档:pinia.web3doc.top/ What is Pinia ? Pinia 是一个状态管理工具,它和 Vuex 一样为 Vue 应用程序提供共享状态管理能力。语法和 Vue3 一样,它实现状态管理有两种语法:选项式API 与 组合式API&a…

11- OpenCV:自定义线性滤波(卷积,卷积边缘)

目录 一、卷积 1、卷积概念 2、卷积如何工作 3、常见算子(卷积核 Kenel) 4、自定义卷积模糊 二、卷积边缘 1、卷积边缘问题 2、处理边缘 一、卷积 1、卷积概念 (1)在OpenCV中,卷积是一种常用的图像处理操作&…

Python+Selenium+Unittest 之selenium13--WebDriver操作方法3-鼠标操作2

这篇说下ActionChains里常用的几种鼠标操作的方法。 ActionChains常用的鼠标操作方法 click()鼠标左键单击double_click()鼠标左键双击context_click()鼠标右键单击move_to_element()鼠标移动到某个元素上(鼠标悬浮操作)click_and_hold()点击鼠标左键&am…

合并K个升序链表(LeetCode 23)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:顺序合并方法二:分治合并方法三:使用优先队列合并 参考文献 1.问题描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff…

Flink的KeyedProcessFunction基于Event Time和Process Time的定时器用法实例分析

FLink处理函数简介 在Flink底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的【处理】(process)操作——它是所有转换算子的一个概括性的表…

动手学深度学习5 矩阵计算

矩阵计算--矩阵怎么求导数 1. 导数和微分2. 偏导数3. 梯度1. 向量-标量求导2. 向量-向量求导3. 拓展到矩阵 4. 链式法则5. 小结QA练习 课程安排: 视频:https://www.bilibili.com/video/BV1eZ4y1w7PY/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ce…

【复现】SpringBlade SQL 注入漏洞_22

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 SpringBlade 是由一个商业级项目升级优化而来的SpringCloud微服务架构,采用Java8 API重构了业务代码,完全…

具有中国特色的普及工厂数字化转型的新路子

工业互联网浪潮来袭,你准备好了吗? 国家智能制造专委会委员、浙江省智能制造专家委员会毛光烈主任在“第七届中国工业大数据大会”上的演讲,《具有中国特色的普及工厂数字化转型的新路子》,阐述了关于工厂订单全流程业务数据体系运…

C++核心编程之通过类和对象的思想对文件进行操作

目录 ​​​​​​​一、文件操作 1. 文件类型分类: 2. 操作文件的三大类 二、文本文件 1.写文件 2.读文件 三、二进制文件 1.写二进制文件 2.读二进制文件 一、文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将…

GPT APP的开发步骤

开发一个GPT(Generative Pre-trained Transformer) Store(存储)涉及到使用预训练的语言模型(例如GPT-3)来生成和管理内容。以下是一般的步骤,希望对大家有所帮助。北京木奇移动技术有限公司&…

2024年美国大学生数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

适合进阶学习的 机器学习 开源项目(可快速下载)

目录 开源项目合集[>> 开源的机器学习平台:mlflow/mlflow](https://gitcode.com/mlflow/mlflow)[>> 机器学习路线图:mrdbourke/machine-learning-roadmap](https://gitcode.com/mrdbourke/machine-learning-roadmap)[>> 机器学习理论和…

VsCode 常见的配置

转载:Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】 - 知乎 (zhihu.com) 一、VsCode 常见的配置 1、取消更新 把插件的更新也一起取消了 2、设置编码为utf-8:默认就是了,不用设置了 3、设置常用的…

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

作者:赫曦 随着上云的认知更加普遍,我们发现除了以往占大部分的互联网类型的客户,一些传统的企业,一些制造类的和工业型企业客户也都开始使用云原生的方式去做 IT 架构的转型,提高集群资源使用率也成为企业上云的一致…

【51单片机】数码管的静态与动态显示(含消影)

数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 目录 静态数码管:器件介绍:数码管的使用:译码器的使用:缓冲器: 实现原理:完整代码: 动态数码管&#…