During the SDK, there is a sample about volume rendering using ray casting. And i come across a question about ray intersection with the bounding box. The origin source code is,
float tnear, tfar;
int hit = intersectBox(eyeRay, boxMin, boxMax, &tnear, &tfar);
if (!hit) return;
if (tnear < 0.0f) tnear = 0.0f; // clamp to near plane
During the SDK, there is a sample about volume rendering using ray casting. And i come across a question about ray intersection with the bounding box. The origin source code is,
float tnear, tfar;
int hit = intersectBox(eyeRay, boxMin, boxMax, &tnear, &tfar);
if (!hit) return;
if (tnear < 0.0f) tnear = 0.0f; // clamp to near plane
I guess (tnear == 0) corresponds to 3D positions where are beginning the rays (i.e. exactly on the point of view). Every negative values are so behind the point of view (you can not see them).
Generally you even clamp further than 0.
I guess (tnear == 0) corresponds to 3D positions where are beginning the rays (i.e. exactly on the point of view). Every negative values are so behind the point of view (you can not see them).
Generally you even clamp further than 0.
yes. it is the beginning of the ray. but, for each volume data, there is a bounding box, whose size is [-1,-1,-1] to [1, 1, 1]. So, each ray must to test to intersect the bounding box. and, we can get tnear and tfar, so i don’t think tnear must be larger or equal to zero. so, there is a problem.
yes. it is the beginning of the ray. but, for each volume data, there is a bounding box, whose size is [-1,-1,-1] to [1, 1, 1]. So, each ray must to test to intersect the bounding box. and, we can get tnear and tfar, so i don’t think tnear must be larger or equal to zero. so, there is a problem.
If it is really an intersection between a ray and the box that is performed, then tnear should never be < 0.
If the intersection is in fact an intersection between a LINE and the box, then checking if tnear < 0 corresponds to the RAY vs BOX intersection, it is the way not to consider what is before the beginning of the ray on the line (i.e. behind the screen).
Have you checked if tnear is < 0 when the point of view is inside the volume? If yes you need the test, if not, you do not need it.
If it is really an intersection between a ray and the box that is performed, then tnear should never be < 0.
If the intersection is in fact an intersection between a LINE and the box, then checking if tnear < 0 corresponds to the RAY vs BOX intersection, it is the way not to consider what is before the beginning of the ray on the line (i.e. behind the screen).
Have you checked if tnear is < 0 when the point of view is inside the volume? If yes you need the test, if not, you do not need it.