我的代码中有一个“简单”的问题,当我的相机处于透视模式时完美地选择工作但是当我处于正交模式时结果很奇怪。
以下是我所做的:
void Ray::computeFromCamera( const glm::vec3& position,
const glm::mat4& modelView,
const glm::mat4& projection,
const glm::vec4& viewPort,
float near,
float far )
{
this->origin.computeFromCamera( glm::vec3( position.x, position.y, near ),
modelView,
projection,
viewPort );
this->direction.computeFromCamera( glm::vec3( position.x, position.y, far ),
modelView,
projection,
viewPort );
}
雷计算听起来不错,因为我可以选择对象。
以下是我对结果所做的事情:
glm::vec3 start = interfactionCamera->ray.getOrigin();
glm::vec3 end = interfactionCamera->ray.getDirection();
// Normalize direction.
glm::vec3 endNormalized(end - start);
endNormalized = glm::normalize(endNormalized);
当我做最后一步时,我就是这样:
没有标准化方向:
标准化方向: