Search code examples
javascriptthree.jstexture-mappinguv-mapping

Correct UV mapping Three.js


I'm trying to map the UV-texture correctly, but failing...

I've got the next result in my app:

enter image description here

The result isn't that I was awaiting. I want to have the next described view:

enter image description here

The source code is here:

http://pastebin.com/aDg981Bk


Solution

  • You need to look at PlaneGeometry.js and understand how the UVs are set. Then you will be able to figure out how to reset them. This should work -- there are two triangles per "face".

    for(var i = 0; i < geometry.faces.length / 2; i++) {
    
        geometry.faceVertexUvs[ 0 ].push(
        [
            new THREE.Vector2( 0, 0 ),
            new THREE.Vector2( 0, 1 ),
            new THREE.Vector2( 1, 0 ),    
        ] );
    
        geometry.faces[ 2 * i ].materialIndex = i;
    
        geometry.faceVertexUvs[ 0 ].push(
        [
            new THREE.Vector2( 0, 1 ),
            new THREE.Vector2( 1, 1 ),
            new THREE.Vector2( 1, 0 ),    
        ] );
    
        geometry.faces[ 2 * i + 1 ].materialIndex = i;
    
        materials.push( createTexture( i ) );
    
    }    
    
    //geometry.computeFaceNormals(); // not needed
    //geometry.dynamic = true; // not needed
    //geometry.uvsNeedUpdate = true; // not needed since plane has not been rendered yet    
    

    three.js r.62