czwartek, 19 lutego 2009

Tym razem nie sceny, ale scena naturalna SceNa (ale głupio brzmi)

scr010 I w ten sposób można by było zakończyć opis demka, które umieściłem w necie (Speedyshare oraz Chomik) w nawiązaniu do poprzedniej notki, po której między innymi Riddlemaster napisał co nieco o niefotorealistycznym renderingu.

Na początek tradycyjnie podam link do programu. Uwaga…

(Na środek wychodzi niewysoki chłopiec z tabliczką “oklaski”)

Więcej technicznych informacji znajdziecie tutaj, w tej notce (krótkiej… Mam nadzieję) natomiast skupię się na tym, co zostało poprawione na potrzeby demka.

Animowane niebo

Technika renderowania nieba pozostała ta sama – jest skydome scr009 zaczerpnięty z przykładów terenowych UGP (niestety, brak dobrego linka). Uznałem jednak, iż nadszedł czas, aby sklepienie niebieskie przestało być statycznym rozmazaniem tekstury naokoło kamery, a stało się dynamicznym elementem scenerii. Przykładem przysłużyła się tym razem (a może nawet nie tym razem, ale ponownie) NVIDIA tym demkiem (ciekawe, który raz daję link do tej samego…). Mianowicie, już wcześniej chciałem zastosować obraz powstały z szumu Perlina do generowania nieba – właśnie w tym celu napisałem klasę CPerlinNoise, która teraz znajduje się gdzieś w otchłani katalogu z frameworkiem i denerwuje inne struktury swym lenistwem. Tutaj również nie została użyta – posłużyłem się gotową teksturą, choć nie widzę przeszkód, aby przy innej okazji generować obraz za pomocą tej klasy.

Jak sam tytuł podrozdziału podpowiada, niebo jest animowane – przesuwa się w jedną stronę, ukazując kolejne kłęby chmur, które tak naprawdę powstają z jasnym plam na obrazie szumu. Nie są to obłoki wolumetryczne – nie ma też wyszczególnionego słońca. Całość jednak potrafi zmieniać barwę (która odbija się także na wodzie, co widać na którymś screenie [choć to akurat kwestia nadawania tego samego koloru niebu i wodzie {pomysłowe, prawda?}]) oraz szybkość przesuwania się. Nieważne, w jak antybajeczny sposób jest to zrobione (co można podejrzeć w shaderach – nie ma tam tylko obliczania przesuniętych współrzędnych tekstury, co z kolei można znaleźć w shaderach NVIDII) – ważne, iż wygląda przyzwoicie. A skoro nawet ja mówię, że wygląda przyzwoicie, to coś jest nie tak.

“Poprawiona” woda

scr011 Szczerze mówiąc, trudno powiedzieć, czy poprawiona. Jest chyba troszkę bardziej realistyczna, gdyż wyraźnie widać fale (choć, z obliczeniowego punktu widzenia, o żadnych wypukłościach mowy być nie może). Stała się jednak odrobinę bardziej gęsta. Jeśli ktoś odważy się włączyć aplikację, to informuję, iż na początku może się wydawać, że woda “stoi”. Zupełnie jakby ktoś wszystko zacementował. Jednakże, przy bliższym spojrzeniu (i obróceniu się lekko w lewo) można zauważyć poruszające się grzbiety. Czy to wyszło, czy też nie – Wasza wola jak to ocenicie. Pomysł na “bumpowanie” został zaczerpnięty ponownie z dema NVIDII, ale tym razem nie tego powyższego (nareszcie), ale na stronie biblioteki shaderowej.

Drzewka, a raczej tylko wspomnienie

Z tejże witryny bibliotecznej wziąłem też pomysł na relief scr008 mapping, który użyłem do kory drzewa. Nie został on jednak użyty w demie. Powód? Wygląda przeokropnie (screen po prawej) – nawet dla mnie. Wynika to z dosyć niepoprawnego teksturowania samego drzewa, co niestety, będzie trudne do poprawy ze względu na specyfikę generowania węzłów. Cóż – trzeba pomyśleć. O samych drzewach napiszę w osobnej notce (razem z cell-shadingiem, który wcześniej zaimplementowałem w frameworku. A raczej próbowałem zaimplementować), kiedy tylko udokumentuję wszystkie zmiany. Tutaj jednak dopowiem, iż liście są jak najbardziej animowane – wystarczy bliżej podejść i przypatrzeć się.

Cóż, tak to wygląda w ogólnym spojrzeniu. Ze szczegółami zachęcam się zapoznać ściągając i testując demko. Za wszystkie uwagi będę wdzięczny, choć części spodziewam się z góry niczym niedziałających shaderów każdego dnia (“za długo się ładuje!”, “kiepska trawa!”, “za dużo blooma!”).

Pozdrawiam i dziękuję – SceNtriC.

2 komentarze:

Noir Shirou pisze...

No i ja powiem, że bardzo ładnie... co prawa nie wszystko, ale...

Ok, kolejno.

1. Loading...
Na laptopiku z 2,4GHz dwurdzeniówką Intela, 4GB (3 w sumie, bo 1 dla grafiki...) DDR2, i GeForce 9600GT 512MB GDDR3 + 1GB DDR2 (to ten zaginiony gigabajt xD) ładuje się w 6 sekund (przy odpalonej masie innych rzeczy, sądzę, że na Turbo (+20% FSB) w 3-4 sekundy by pociągnął).
Ładowanie: 5/6 - "gry" niektórych innych ludzi umiejące to samo ładują się często dłużej.

