Q96:PT(3.3):大理石纹理(Marble Texture)
标题中的“PT”表示:Procedural Texture(过程纹理)。表示该章节属于“过程纹理”的内容。
当前章节在“过程纹理”内容中的位置:
过程纹理(0)——概述
过程纹理(1)——方格纹理(1)——3D方格纹理
过程纹理(1)——方格纹理(2)——2D方格纹理(1)——平面2D方格纹理
过程纹理(1)——方格纹理(2)——2D方格纹理(2)——球面2D方格纹理
过程纹理(1)——方格纹理(2)——2D方格纹理(3)——圆柱2D方格纹理
过程纹理(2)——纹理的仿射变换
过程纹理(3)——基于噪声的纹理(0)——概述
过程纹理(3)——基于噪声的纹理(1)——Basic Noise Texture
过程纹理(3)——基于噪声的纹理(2)——Wrapped Noise Texture
过程纹理(3)——基于噪声的纹理(3)——Marble Texture
1,理论介绍
前面学习过的噪声纹理,都是在某固定颜色上添加纹理,以便得到该固定颜色的深浅不同的颜色分布。我们现在学习的大理石纹理,则是引入“颜色带(color ramp)”,如下:
当撞击点遍历整个物体时,撞击点对应的颜色值怎么从“颜色带”上重复轮转地取得呢?
根据撞击点的y坐标值设计怎么一个函数:
u = [1+sin(y)]/2 “式子1”
该函数的函数图形如下:
这样一来,从颜色带中取颜色的过程是严格依次按照y值的变化而重复轮转的。当然,我们现在是在学习噪声纹理,肯定得在这里面加点噪声。设计如下函数加入噪声:
p.y=p.y+a*noise(p) “式子2”
也就是在撞击点的y坐标上添加噪声,其中a是噪声的缩放系数。
这样一来,从颜色带中取颜色的过程则不是严格依次按照y值的变化而重复轮转的,而是“跳跃”着在颜色带上取颜色。
2,C++代码实现
定义一个新的类FBmTextureRamp。相关代码截图如下:
3,测试图形
3.1 测试代码
3.2 输出图形
求和项数6,求和幅值0. 5,求和频率2;噪声缩放系数为0(即没有噪声)
求和项数6,求和幅值0. 5,求和频率2;噪声缩放系数为0(即没有噪声)
对纹理进行仿射变换:
it_ptr->rotate_x(-60);
it_ptr->rotate_y(-60);
求和项数6,求和幅值0. 5,求和频率2;噪声缩放系数为0(即没有噪声)
对纹理进行仿射变换:
it_ptr->scale(0.2);
it_ptr->rotate_x(-60);
it_ptr->rotate_y(-60);
这里对纹理进行仿射变换,主要是为了看看纹理缩放后的图形效果。将纹理缩小到原来的五分之一时:原纹理对应图形上是只有一条蓝色带,而缩小到五分之一的纹理对应的图形上则有五条蓝色带。这也说明:在没有噪声的情况下,在颜色带上取颜色的过程是严格依次轮转的。
求和项数6,求和幅值0. 5,求和频率2;噪声缩放系数为0(即没有噪声)
对纹理进行仿射变换:
it_ptr->scale(0.1);
it_ptr->rotate_x(-60);
it_ptr->rotate_y(-60);
纹理缩小到原来的十分之一,图形上则有十条蓝色带。
求和项数6,求和幅值0. 5,求和频率2;噪声缩放系数为4
求和项数6,求和幅值0. 5,求和频率2;噪声缩放系数为8
4,其他说明
完整代码下载路径:http://download.csdn.net/detail/libing_zeng/9798309
Referrance:
[1]. Kevin Suffern, Ray Tracing from theGround Up, A K PetersLtd, 2007.
Q96:PT(3.3):大理石纹理(Marble Texture)相关推荐
- CUDA C 纹理提取Texture Fetching
CUDA C 纹理提取Texture Fetching 一.参数曲面的纹理 使用纹理指定参数曲面属性. 二.CUDA C 纹理获取开发 用于计算纹理函数,根据纹理引用的各种属性返回的值的公式(请参见纹 ...
- 初识OpenGL (-)纹理过滤(Texture Filtering)
1. OpenGL需要知道怎样将纹理像素(Texture Pixel,也叫Texel)映射到纹理坐标. 纹理坐标 不依赖于分辨率(Resolution),它可以是任意浮点值, 给模型顶点设置的那个数组 ...
- cuda 纹理内存texture使用时显示不是模板解决办法
按教程使用纹理内存texture时显示 texture不是模板. 网上找了半天,只知道这个报错是VS没有识别的问题,运行起来并没有实质性影响. 但是一条红线在这画着总觉得很别扭,于是就想取消它,最终给 ...
- 【OpenGL】OpenGL入门之纹理(Texture)
目录 纹理 纹理环绕方式 纹理过滤 多级渐远纹理(Mipmap) 加载与创建纹理 stb_image.h 生成纹理 应用纹理 纹理单元 参考 纹理 在此之前,我们已经可以为每个顶点添加颜色来增加图 ...
- Threejs纹理对象Texture阵列、偏移、旋转(纹理动画)
纹理对象Texture阵列.偏移.旋转 本文是Three.js电子书的8.4节 8.1节给大家提到过纹理对象Texture,简单的说纹理对象Texture就是包含一张图片的对象,纹理对象Texture ...
- opengl地球贴纹理_一文看懂材质/纹理 Material, Texture, Shading, Shader 的区别
在计算机图形学和三维设计中,有几个容易混淆的概念.今天我们来一举拿下. 概念整理 可以这么总结: Material 是表现 Shading 的数据集.其他几个概念都是生成这一数据集的资源或者工具. 这 ...
- starling教程-纹理(Texture)
texture是被创建来填充Image对象的,Texture和Image的关系就好像是本地的BitmapData和Bitmap的关系一样.Texture类包含如下的apis: • base : Th ...
- spine 导出纹理_Spine 纹理打包Texture packing_官方文档中文版
马上注册,加入CGJOY,让你轻松玩转CGJOY. 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 笑虾 于 2014-10-7 20:45 编辑 欢迎入群 Spine2D骨骼动 ...
- 卷积神经网络图像纹理合成 Texture Synthesis Using Convolutional Neural Networks
卷积神经网络的图像纹理合成 TextureSynthesis Using Convolutional Neural Networks Taylor Guo, 2017年4月29日 星期六 摘要 本文介 ...
最新文章
- php 随机在文章中添加锚文本_seo网站优化技巧之:8种优质锚文本的做法
- 中科大计算机复试题目,中科大计算机复试笔试部分 09-15
- http方式调用第三方接口
- 网络基础之 Nping 命令
- BZOJ 4032: [HEOI2015]最短不公共子串(后缀自动机+记忆化搜索)
- pyhanlp 词性标注(正篇)
- MySQL基础之控制台常用命令
- 单目视觉机器人的循迹_机器人视觉系统传感器的关键技术盘点
- Python的小特别
- HOJ 1015 Nearly prime numbers
- 这几天微软发布的一些好玩的东西(顺祝女性程序员朋友们节日快乐!)
- Apache Curator入门实战
- 华为路由器第三方插件_为什么路由器不开 SSH 就等于失去了很多乐趣?
- EtherCAT总线运动控制学习笔记(RXXW_Dor)
- 层次分析法(AHP)原理以及应用
- 支持ECSHOP 2.73手机客户端
- 今日头条是怎么挣钱的
- 解决IE6、IE7、IE8、Firefox兼容的几种方案
- 贪心 混合牛奶 Mixing Milk
- oracle000936,奇怪的ORA-000936错误