Главная страница
    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.034 c
2-1141881603
xroot
2006-03-09 08:20
2006.03.26
Таблица в отчет


1-1140425629
kyn66
2006-02-20 11:53
2006.03.26
Почему SpeedButton меняет свой цвет ?


2-1141732156
VitV
2006-03-07 14:49
2006.03.26
DBCtrlGri - существует замена?


2-1142088993
dera
2006-03-11 17:56
2006.03.26
Как узнать, находится ли точка внутри многоугольника?


8-1128446411
Argon
2005-10-04 21:20
2006.03.26
Несколько звуковых карт, как выбрать из них любую?





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