Мышь в мировом положении без gluUnProject? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь реализовать редактор, такой как размещение мода с помощью opengl.Когда вы щелкаете где-то на экране, объект помещается в эту позицию.

Пока это мой код

void RayCastMouse(double posx, double posy)
{
    glm::fvec2 NDCCoords = glm::fvec2( (2.0*posx)/ float(SCR_WIDTH)-1.f, ((-2.0*posy) / float(SCR_HEIGHT)+1.f) );
    glm::mat4 viewProjectionInverse = glm::inverse(projection * camera.GetViewMatrix());
    glm::vec4 worldSpacePosition(NDCCoords.x, NDCCoords.y, 0.0f, 1.0f);
    glm::vec4 worldRay = viewProjectionInverse*worldSpacePosition;
    printf("X=%f / y=%f / z=%f\n", worldRay.x, worldRay.y, worldRay.z);
    m_Boxes.emplace_back(worldRay.x, 0, worldRay.z);
}

Проблема в том, что объект не расположен в правильном положении,worldRay vec3 используется для перевода матрицы модели.

Может кто-нибудь, пожалуйста, помогите с этим, я буду очень признателен.Кстати, деление компонента worldRay xyz на worldRay.w устанавливает объект в положение камеры.

...