Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

ладшафт в OpenGL   Найти похожие ветки 

 
RzCoDer ©   (2005-09-09 12:11) [0]

Есть ладшавфт (сосотоит из отдельных квадратов связаных вершинами по массиву) z координата у каждого разная, так вот, как определить уровень спрайта по z, причём не на вершине квадрата а в случайном месте?


 
A22 ©   (2005-09-09 13:44) [1]

найти треугольник, на который попадает спрайт (или квадрат - смотря что за структура в в памяти хранится), проинтерполировать значения вершин


 
XProger ©   (2005-09-09 14:47) [2]

Предварительно расчитать уравнение плосостей всех треугольников ландшафта, затем высчитывать z (y)


// Код из XTropper (http://XProger.mirgames.ru)
function TMap.Collision(var Pos: TVector): integer;
var
j : integer;
begin
j := (trunc(Pos.Z) div MAP_SCALE * (W - 2) + trunc(Pos.X) div MAP_SCALE) * 2;
with Vertex[Face[j][0]] do
if (Vertex[Face[j][1]].X - X) * (Pos.Z - Z) - (Vertex[Face[j][1]].Z - Z) * (Pos.X - X) >= 0 then
 j := j + 1;
with Plane[j].Normal do
Pos.Y := (- X * Pos.X - Z * Pos.Z - Plane[j].D)/Y;
Result := j;
end;

Plane - предварительно расчитанные плоскости полигонов
j - номер полигона в массиве
MAP_SCALE - расстояние между вершинами в мировой системе координат.


 
A22 ©   (2005-09-09 15:04) [3]

// Код из XTropper (http://XProger.mirgames.ru)

:)))


 
Zer0 ©   (2005-09-14 01:31) [4]

[3] A22
страна должна знать своих героев :)


 
Ricks ©   (2005-09-14 02:15) [5]

Смотри мой вопрос "Нахождение высоты в заданной точке" - Кефир87 мне помог и действительно РАБОТАЕТ!


 
XProger ©   (2005-09-14 19:49) [6]

Ricks, Pos.Y - was ist das по-твоему? ;)))
И работает значительно шустрее кифировского, т.к. здесь имеется предрасчёт :)


 
OSokin ©   (2005-09-14 20:12) [7]

У меня тема тут где-то валялась, там исходник есть


 
Кефир87 ©   (2005-09-14 23:55) [8]


> И работает значительно шустрее кифировского, т.к. здесь
> имеется предрасчёт :)

Это дедовщина! не поддавайтесь на правокации 8)


 
XProger ©   (2005-09-15 18:04) [9]

Кефир87, рановато ты меня в деды :)


 
NE_Parovoz ©   (2005-09-15 19:23) [10]

XProger, никакого предрасчёта, и не одного деления ::)
а MAP_SCALE добавит 2 умножения.

function TrHeight(X,Y:GLfloat):GLfloat;
var
Xm,Ym:GLfloat;
Xt,Yt:GLint;  
begin
 Xt:=trunc(X);
 Yt:=trunc(Y);
 Xm:=X-Xt;
 Ym:=Y-Yt;
if Xm<=Ym then begin
 result:=Terrain.Matrix[Xt,Yt]
 +Ym*(Terrain.Matrix[Xt,Yt+1]-Terrain.Matrix[Xt,Yt])
 +Xm*(Terrain.Matrix[Xt+1,Yt+1]-Terrain.Matrix[Xt,Yt+1]);
end else begin
 result:=Terrain.Matrix[Xt,Yt]
 +Ym*(Terrain.Matrix[Xt+1,Yt+1]-Terrain.Matrix[Xt+1,Yt])
 +Xm*(Terrain.Matrix[Xt+1,Yt]-Terrain.Matrix[Xt,Yt]);
end;
end;

З.Ы. не работает с отрицательными X, Y


 
OSokin ©   (2005-09-16 14:42) [11]

NE_Parovoz ©   (15.09.05 19:23) [10]
по Abs поставить и не париться


 
Кефир87 ©   (2005-09-16 21:13) [12]


> по Abs поставить и не париться

Дык тут все в оптимизацию ударились...


 
OSokin ©   (2005-09-19 13:23) [13]

Кефир87 ©   (16.09.05 21:13) [12]
Они бы еще в целях оптимизации на асме написали



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.053 c
1-1140432435
SergProger
2006-02-20 13:47
2006.03.26
Иконка нестандартного размера


2-1142101123
jenya_rus
2006-03-11 21:18
2006.03.26
Извлечь имена файлов из папки??? :0


2-1141621400
Arazel
2006-03-06 08:03
2006.03.26
Работа с базой данных на WinApi


15-1141061124
grisme
2006-02-27 20:25
2006.03.26
Старая, избитая тема


15-1141647688
Новичоккк
2006-03-06 15:21
2006.03.26
Подмена DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский