Using multiple Textures with geometry.faceVertexUvs

拟墨画扇 提交于 2020-01-03 21:07:13

问题


I want to use multiple materials and multiple textures on meshes. I use 3 materials and a geometry.faceVertexUvs with two arrays of Uvs. One arrayof UVs for the first texture and one array of UVs for the second texture. However that doesn't quite work. Three.js always uses the uvs of the first array and geometry.faceVertexUvs[1] is never used. Do I have to put all the uvs in geometry.faceVertexUvs[0] for both textures or does it work differently? And if I have to put all uvs in geometry.faceVertexUvs[0] then I wonder why geometry.faceVertexUvs is an array at all. Explanation would be great. The Three.js documentation is not very detailed there.

here my sample code and tanks guys! Tom

    var geometry = new THREE.BoxGeometry(60, 60, 60);

    var texture1 = new THREE.TextureLoader().load( "../sons.png" );
    var texture2 = new THREE.TextureLoader().load( "../Richard-branson.jpg" );

    var material0 = new THREE.MeshBasicMaterial( {color:0xffff00});
    var material1 = new THREE.MeshPhongMaterial({map:texture1,  shininess:100});
    var material2 =  new THREE.MeshPhongMaterial({map:texture2,  shininess:100});

    for(var i=0; i< geometry.faces.length;i++){
        geometry.faces[i].materialIndex = i%3;
        geometry.faceVertexUvs[0][i][0] = new THREE.Vector2(0,0);
        geometry.faceVertexUvs[0][i][1] = new THREE.Vector2(1,0);
        geometry.faceVertexUvs[0][i][2] = new THREE.Vector2(0,1);

        geometry.faceVertexUvs[1]= [];
        geometry.faceVertexUvs[1][i] = [];
        geometry.faceVertexUvs[1][i][0] = new THREE.Vector2(1,1);
        geometry.faceVertexUvs[1][i][1] = new THREE.Vector2(1,0);
        geometry.faceVertexUvs[1][i][2] = new THREE.Vector2(0,1);
    }


    var mesh = new THREE.Mesh(geometry, [material0, material1, material2]);
    view.scene.add(mesh);
    view.render();

来源:https://stackoverflow.com/questions/45660848/using-multiple-textures-with-geometry-facevertexuvs

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!