Merge pull request #2964 from ZappoMan/modelPickingBugs

fix ray picking at distances
This commit is contained in:
Andrzej Kapolka 2014-05-30 15:19:07 -07:00
commit 6acd60fd55

View file

@ -193,11 +193,6 @@ bool ModelTreeElement::findDetailedRayIntersection(const glm::vec3& origin, cons
// if it's in our AABOX for our rotated extents, then check to see if it's in our non-AABox
if (rotatedExtentsBox.findRayIntersection(origin, direction, localDistance, localFace)) {
// This is experimental code that doesn't quite work, so I'm disabling it by default, but
// leaving it in because I need to work on it and fix it to work properly.
bool pickAgainstModelAlignedBox = false;
if (pickAgainstModelAlignedBox) {
// extents is the model relative, scaled, centered extents of the model
glm::mat4 rotation = glm::mat4_cast(model.getModelRotation());
glm::mat4 translation = glm::translate(model.getPosition());
@ -207,7 +202,7 @@ bool ModelTreeElement::findDetailedRayIntersection(const glm::vec3& origin, cons
AABox modelFrameBox(extents.minimum, (extents.maximum - extents.minimum));
glm::vec3 modelFrameOrigin = glm::vec3(worldToModelMatrix * glm::vec4(origin, 1.0f));
glm::vec3 modelFrameDirection = glm::vec3(worldToModelMatrix * glm::vec4(direction, 1.0f));
glm::vec3 modelFrameDirection = glm::vec3(worldToModelMatrix * glm::vec4(direction, 0.0f));
// we can use the AABox's ray intersection by mapping our origin and direction into the model frame
// and testing intersection there.
@ -219,14 +214,6 @@ bool ModelTreeElement::findDetailedRayIntersection(const glm::vec3& origin, cons
somethingIntersected = true;
}
}
} else {
if (localDistance < distance) {
distance = localDistance;
face = localFace;
*intersectedObject = (void*)(&model);
somethingIntersected = true;
}
}
}
} else if (localDistance < distance) {
distance = localDistance;