- 最后登录
- 2013-6-5
- 注册时间
- 2011-12-3
- 阅读权限
- 90
- 积分
- 6206
- 纳金币
- 6206
- 精华
- 0
|
假定你要在场景中绘制一张木桌,你可以为桌面、腿定义几何对象,然后渲染这些对象,但这样做的工作量会很大。一个替代的方法是使用材质贴图。在本例中,你可以使用一个圆形对象来表示整堵墙,然后将一副木纹图像粘贴到该圆形上( Java 3D 中有提供相应的图像文件)。为了使用材质贴图,你需要指定图像,要将该图像粘贴到对象的位置,以及当图像不能和粘贴位置完全吻合时该如何处理。
同光照一样,材质贴图影响整个几何对象。我们将再一次使用 Appearance 类来指定材质贴图效果。 Java 3D 简化了装入材质图像的过程。TextureLoader 类位于 Java 3D 实用类中:
TextureLoader
texLoader = new TextureLoader(url,imageobserver)
appearance.setTexture(texLoader.getTexture());
最好总是将材质图像的宽度和高度设置成 2 的整数次方,其它数值会导致变形。如果图像文件中只有 RGB 值,而没有 alpha 值,则使用:
TextureLoader texLoader
= new TextureLoader(url,new String(“RGB”), imageobserver)
在装入了一幅材质图后,需要将它粘贴到对象上。可以通过对每个顶点应用材质坐标来完成这一任务,Primitive 类将为您生成材质坐标―就象它们为计算光照生成法线一样。如果没有使用 Primitive 类,那么需要自己定义材质坐标。要达成这个目的,必须同时在 x 和 y 方向指定介于 0.0 和 1.0 之间的值。
当需要将矩形材质用于非矩形区域时,贴图过程会变得复杂,将材质粘贴到对象上时对其进行的压缩或拉伸被称为过滤。有几种方法可用于过滤材质,可以根据显卡的性能和期望的外观来选择过滤类型,请多做一些尝试来确定哪种方式看起来最好。材质贴图是一个复杂的主题,不要急于掌握所有不同的选项,刚开始时尽量使用缺省值。 |
|