【计算机图形学入门】笔记9:Shading3着色(插值、高级纹理映射)

news2024/12/24 11:30:48

09Shading3着色(插值、高级纹理映射)

    • 1.Barycentric Coordinates 重心坐标
      • 1.A点自己的重心坐标
      • 2.如何求出任意点的重心坐标?
    • 2.如何把纹理应用在实际的渲染中?Applying Textures
    • 3.Texture Magnification纹理放大。(解决纹理小的问题)
      • 双线性差值Bilinear Interpolation:做了两趟差值,水平一趟竖直一趟。
    • 4.Texture Magnification (hard case) 如果纹理太大怎么办?
      • Mipmap范围查询
      • Trilinear Interpolation三线性差值
      • 各向异性(在不同的方向上表现各不相同)过滤

1.Barycentric Coordinates 重心坐标

为了做三角形内部的差值而引入,希望通过三角形的顶点对三角形内部某一个值都能有一个平滑的过渡。

What do we want to interpolate?差值能做什么?
• Texture coordinates, colors, normal vector 可以差值纹理坐标,颜色,法向量

重心坐标是定义在三角形上的,一个三角形有一个重心坐标。

请添加图片描述

A coordinate system for triangles(α ,β ,γ):重心坐标

三角形所在平面上任意一点xy,都可以用三个顶点他们坐标的线性组合来表示,只要满足一个条件(α +β +γ=1)。等于1是为了现在这个点在三角形所在的平面内

如果这个点在三角形内还需要满足(α ,β ,γ)这三个系数必须是非负的。Inside the triangle if all three coordinates are non-negative

1.A点自己的重心坐标

请添加图片描述

2.如何求出任意点的重心坐标?

——利用小三角形的面积求

请添加图片描述

三角形自己的重心坐标:(1/3,1/3,1/3),把三角形分为了3个等面积的三角形

请添加图片描述

投影后重心坐标会发生变化,那么如何把已经投影到屏幕上的坐标再投影回去呢?使用逆变换

也就是说在三维空间中的属性建议在三维空间中做差值然后再把这个值对应到二维结果上去

请添加图片描述

任何一个点只要有重心坐标就可以差值任何的属性。

2.如何把纹理应用在实际的渲染中?Applying Textures

屏幕上任何一个采样点都有一个位置,都对应一个纹理坐标uv,之前纹理坐标都定义在三角形的顶点上,现在都可以算出来了。

请添加图片描述

那么如果这样做会出现什么问题呢?

3.Texture Magnification纹理放大。(解决纹理小的问题)

如果纹理太小怎么办(如果纹理只有256*256但要求分辨率为4k的墙进行渲染),也就是说我们看一个很高分辨率的墙,任意一个点去查这个纹理的时候,会查到一些非整数的值,也就是说纹理太小了,纹理就会被拉大。

解决办法:

对于任何墙上的一个点(一个像素),都可以找到它对应的纹理上的一个位置,这个位置可能不是整数,那我们就把它四舍五入为整数。

但是这样也会产生不好的视觉效果,因为一小块点的像素都被划分为了同样的颜色纹理,没有平滑的过渡。

请添加图片描述

双线性差值Bilinear Interpolation:做了两趟差值,水平一趟竖直一趟。

请添加图片描述

这样的话小红点就综合考虑了它周边4个点的颜色,目的是达到平滑过渡。

请添加图片描述

Bicubic:取临近16个做水平和竖直的差值,每次用4个做三次的差值,运算量大效果好。

4.Texture Magnification (hard case) 如果纹理太大怎么办?

近处会产生锯齿,远处会产生摩尔纹

请添加图片描述

当像素覆盖的纹理区域比较大的时候,不能简单的用中心点的特征来评判整个像素的特征这样简单的采样。

请添加图片描述

如果使用超采样(一个像素用更多的样本来采样,比如右图512个点取平均)来解决,可以得到很好的结果但运算量会很大。

请添加图片描述

复习:走样是怎么来的?

答:采样的速度跟不上信号的频率,也就是信号变化过快。

