Mesh 获取与准备¶
这个项目需要一个 3D mesh 作为目标。mesh 就是模拟中会反射雷达能量的物体。
Mesh 从哪里来¶
仓库里已经包含两个示例 mesh:
examples/meshes/box.objexamples/meshes/Thanh.glb
box.obj 是一个简单测试物体。Thanh.glb 是一个公开人体模型,来源是:
https://github.com/hmthanh/3d-human-model
人体模型比盒子更接近真实目标表面,所以适合用来观察更复杂的雷达回波结构。
支持哪些格式¶
模拟器支持:
OBJSTLGLB
无论输入是哪种格式,内部都会转换成统一的 TriangleMesh。
模拟器会用 Mesh 的哪些信息¶
模拟器只使用几何信息:
- 顶点
- 三角面
- 面中心
- 面法向
- 面面积
它不会使用:
- 纹理
- 材质
- 颜色
- 骨骼
- 动画
这点很重要。视觉上好看的 3D 模型,不一定就是好的雷达目标。当前模拟器看到的只是三角表面。
推荐的 Mesh 特征¶
第一次使用时,mesh 最好满足:
- 面数不要太大
- 几何尽量是干净三角面
- 尺度接近真实物理尺寸
- 放在雷达前方
- 不要有大量细小孤立碎片
大 mesh 会变慢,因为当前可见性判断使用的是直接射线三角面相交。
面数预算¶
大 mesh 可以用 --max-faces 降低面数:
python -m mimo_fmcw_radar_simulator_multiprocess \
--mesh examples/meshes/Thanh.glb \
--max-faces 1200 \
--num-chirps 16 \
--output examples/output/thanh_run.npz
这样可以让早期实验跑得动。它会随机选择一部分 face,并重新映射顶点索引,保证 mesh 仍然有效。
单位和尺度¶
雷达仿真对尺度很敏感。如果 mesh 原本单位是厘米,但被当成米使用,目标就会比预期大 100 倍。
使用自定义 mesh 前,建议检查:
- 物体尺寸按米看是否合理?
- 目标是否在雷达前方?
- 初始距离是否合理?
- face 数量是否可控?
实用流程¶
- 把目标导出成
OBJ、STL或GLB。 - 第一次先用简化版本。
- 如果 mesh 很密,用
--max-faces。 - 第一次运行先减少 chirp 数。
- 生成热力图,检查距离和角度是否合理。
- 简单版本跑通后,再逐步增加 mesh 细节。
常见问题¶
| 问题 | 可能原因 |
|---|---|
| 仿真很慢 | mesh 面数太多 |
| 没有明显回波 | 目标在雷达后方、尺度错误或面朝向不符合预期 |
| 距离很奇怪 | mesh 单位尺度错了 |
| 信号很弱 | 可见面积太小或反射率太低 |