我们来想一想,3D世界的纹理,由什么组成呢?3D世界的纹理由图片组成。 是的,就这么简单,如果下次谁问你什么是纹理,那么你告诉它是图片,或者贴图就完了。将纹理以一定的规则映射到几何体上,一般是三角形上,那么这个几何体就有纹理皮肤了。
Three.js加载纹理的方式
THREE.Texture(
image,
mapping,
wrapS,
wrapT,
magFilter,
minFilter,
format,
type,
anisotropy
)
纹理Texture的参数 | |
---|---|
image | 这是一个图片类型,基本上它有ImageUtils来加载,如下代码:::info |
// 不能从本地直接加载图片
var image =THREE.ImageUtils.loadTexture(url);
:::
|
| mapping | 一个THREE.UVMapping()类型,它表示的是纹理坐标。 |
| wrapS | 表示x轴的纹理的回环方式,就是当纹理的宽度小于需要贴图的平面的宽度的时候,平面剩下的部分应该p以何种方式贴图的问题。 |
| wrapT | 表示y轴的纹理回环方式。 magFilter和minFilter表示过滤的方式,这是OpenGL的基本概念,我将在下面讲一下,目前你不用担心它的使用。当您不设置的时候,它会取默认值,所以,我们这里暂时不理睬他。 |
| magFilter | |
| minFilter | |
| format | 表示加载的图片的格式,这个参数可以取值THREE.RGBAFormat,RGBFormat等。THREE.RGBAFormat表示每个像素点要使用四个分量表示,分别是红、绿、蓝、透明来表示。RGBFormat则不使用透明,也就是说纹理不会有透明的效果。 |
| type | 表示存储纹理的内存的每一个字节的格式,是有符号,还是没有符号,是整形,还是浮点型。不过这里默认是无符号型(THREE.UnsignedByteType)。 |
| anisotropy | 各向异性过滤。使用各向异性过滤能够使纹理的效果更好,但是会消耗更多的内存、CPU、GPU时间 |