当纹理特别大时,一个像素的像素内部就会包含很大一块纹理,这块纹理一直在变化,也就是说在一个像素内它的频率很高,可我们只用了一个采样点去采样。

一个像素内它有着非常高频的信息,我们希望把这个像素内的值给重构出来,那我们就应该需要一个更高频的采样方法,这就是为什么我们需要非常多采样点的原因。、

我们不想用这么多的采样点怎么办?既然采样会引起走样那我们不采样不就行了!

避免采样:像素会在纹理上覆盖很大一块区域,如果我立刻可以知道这块区域它的值平均是多少。

补充知识:点查询和范围查询。点查询:例如双线性差值,范围查询:例如找范围内的平均值

Mipmap范围查询

Allowing (fast, approx., square) range queries 允许快,近视,方形

逐步把一个图的分辨率缩小一半

请添加图片描述

每次存储量是原本的1/4,因为每次边长都砍去了一半,有四条边。也就是所有的图加起来最终比原来多出1/3的存储量。

Trilinear Interpolation三线性差值

请添加图片描述

将两个相邻层的双线性差值结果再差值一次就可得到三线性差值,例如求1.8层的话最初就是1层和2层的双线性差值结果

请添加图片描述

从三线性差值的结果可以看出,不同层次之间都有颜色渐变的过渡。

但是mipmap也会产生一些问题,比如会把远处的图像Overblur模糊过分了。

请添加图片描述

这是因为mipmap只能查询正方形区域内范围查询它的平均值,其差值也是近似出来的。

各向异性(在不同的方向上表现各不相同)过滤

允许对长方形的区域做快速范围查询。总共开销是原本的3倍

请添加图片描述

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

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

相关文章

Transform+ASM插桩系列(1)——熟悉Java字节码

前言 为什么要学习Java字节码呢,因为我们学的是插桩字节码技术,这块技术的根底就是字节码,要学会字节码的阅读和字节码的编写,虽然现在很多工具可以帮我们阅读和编写,但最根本的知识还是要理解的。万层楼高从地起&…

CTF之MISC题目-西游记

CTF系列文章 第一篇 CTF之密码学题目-classical && coding 第二篇 CTF之MISC题目-西游记 文章目录CTF系列文章前言一、题目是什么?二、解题步骤1.下载文件,解压2.暴力破解3.解压文件4.处理文本文件5.手动删除多余字符总结前言 CTF中关于MISC&a…

TensorFlow之回归模型-3

1 基本概念 回归模型 线性 线性模型 非线性模型 线性回归 逻辑回归 Log Loss(损失函数) 分类临界值 2 效率预测 如上所示,使用测试数据集进行评估、用图形显示逻辑回归的预测结果,其中,test_features是测试特…

hnu计网实验一-应用协议与数据包分析实验(使用Wireshark)

前言:这是个比较简单的实验,个人认为最难的不是分析部分,而是能否抓到一个好的包。为了抓到一个好的包我试了很多个网站,终于抓京东时抓到了令我个人最满意的包,因为没有其他各种杂乱的报文,就是那几条必要…

直流信号线性放大器非隔离转换模块0-10V转0-12V大功率负载180mA导轨安装

概述: 导轨安装DIN11 NIPO 系列模拟信号放大器是一种将输入信号放大、转换成按比例输出的直流信号放大器。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号测控的行业。此系列产品内部采用稳压电路,通过等比例控制线性放大输…

视频转换IC大全和桥接芯片大全

视频转换大全(桥接芯片大全) 本人从事多年视频转换ic多年累计大量宝贵资源,可以和大家交流交流,下面就视频转换或桥接芯片做下相关交流,期望可以帮助大家。 视频转换或视频桥接:就是把视频源的信号格式转成…

《MySQL高级篇》数据库建模工具---PowderDesigner的使用教程

文章目录PowerDesigner的使用11.1 开始界面11.2 概念数据模型11.3 物理数据模型11.4 概念模型转为物理模型11.5 物理模型转为概念模型11.6 物理模型导出SQL语句PowerDesigner的使用 PowerDesigner是一款开发人员常用的数据库建模工具,用户利用该软件可以方便地制作…

