如何修复 3d 模型中的“裂缝”?

Posted

技术标签:

【中文标题】如何修复 3d 模型中的“裂缝”?【英文标题】:How can I fix "cracks" in 3d model? 【发布时间】:2021-11-06 18:12:13 【问题描述】:

我使用激光扫描仪创建了一个 3D 模型,并尝试使用 three.js 在 webapp 上显示它。

当我在 Blender 或 Unity 上加载该模型时,它看起来不错,但它在带有threejs 和 3D 查看器(默认 Windows 应用程序)的 webapp 中都显示出一些裂缝

如何修复这些裂缝?

我将数据模型导出为 glb 和 obj 文件格式,但两种格式的结果相同。

(3D 查看器上的模型)

(搅拌机上的模型)

( 纹理图像 )

【问题讨论】:

如果切换到最近的纹理过滤,“裂缝”会消失吗?尝试将纹理的minFiltermagFilter 属性设置为THREE.NearestFilter 成功了!谢谢! 【参考方案1】:

仅适用于遇到相同问题的人。我在加载已经包含纹理的 GLB 文件时尝试了此代码。

var loader = new THREE.GLTFLoader();

// model
var model, mat, geo;
loader.load(
    // resource URL
    "https://xxxxxx/model.glb"
    // called when the resource is loaded
    function (gltf) 
       model = gltf.scene;
       model.traverse( function( object )             
           if ((object instanceof THREE.Mesh)) 
                mat = object.material;
                geo = object.geometry;
                mat.map.minFilter = THREE.NearestFilter;
                mat.map.magFilter = THREE.NearestFilter;
           
       );
       scene.add(model);
    ,
    // called while loading is progressing
    function (xhr) 
        console.log((xhr.loaded / xhr.total * 100) + '% loaded');
    ,
    // called when loading has errors
    function (error) 

        console.log('An error happened');
        console.log(error);

    
);

【讨论】:

以上是关于如何修复 3d 模型中的“裂缝”?的主要内容,如果未能解决你的问题,请参考以下文章

如何把PDMS中的模型导出为3D MAX 可以识别的格式。

Solidworks中的3D模型,如何标注两个面之间的距离。

变异时如何修复“猫鼬模型的名称”不是graphql中的构造函数

修复了 Three.js 中的纹理大小

ARKit / ARCore 开发中的 3D 模型格式

使用深度学习检测混凝土结构中的表面裂缝