You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.8 KiB
4.8 KiB
batch-t3d — 表面圆孔纹理 Blender 插件
batch-t3d(Batch Design Auto)是一个 Blender 插件,用于在三维网格表面自动生成
镂空 / 圆孔纹理,并提供批量处理、手动选面、场驱动纹理以及纹理库等能力。常见应用
场景为牙科 / CAD 模型(冠、桥、coping 等)的表面纹理化设计。
插件由两部分组成:
- Python 前端:基于 Blender
bpy的算子(Operator)与菜单,负责交互、参数管理、 模型导入导出。 - C++ 后端:位于
src/,通过 pybind11 封装为 Python 扩展(dapy_t3d_surface_hole、dapy_qss_fem_tetrahedral),完成 采样、参数化、网格打孔等几何计算;同时可编译为命令行可执行文件t3d-surface-hole。
说明:编译产物(
*.so、可执行文件)、测试模型(*.stl、大型*.obj)以及运行时 中间文件不纳入版本库,请按下文自行构建 / 准备。
功能
通过 3D 视图顶部菜单 Batch Design Auto 调用,对应模块见 manifest.py:
| 菜单项 | 算子 idname | 模块 | 说明 |
|---|---|---|---|
| 圆孔纹理 | designauto.texture_3d_surface_hole |
bld_texture_3d |
对单个选中网格生成表面圆孔纹理 |
| 批量圆孔纹理 | designauto.batch_texture_3d_surface_hole |
bld_batch_texture_3d |
批量处理 assets/ 下的多个模型 |
| 手动选面 | designauto.manual_texture_3d_surface_hole |
bld_manual_selection |
手动选择面后再打孔 |
| 场驱动纹理 | designauto.quasistatic_simulation_fem_tetrahedral |
bld_quasistatic_simulation |
基于四面体有限元准静态仿真的应力场驱动纹理 |
| 纹理库 | designauto.lattice_library |
bld_lattice_library |
内置点阵 / 纹理样式库 |
孔类型
texture_style 参数与孔形状的对应关系:
| 编号 | 形状 |
|---|---|
| 1 | 圆台1 |
| 2 | 圆台2 |
| 3 | 圆柱 |
| 4 | 方形 |
| 5 | 三角形 |
| 6 | 六边形 |
| 7 | 八边形 |
目录结构
.
├── __init__.py # 插件入口,注册 bl_info / 菜单
├── auto_load.py # 自动发现并注册各子模块中的 Blender 类
├── menu.py / manifest.py # 菜单与菜单项清单
├── project_config.py # 运行时目录约定(exe/Release、lib/Release、Workplace)
├── bld_texture_3d/ # 单模型圆孔纹理
├── bld_batch_texture_3d/ # 批量圆孔纹理
├── bld_manual_selection/ # 手动选面
├── bld_quasistatic_simulation/ # 场驱动(有限元)纹理
├── bld_lattice_library/ # 纹理 / 点阵库
├── src/ # C++ 后端源码(pybind11 + 命令行)
└── 放到blender程序所在文件夹/ # 无头(headless)批处理脚本与操作说明
运行依赖
- Blender 2.80+(
bl_info声明的最低版本,开发使用 Python 3.10)。 - C++ 后端编译产物,需放置到
project_config.py约定的路径:lib/Release/dapy_t3d_surface_hole.cpython-310-*.solib/Release/dapy_qss_fem_tetrahedral.cpython-310-*.soexe/Release/t3d-surface-hole(命令行可执行)
- 运行时工作目录
exe/Workplace/,包含三个子目录:assets/:输入模型parameters/:参数与配置文件(如single.txt、input.txt、config.json)results/:输出结果
构建 C++ 后端
src/ 依赖 pybind11、Eigen、spdlog,以及内部 sha-* 框架
(sha-base-framework、sha-entry-framework、sha-io-foundation、sha-surface-mesh)。
通过编译宏选择产物类型:
- 定义
DA_PY:编译为 Python 扩展模块dapy_t3d_surface_hole。 - 定义
DA_CMD:编译为命令行程序t3d-surface-hole,支持--hole_height、--radius_factor、--texture_style等参数(详见src/entry.cpp)。
将生成的 .so 与可执行文件分别放入 lib/Release/ 与 exe/Release/。
使用
在 Blender GUI 中
- 将插件目录安装到 Blender 的
addons目录并启用。 - 准备好 C++ 后端产物(见上)。
- 在 3D 视图顶部菜单 Batch Design Auto 中选择对应功能,按弹窗设置参数后执行。
无头批处理
参考 放到blender程序所在文件夹/操作说明.txt:将该文件夹下的脚本与产物放到
Blender 可执行文件所在目录,准备好 exe/Workplace/{assets,parameters,results},
通过 parameters/input.txt 控制参数,然后运行:
./blender -b -P batch_surface_hole.py
说明
- 仓库仅纳入源代码(Python / C++)与本说明。编译产物、测试模型、运行中间文件 及任何凭据文件均不纳入版本控制,请勿提交。
- 作者:kwp