计算机图形学-GAMES101-5

news2024/11/13 18:51:18

一、观测变换

 通过Viewing(观测)transformation,最终我们将世界坐标系中的物体投影到了一个xyz都处于【-1,1】的立方体中。那么接下来,我们该做什么?在这里插入图片描述

二、光栅化(Rasterization)

(1)透视投影的定义

 定义透视投影的视锥需要的参数:

  • 长宽比Aspect ratio:width / height
  • 垂直的可视角度:fovY
  • 远近平面的距离:n和f
    在这里插入图片描述
     通过长宽比和垂直的可视角度可以求出水平的可视角度。
     如下图所示,根据fovY和n可以计算出近平面的顶点坐标,再根据宽高比Aspect即可计算出近平面的高度,因此根据上述参数可以计算出所有屏幕的所有信息。远平面同理。

在这里插入图片描述
在这里插入图片描述
 因此我们只需要定义fov和宽高比Aspect以及n和f即可定义一个确定的视锥。

(2)屏幕像素

 屏幕的分辨率诸如1920×1080也叫做1080P,数字说明的都是像素的多少。
 屏幕是一个典型的光栅成像设备,把图像画在屏幕上的过程就是光栅化的过程。
 我们暂时认为像素是呈现颜色的最小单位,其实这是不对的。像素的颜色表示了一个灰度,一般是0~255,使用RGB三个值来表示一个颜色。
 屏幕空间中每一个像素使用一个(x,y)坐标来表示,屏幕上的像素就是从(0,0)到(width-1,height-1)。像素的中心其实位于(x+0.5,y+0.5)。
在这里插入图片描述

(3)投影立方体到屏幕的映射

 将【-1,1】的立方体映射到屏幕【0,width】和【0,height】。
在这里插入图片描述

  • 映射对应的变换矩阵:在这里插入图片描述
     上述变换将立方体空间【-1,1】变换到二维空间【0,width】×【0,height】。我们已经得到了一个二维的图片了,现在我们要把这个图像打散成像素,即光栅化。
  • 光栅化是指将图像中的基本图形即图元打碎成像素,将图元打碎成像素后得到每个像素应该显示的颜色,再将图像真正的显示在屏幕上。

(3)屏幕的成像

  • CRT成像设备会逐行逐列去绘制像素的颜色。隔行扫描:奇数行和偶数行交替绘制,在每一帧只绘制奇数行或偶数行。但是隔行扫描可能会造成严重的画面撕裂,特别是高速运动的画面。
    在这里插入图片描述

  • 低分辨率设备如计算器,高分辨率设备如智能手机的屏幕。一些屏幕设备分辨率已经超出了人类视网膜的分辨率,这种屏幕叫做视网膜屏幕。

  • 液晶显示器LCD通过液晶对光的扭曲,当光通过光栅时会被扭曲。
    在这里插入图片描述

  • 发光二极管LED,即要么发光要么不发光,可以发出不同的颜色。
    在这里插入图片描述

(4)如何光栅化

(4.1)从图形到像素

  • 三角形可以表达三维和二维的面,三角形是最基础的多边形,任何多边形都可以拆解成三角形,三角形内部永远都是一个平面,三角形内部外部定义清晰。
  • 根据三角形内点和三角形顶点的位置关系,可以得到颜色的一个渐变效果。
  • 光栅化中最重要的:判断一个像素和三角形的位置关系,更确切的来说考虑像素的中心点和三角形的位置关系。
  • 采样,即对某个定义的函数,以像素中心位置为自变量,带入得到的因变量。
    在这里插入图片描述

(4.2)采样

  • 定义函数inside,其中t代表三角形,xy为任意实数。
    在这里插入图片描述

  • 考虑屏幕上的每一个像素:在三角形内还是外在这里插入图片描述

  • 如果点在边上,要么不做处理,要么特殊定义。在OpenGL中认为如果点落在左边和上边则其处在三角形内,如果落在右边和下边则不在三角形内。

  • 根据三角形的顶点坐标,对x和y取最小和最大,得到三角形的包围盒(两个对角顶点),如下图蓝色区域所示。当循环像素判断是否在三角形内时,只需要循环包围盒内的三角形。(光栅化的加速)
    在这里插入图片描述

  • 更快速的光栅化加速如下图所示,适用于窄长刚好旋转45°处于对角线位置的三角形。在这里插入图片描述

  • 人眼对绿色最为敏感,对更多的绿色使得视觉效果更好。RGB值越大越亮。
    在这里插入图片描述

(5)锯齿和走样

  • 锯齿是光栅化中一直在解决的问题,出现锯齿的原因是我们对信号的采样率不够高,因此导致信号的走样。
    在这里插入图片描述

  • 走样即Aliasing,对应的还有反走样、抗锯齿
    在这里插入图片描述

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

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

相关文章

〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析

历时18个月,采访 850 得到的需求。 不管你是在校大学生、研究生、还是在职的小伙伴,该专栏有你想要的职业规划、简历、面试的答案。说明:该文属于 大学生技术人职业规划白宝书 专栏,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社…

linux之线程同步

1. 互斥锁 定义锁: pthread_mutex_t 初始化锁函数: int pthread_mutex_init(pthread_mutex_t* mutex,pthread_mutexattr_t* attr); 第一个参数是定义的互斥锁的地址,第二个参数是锁的属性,一般传NULL 互斥锁的属性在创建…

(C语言版)力扣(LeetCode)+牛客网(nowcoder)二叉树基础oj练习

二叉树基础oj练习 965. 单值二叉树题目解法 100. 相同的树题目解法 101. 对称二叉树题目解法 144. 二叉树的前序遍历题目解法 94. 二叉树的中序遍历题目解法 145. 二叉树的后序遍历题目解法 572. 另一棵树的子树题目解法 KY11 二叉树遍历题目解法 结语 965. 单值二叉树 题目 …

