Three.js模型平滑多边形。

5
我得到了这样的东西:
var manager = new THREE.LoadingManager();
manager.onProgress = function ( item, loaded, total ) {

    console.log( item, loaded, total );

};

var texture = new THREE.Texture();

var loader = new THREE.ImageLoader( manager );
loader.load( 'obj/'+model+'.jpg', function ( image ) {

    texture.anisotropy = anis;
    texture.image = image;
    texture.needsUpdate = true;

} );

// model

var loader = new THREE.OBJLoader( manager );
loader.load( 'obj/'+model+'.obj', function ( object ) {


    object.traverse( function ( child ) {

        if ( child instanceof THREE.Mesh ) {

            child.material.map = texture;
            if(reflex){
                child.material.envMap = reflection;
                child.material.shading = THREE.SmoothShading;
                child.material.reflectivity = reflex;
            }

        }

    } );

    object.scale.set(10,10,10);

    object.position.y = pos;
    object.position.z = 0;
    object.position.x = 0;

    object.name = "model";
    scene.add( object );
} );

工作正常,但是...这种方式下模型上的所有多边形都是可见的...

输入图像描述

我想让它更平滑...所以我在这里看到这里说,可以这样平滑:

// First we want to clone our original geometry.
// Just in case we want to get the low poly version back.
var smooth = THREE.GeometryUtils.clone( geometry );

// Next, we need to merge vertices to clean up any unwanted vertex. 
smooth.mergeVertices();

// Create a new instance of the modifier and pass the number of divisions.
var modifier = new THREE.SubdivisionModifier(divisions);

// Apply the modifier to our cloned geometry.
modifier.modify( smooth );

// Finally, add our new detailed geometry to a mesh object and add it to our scene.
var mesh = new THREE.Mesh( smooth, new THREE.MeshPhongMaterial( { color: 0x222222 } ) );
scene.add( mesh );

但是...我不知道在哪里获取那个几何对象...有人能帮帮我吗?

1个回答

12

看起来你需要平滑顶点法线。你可以使用以下方法实现:

mesh.geometry.computeVertexNormals();

在您的遍历函数中,为对象的每个子网格调用该函数。

如果这样做仍然无法解决问题,则说明您的模型上相邻面没有共享顶点。在这种情况下,在计算顶点法线之前,请调用

mesh.geometry.mergeVertices();

three.js r.67


这是解决方案,直到有进一步的要求:https://dev59.com/LlsW5IYBdhLWcg3wTly8#39204556 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接