首页 > 其他分享 >Lecture 05 Rasterization 1(Triangles)

Lecture 05 Rasterization 1(Triangles)

时间:2024-03-24 11:55:35浏览次数:17  
标签:Rasterization 0.5 像素 width Lecture 三角形 height 屏幕 Triangles

Lecture 05 Rasterization 1 (Triangles)

什么是屏幕

  • 一组像素
  • 数组的大小:分辨率
  • 一种典型的光栅成像设备

光栅

光栅化 == 画在屏幕离

像素

  • 一个个小方块,每个方块中的颜色不会变化(实际上不准确,这样描述只是方便理解)
  • 颜色是RGB三个值的混合

定义屏幕空间

  • 像素的坐标写成\((x,y)\)形式,且为整数
  • 像素坐标\(\in[0,width-1]\)
  • 像素\((x,y)\)中心处于\((x+0.5,y+0.5)\)
  • 一个屏幕覆盖范围从\((0,0) 到(width,height)\)

*不同API的屏幕空间差异

  • OpenGL左下角为\((0,0)\),\(x\)轴向右为正,\(y\)轴向上为正
  • DirectX左上角为\((0,0)\),\(x\)轴向右为正,\(y\) 轴向下为正

标准长方体到屏幕

  • 先不管深度\(z\)

  • 变换到\(xy\)平面(视口变换):\([-1,1]^2->[0,width]\times[0,height]\)

    Viewport(视口)矩阵

    \(M_{viewport}=\begin{pmatrix}\frac{width}{2} & 0 & 0 & \frac{width}{2}\\0 & \frac{height}{2} & 0 & \frac{height}{2}\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\end{pmatrix}\)

光栅化

三角形

  • 最基础的多边形
    • 所有多边形都可以分解成三角形
  • 独特的数型
    • 一定是平面
    • 内外定义明确
    • 只需定义三个顶点,内部的属性可通过线性插值确定

采样

把一个连续函数离散化z

(带入不同值求出函数值)

for (int x = 0; x < xmax; ++x)
	output[x] = f(x);

采样是图形学中的核心思想

对于完全在三角形内部的像素,其颜色确定,对于在三角形边界上的像素,通过其中心点判断是否在三角形内部

\[inside(t,x,y)= \left\{ \begin{aligned} &1\ Point(x,y)\ in\ triangle\ t\\ &0\ otherwise \end{aligned} \right. \]

for (int x = 0; x < xmax; ++x)
	for (int y = 0; y < ymax; ++y)
		image[x][y] = inside(tri, x + 0.5, y + 0.5)

如何确定一个点是否在三角形内(inside函数)?

三叉乘,见Lecture 02

边界问题

如果一个点即落在三角形1,又落在三角形2的边界上?

自己定义:如该点可以既在1上又在2上,既不在1上也不在2上等等

在OpenGL中,落在上边和左边算在内部,在下边和右边不算在内部

需要遍历所有像素吗?

使用轴向包围盒(AABB)

处于包围盒外的像素无需遍历

还有更多的加速方法

针对不同情况,有不同方法

标签:Rasterization,0.5,像素,width,Lecture,三角形,height,屏幕,Triangles
From: https://www.cnblogs.com/Tellulu/p/18092215

相关文章

  • Lecture 02 Review of Linear Algebra
    Lecture02ReviewofLinearAlgebra图形学的依赖基础数学线性代数微积分统计学基础物理光学力学杂项信号处理数值分析一点美学向量(数学上称为向量,物理上称为矢量)\(\vec{AB}\)=B-A向量表示方向和长度向量的大小\(\Vert\vec{a}\rVert\)单位向量\(\wi......
  • B - Make Many Triangles
    原题链接题解1.我们可以用若干条直线把所有点串起来,串起来的要求是不同直线不共点,这样以每条直线上的两点为底,直线外另一点为顶点配对令最大的直线上的点数为k,如果n-k>=k/2+k%2,那么这条直线上的点一定可以被消除。否则不行就变成了若干集合彼此相消,当最大集合大小超过剩余集......
  • Rasterization
    三角面片为什么是三角面片?三角形是最基本的多边形保证在同一个面上非常好的定义内外非常容易定义插值光栅化重要问题之怎么判断像素的中心点在三角形内?叉积的结果应该同号AliasingJaggies【锯齿】Moire【摩尔纹】WagonWheelIllusion。。。。原因最根本的原因......
  • 闫令琪计算机图形学入门---Lecture 02 笔记
    本节课主要讲了计算机图形学中要用到的线性代数知识,包括向量的点乘、叉乘以及矩阵的乘法,属于很基础的一节课。点乘点乘的性质如下:点乘满足交换律、结合律、分配律用途:1、点乘可以用于将一个向量投影到另一个向量上      2、点乘可以计算两个向量之间的角度,比......
  • matlab教程_台大lecture2
    scriptwriting程序撰写保存为.m运行:F5 保存时候大小写有区别,字母开头注释:% 形成区块:%%(在debug时候很有用),可以分别运行各个部分的内容 debug:设置断点,类似于c语言中的,可以看变量的值Tips:选中后右键可以智能缩进structuredprogramming2.scriptflow:写程序的一些......
  • matlab教程_台大lecture1基本操作和矩阵输入
    matlab教程视频matlabascalculatorcommendline直接用命令行计算部分ans是结果运算法则和平时一样((),^乘除加减)onlinehelpeg:helpsin&直接搜索嵌套式公式sin(cos(pi))==cos(pi)sin(ans)其中,ans是第一个的结果变量可以用who查看变量,whos详细信息一些保留......
  • GAMES101 Rasterization 光栅化
    向量点乘的作用计算两个方法方向夹角计算两个方向是否接近关于两个方向的计算向量叉乘\[\vec{a}\times\vec{b}=\begin{pmatrix}y_az_b-y_bz_a\\z_ax_b-x_az_b\\x_ay_b-y_ax_b\end{pmatrix}\]\[\veca\times\vecb=A^*b=\begin{pmatrix}0&-z_a&y_a\\z_a&0&-x_a\\-y_a&x......
  • [CS61A-Fall-2020]学习记录四 Lecture4中有意思的点
    首先,本文不是总结归纳,只是记录一些有趣的知识点罢了assert课堂中在讲授函数,如frommathimportpidefarea_circle(r):returnr*r*pi但老师提出,当r为-10时,函数不会报错,于是引入assert来检测参数frommathimportpidefarea_circle(r):#参数应为正数......
  • Codeforces 1025F Disjoint Triangles
    结论:如果两个三角形不相交,那么一定存在两条内公切线。于是可以考虑枚举这条内公切线的端点\(x,y\)。那么一个三角形的两个端点就会在\(x\toy\)这条线的同一侧,另外一个三角形的两个端点会在这条线的另一侧。同时这条线的一侧与其配对的端点可能是\(x\)也可能是\(y\)。......
  • SciTech-Physics-The Feynman Lectures on Physics
    https://www.feynmanlectures.caltech.eduCaltech'sDivisionofPhysics,MathematicsandAstronomyandTheFeynmanLecturesWebsitearepleasedtopresentthisonlineeditionofTheFeynmanLecturesonPhysicsFeynman•Leighton•SandsRestoremyview......