Linux安装MongoDB数据库并内网穿透在外远程访问

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 转发自CSDN cpolarlisa的文章:Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透…

LeetCode572. 另一棵树的子树LeetCode

572. 另一棵树的子树 描述示例解题思路以及代码 描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节…

数据库|SQL调优案例之TiFlash帮倒忙该怎么办?

一、背景 早上收到某系统的告警tidb节点挂掉无法访问,情况十万火急。登录中控机查了一下display信息,4个TiDB、Prometheus、Grafana全挂了,某台机器hang死无法连接,经过快速重启后集群恢复,经排查后是昨天上线的某个S…

Flink消费pubsub问题

我看网上flink消费pubsub的资料并不多,最近跑通了,大家有问题的可以给我留言。 一、基本资料 1.flink官网接入方式 Google Cloud PubSub | Apache Flink StreamExecutionEnvironment streamExecEnv StreamExecutionEnvironment.getExecutionEnviron…

Android平台如何实现外部编码后(H.264/H.265)数据实时预览播放

技术背景 我们在对接开发者的时候,遇到这样的诉求:除了正常的RTMP、RTSP直播播放外,有些硬件设备输出编码后(H.264/H.265)的数据,比如无人机或类似硬件产品,回调出来的H.264/H.265数据&#xf…

C#中的委托是什么

https://www.cnblogs.com/deepalley/p/12150931.html 1.什么是委托?(方法作另一个方法的参数) delegate void MyDel(int value); //声明委托类型 和类一样,委托是用户自定义的类型,但是类是数据和方法的集合&#…

vue实现功能完整的购物商城,商品零食、电商通用商城

目录 一、项目结构 1.项目截图 2.项目简介 3.项目布局 二、首页 1.效果图 2.源码 三、商品详情 1.效果图 2.源码 四、分类 1.效果图 五、购物车、提交订单 1.效果图 六、个人中心 1.源码结构 2、效果图 七、总结 一、项目结构 1.项目截图 2.项目简介 项目基于vue…

海睿思分享 | 一文读懂企业数据资产目录建设的重要性

小王是某公司信息化部门负责人。 某天,公司领导需要获取近三年来生产部门的人员信息全面数据,小王费了九牛二虎之力,召开了各种会议,在各个系统里来回找数据,最终找到了这些数据。然而领导所需的人员职称、人员获奖信…

UOS服务器系统配置bond

一、Bond介绍 bond可以将多个网卡绑定到一起,可以让两个或多个接口作为一个接口,同时提高带宽,并提供网络链路的冗余,当有其中一块网卡故障的时候,不会中断服务器的业务。 二、Bond模式 1、mode0(balanc…

老杨说运维 | 运维数智化转型正确打开方式是什么?他这样说

2023年5月9日,中国计算机用户协会信息科技审计分会会员大会暨金融科技风险管理与审计论坛成功于北京召开。擎创科技CEO杨辰受邀与会,并分享了在数智运维发展过程中对企业数智化转型建设的规划思考以及相关实践经验。 同时,年会上举行了“金融…

《基础知识》提示学习的基本知识

《基础知识》提示学习的基本知识 提示学习背景提示的形式和元素提示学习的输入形式提示学习的重要元素提示学习的输入形式举例基本提示任务提示学习 内容参考:打工人转型之道(二):提示工程(Prompt Engineering)进阶篇

【服务器】利用树莓派搭建 web 服务器【无需公网IP】

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 概述 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 设置 Apache Web 服务器 测试 web 站点 安装静态样例站点 将web站点发布到公网 安装 Cpolar内网穿透 cpolar进行tok…

基于 FPGA 的彩色图像灰度化的设计实现(image_stitche_x)

文章目录 前言一、图像合并模块的设计二、仿真文件 前言 image_stitche_x 模块:将串口接收的尺寸为 400480 大小的彩色图像与灰度化处理后的 400480 大小的图像数据以左右形式合并成一张 800*480 的图像。 提示:以下是本篇文章正文内容,下面…

AI再度升级,IT业一片哀鸿遍野:程序员真的要失业了吗?

IT人员真的要失业了吗? 随着各个大厂已经相继传来裁员,降薪,减招的消息和ChatGPT等大型AI模型可以定制化写参考代码,甚至通过外接API直接帮助操作,IT人员似乎越来越不吃香了。 其实,ChatGPT有用的不是取代…

Diango学习-用户管理系统(简单部门管理、用户管理)

目录 1、创建项目和app 1.创建项目 2.创建app 2种创建方式 注册app 2、表结构的创建 Django中的模型字段有很多种,包括但不限于: 设计表结构(Django) 在models.py文件中创建表:部门表和员工表 加入性别列&…

FL Studio21.0.3.3517完整试用版

系统要求 FL STUDIO 可以运行在任何计算机上: 支持 WINDOWS: 7, 8, 10 或者更高版本 支持 MacOS: 10.11 或更高版本 不低于 4GB 的可用硬盘空间 建议最低 4GB 内存或 更高 当然CPU 越强大,也就意味着你运行的音源和效果器越多! FL Studio是一个非常受欢迎的数…

轻松实现远程访问本地wamp服务器,无公网IP也不怕,「内网穿透」

目录 前言 1.Wamp服务器搭建 1.1 Wamp下载和安装 1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册 2.1 本地网页发布 2.2 Cpolar云端设置 2.3 Cpolar本地设置 3. 公网访问测试 4. 结语 转载自cpolar极点云的文章:无公网IP?教你在外远程访问本地…