home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
05
/
ami014.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
8KB
|
159 lines
Comanche (1-Mapa), (cz. 7.)
---------------------------
JAK ULEPSZYÊ PROCEDURË?
<lead>Idë o zakîad, ûe niejeden z Was zdâûyî sië juû zachwyciê
pecetowâ grâ pt. Comanche (lub podobnymi, gdyû pomysî doôê szybko
skopiowano). Tym, którzy jeszcze nie wiedzâ, o co chodzi,
tîumaczë. Chodzi o sposób przedstawiania krajobrazu, który
przestaî byê wektorowym ôwiatem zîoûonym z gór-stoûków, a zaczâî
nareszcie przypominaê prawdziwy widok z kabiny.
<a>Miklesz/Damage
<txt>Metoda generowania komputerowych gór na Amidze znana byîa od
doôê dawna, lecz na efekty pracy SceneryGeneratora lub Visty
trzeba byîo czekaê doôê dîugo. Kiedy na pececie pojawiî sië
Comanche, byî on trochë szokujâcy, choê zaraz koderstwo
amigowskie zakasaîo rëkawy i zabraîo sië do roboty, czego efektem
sâ pojawiajâce sië ostatnio krajobrazy w demach. Okazuje sië
bowiem, ûe po wykonaniu kilku oczywistych uproszczeï sprawa staje
sië bardzo îatwa...
Od czego naleûy zaczâê? Oczywiôcie od mapy, i to moûliwie
ciekawej, bo demo, w którym lecimy nad morzem lub pustyniâ nie
bëdzie sië nikomu szczególnie podobaê. A skâd wziâê mapë i jak jâ
zapisaê? Moûna caîy krajobraz generowaê bezpoôrednio w kodzie
maszynowym, ale zapewniam Was, ûe ma to sens jedynie w intrach,
gdyû jakoôê gór, stworzonych odpowiednim programem, bëdzie
zdecydowanie lepsza. Ja, na podstawie swoich doôwiadczeï z
mapami, polecam Vistë, gdyû ma ona funkcjë bezpoôredniego
zgrywania wysokoôci punktów do pliku IFF (Alt->IFF). Otrzymany w
ten sposób obrazek wypada oczywiôcie przeskalowaê do
interesujâcej nas wielkoôci (sensownâ jest np. 512 x 512 pikseli)
oraz dodaê trochë wiëcej poziomów.
Jak to zrobiê? O ile skalowanie jest sprawâ oczywistâ, o tyle
drugi problem jest nieco skomplikowany. Îadujemy nasz obrazek do
(najlepiej) Personala i zmieniamy paletë tak, aby najniûszy punkt
byî czarny, a najwyûszy biaîy. Nastëpnie wîâczamy np. 256 kolorów
i ustawiamy paletë tak, aby kolor 00 miaî wartoôci (00,00,00), a
kolor FF (FF,FF,FF). Po tym wszystkim dajemy ReMap i po chwili
otrzymamy obrazek, którego paleta (choê z bardzo duûymi
"dziurami") obejmowaê bëdzie caîe 256 wartoôci. Po co te
wszystkie kombinacje? Po to, byômy mogli teraz wybraê opcjë
IMAGEPROCESSING/BLUGHIGH i po chwili (czasem trochë dîuûszej)
cieszyê sië wygîadzonym terenem, który obejmuje nasza mapa. Nie
oznacza to, ûe nie znajdziemy w naszym póúniejszym krajobrazie
szczytów i przepaôci! Wszystkie elementy zostaîy zachowane, lecz
jakoôê generowanego obrazu bëdzie o niebo lepsza. Gotowâ juû mapë
zapisujemy, lecz Personala jeszcze nie "quitujemy". Dlaczego?
Nasze góry muszâ przecieû mieê jakieô kolory. Dobranie palety na
zasadzie im wyûej, tym jaôniej nie jest najlepszym rozwiâzaniem,
gdyû otrzymujemy coô w stylu oôwietlonych szczytów ginâcych w
ciemnych dolinach, co wyglâda nie najgorzej, ale i nie najlepiej.
Równieû naturalne kolory ziemi, jakie "wyrzuciîa" nam Vista, nie
naleûâ do olôniewajâco piëknych i zmienianie ich bëdzie tylko
powodowaîo, ûe powstanie wraûenie lotu wôród wyjedzonego w ôrodku
tortu o róûnych rodzajach nadzienia.
Jeôli mogë Wam coô zaproponowaê, to sugerujë na naszej mapie
(oczywiôcie wczeôniej juû zapisanej) uûyê opcji EMBOSS. Chodzi mi
oczywiôcie o obraz z juû przestawionâ na odcienie szaroôci paletâ
dziewiëciu kolorów). Funkcja EMBOSS, jak wiadomo, tworzy z
naszego obrazka oôwietlonâ pîaskorzeúbë. Jeûeli wykorzystamy tak
stworzony drugi obrazek jako mapë rozkîadu kolorów, niezaleûnâ od
wysokoôci, a tylko naîoûonâ na góry, to otrzymamy obraz
krajobrazu oôwietlonego bocznym ôwiatîem (choê o staîym
odcieniu!). Tutaj drobna uwaga. Funkcja EMBOSS (w niektórych
programach -- RELIEF MAP) zazwyczaj daje w wyniku swojego dziaîania
obraz wykorzystujâcy tylko najbliûsze barwy w okolicach (7F, 7F,
7F). W zwiâzku z tym, aby otrzymaê wiëksze zróûnicowanie rozkîadu
kolorów, warto "przeskalowaê" paletë. Jak to zrobiê? Zaczynamy
od znalezienia koloru najciemniejszego i najjaôniejszego. Pomocnâ
okaûe sië tutaj funkcja COLOR/STATISTICS, obrazujâca w postaci
sîupków procentowâ liczbë danych punktów na obrazku. Zapisujemy
sobie dwa znalezione przez nas kolory, a nastëpnie wykonujemy
"fade" palety, tak aby nasz najciemniejszy punkt (wczeôniej
ciemnoszary) byî teraz czarny, a najjaôniejszy (wczeôniej
jasnoszary) byî biaîy. Wychodzimy z requestera palety, majâc
znacznie "gîëbsze" cienie i bîyski ôwiatîa na górach. Moûemy je
sobie jeszcze trochë wyrównaê, kiedy uznamy, ûe sâ za ostre. W
tym wypadku znów skalujemy paletë, aby przejôcie od czarnego do
biaîego zajmowaîo caîâ jej dîugoôê. Wykonujemy opcjë REMAP, aby
nasz obrazek uzyskaî poprzednie kolory i caîoôê blurujemy.
Oczywiôcie gotowy rozkîad kolorów moûna jeszcze trochë podbarwiê
i zamiast przejôcia wyîâcznie w odcieniach szaroôci zastosowaê na
przykîad kolor brâzowy. Nie wykluczam, ûe juû wkrótce napiszë o
tym, jak funkcjë EMBOSS wykonywaê spod poziomu asemblera i to w
czasie rzeczywistym.
Obie mapy (wysokoôci i kolorów) mamy juû teraz jako pliki IFF,
które czym prëdzej naleûy zamieniê na pliki binarne. Oczywiôcie
zgrywanie jako "bitplane'y" jest niewskazane, gdyû mapy nie bëdâ
nam sîuûyê do wyôwietlania, lecz do pobierania z nich kolejnych
danych, dotyczâcych parametrów kaûdego z punktów krajobrazu. W
zwiâzku z powyûszym, najlepiej uûyê przy konwersji Picture
Convertera, gdyû ma on opcjë zgrywania caîej grafiki jako chunky
pixel. Oznacza to, ûe wszystkie spoôród 262144 punktów jednej
mapy odwzorowane bëdâ w 262144 bajtach pliku binarnego.
Uproszczenie pobierania danych jest chyba oczywiste. Poniewaû
mapy mamy dwie, a kaûda z nich zajmuje 256 kilobajtów, to razem
dostaniemy aû póî megabajta danych wejôciowych (o krajobrazie).
Posiadacze mniejszej iloôci pamiëci pozbawieni twardego dysku
trochë sië zmartwiâ, choê oni zawsze mogâ wygenerowaê sobie mapë
we wîasnym zakresie. Nie podajë konkretnych wzorów, gdyû jako ûe
na szczëôcie nie byîy mi potrzebne, nie znam ich. A wracajâc do
naszych mapek. Ostatniâ czynnoôciâ, jakâ radzë wykonaê, jest
poîâczenie ich w jednâ, tak aby kaûdy punkt byî opisywany nie
przez dwa rozrzucone gdzieô po pamiëci bajty, lecz przez "spójne"
sîowo, w którym dolny bajt przyporzâdkujemy kolorowi, a górny
wysokoôci (lub vice versa, choê póúniej okaûe sië, ûe waûniejsza
informacja -- wysokoôê -- powinna byê umieszczona "wczeôniej" i
odczytywana pierwsza, gdyû moûe sië zdarzyê, ûe dany punkt chowa
sië za bliûszymi obserwatora wzniesieniami w zwiâzku z tym
procedura przechodzi do nastëpnej pozycji, czyli dalszych
informacji o kolorze nie bëdzie juû potrzebowaîa). Jeûeli masz
wiëkszâ iloôê pamiëci, to operacjë îâczenia moûesz wykonywaê
bezpoôrednio w kodzie Comancha. W przeciwnym wypadku musisz jâ
wykonaê wczeôniej. Grunt, aby otrzymaê tablicë o dîugoôci 524288
bajtów.
Wytîumaczenie sposobu tworzenia widoków realistycznych
krajobrazów nie jest jednak zbyt îatwe. W zwiâzku z tym, ze
wzglëdu na ograniczonâ objëtoôê dzisiejszego odcinka, zmuszony
jestem przerwaê w tym momencie. Czas, jaki macie do ukazania sië
kolejnego numeru Magazynu AMIGA, poôwiëêcie na stworzenie
odpowiedniej mapy rozkîadu wysokoôci i kolorów.
Aha, jeszcze jedno. Tym razem trochë prywatniej. Jak ktoô chce,
to moûe mi ûyczyê powodzenia?! O ile moje obliczenia sië
sprawdzâ, to w chwili kiedy Wy, Drodzy Czytelnicy, bëdziecie
czytaê ten tekst, ja bëdë zdawaî egzamin dojrzaîoôci.
Podpisy do rysunków:
0. Mapa rozkîadu oôwietlenia
1. Mapa rozkîadu wysokoôci
2. "Comanche" z intra: "4Ko"/PolkaBrothers
3. "Comanche" z dema: "Nexus7"/Andromeda
4. "Comanche" z dema: "Psychedelic"/VirtualDreams/FairLight
5. "Comanche" z dema: "ThePrey"/PolkaBrothers
6. "Comanche" z dema: "Noxzema"/Damage
7. "Comanche" z dema: "TroyPreView"/Damage