Обнаружение высоты - OpenGL - PullRequest
       16

Обнаружение высоты - OpenGL

1 голос
/ 02 сентября 2011

Я использую openGL ES. Я загрузил в программу мяч, скайбокс и небольшой участок местности.

Местность меняет высоту в определенных точках. Мяч катится по местности.

Мой вопрос: есть ли какой-нибудь способ, которым я могу определить, какова высота местности в положении мяча? (Положение мяча сохраняется в переменной, которую можно использовать). Есть ли какая-нибудь команда OpenGL ES или даже команда OpenGL, на которой я могу основать свое исследование?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

OpenGL - это API рендеринга, он просто рисует вещи на экране, и ничего более.Таким образом, вы не сможете обойтись без таких действий, как обнаружение столкновения на местности и тому подобное.

Если вы получили карту высот для текстуры (например, вы рисуете регулярную сетку xz с y, взятым из карты высот).Вы можете просто найти ячейку, в которой находится ваш мяч (или лучше треугольник, в котором находится шар из двух треугольников), и интерполировать соответствующие значения высоты, чтобы получить высоту ландшафта в позиции шара.

0 голосов
/ 02 сентября 2011

Используете ли вы карту высот для создания ландшафта?Если да, это должно помочь:

int Height(BYTE *pHeightMap, int X, int Y)          // This Returns The Height From A Height Map Index
{
    int x = X % MAP_SIZE;                   // Error Check Our x Value
    int y = Y % MAP_SIZE;                   // Error Check Our y Value

    if(!pHeightMap) return 0;               // Make Sure Our Data Is Valid
    return pHeightMap[x + (y * MAP_SIZE)];  // Index Into Our Height Array And Return The Height

}

Нам нужно рассматривать отдельный массив как двумерный массив.Мы можем использовать уравнение: index = (x + (y * arrayWidth)).Предполагается, что мы визуализируем это следующим образом: pHeightMap [x] [y], в противном случае все наоборот: (y + (x * arrayWidth)).

Теперь, когда у нас есть правильный индекс, мы вернемвысота по этому индексу (данные в x, y в нашем массиве).

.. http://nehe.gamedev.net/tutorial/beautiful_landscapes_by_means_of_height_mapping/16006/

...