2. Working
Śmiga. Wydajność jest całkiem niezła chociaż momentami, frameworkowi zdarza się stracić ze 20 klatek i obciążyć procek "nagłym skokiem". Pewnie głodowł i teraz łaknie mocy xP
Working: 5/6

3. Niebo
Punkt główny tego pokazu. Powiem szczerze - podoba mi się. Co z tego, że podobne efekty stosowano już dawno? Nadal się je dzisiaj stosuje. Troszkę więcej nieregularności w ruchu chmur, nieco dodatkowych chmurek takich niżej i będzie naprawdę cud i miód ;)
Niebo: 5/6

4. Woda
Woda od ostatniego razu, kiedy ją widziałem została niesamowicie wręcz ulepszona. Teraz wygląda ładnie. Nie wiem, czy niebo rzuca cienie na wodę (jeśli nie - przydałoby się; jeśli tak - to w takim razie jam jest ślepy ^^), ale... Woda mi się podoba. Brakuje jeszcze fizyki cieczy (np. opływanie drzewa i trawy ;P), ale to już zabawa do gry (tak jak mówiłeś), a nie do frameworka. Chociaż bym nie pogardził ;P
Woda: Znowu 5/6

I tu zaczynają się schody, gdyż...

5. Trawa
Pięta achillesowa. Niestety, trawnik w kształcie grządki na marchewki, obrośniętej chwastami... do tego takie... wydeptane i... lewo... prawo... lewo... prawo... zbyt regularnie ;P Tak, narzekam. Ale zdania nie zmienię, póki jej nie poprawisz.
Trawa: 3/6, bo wiem ile się nad nią napracowałeś.

6. i 7. Drzewo i (osobno) gałązki z liśćmi
Sam konar... cóż... u mnie wyrenderował się wręcz tragicznie, dwa razy pod rząd. Możliwe, że to wina mojego komputera - ot tak je tworzy, a nie inaczej. Jednak cóz... "kwadratowy" pień, z którego wyrasta drugi, bardziej konarowaty, "palowate" (nie, nie pałowate, paLowate, takie jak się płot robi ;] ) konary (i ten drugi pień właśnie)... ehh... Na dodatek nie ma kolizji, więc fruuu - jest drzewko, fruuuu - nie było drzewka. Ach i wisi na wodzie z kwadratowym kawałkiem gruntu, ale to już pominę xP
Co do gałązek z liśćmi - wbijają się w drzewko, co przy ich poruszaniu (jak i poruszaniu się kamery) wygląda jakby drzewko było... tak! To Picasso! Istny Kubizm (sic!), jak to opisałeś w tej lub poprzedniej notce. No i tak jak przy niebu i trawie i wodzie. Poruszają się zbyt regularnie i... czy to nie liście miały się ruszać, a nie całe gałązki? Albo to i to osobno? :P Tak, tak, marudzę...
Drzewo: 2+/6, wiem, że potrafisz ;]
Gałązki i liście: 3/6, bo teksturki ładne :D

Podsumowując: 28,5 / 42 = 67,85%. To wychodzi takie... hmm... 3? Chociaż, jakbym nadał wagi wodzie i niebu (które moim zdaniem są jednymi z ważniejszych elementów), to wyszłoby zapewne mocne 4.

Zatem bardzo mocne 3 ze wskazaniem na 3+. Całkiem nieźle ;)

SceNtriC pisze...

1. Cieszy mnie to bardzo - u mnie jest to czas około siedmiu sekund (Core Duo 2.4 GHz, 3 GB RAM, GeForce 9300M G 256 MB RAM).

2. Zdarza się - szczególnie w pobliżu trawy.

3 i 4. Dzięki wielkie. Ogólnie rzecz biorąc, chciałbym, aby kiedyś to chmurki na niebie przekształciły się w wolumetryczne. Przykładowy kod mam: http://www.markmark.net/SkyWorks/, ale jest troszkę... zagmatwany. A co do wody, w demie ustawione jest tak, że zmiana koloru nieba wpływa na wodę.

5. Trawa nie dość, że wygląda dosyć źle, to jeszcze u większości testujących po prostu nie działa. Jeśli komuś wyskakuje podczas uruchamiania aplikacji błąd Windowsa, proszę usunąć bądź zmniejszyć plik map.tga znajdujący się w katalogu tex.

6 i 7. Drzewo i liście to obiekt moich rozważań i stresu przez ostatnie dwa tygodnie. Gałęzie są generowane proceduralnie i losowo, zatem jeśli ktoś ma pecha, to może rzeczywiście uzyskać tragicznie wyglądający obiekt. Z tej specyfiki wynika też tragiczne teksturowanie - minie jednak sporo czasu, zanim będzie mi się chciało na nowo to wyprowadzać. Liście z kolei to zwykłe czworokąty "naklejone" na środku końcowych gałęzi. To już prędzej może ulec poprawie, ale cóż - zobaczymy.

Dziękuję wszystkim, którzy poświęcają swój czas na test demka.

Pozdrawiam