[Delphi][GlScene] Jak wygenerować teren? (Na podstawie txt)

0

Witam.
Bawiłem się ostatnio komponentem GLScene i w pewnym momencie wpadłem na pomysł generowania terenu na podstawie danych z pliku tekstowego. Dane te to np. wysokość terenu w różnych miejscach (podane jest X i Y oraz wysokość). Ma ktoś pomysł jak to rozwiązać? Próbowałem wykorzystać jakiś przykład, ale mi się nie udało.
Z góry dziękuje za odpowiedź i pozdrawiam
tlaguz.

0

Jest tam komponent do generowania terenu z bitmapy. Jesli nie chcesz go uzywac, to uzyj HeightField. Mozesz jeszcze uzyc tego "czegos" (zapomnialem juz nazwy) do tworzenia dowolnych ksztaltow z trojkatow (reczna metoda) i zrobic za jego pomoca teren.

0

Dzięki za odpowiedź. nie pamiętasz może jak nazywa się to coś do trójkątów? Nie wiesz może, czy jest to gdzieś w demach?
Z góry dziękuje za odpowiedź i pozdrawiam
tlaguz.

0

Bawiłem się ostatnio komponentem GLScene i w pewnym momencie wpadłem na pomysł generowania terenu na podstawie danych z pliku tekstowego. Dane te to np. wysokość terenu w różnych miejscach (podane jest X i Y oraz wysokość). Ma ktoś pomysł jak to rozwiązać? Próbowałem wykorzystać jakiś przykład, ale mi się nie udało.

Plik zawierające wysokości w danych miejscach płaszczyzny zwie się właśnie heightmapą.
Ja to robie tak:

Dajmy na to mamy:

var Map : array[-127...127, -127..127] of byte;

Za pomocą zdarzenia OnGetHeight gdzie mamy:

GetHeight(const x, y: Single; var z: Single;var color: TVector4f; var texPoint: TTexPoint);

zapodaje taki kod:

z:=Map[Round(X), Round(Y)];

Oczywiście w XSamplingScale i Y Sampling Scale ustawiam:
Min: -127
Max: 127
Step: 1
by [0,0] było środkiem mapy (lepiej sie obraca wzgledem srodka) -,-

Odświerzanie powierzchni wywołujesz procką StructureChanged;

El voila! RAW w GLScene -.-
user image

0

Dzięki wielkie :-D Jednak jak ktoś pamięta ten od trójkątów, to proszę, żeby napisał ;-P
Z góry dziękuje za odpowiedź i pozdrawiam
tlaguz.

0

TGLMesh

0

Wielkie Dzięki wszystkim :-D

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0