Real-Time Rendering——6.4 Texture Animation纹理动画 6.5 Material Mapping材料映射

本文主要是介绍Real-Time Rendering——6.4 Texture Animation纹理动画 6.5 Material Mapping材料映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

6.4 Texture Animation纹理动画

The image applied to a surface does not have to be static. For example, a video source can be used as a texture that changes from frame to frame.

应用于表面的图像不必是静态的。例如,视频源 可用作逐帧变化的纹理。

The texture coordinates need not be static, either. The application designer can explicitly change the texture coordinates from frame to frame, either in the mesh’s data itself or via functions applied in the vertex or pixel shader. Imagine that a waterfall has been modeled and that it has been textured with an image that looks like falling water. Say the v-coordinate is the direction of flow. To make the water move, one must subtract an amount from the v-coordinates on each successive frame.Subtraction from the texture coordinates has the effect of making the texture itself appear to move forward.

纹理坐标也不必是静态的。应用程序设计人员可以在网格数据本身中或通过顶点或像素着色器中应用的函数来显式地更改帧与帧之间的纹理坐标。想象一下,一个瀑布已经被建模,并且已经用看起来像正在下落的水的图像对其进行了纹理处理。假设v坐标是流动的方向。要让水流动,必须在每一个连续的帧上从v坐标中减去一个量。从纹理坐标中减去具有使纹理本身看起来向前移动的效果。

More elaborate effects can be created by applying a matrix to the texture coordinates.In addition to translation, this allows for linear transformations such as zoom,rotation, and shearing [1192, 1904], image warping and morphing transforms [1729],and generalized projections [638]. Many more elaborate effects can be created by applying functions on the CPU or in shaders.

通过将矩阵应用于纹理坐标,可以创建更精细的效果。除了平移,这允许线性变换,例如缩放、旋转和剪切[1192,1904],图像扭曲和变形变换[1729],以及广义投影[638]。通过在CPU或着色器中应用函数,可以创建更多精细的效果。

By using texture blending techniques, one can realize other animated effects. For example, by starting with a marble texture and fading in a flesh texture, one can make a statue come to life [1215].

通过使用纹理混合技术,可以实现其他动画效果。例如,从大理石纹理开始,然后淡入肉色纹理,就可以让雕像栩栩如生[1215]。

6.5 Material Mapping材料映射

A common use of a texture is to modify a material property affecting the shading equation. Real-world objects usually have material properties that vary over their surface. To simulate such objects, the pixel shader can read values from textures and use them to modify the material parameters before evaluating the shading equation.The parameter that is most often modified by a texture is the surface color. This texture is known as an albedo color map or diffuse color map. However, any parameter can be modified by a texture: replacing it, multiplying it, or changing it in some other way. For example, in Figure 6.25 three different textures are applied to a surface,replacing the constant values.

纹理的一个常见用途是修改影响着色方程的材质属性。现实世界中的物体通常具有随其表面而变化的材料属性。为了模拟这样的对象,像素着色器可以从纹理中读取值,并在评估着色方程之前使用它们来修改材质参数。纹理最常修改的参数是表面颜色。这种纹理被称为反照率颜色贴图或漫反射颜色贴图。然而,任何参数都可以被纹理修改:替换它,乘以它,或者以其他方式改变它。例如,在图6.25中,三种不同的纹理被应用到一个表面,取代了常量值。

Figure 6.25. Metallic bricks and mortar. On the right are the textures for surface color, roughness (lighter is rougher), and bump map height (lighter is higher). (Image from three.js example webgl tonemapping [218].) 

图6.25。金属砖和灰浆。右边是表面颜色、粗糙度(越浅越粗糙)和凹凸贴图高度(越浅越高)的纹理。(图片来自three.js示例webgl色调映射[218])。)

The use of textures in materials can be taken further. Instead of modifying a parameter in an equation, a texture can be used to control the flow and function of the pixel shader itself. Two or more materials with different shading equations and parameters could be applied to a surface by having one texture specify which areas of the surface have which material, causing different code to be executed for each. As an example, a metallic surface with some rusty regions can use a texture to indicate where the rust is located, conditionally executing the rusty part of the shader based on that texture lookup and otherwise executing the shiny metal shader (Section 9.5.2).

材质的使用可以更进一步。纹理可以用来控制像素着色器本身的流程和功能,而不是修改方程中的参数。通过让一个纹理指定表面的哪些区域具有哪种材料,可以将具有不同着色方程式和参数的两种或多种材料应用于表面,从而为每个区域执行不同的代码。例如,具有一些生锈区域的金属表面可以使用纹理来指示生锈的位置,根据纹理查找有条件地执行着色器的生锈部分,否则执行闪亮金属着色器(第9.5.2节)。

Shading model inputs such as surface color have a linear relationship to the final color output from the shader. Thus, textures containing such inputs can be filtered with standard techniques, and aliasing is avoided. Textures containing nonlinear shading inputs, such as roughness or bump mapping (Section 6.7), require a bit more care to avoid aliasing. Filtering techniques that take account of the shading equation can improve results for such textures. These techniques are discussed in Section 9.13.

着色模型输入(如表面颜色)与着色器的最终颜色输出具有线性关系。因此,包含这种输入的纹理可以用标准技术过滤,并且避免了锯齿。包含非线性阴影输入的纹理,如粗糙度或凹凸贴图(6.7节),需要多加小心以避免走样。考虑到着色方程的过滤技术可以改善这种纹理的结果。这些技术将在9.13节中讨论。

这篇关于Real-Time Rendering——6.4 Texture Animation纹理动画 6.5 Material Mapping材料映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/536616

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

6.4双边滤波

目录 实验原理 示例代码1 运行结果1 实验代码2 运行结果2 实验原理 双边滤波(Bilateral Filtering)是一种非线性滤波技术,用于图像处理中去除噪声,同时保留边缘和细节。这种滤波器结合了空间邻近性和像素值相似性的双重加权,从而能够在去噪(平滑图像)的同时保留图像的边缘细节。双边滤波器能够在的同时,保持边缘清晰,因此非常适合用于去除噪声和保持图像特征。在Op