Javascript 3.SmoothShading对几何体没有影响
平滑着色似乎对我的模型没有影响-多边形清晰可见,在three.js inspector中在平滑着色和平面着色之间切换没有影响。obj中有顶点法线数据,因此不需要使用几何体。computeVertexNormals()不应该像其他几篇文章中建议的那样 使用THREE.webgl渲染器 感谢您的任何线索:) 这是我的加载器函数:Javascript 3.SmoothShading对几何体没有影响,javascript,three.js,Javascript,Three.js,平滑着色似乎对我的模型没有影响-多边形清晰可见,在three.js inspector中在平滑着色和平面着色之间切换没有影响。obj中有顶点法线数据,因此不需要使用几何体。computeVertexNormals()不应该像其他几篇文章中建议的那样 使用THREE.webgl渲染器 感谢您的任何线索:) 这是我的加载器函数: var mtlLoader = new THREE.MTLLoader(); mtlLoader.setBaseUrl(pathToLoad);
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();
});
});
问题出在您的型号上。它具有“平坦”顶点法线 如果不想修复模型,可以使用如下模式重新计算平滑顶点法线:
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 );
});
3.js r.95