Python--字典及基本操作

字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。 比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素…

传统目标跟踪——背景分割法

目录 一、背景分割法 二、流程 三、代码 四、总结 一、背景分割法 传统的前景背景分割方法有GrabCut,分水岭算法,当然也包括一些阈值分割的算法。但是这些算法在应用中往往显得鲁棒性较弱,达不到一个好的分割效果。 现代的背景分割算法融入…

便宜的骨传导耳机好用吗?五款便宜的骨传导耳机推荐

市面上的骨传导耳机价格参差不齐,那价位较低的骨传导耳机能不能入手呢?只能说“一分钱,一分货”但是一些大牌骨传导耳机品牌也会出一些性价比较高的骨传导耳机,依靠大牌技术的加持,耳机的使用体验也会更好。可以看看下…

抓住站点能源革命机遇,必须要了解的十大趋势

编辑 | 阿冒 设计 | 沐由每一天,你做得最多的几件事情是什么?喝八回水,吃三次饭,还有空闲的时候起身溜达几圈,以及穿插其间、难以计数的查看手机次数?可以说,我们中的绝大多数每天在手机上花…

告别丑陋判空,一个Optional类就能搞定

认识Optional Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用,通常会用 null!obj 这样的方式存在的判断,从而令人头疼导致空指针异常,同Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效…

剑指 Offer 16. 数值的整数次方

题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 思路 快速幂算法 求 x^n最简单的方法是通过循环将 n 个 x 乘起来,依次求 x1,x2,...,x^n,…

【微服务】Nacos 注册中心服务数据模型

目录 一、前言 二、服务(Service)和服务实例(Instance) 1、定义服务 2、服务元数据 3、定义实例 4、实例元数据 5、持久化属性 三、集群 1、定义集群 四、生命周期 1、服务的⽣命周期 2、实例的⽣命周期 3、集群的⽣命…

使用Comsol完成固体火箭装药的燃面推移

简介 为了计算固体火箭发动机的内弹道曲线,必须知道燃面面积随烧去肉厚的变化关系。目前主要有实体造型法、动网格法、水平集法等。笔者给出一种直接使用Comsol有限元软件完成燃面推移的方法,使用简便快捷,无需编写代码。 理论部分可参考论…

API风险

©网络研究院 从表面上看,API帮助企业连接应用程序并相互共享数据。这为客户和用户创造了更简单、更无缝的体验。 如果你曾经使用你的谷歌账户登录过多个网站或应用程序,那么你很有可能使用的是谷歌开发的API。 像这样的API在后台工作&#xff0c…

极狐gitlab-runner的安装

1)下载系统对应的二进制文件 # Linux x86-64 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 2)赋予执行权限 chmod x /usr/local/bin/gitlab-runne…

Faster RCNN网络源码解读(Ⅱ) --- Faster RCNN源码使用

目录 一、源码链接 二、环境配置 三、文件结构 四、预训练权重下载地址 五、训练集 六、训练方法及注意事项 七、大概看一下训练过程(train_mobilenetv2.py) 一、源码链接 Faster R-CNN源码链接https://pan.baidu.com/s/1SQjyLXD47H11ke05OXY…

基于javaweb的学院社团管理系统(idea+servlet+jsp)

一、系统简介 本项目采用idea工具开发,jspservletjquery技术编写,数据库采用的是mysql,navicat开发工具。 系统一共分为3个角色分别是:管理员,学生,社长 获取方式:基于javaweb的学院社团管理系…

VisualStudio2015安装不上的解决方法_选择对应msi_依然报错继续选择---VisualStudio2015工作笔记001

这个visualstudio网上竟然有卖的,真的是太~咱啥也不说了~ 好了说解决办法吧; 1.这里完整版大小挺大的6G多,但是这里我们找的有可能是只有3.8G左右的,这个版本的就是有文件损坏...但是这个版本是可以装上的,也不耽误用的,我亲自测试了. 2.因为很久没写vb.net程序了,想写个小程…