采用正交相机的拾取/射线投影

时间:2013-08-29 10:12:59

标签: opengl glm-math raytracing picking

我的代码中有一个“简单”的问题,当我的相机处于透视模式时完美地选择工作但是当我处于正交模式时结果很奇怪。

以下是我所做的:

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);

当我做最后一步时,我就是这样:

没有标准化方向:

  • 好的正交相机
  • 在透视相机中不起作用

标准化方向:

  • 在透视相机中不起作用
  • 好的正交相机

0 个答案:

没有答案