Mujoco - CoACD简略教程
CoACD是一个凸分解工具,可以将凹模型粗略粗分解为凸几何体的并集。
一、源代码编译
安装教程
(1) 克隆代码:
1 | git clone --recurse-submodules https://github.com/SarahWeiii/CoACD.git |
(2) 安装依赖:
1 | cmake >= 3.24 |
在我的Ubuntu22.04中,apt里的cmake包版本是3.22,不能用。用snap成功安装3.30版本。(源码安装好像也行,不过我懒得添加系统变量,就还是用snap安装了。
(3) 编译
1 | cd CoACD \ |
然后编译:
1 | cmake .. -DCMAKE_BUILD_TYPE=Release \ |
这里出了很多warning,但是好像不影响使用。
(4) 使用
1 | ./main -i PATH_OF_YOUR_MESH -o PATH_OF_OUTPUT |
参数说明
- -nm/--no-merge : 禁用合并后处理,默认为false。
- -c/--max-convex-hull : 凸包上限,默认-1表示无限制。仅在启用合并时才有效。
- -ex/--extrude : 沿着重叠面挤出相邻的凸包。
- -am/--approximate-mode : 近似形状类型(“ch”表示凸包,“box”表示立方体)。
- --seed : 随机种子,默认是random()。
说明:
- 大多数情况下,只需调整
threshold(0.01~1)即可平衡细节程度和分解成分的数量。值越高,结果越粗,值越低,结果越细。 - 默认参数是快速版本。可以牺牲运行时间获取更多组件数量,增加
searching depth (-md)、searching node (-mn)和searching iteration (-mi)可以获得更好的切割策略。
二、PyPI
安装
1 | pip install coacd |
使用
1 | import coacd |
参数
官方文档里没有提到详细的参数列表,通过以下指令自己查询了下:
1 | import inspect |
查询到的参数和对应的解释如下:
- threshold (float): 用于决定分解精度的阈值。较低的阈值意味着更精确的分解,但可能需要更多的计算资源。默认值为
0.05。 - max_convex_hull (int): 最大凸包数量。如果你希望限制生成的凸包数量,可以设置此值。例如,如果设置为 5,则最多生成 5 个凸包,默认值为
-1,表示不限制。 - preprocess_mode (str): 预处理模式,
"on"启用,"off"禁用,"auto"自动选择(推荐)。预处理可能影响分解的速度和结果。 - resolution (int): 处理网格的分辨率,值越高,结果越精确,但计算量也越大。默认值为
2000。 - mcts_nodes (int): MCTS(蒙特卡洛树搜索)中每个节点的最大数量。值越大,搜索的深度越高,可能会增加分解的准确度,但会消耗更多的计算资源。
- mcts_iterations (int): MCTS的迭代次数,更多的迭代次数意味着更高的准确性,但会增加计算负担。
- pca (bool): 是否使用主成分分析(PCA)来减少维度。
True表示启用,False表示禁用。 - merge (bool): 是否合并小的凸包。如果设置为
True,可能会减少生成的凸包数量。 - decimate (bool): 是否在生成凸包时进行简化,减少网格面片的数量。
- max_ch_vertex (int): 每个凸包允许的最大顶点数量。
- extrude (bool): 是否对凸包进行拉伸。
True表示拉伸,False表示不拉伸。 - extrude_margin (float): 如果
extrude为True,设置拉伸的边距。 - apx_mode (str): 设置近似方式,
"ch"代表使用凸包,"box"表示使用包围盒。 - seed (int): 随机种子,设置它可以帮助重现相同的结果。
根据参数,一个简要的包含输出的代码如下:
1 | import coacd |
- 标题: Mujoco - CoACD简略教程
- 作者: Felix Christian
- 创建于 : 2024-09-29 20:07:05
- 更新于 : 2024-12-16 22:18:18
- 链接: https://felixchristian.top/2024/09/29/03-CoACD_notes/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论