2015-01-14 2 views
0

Я создал сетку с вершинами и УВС из другой геометрии, как это:текстуры появляется черный на пользовательской сетки, но прозрачность правильно

var geom = mesh.geometry; 

var projectGeometry = new THREE.Geometry(); 

var faces = []; 

for(var i = 0; i < geom.faces.length; i++){ 

    var verts = [geom.faces[i].a, geom.faces[i].b, geom.faces[i].c]; 
    var uvs = [geom.faceVertexUvs[0][i][0], geom.faceVertexUvs[0][i][1], geom.faceVertexUvs[0][i][2]]; 

    var pts = []; 
    var uvpts = {}; 
    var uv = []; 

    var vec = geom.vertices[verts[v]].clone(); 

    for(var n = 0; n < 3; n++){ 
     uv.push(new THREE.Vector2((vec[n].x + 1)/2, (vec[n].y + 1)/2)); 
     uvpts = { x: 2*geom.faceVertexUvs[0][i][n].x - 1, y: 2*geom.faceVertexUvs[0][i][n].y - 1, z: 0}; 
     projectGeometry.vertices.push(uvpts); 
    } 
    projectGeometry.faceVertexUvs[0].push(uv); 

    var newFace = geom.faces[i].clone(); 

    newFace.a = decalGeometry.vertices.length - 3; 
    newFace.b = decalGeometry.vertices.length - 2; 
    newFace.c = decalGeometry.vertices.length - 1; 

    var newUvFace = new THREE.Face3(newFace.a, newFace.b, newFace.c); 

    newUvFace.normal = {x: 0, y: 0, z: 1};   
    newUvFace.color = {r: 1, g: 1, b: 1};   
    newUvFace.vertexNormals.push({x: 0, y: 0, z: 1});   
    newUvFace.vertexNormals.push({x: 0, y: 0, z: 1});   
    newUvFace.vertexNormals.push({x: 0, y: 0, z: 1});   

    projectGeometry.faces.push(newUvFace); 
} 

The я добавил сетку на сцену, как это:

var mesh = new THREE.Mesh(projectGeometry, material.clone()); 
    scene.add(mesh); 

с материалом, определенным как это:

texture = THREE.ImageUtils.loadTexture("tex.png"); 

material: new THREE.MeshPhongMaterial({ 
    side: THREE.DoubleSide, 
    color: 0xffffff, 
    map: texture, 
    polygonOffset: true, 
    polygonOffsetFactor: -4, 
    transparent: true, 
    depthWrite: false, 
    shininess: 150, 
    specular: 0xffffff 
}); 

текстура имеет некоторую прозрачность, так что я могу видеть, что -й «Форма» текстуры правильная, но цвет не применяется. Все черное.

ответ

0

Это была легкая проблема. Поскольку у меня есть прозрачность в моем материале текстуры, я использовал PhongMaterial. Я сконфигурировал DirectionalLight, чтобы осветить сцену. По какой-то причине цвета текстур были выделены черным цветом. Я изменил свет на AmbientLight, и все было отлично.