2

長方形のジオメトリ (W x H サイズ) とテクスチャ (2*W x H) があり、その半分だけを表示する必要があります。

    ...
    var pageGeometry = new THREE.PlaneGeometry(pageWidth, pageHeight, 1, 1);
        var texture = someTexture;
        pageGeometry.faceVertexUvs[0] = [];
        pageGeometry.faceVertexUvs[0].push([
            new THREE.Vector2(0.5, 1),
            new THREE.Vector2(0.5, 0),
            new THREE.Vector2(1, 0),
            new THREE.Vector2(1, 1)]);

        var page = new THREE.Mesh(
            pageGeometry,
            new THREE.MeshLambertMaterial({
                color: options.background,
                map: texture
            })
        );

それは動作しますが、いくつかの回転 (90 度) の後、テクスチャ オフセットを変更する必要があります。

    page.geometry.faceVertexUvs[0] = [];
    page.geometry.faceVertexUvs[0].push([
        new THREE.Vector2(0, 1),
        new THREE.Vector2(0, 0),
        new THREE.Vector2(0.5, 0),
        new THREE.Vector2(0.5, 1)]);
    page.material = new THREE.MeshLambertMaterial({
        color: options.background,
        map: textureNext
    });

しかし、それは機能しません。のオフセットは同じままです。

4

1 に答える 1

4

これを試しましたか: https://github.com/mrdoob/three.js/wiki/Updates

すなわち: geometry.uvsNeedUpdate = true;

これが役立つことを願っていますが、ソース コードで機能しない可能性があるものは何でも、UV 座標を変更した後にこの update-Flag を設定する必要があると思います。

于 2013-07-19T08:25:05.657 に答える