挖空 3D 网格

问题描述 投票:0回答:1

有一篇文章介绍了 MeshLab 如何挖空由三角形多边形组成的 3D 网格。基于那篇文章,我的理解是 MeshLab 方法是:

    创建一个从模型网格重新采样的新偏移网格
    1. 建立统一的体积表示,即体素
    2. 每个体素包含距原始表面的有符号距离
    3. 使用
    4. 行进立方体算法构建重采样表面
    5. 需要输入偏移量
  1. 翻转法线向量以获得新的偏移网格
  2. 合并原始网格和新的偏移网格
问题

这是镂空3D模型的唯一方法吗?有哪些替代方法?

MeshLab UI 镂空

MeshLab 方法如下所示:

MeshLab 脚本

这是用于挖空 3D 模型的 MeshLab 脚本:

<!DOCTYPE FilterScript> <FilterScript> <filter name="Uniform Mesh Resampling"> <Param type="RichAbsPerc" max="22.4008" isxmlparam="0" name="CellSize" tooltip="Size of the cell, the default is 1/50 of the box diag. Smaller cells give better precision at a higher computational cost. Remember that halving the cell size means that you build a volume 8 times larger." value="0.44802" description="Precision" min="0"/> <Param type="RichAbsPerc" max="4.48016" isxmlparam="0" name="Offset" tooltip="Offset of the created surface (i.e. distance of the created surface from the original one).&lt;br>If offset is zero, the created surface passes on the original mesh itself. Values greater than zero mean an external surface, and lower than zero mean an internal surface.&lt;br> In practice this value is the threshold passed to the Marching Cube algorithm to extract the isosurface from the distance field representation." value="-0.179206" description="Offset" min="-4.48016"/> <Param type="RichBool" isxmlparam="0" name="mergeCloseVert" tooltip="If true the mesh generated by MC will be cleaned by unifying vertices that are almost coincident" value="false" description="Clean Vertices"/> <Param type="RichBool" isxmlparam="0" name="discretize" tooltip="If true the position of the intersected edge of the marching cube grid is not computed by linear interpolation, but it is placed in fixed middle position. As a consequence the resampled object will look severely aliased by a stairstep appearance.&lt;br>Useful only for simulating the output of 3D printing devices." value="false" description="Discretize"/> <Param type="RichBool" isxmlparam="0" name="multisample" tooltip="If true the distance field is more accurately compute by multisampling the volume (7 sample for each voxel). Much slower but less artifacts." value="false" description="Multi-sample"/> <Param type="RichBool" isxmlparam="0" name="absDist" tooltip="If true a &lt;b> not&lt;/b> signed distance field is computed. In this case you have to choose a not zero Offset and a double surface is built around the original surface, inside and outside. Is useful to convrt thin floating surfaces into &lt;i> solid, thick meshes.&lt;/i>. t" value="false" description="Absolute Distance"/> </filter> <filter name="Invert Faces Orientation"> <Param type="RichBool" isxmlparam="0" name="forceFlip" tooltip="If selected, the normals will always be flipped; otherwise, the filter tries to set them outside" value="true" description="Force Flip"/> <Param type="RichBool" isxmlparam="0" name="onlySelected" tooltip="If selected, only selected faces will be affected" value="false" description="Flip only selected faces"/> </filter> <filter name="Flatten Visible Layers"> <Param type="RichBool" isxmlparam="0" name="MergeVisible" tooltip="If true, flatten only visible layers, otherwise, all layers are used" value="true" description="Merge Only Visible Layers"/> <Param type="RichBool" isxmlparam="0" name="DeleteLayer" tooltip="Delete all the layers used as source in flattening. &lt;br>If all layers are visible only a single layer will remain after the invocation of this filter" value="true" description="Delete Layers "/> <Param type="RichBool" isxmlparam="0" name="MergeVertices" tooltip="Merge the vertices that are duplicated among different layers. &#xa;&#xa;Very useful when the layers are spliced portions of a single big mesh." value="true" description="Merge duplicate vertices"/> <Param type="RichBool" isxmlparam="0" name="AlsoUnreferenced" tooltip="Do not discard unreferenced vertices from source layers&#xa;&#xa;Necessary for point-cloud layers" value="false" description="Keep unreferenced vertices"/> </filter> </FilterScript>
    
algorithm 3d mesh voxel meshlab
1个回答
0
投票
另一种方法是: 均匀采样 -> 绝对距离 -> 添加

偏移量

© www.soinside.com 2019 - 2024. All rights reserved.