美文网首页
模型重建

模型重建

作者: 不决书 | 来源:发表于2019-10-14 20:56 被阅读0次

    1、通过marching cubes 算法

    Marching Cubes算法是三维离散数据场中提取等值面的经典算法,其主要应用于医学领域的可视化场景,例如CT扫描和MRI扫描的3D重建等。

    算法主要的思想是在三维离散数据场中通过线性插值来逼近等值面,具体如下:三维离散数据场中每个栅格单元作为一个体素,体素的每个顶点都存在对应的标量值。如果体素顶点上的值大于或等于等值面值,则定义该顶点位于等值面之外,标记为“0”;而如果体素顶点上的值小于等值面值,则定义该顶点位于等值面之内,标记为“1”。由于每个体素单元有8个顶点,那么共存在2^8 = 256种情形,下图是Marching Cubes算法的15种基本情形,其他241种情形可以通过这15种基本情形的旋转、映射等方式实现。

    FYI:https://www.cnblogs.com/shushen/p/5542131.html

    DEMO:基于Marching Cubes

    https://stemkoski.github.io/Three.js/Marching-Cubes.html

    https://stemkoski.github.io/Three.js/Metaballs.html

    https://stemkoski.github.io/Three.js/Metabubbles.html

    2、通过多个模型的交叉并生成新的模型

    19.png

    FYI:

    https://github.com/chandlerprall/ThreeCSG

    https://stemkoski.github.io/Three.js/CSG.html

    用例

    var sphere_geometry = new THREE.SphereGeometry( 2, 16, 16 );
    var sphere_bsp = new ThreeBSP( sphere_geometry );
    
    var cube_geometry = new THREE.CubeGeometry( 7, .5, 3 );
    var cube_bsp = new ThreeBSP( cube_geometry );
    
    var union_bsp = sphere_bsp.union( cube_bsp );
    
    var result = union_bsp.toMesh( new THREE.MeshLambertMaterial({
        shading: THREE.SmoothShading,
        map: new THREE.TextureLoader().load('texture.png')
    }));
    result.geometry.computeVertexNormals();
    scene.add( result );
    

    相关文章

      网友评论

          本文标题:模型重建

          本文链接:https://www.haomeiwen.com/subject/ykssuctx.html