X3D实战基础讲座之八2010-07-19第八讲 纹理映射在前面几讲中,我们是通过Material节点来改变物体的外观特性。这些特性仅仅是一致性的宏观效果,对于物体的某些细节我们还没有涉及到。通过纹理映射和处理可以为物体的表面细节增强表现力。本讲分三个部分来讨论:一是X3D基本纹理节点的使用,二是使用纹理的坐标系统,三是纹理的变换。一、X3D基本纹理节点的使用X3D中,提供了PixelTexture(像素纹理)、ImageTexture(贴图纹理)和MovieTexture(影像纹理)三个节点。对于MovieTexture(影像纹理)节点,我们将在后面的"多媒体效果"中再做详细讨论,这里仅讨论前面两个基本纹理节点。1、PixelTexture(像素纹理)节点PixelTexture 节点是用一个包含像素值的数组创建一个二维纹理帖图,其主要属性有:image -- 用一个数组来定义一个二维图像。该数组分为两个部分,前三个是其特征值,后面的数值为实际的像素值。前三个特征值的含义是:第一、二个数用来表示宽度方向和高度方向的像素个数,第三个值是表示后面实际像素字节的组成。具体如下:当为1时,像素值为单字节,即取值范围为0x00~0xFF,表示明亮程度(灰度);当为2时,像素值为双字节,第1个字节表示明亮程度,第2字节表示alpha值(即透明度)。当为3时,像素值为三字节,分别用来表示RGB各颜色分量。当为4时,像素值为四字节,前三个字节用来表示RGB各颜色分量,第四个字节表示alpha值。repeatS -- 表示是否沿S轴水平重复纹理。默认值为True 。repeatT -- 表示是否沿T轴垂直重复纹理。默认值为True 。repeatT [repeatT: initializeOnly type SFBool (true|false) "true"]下面来看一个简单的示例代码:

其中,PixelTexture 节点的image值为"2 2 3 0xff0000 0x00ff00 0x0000ff 0xffffff"。也就是说,像素值使用三字节,分别表示RGB各颜色分量。由于宽度和高度均指定2个数量,因此需要2×2=4个像素值。结果如下图所示,注意立方体的颜色分布(不同的浏览器插件其结果可能不一样)。