87 void build(
const std::vector<Triangle3D>& tris)
override;
150 size_t size()
const override {
return primitives_.size(); }
196 bool leaf()
const {
return left < 0; }
199 std::vector<Node> nodes_;
200 std::vector<Triangle3D> primitives_;
201 BVHBuildOptions opts_;
211 void build_recursive(
int node,
int first,
int count,
int depth);
222 double sah_cost(
int n_left,
int n_right,
const AABB3D& left,
const AABB3D& right)
const;
std::vector< Triangle3D > query_range(const AABB3D &range) const override
AABB 范围查询
void build(const std::vector< Triangle3D > &tris) override
清除已有数据并重建 BVH
bool remove(const Triangle3D &tri) override
删除三角形
BVH(const BVHBuildOptions &opts={})
构造 BVH 并指定构建选项
std::vector< Triangle3D > query_knn(const Point3D &point, size_t k) const override
K 近邻查询
void clear() override
清空 BVH 树和所有三角形
std::vector< Triangle3D > query_ray(const Ray3Dd &ray) const override
射线查询:返回所有命中的三角形
std::optional< HitResult > query_ray_nearest(const Ray3Dd &ray) const
射线最近命中查询
size_t size() const override
三角形数量
void insert(const Triangle3D &tri) override
插入单个三角形
Ray3D< double > Ray3Dd
双精度三维射线
Triangle< double > Triangle3D
双精度三维三角形
AABB< double > AABB3D
双精度三维包围盒
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
foundation::Point3D Point3D
双精度三维点(重新导出)
BVHSplitStrategy
BVH 构建分裂策略
BVHSplitStrategy strategy