图形 1.3 纹理的秘密

本文详细探讨了纹理在3D图形中的作用,包括纹理的定义、为何使用纹理、纹理管线的工作原理,以及纹理采样设置如Wrap Mode和Filter Model。介绍了不同插值方法,如最邻近、双线性、立方卷积和Quilez的平滑曲线插值,并对比了它们的效果。此外,还讨论了MipMap、各向异性过滤、纹理图集和纹理压缩等优化技术,以提升3D图形的质量和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是纹理

宏观的角度上来说就是一张2D图片,一个像素上有 RGB 值

为什么要出现纹理

1、降低建模工作量 = 牺牲几何细节

2、降低存储空间

3、提高读取速度

纹理管线

模型空间位置 → 投影函数 → 纹理映射 → 纹理坐标 → 通讯函数 → 新纹理坐标 → 纹理采样 [避免依赖纹理读取] → 纹理值

 

假设 我们将模型空间的一个点投影到 UV 坐标,获得一个 UV 坐标值,假设这个纹理的大小是256 * 256,那么这个纹理就会跟这个点投影的 UV 坐标进行相乘,得到纹理的坐标,后续这个位置的颜色需要看你的纹理采样的设置进行设置

纹素

纹素:图像纹理上的像素通常被称为纹素,以区分它和屏幕上的像素

纹理采样设置之 Wrap Mode

决定 UV 值在[0,1]以外的表现

OpenGL -- "包装模式"(Wrapping Model)

DirectX -- "纹理寻址模式"(Texture Addressing Mode)

 

Repeat —— 重复

Mirror —— 镜像

Clamp —— 这个图形的边界

Border —— 当超过这个范围的其他位置的颜色需要设置

纹理采样设置之 Filter Model

过滤设置,当纹理通过变化产生拉伸的时候,要使用哪种滤波来进行纹理的表现

 

最邻近

最邻近插值,思想就是他的名字,找插入像素点位置的最邻近的像素点,将其作为自己的像素值插入。

缩放公式为:

  • 根据横轴,即宽可得:X/x = W/w

  • 根据纵轴,即高可得:Y/y = H/h

  • 那么能够得到 f(X,Y)= f( W/w * x, H/h *y)

因此这个时候缩放后的图片像素点(x,y)的像素值就对应着原图像素点( W/w * x, H/h *y)的像素值

但是这个时候会出现一个问题就是因为缩放比例的原因,会导致像素点( W/w * x, H/h *y)中的值不是整数,那么就不知道应该对应的是哪个像素点的像素值

这个时候最邻近插值算法使用的方法就是四舍五入法,表示为[.],所以像素值f(x,y) &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值