Главная страница
    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.47 MB
Время: 0.054 c
1-1140099202
rolex
2006-02-16 17:13
2006.03.26
Как быстро удалить файл?


1-1140514864
KyRo
2006-02-21 12:41
2006.03.26
Case для строк


15-1141713885
Ega23
2006-03-07 09:44
2006.03.26
С Днём рождения! 7 марта


2-1141626781
K_Val
2006-03-06 09:33
2006.03.26
Программа без среды Delphi


11-1123192059
Thaddy
2005-08-05 01:47
2006.03.26
Propose small change to _Tobj to the Dacha man ;)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский