平滑着色似乎对我的模型没有影响 - 多边形清晰可见,并且在三个.js检查器中的平滑着色和平面着色之间切换无效。 obj中存在顶点法线数据,因此使用geometry.computeVertexNormals()不应该像其他一些帖子所建议的那样需要。
使用THREE.WebGLRenderer
任何线索赞赏:)
这是我的装载机功能:
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();
});
});
答案 0 :(得分:5)
问题在于您的模型。它有"扁平"顶点法线。
如果您不想修复模型,可以使用类似这样的模式重新计算平滑顶点法线:
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();
// convert back to BufferGeometry prior to rendering
mesh.geometry = new THREE.BufferGeometry().fromGeometry( mesh.geometry );
scene.add( object );
});
three.js r.95