3

我想在我的挤压几何体的表面上使用纹理。我一直在研究自定义 UV 生成器,并发现了这些相关问题: 1.)如何将纹理应用于 THREE.ExtrudeGeometry? 2.)加载的纹理看起来很模糊,或者像单一颜色。如何使纹理清晰锐利

但是,建议将我的几何点除以 1000 的方法mesh.scale.set(1000,1000,1)不起作用,因为我的几何不再位于正确的位置。我更愿意指定 UV 映射。一个答案说要根据源代码实现自定义 uvgenerator,但我被卡住了,不知道该怎么做。

这是我创建的几何图形,材质为 512x512px,如何将纹理映射到顶部?:

pointList=[[0,0,0],
        [0,1000,0],
        [750,1000,0],
        [750,750,0],
        [1000,750,0],
        [1000,0,0]]

for (i=0;i < pointList.length; i++) {

        point = pointList[i];

        x = point[0];
        y = point[1];

        myPoints.push( new THREE.Vector2 (x,y) );
    }

    myShape = new THREE.Shape( myPoints );
    extrusionSettings = {
        amount:height
    };

    myGeometry = new THREE.ExtrudeGeometry( myShape, extrusionSettings );
    resultshape = new THREE.Mesh( myGeometry, material );
4

1 回答 1

4

您可以ExtrudeGeometry通过指定您自己UVGenerator的 属性之一来为您指定自定义 UV extrusionSettings

要指定您的自定义 UV 生成器,您可以将其用作模板THREE.ExtrudeGeometry.WorldUVGenerator,该模板可在src/extras/geometries/ExtrudeGeometry.js.

但是,有一个更简单的解决方案可能对您有用。

您可以利用纹理的offset和属性,而不是自定义 UV 生成器。repeat使用以下模式:

texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set( 1 / 500, 1 / 500 );
texture.offset.set( 0.1, 0.5 );

三.js r.68

于 2014-08-26T16:46:05.240 回答