Вопрос Проблема с переводом систему координат.

Новичок
Статус
Оффлайн
Регистрация
21 Май 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Я скорее всего нашел не ту матрицу либо не полноценную....
Но, спросить стоит. Нашел видовую матрицу, позицию игрока X-Y-Z. И перевел и в screen pos.
С помощью
C++:
bool WorldToScreen(VEC3 pos, VEC2* screen,  float matrix[16], int windowWidth, int windowHeight)
{
    // Matrix-vector Product, multiplying world(eye) coordinates by projection matrix = clipCoords
    VEC4 clipCoords;
    clipCoords.x = pos.x * matrix[0] + pos.y * matrix[4] + pos.z * matrix[8] + matrix[12];
    clipCoords.y = pos.x * matrix[1] + pos.y * matrix[5] + pos.z * matrix[9] + matrix[13];
    clipCoords.z = pos.x * matrix[2] + pos.y * matrix[6] + pos.z * matrix[10] + matrix[14];
    clipCoords.w = pos.x * matrix[3] + pos.y * matrix[7] + pos.z * matrix[11] + matrix[15];

    if (clipCoords.w < 0.1f)
        return false;

    // perspective division, dividing by clip.W = Normalized Device Coordinates
    VEC3 NDC;

    NDC.x = clipCoords.x / clipCoords.w;
    NDC.y = clipCoords.y / clipCoords.w;
    NDC.z = clipCoords.z / clipCoords.w;

    screen->x = (windowWidth / 2 * NDC.x) + (NDC.x + windowWidth / 2);
    screen->y = -(windowHeight / 2 * NDC.y) + (NDC.y + windowHeight / 2);

    return true;
}
Result:



Что могло пойти не так?


Решено: PushMatrix and PopMatrix.
 
Последнее редактирование:
Сверху Снизу