THREE.SmoothShading对几何没有影响

Aly*_*ssa 2 javascript three.js

平滑着色似乎对我的模型没有影响 - 多边形清晰可见,并且在三个检查器中的平滑着色和平面着色之间切换无效.obj中有顶点法线数据,因此不需要使用geometry.computeVertexNormals(),就像其他一些帖子所建议的那样.

使用THREE.WebGLRenderer

任何领导赞赏:)

obj,mtl,img文件

这是我的装载机功能:

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(); 
            });
        });
Run Code Online (Sandbox Code Playgroud)

截图,多边形可见

Wes*_*ley 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 );

});
Run Code Online (Sandbox Code Playgroud)

three.js r.95