Three.js去除接缝

时间:2013-12-23 18:30:23

标签: three.js

是否可以去除连接两个网格(颈部下方)的接缝? enter image description here

我是如何加载模型的:

var model = new THREE.Object3D();
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load( "models/one.js", function(geometry, material){
    var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial() );
    model.add( mesh );
} );    
jsonLoader.load( "models/two.js", function(geometry, material){
    var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial());
    model.add( mesh );
    model.scale.set(4,4,4);
    model.position.y = -3.5;
    scene.add(model);
} );

1 个答案:

答案 0 :(得分:1)

看起来两个网格的边界处的面法线非常不同,它们相遇。这就是为什么边框处的灯光看起来非常不同,因此呈现出接缝般的外观。我相信如果你调整你的模型,使边缘颈部的法线指向相同的方向,这样灯光就会得到平滑的过渡。请允许我用糟糕的画面展示:

Parallel normals

Three.js会遮挡第一个例子,以便根据法线方向将光线显示为锐角。第二个应该是顺利的。

如何完成此操作取决于用于创建网格的建模软件。如果你使用Three.js为你自动生成法线(法线不包括在模型数据中),我不确定如何轻松修复它(可能合并几何,组合共享顶点,然后让three.js重新生成法线可以起作用。)