BVH 的建立没有问题
但是渲染没有图像出现
optional<Intersection> BVH::ray_node_intersect(BVHNode* node, const Ray& ray) const
{
.....
if (node->left == nullptr && node->right == nullptr) {
isect = ray_triangle_intersect(ray, mesh, node->face_idx);
return isect;
} else{
auto isect_left = ray_node_intersect(node->left, ray);
auto isect_right = ray_node_intersect(node->right, ray);
return isect_left->t < isect_right->t ? isect_left : isect_right;
}
}
ray_triangle_intersect()
函数有正常的返回值,但是 BVH::intersect()
中得到的 isect
一直为空,请问会是哪里的问题呢
optional<Intersection> BVH::intersect(const Ray& ray, [[maybe_unused]] const GL::Mesh& mesh,
const Eigen::Matrix4f obj_model){
.......
isect = ray_node_intersect(root, model_ray);
if (isect.has_value()) {
isect->normal = (model_inv.transpose() *
Vector4f(isect->normal.x(), isect->normal.y(), isect->normal.z(), 0.0f)).head<3>();
}
return isect;
}