2012-02-05 17 views
5

Estoy creando un pequeño juego usando Three.js y todo va bien aparte de los problemas de sombreado shome con cubos. Básicamente estoy construyendo un nivel de juego simplemente dejando caer cubos con textura para formar un laberinto. El problema es que cuando los cubos están uno al lado del otro, cada uno está sombreado de tal manera que parece una entidad separada y no parte de un muro más grande.¿Cómo cambiar la apariencia del sombreado en cubos en Three.js?

Aquí es un ejemplo, observe la ilusión de una sola pared se pierde:

enter image description here

¿Hay una técnica de sombreado diferente que debería usar o hay una buena propiedad para ser fijado en algún lugar de cambiar esta comportamiento de sombreado?

Ésta es mi modelo de cubo:

{ 

    "metadata" : 
    { 
     "formatVersion" : 3, 
     "generatedBy" : "Blender 2.60 Exporter", 
     "vertices"  : 8, 
     "faces"   : 6, 
     "normals"  : 8, 
     "colors"  : 0, 
     "uvs"   : 4, 
     "materials"  : 1, 
     "morphTargets" : 0 
    }, 

    "scale" : 1.000000, 
    "materials": [{ 
     "DbgColor" : 15658734, 
     "DbgIndex" : 0, 
     "DbgName" : "WallCube", 
     "colorAmbient" : [1.0, 1.0, 1.0], 
     "colorDiffuse" : [1.0, 1.0, 1.0], 
     "colorSpecular" : [0.15, 0.15, 0.15], 
     "mapDiffuse" : "../../textures/walls/stone/stone.png", 
     "mapDiffuseWrap" : ["repeat", "repeat"], 
     "mapNormal" : "../../textures/walls/stone/stone_normal.png", 
     "mapNormalFactor" : 1.0, 
     "shading" : "Lambert", 
     "specularCoef" : 25, 
     "transparency" : 1.0, 
     "vertexColors" : false 
    }], 

    "vertices": [50.000000,-50.000000,-50.000000,50.000000,-50.000000,50.000000,-50.000000,-50.000000,50.000000,-50.000000,-50.000000,-50.000000,50.000000,50.000000,-50.000000,50.000000,50.000000,50.0000050,-50.000000,50.000000,50.000000,-50.000000,50.000000,-50.000000], 

    "morphTargets": [], 

    "normals": [1.000000,-1.000000,-1.000000,1.000000,-1.000000,1.000000,-1.000000,-1.000000,1.000000,-1.000000,-1.000000,-1.000000,1.000000,1.000000,-1.000000,-1.000000,1.000000,-1.000000,-1.000000,1.000000,1.000000,1.000000,1.000000,1.000000], 

    "colors": [], 

    "uvs": [[0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000]], 

    "faces": [43,0,1,2,3,0,0,1,2,3,0,1,2,3,43,4,7,6,5,0,0,1,2,3,4,5,6,7,43,0,4,5,1,0,1,2,3,0,0,4,7,1,43,1,5,6,2,0,1,2,3,0,1,7,6,2,43,2,6,7,3,0,1,2,3,0,2,6,5,3,43,4,0,3,7,0,3,0,1,2,4,0,3,5] 

} 

y así es como lo cargo:

JSONLoader = new THREE.JSONLoader(); 

Light = new THREE.PointLight(0xFFFFFF); 
Light.position = {x:0, y:75, z:350}; 

Meshes = []; 
JSONLoader.load("../assets/models/cube.js", function(Geometry) 
{ 
    for (var MeshIndex = 0; MeshIndex <= 5; MeshIndex++) 
    { 
     Meshes[MeshIndex] = new THREE.Mesh(Geometry, new THREE.MeshFaceMaterial()); 
     Meshes[MeshIndex].position.x = MeshIndex * 100; 
     Scene.add(Meshes[MeshIndex]); 
    } 
}); 

Scene.add(Light); 

Alguna idea de cómo hacer que los cubos se ven como una pared continua?

Respuesta

Cuestiones relacionadas