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.
108 lines
4.8 KiB
108 lines
4.8 KiB
|
2 weeks ago
|
# batch-t3d — 表面圆孔纹理 Blender 插件
|
||
|
|
|
||
|
|
`batch-t3d`(Batch Design Auto)是一个 Blender 插件,用于在三维网格表面自动生成
|
||
|
|
镂空 / 圆孔纹理,并提供批量处理、手动选面、场驱动纹理以及纹理库等能力。常见应用
|
||
|
|
场景为牙科 / CAD 模型(冠、桥、coping 等)的表面纹理化设计。
|
||
|
|
|
||
|
|
插件由两部分组成:
|
||
|
|
|
||
|
|
- **Python 前端**:基于 Blender `bpy` 的算子(Operator)与菜单,负责交互、参数管理、
|
||
|
|
模型导入导出。
|
||
|
|
- **C++ 后端**:位于 `src/`,通过 [pybind11](https://github.com/pybind/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-*.so`
|
||
|
|
- `lib/Release/dapy_qss_fem_tetrahedral.cpython-310-*.so`
|
||
|
|
- `exe/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 中
|
||
|
|
|
||
|
|
1. 将插件目录安装到 Blender 的 `addons` 目录并启用。
|
||
|
|
2. 准备好 C++ 后端产物(见上)。
|
||
|
|
3. 在 3D 视图顶部菜单 **Batch Design Auto** 中选择对应功能,按弹窗设置参数后执行。
|
||
|
|
|
||
|
|
### 无头批处理
|
||
|
|
|
||
|
|
参考 `放到blender程序所在文件夹/操作说明.txt`:将该文件夹下的脚本与产物放到
|
||
|
|
Blender 可执行文件所在目录,准备好 `exe/Workplace/{assets,parameters,results}`,
|
||
|
|
通过 `parameters/input.txt` 控制参数,然后运行:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./blender -b -P batch_surface_hole.py
|
||
|
|
```
|
||
|
|
|
||
|
|
## 说明
|
||
|
|
|
||
|
|
- 仓库仅纳入源代码(Python / C++)与本说明。编译产物、测试模型、运行中间文件
|
||
|
|
及任何凭据文件均不纳入版本控制,请勿提交。
|
||
|
|
- 作者:kwp
|