Flip normals in three.js on sphere

前端 未结 4 1323
臣服心动
臣服心动 2021-01-05 16:02

I have been searching around and haven\'t found any really good answer to my question yet.. The thing is that I have this sphere.. just a basic sphere, and I want to flip th

4条回答
  •  孤独总比滥情好
    2021-01-05 16:37

    You can flip the normals in your geometry by reversing the winding order of your faces. You then have to fix UVs.

    for ( var i = 0; i < geometry.faces.length; i ++ ) {
    
        var face = geometry.faces[ i ];
        var temp = face.a;
        face.a = face.c;
        face.c = temp;
    
    }
    
    geometry.computeFaceNormals();
    geometry.computeVertexNormals();
    
    var faceVertexUvs = geometry.faceVertexUvs[ 0 ];
    for ( var i = 0; i < faceVertexUvs.length; i ++ ) {
    
        var temp = faceVertexUvs[ i ][ 0 ];
        faceVertexUvs[ i ][ 0 ] = faceVertexUvs[ i ][ 2 ];
        faceVertexUvs[ i ][ 2 ] = temp;
    
    }
    

    However, you can get the same effect by simply setting Material.side = THREE.BackSide, or Material.side = THREE.DoubleSide.

    In either case, your texture will be rendered flipped. You can either flip your texture before-hand, or build a model outside of three.js and import it.

    three.js r.65

提交回复
热议问题