标题中的“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)相关推荐

  1. CUDA C 纹理提取Texture Fetching

    CUDA C 纹理提取Texture Fetching 一.参数曲面的纹理 使用纹理指定参数曲面属性. 二.CUDA C 纹理获取开发 用于计算纹理函数,根据纹理引用的各种属性返回的值的公式(请参见纹 ...

  2. 初识OpenGL (-)纹理过滤(Texture Filtering)

    1. OpenGL需要知道怎样将纹理像素(Texture Pixel,也叫Texel)映射到纹理坐标. 纹理坐标 不依赖于分辨率(Resolution),它可以是任意浮点值, 给模型顶点设置的那个数组 ...

  3. cuda 纹理内存texture使用时显示不是模板解决办法

    按教程使用纹理内存texture时显示 texture不是模板. 网上找了半天,只知道这个报错是VS没有识别的问题,运行起来并没有实质性影响. 但是一条红线在这画着总觉得很别扭,于是就想取消它,最终给 ...

  4. 【OpenGL】OpenGL入门之纹理(Texture)

    目录 纹理 纹理环绕方式 纹理过滤 多级渐远纹理(Mipmap) 加载与创建纹理 stb_image.h 生成纹理 应用纹理 纹理单元 参考 纹理   在此之前,我们已经可以为每个顶点添加颜色来增加图 ...

  5. Threejs纹理对象Texture阵列、偏移、旋转(纹理动画)

    纹理对象Texture阵列.偏移.旋转 本文是Three.js电子书的8.4节 8.1节给大家提到过纹理对象Texture,简单的说纹理对象Texture就是包含一张图片的对象,纹理对象Texture ...

  6. opengl地球贴纹理_一文看懂材质/纹理 Material, Texture, Shading, Shader 的区别

    在计算机图形学和三维设计中,有几个容易混淆的概念.今天我们来一举拿下. 概念整理 可以这么总结: Material 是表现 Shading 的数据集.其他几个概念都是生成这一数据集的资源或者工具. 这 ...

  7. starling教程-纹理(Texture)

    texture是被创建来填充Image对象的,Texture和Image的关系就好像是本地的BitmapData和Bitmap的关系一样.Texture类包含如下的apis: •  base : Th ...

  8. spine 导出纹理_Spine 纹理打包Texture packing_官方文档中文版

    马上注册,加入CGJOY,让你轻松玩转CGJOY. 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 笑虾 于 2014-10-7 20:45 编辑 欢迎入群  Spine2D骨骼动 ...

  9. 卷积神经网络图像纹理合成 Texture Synthesis Using Convolutional Neural Networks

    卷积神经网络的图像纹理合成 TextureSynthesis Using Convolutional Neural Networks Taylor Guo, 2017年4月29日 星期六 摘要 本文介 ...

最新文章

  1. php 随机在文章中添加锚文本_seo网站优化技巧之:8种优质锚文本的做法
  2. 中科大计算机复试题目,中科大计算机复试笔试部分 09-15
  3. http方式调用第三方接口
  4. 网络基础之 Nping 命令
  5. BZOJ 4032: [HEOI2015]最短不公共子串(后缀自动机+记忆化搜索)
  6. pyhanlp 词性标注(正篇)
  7. MySQL基础之控制台常用命令
  8. 单目视觉机器人的循迹_机器人视觉系统传感器的关键技术盘点
  9. Python的小特别
  10. HOJ 1015 Nearly prime numbers
  11. 这几天微软发布的一些好玩的东西(顺祝女性程序员朋友们节日快乐!)
  12. Apache Curator入门实战
  13. 华为路由器第三方插件_为什么路由器不开 SSH 就等于失去了很多乐趣?
  14. EtherCAT总线运动控制学习笔记(RXXW_Dor)
  15. 层次分析法(AHP)原理以及应用
  16. 支持ECSHOP 2.73手机客户端
  17. 今日头条是怎么挣钱的
  18. 解决IE6、IE7、IE8、Firefox兼容的几种方案
  19. 贪心 混合牛奶 Mixing Milk
  20. oracle000936,奇怪的ORA-000936错误

热门文章

  1. jquery常用遍历方法
  2. 同一主机,不同域名绑定不同网站(IIS主机头实现方法)
  3. 两种方法清空memcache
  4. CentOS5.6系统中安装并使用USB无线网卡(配置成功) 转
  5. 【画图专题】sns.heatmap的用法简介
  6. Matlab之eval函数
  7. python:json文件的保存与读取
  8. Linux 基本命令(六)--pwd 常用命令
  9. 学习设计模式 - 中介者模式
  10. TCP_IP Sockets编程C语言实现第2版 源码下载