2017-04-13 38 views
0

平滑着色似乎对我的模型没有影响 - 多边形清晰可见,并且在three.js检查器中平滑着色和平坦着色之间切换没有任何影响。在obj中有顶点正常数据,所以使用geometry.computeVertexNormals()不应该像其他几篇文章中所建议的那样需要使用geometry.computeVertexNormals()。THREE.SmoothShading对几何没有影响

使用THREE.WebGLRenderer

任何线索赞赏:)

obj,mtl,img files

这是我的装载函数:

var mtlLoader = new THREE.MTLLoader(); 
     mtlLoader.setBaseUrl(pathToLoad); 
     mtlLoader.setPath(pathToLoad);      
     mtlLoader.load('model_mesh.obj.mtl', function (materials) { 
      materials.preload(); 
      var objLoader = new THREE.OBJLoader(); 
      objLoader.setMaterials(materials); 
      objLoader.setPath(pathToLoad); 
      objLoader.load('model_mesh.obj', function (obj) { 
       obj.name = pathToLoad.substring(12, 17); 
       testArray.push(obj); 
       scene.add(obj); 
       loadNextPath(); 
      }); 
     }); 

screenshot, polygons visible

回答

1

问题是与你的模型。它有“平坦”的顶点法线。

enter image description here

如果你不想解决您的模型,您可以通过使用一种模式像这样的重新计算平滑顶点的法线:

loader.load('model_mesh.obj', function(object) { 

    var mesh = object.children[ 0 ]; 

    mesh.geometry = new THREE.Geometry().fromBufferGeometry(mesh.geometry); 

    mesh.geometry.mergeVertices(); 

    mesh.geometry.computeVertexNormals(); 

    scene.add(object); 

});