Autor Wątek: Tworzenie terenu a'la Trainz (pędzel) w OGRE  (Przeczytany 2020 razy)

Offline bialasik

  • Użytkownik

# Grudzień 26, 2011, 20:22:07
Witam serdecznie,
w jaki sposób zabrać się za stworzenie edytora terenu na zasadzie pędzli? Przykładem niech będzie ten link: http://www.youtube.com/watch?v=U9iLm9VjJfk
Kompletnie nie mam konkretnych pomysłów, może istnieje jakiś tutorial w celu zastosowania tej koncepcji do OGRE? Może da się prościej, niż pisaniem kodu od podstaw?
Proszę o pomoc.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline _OskaR

  • Użytkownik

# Grudzień 26, 2011, 21:01:43
Na podstawie położenia kursora, wyznaczasz punkt przecięcia z terenem, a potem, np. jeśli wierzchołek jest bliżej od długości promienia, modyfikujesz wysokość. Jak chcesz płynniejsze przejście - korzystasz z jakiejś prostej funkcji, aby jakiś tam współczynnik modyfikacji był np. słabszy na zewnątrz koła, a mocniejszy bliżej środka.
A potem całą zabawa to regulacja promienia, funkcji czy kształtu obrabianego terenu.

Offline Nsuidara

  • Użytkownik
    • Site

# Grudzień 26, 2011, 22:43:39
Można dość prosto sobie wyobrazić...
-> rzut izometryczny czy jak to tam nazywamy - tzn z góry - kamera
-> sześcian (twój Avatar), z gier to była by jakaś postać...
-> sterowanie klawiaturą WASD (np)
-> spacja podnoszenie / enter obniżanie
Więc chodzisz i robisz... mapę teraz trochę geometri jak duże pole działanie itp..

Teraz zamiast ludzika zrób tak jak na filmiku koło... o tym promieniu co masz... i zamiast WASD - ruch myszką....

// takie proste wyobrażenie...

Problematyczne może być współrzędne myszki na terenie :] i braku znajomość geometrii ... zwłaszcza brak wyobraźni i wiedzy ^^

Offline Maskl

  • Użytkownik
    • http://www.maskl.cba.pl

# Grudzień 26, 2011, 23:35:32
Może da się prościej, niż pisaniem kodu od podstaw?
Zacząłbym od przykładowego projektu "Terrain" z SDK Ogra, gdzie masz taki właśnie edytor terenu :) (Zakładam, że nic się nie zmieniło od poprzedniej wersji SDK, 1.7.2)

Offline wiedzmin112

  • Użytkownik

# Grudzień 27, 2011, 10:12:31
Jeżeli chcesz to zrobić z pędzlem to pobierasz vertex spod myszki i przekazujesz jego pozycje na terenie do funkcji która mniej więcej może wyglądać tak


void PaintBrush(int vertexX,int vertexY,Image brush)
{
for(int x=0;x<brush.getWidth();x++)
{
for(int y=0;y<brush.getHeight();y++)
{
setTerrainVertexHeight(vertexX+x,vertexY+y,getTerrainVertexHeight(vertexX+x,vertexY+y)+brush.getPixelColor(x,y).Red);
}
}
}

setTerrainVertexHeight pobiera pozycje i znajduje odpowiedni tej pozycji vertex na terenie i ustawia dla niego wysokość(oś Y).
getTerrainVertexHeight zwraca wysokość vertexa
brush.getPixelColor pobiera pozycję x i y piksela i zwraca jego kolor

Jak chcesz napisz mi na PW maila ja ci podeśle mój edytor terenu(ale nie jest napisany w OGRE tylko w IrrLichcie)

Offline James

  • Użytkownik

# Grudzień 27, 2011, 13:54:27