标题中的“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
过程纹理(3)——基于噪声的纹理(4)——Sandstone Texture
过程纹理(3)——基于噪声的纹理(5)——Wood Texture
0,引言
该章节的内容理论参考:
《Advanced RenderMan》2000版本的12.4章节”Wood Grain”。
代码来自与《Ray Tracing from the Ground Up》作者按照《Advanced RenderMan》算法整理的C++代码。
本章节的内容,主要是个人对上面这两部分知识的理解和测试。
1,Wood类的基本版本
测试代码:
#define TYPE 0
// TYPE = 0: (0,1,0)
// TYPE = 1: (0,0,1)
void
World::build(void) {
int num_samples = 9;
vp.set_hres(300);
vp.set_vres(300);
vp.set_samples(num_samples);
tracer_ptr = new RayCast(this);
background_color = black;
Ambient* ambient_ptr = new Ambient;
ambient_ptr->scale_radiance(1.0);
set_ambient_light(ambient_ptr);
Pinhole* pinhole_ptr = new Pinhole;
#if TYPE == 0
pinhole_ptr->set_eye(