X3D实战基础讲座之八 - 编程入门网
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个像素值。 结果如下图所示,注意立方体的颜色分布(不同的浏览器插件其结果可能不一样)。 X3D实战基础讲座之八(2)时间:2010-07-19从上图可以发现像素纹理处理的规律:默认时,自动将水平和垂直按指定宽度方向和高度方向的像素字节数进行平均分割,每一个分割区域的中点为像素纹理点,然后向四周进行过渡。参见下列示意图: 若要指定透明度,可参照下列示例: 其中,PixelTexture 节点的image值为"2 2 4 0xff000000 0x00ff0040 0x0000ff80 0xffffffff"。结果如下图所示: 上述代码中,黄色球和像素纹理的立方体同在一个原点,由于设置了透明度,因此看起来很炫丽。你能看出alpha值的大小和透明度关系吗?答案是:alpha值为0时完全透明,为0x00小0xff时不透明。 2、ImageTexture(贴图纹理)节点 ImageTexture 是用来指定一个图像映射到一个几何形体的表面上。它与PixelTexture 节点的属性基本相同,只不过image属性被换成了url属性。 ImageTexture节点的url属性用来指定图像的文件名和位置。例如下列代码: 结果如下图所示: 上述x3d.gif图片文件是放在与示例代码文件相同的文件夹中。需要说明的是:对于基本几何体,默认处理时各个面均会贴图。 X3D实战基础讲座之八(3)时间:2010-07-19二、使用纹理的坐标系统 我们知道,图像和被映射的形体表面之间有一个映射关系。默认时,BS Contact是将图像全部放大到对应的形体表面上。若改变此默认的映射比例,则可使用X3D的TextureCoordinate节点。 TextureCoordinate用来描述纹理帖图自身所在的坐标点,该坐标点是二维的,分别表示对应图像上的原点的相对水平和垂直距离。若坐标点取值在0到1之间,则这些坐标点落在图像内部, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |