[英]applying texture to custom plane geometry in Threejs
我正在尝试将图像纹理应用于我创建的平面,以下是我正在使用的方法。 关于错误的任何指示?
function drawPlane(plane){
geometry = new THREE.Geometry();
geometry.vertices.push( new THREE.Vector3( plane[0][0], plane[0][1], plane[0][2]) );
geometry.vertices.push( new THREE.Vector3( plane[1][0], plane[1][1], plane[1][2]));
geometry.vertices.push( new THREE.Vector3( plane[2][0], plane[2][1], plane[2][2]) );
geometry.vertices.push( new THREE.Vector3( plane[3][0], plane[3][1], plane[3][2]) );
geometry.faces.push( new THREE.Face3( 0, 1, 2 ) ); // counter-clockwise winding order
geometry.faces.push( new THREE.Face3( 0, 2, 3 ) );
geometry.computeFaceNormals();
geometry.computeVertexNormals();
//var material = new THREE.MeshBasicMaterial({color: 0xffffff});
var material = new THREE.MeshPhongMaterial();
material.side = THREE.DoubleSide;
material.map = texture; // this texture not applied
mesh = new THREE.Mesh( geometry, material );
scene.add(mesh);
}
纹理对象不是null,似乎可以正确加载,但不会应用到创建的平面上。
我通过像这样使用PlaneGeometry生成的UV解决了这个问题,
geometry.faces.push( new THREE.Face3( 0, 1, 3 ) );
geometry.faces.push( new THREE.Face3( 1, 2, 3 ) );
var planeMesh = new THREE.Mesh(
new THREE.PlaneGeometry( 1000, 1000 ),
new THREE.MeshBasicMaterial() );
geometry.faceVertexUvs = planeMesh.geometry.faceVertexUvs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.