簡體   English   中英

在Threejs中將紋理應用於自定義平面幾何

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM