Przesunięte cienie obiektów
Witam,
Mam chwilę czasu, postanowiłem zaproponować pewne rozwiązanie. Gdyby każdemu poruszającemu się obiektowi dodać cień? Aby nie komplikować kodu, a w zasadzie, umieścić (jedynie) w pętli renderingu rysowanie cienia (przesuniętego o wektor względem postaci), a potem dopiero nałożyć na to obiekt zasadniczy? Cień, to w sumie niewiele roboty dla grafika (dla mnie). Wystarczy dodać jedynie kanał alfa (grafika ta sama, jedynie "przekoloruję atlasy tekstur do dwukolorowej mapy na podstawie grafiki zasadniczej), potem ustalić jakąś wartość przezroczystości (można dodać do kodu przeliczanie tej wartości, w zależności od "pory dnia", czaru etc). W załączniku (zrzut ekranu z mojego projektu) - jest to widoczne. W moim projekcie cień (pzesunięcie i wartość alfa) zmieniam zgodnie z czasem wirtualnym gry. "Niby" nic nie widać, a fajnie to wygląda, szczególnie, gdy mam w 2D "słońce" z dobą 7 godzin naszego czasu. Do każdego poruszającego się obiektu dodaję taki cień. Plik zawierający cień "waży" góra 2 kilo, zatem nie zajmuje wiele pamięci. Co prawda dla renederingu to sporo, ale może warto się zastanowić? Jednym słowem, przy dobrze dobranej wartości alfa staje się to bardzo plastyczne i uwypukla "trzeci" wymiar. Modelując wektor przesunięcia uzyskuje się fajne efekty, np, dla latających potworów?
Poddaję pod dyskusję.
Jack Flower
Mam teraz sporo obowiązków (matury wykańczają...ale wakacje niedługo /dla zainteresowanych, ja maturę zdawałem lat temu bez małą trzydzieści/), ale będę starał się w jakimś tempie rysować. Szukam grafików, którzy by "pomogli", ale.... szkoda gadać. W najbliższym czasie, dodam stany (chodzenie, czary, raniony, trafiony, śmierć do animacji, uporządkuję je i wyślę).
Mam chwilę czasu, postanowiłem zaproponować pewne rozwiązanie. Gdyby każdemu poruszającemu się obiektowi dodać cień? Aby nie komplikować kodu, a w zasadzie, umieścić (jedynie) w pętli renderingu rysowanie cienia (przesuniętego o wektor względem postaci), a potem dopiero nałożyć na to obiekt zasadniczy? Cień, to w sumie niewiele roboty dla grafika (dla mnie). Wystarczy dodać jedynie kanał alfa (grafika ta sama, jedynie "przekoloruję atlasy tekstur do dwukolorowej mapy na podstawie grafiki zasadniczej), potem ustalić jakąś wartość przezroczystości (można dodać do kodu przeliczanie tej wartości, w zależności od "pory dnia", czaru etc). W załączniku (zrzut ekranu z mojego projektu) - jest to widoczne. W moim projekcie cień (pzesunięcie i wartość alfa) zmieniam zgodnie z czasem wirtualnym gry. "Niby" nic nie widać, a fajnie to wygląda, szczególnie, gdy mam w 2D "słońce" z dobą 7 godzin naszego czasu. Do każdego poruszającego się obiektu dodaję taki cień. Plik zawierający cień "waży" góra 2 kilo, zatem nie zajmuje wiele pamięci. Co prawda dla renederingu to sporo, ale może warto się zastanowić? Jednym słowem, przy dobrze dobranej wartości alfa staje się to bardzo plastyczne i uwypukla "trzeci" wymiar. Modelując wektor przesunięcia uzyskuje się fajne efekty, np, dla latających potworów?
Poddaję pod dyskusję.
Jack Flower
Mam teraz sporo obowiązków (matury wykańczają...ale wakacje niedługo /dla zainteresowanych, ja maturę zdawałem lat temu bez małą trzydzieści/), ale będę starał się w jakimś tempie rysować. Szukam grafików, którzy by "pomogli", ale.... szkoda gadać. W najbliższym czasie, dodam stany (chodzenie, czary, raniony, trafiony, śmierć do animacji, uporządkuję je i wyślę).
Leave a comment
file:b54bNUpvGr3Qs1eJe5aVNr: Przykład
on 2009-05-11 08:45 *
By rAum
Assigned to changed from rAum to jackflower
Milestone changed from Trzeci Release: "Blaszany Chomiczek" to Czwarty Release: "Luzny Lori"
Summary changed from Grafika - pomysł pod dyskusję. to Dynamiczne cienie
Assigned to changed from rAum to jackflower
Milestone changed from Trzeci Release: "Blaszany Chomiczek" to Czwarty Release: "Luzny Lori"
Summary changed from Grafika - pomysł pod dyskusję. to Dynamiczne cienie
W sumie też nad tym myślałem kiedyś (z tym że cień byłby "statyczny" tj. na grafice duszka - korzystamy przecież z png który ma obsługę kanału alpha).
Dynamiczna wersja jest ciekawa ale zrodzi problemy że statyczne obiekty także będą musiały posiadać cień gdyż inaczej będzie to niezbyt fajnie wyglądało jako całość.
Dlatego na razie zostawmy tą funkcję na później, jako kwestię otwartą.
Ticket przenoszę na kolejny milestone - tak aby nie zapomnieć.
Dynamiczna wersja jest ciekawa ale zrodzi problemy że statyczne obiekty także będą musiały posiadać cień gdyż inaczej będzie to niezbyt fajnie wyglądało jako całość.
Dlatego na razie zostawmy tą funkcję na później, jako kwestię otwartą.
Ticket przenoszę na kolejny milestone - tak aby nie zapomnieć.
Uznałem, że każdą grafikę, która może być animowana (ta "statyczna" też), czyli gracz, potwory etc, dotyczy to także przedmiotów, roślinności będę rysował wraz z "cieniem", jako osoby atlas tekstur. Ustawię alfę, podam parametry. To na wszelki wypadek, bo może się przydać, gdyby "cień" okazał się zasadny. Jako osobne pliki będą do wykorzystania pod ręką.
Rzecz jasna to tylko warstwa renderingu, zatem nie podlega kolizjom itp...itd. Co najwyżej można programowo ustawiać przesunięcie cienia i alfę.
Rzecz jasna to tylko warstwa renderingu, zatem nie podlega kolizjom itp...itd. Co najwyżej można programowo ustawiać przesunięcie cienia i alfę.
on 2009-06-29 11:34 *
By
Ponownie w temacie. Przesłałem trzy pliki (będzie więcej grafiki, w końcu są wakacje...). Jeśli to ma sens, prześlę warstwy z cienien, do każdej przesłanej grafiki, trzymając się nazewnictwa, z kanałem alpha.
Uznaję, że "cieśnienia nie ma", zawsze mogę to szybko dodać. Skupię się nad resume grafiki, dokonam bilansu, jakoś "scalę" z fabułą, opracuję "nowy" bestiariusz, całość w kontekście rozmowy chat, na której mnie nie było, nad czym ubolewam.
Jednym słowem ustalę czego w grafice brakuje, jaka kolejność prac (rysowania), postaram się zapoczątkować dokumentację zasobów.
Uznaję, że "cieśnienia nie ma", zawsze mogę to szybko dodać. Skupię się nad resume grafiki, dokonam bilansu, jakoś "scalę" z fabułą, opracuję "nowy" bestiariusz, całość w kontekście rozmowy chat, na której mnie nie było, nad czym ubolewam.
Jednym słowem ustalę czego w grafice brakuje, jaka kolejność prac (rysowania), postaram się zapoczątkować dokumentację zasobów.
Hej, JF :)
Dwa pytania:
- jak produkujesz te cienie? Rysujesz je oddzielni? Popraw mnie jeśli się mylę, ale wydaję mi się, że bierzesz wyjściowy sprite, transformujesz wszystkie kolory do czarnego i mnożysz alfę całego obrazka przez 50%. Jeśli tak jest, to jestem w stanie robić to skryptem (zestaw narzędzi ImageMagick, te sprawy) - trochę przyspieszy proces produkcji tychże. Zastanawiam się, czy to zawsze będzie dobrze wyglądać... np. w przypadku jakiejś pszczółki?
- te animacje oznaczone "winged" to są ranne potwory, nie...? Jeśli tak, to wystawię ticket, żeby ktoś to zaimplementował... trochę to da.
Dwa pytania:
- jak produkujesz te cienie? Rysujesz je oddzielni? Popraw mnie jeśli się mylę, ale wydaję mi się, że bierzesz wyjściowy sprite, transformujesz wszystkie kolory do czarnego i mnożysz alfę całego obrazka przez 50%. Jeśli tak jest, to jestem w stanie robić to skryptem (zestaw narzędzi ImageMagick, te sprawy) - trochę przyspieszy proces produkcji tychże. Zastanawiam się, czy to zawsze będzie dobrze wyglądać... np. w przypadku jakiejś pszczółki?
- te animacje oznaczone "winged" to są ranne potwory, nie...? Jeśli tak, to wystawię ticket, żeby ktoś to zaimplementował... trochę to da.
on 2009-06-29 13:46 *
By
Witaj Liosan,
Tak. To odzielne pliki z alfa na 50% (można ją zmieniać w czasie gry, bo cień "ciemniejszy"/"jaśniejszy" może być (np. w czasie gry są pory dnia). Do tego można go "przesuwać" pod obiektem, dajmy na to doba = np. 3 godziny", pozorny ruch słońca. Ale to takie tam pomysły.
Jak uważasz, że bedzie prędzej, to można narzędziem.
Ja w każdym razie mogę podesłać atlasy z cieniami, aby było kompletne.
Co do pszczółki to będzie ok, bo jak sie da "stałą" wartość przesunięcia cienia względem sprite, to np. Ogr bedzie jak widać, a pszczoła rzuci cień taki, że widać, że leci, jest wysoko.
Sorry za błędy i marny styl, ale srukam z iPhone'a.
Jutro coś podeślę.
Chcę uporząkować grafikę i dokonać bilansu, co potrzebne. Postaram sie narysować. Big Monster (128 x 128).
Tak winged to obiekt raniony, czyli podmiana zasobu zależna od stanu życia obiektu.
Pozdrawiam
Tak. To odzielne pliki z alfa na 50% (można ją zmieniać w czasie gry, bo cień "ciemniejszy"/"jaśniejszy" może być (np. w czasie gry są pory dnia). Do tego można go "przesuwać" pod obiektem, dajmy na to doba = np. 3 godziny", pozorny ruch słońca. Ale to takie tam pomysły.
Jak uważasz, że bedzie prędzej, to można narzędziem.
Ja w każdym razie mogę podesłać atlasy z cieniami, aby było kompletne.
Co do pszczółki to będzie ok, bo jak sie da "stałą" wartość przesunięcia cienia względem sprite, to np. Ogr bedzie jak widać, a pszczoła rzuci cień taki, że widać, że leci, jest wysoko.
Sorry za błędy i marny styl, ale srukam z iPhone'a.
Jutro coś podeślę.
Chcę uporząkować grafikę i dokonać bilansu, co potrzebne. Postaram sie narysować. Big Monster (128 x 128).
Tak winged to obiekt raniony, czyli podmiana zasobu zależna od stanu życia obiektu.
Pozdrawiam
Trudno to nazwać toolem... Instalujemy ImageMagick, i przy odrobinie farta jesteśmy w stanie wykonać:
convert chityniak-death.png -fx 0 chityniak-out.png
Ustawia kanały RGB na 0, alphę zostawia jak jest (chyba lepiej ją programowo traktować, tak jak mówiłeś). Zaleta tego jest taka, że można to robić hurtowo - wszystkie za jednym zamachem, no i jest to prosta, mechaniczna czynność.
Powiem Ci tak: jeśli chcesz to robić, to to rób. Wg mnie można to zrzucić na kogokolwiek, a rysowanie sprite'ów nie bardzo - więc może lepiej nie tracić Twojego czasu (*). Z drugiej strony, jeśli masz dosyć rysowania (w sensie robienie takich rzeczy jest dla Ciebie odpoczynkiem do stawiania pixeli), to proszę Cię bardzo :)
(*) Nie chcę Cię traktować jakoś specjalnie, ale staram się maksymalizować wykorzystanie zasobów ludzkich :) Trochę dziwnie się z tym czuję, no ale co mam zrobić...
convert chityniak-death.png -fx 0 chityniak-out.png
Ustawia kanały RGB na 0, alphę zostawia jak jest (chyba lepiej ją programowo traktować, tak jak mówiłeś). Zaleta tego jest taka, że można to robić hurtowo - wszystkie za jednym zamachem, no i jest to prosta, mechaniczna czynność.
Powiem Ci tak: jeśli chcesz to robić, to to rób. Wg mnie można to zrzucić na kogokolwiek, a rysowanie sprite'ów nie bardzo - więc może lepiej nie tracić Twojego czasu (*). Z drugiej strony, jeśli masz dosyć rysowania (w sensie robienie takich rzeczy jest dla Ciebie odpoczynkiem do stawiania pixeli), to proszę Cię bardzo :)
(*) Nie chcę Cię traktować jakoś specjalnie, ale staram się maksymalizować wykorzystanie zasobów ludzkich :) Trochę dziwnie się z tym czuję, no ale co mam zrobić...
on 2009-06-30 12:18 *
By
Dodałem dzisiejszą porcję pracy.
Jutro dodam (ku porządkowi i pamięci), "cienie" całej reszty postaci. Na wszelki wypadek wprowadzę już system nazewnictwa tych plików, aby jako taki ład zaistniał.
(*) Liosan, zasoby ludzkie po to są, aby z nich czerpać. Swoją drogą czerpanie, jak dziedziczenie - ważne, aby class na "górze" była baaaaaaardzo abstrakcyjna.
A, co do traktowania programowo alpha, to w plikach zawsze ustawiam na 50% (na color black). Póki mam trochę czasu, podgonię postaci animowane. W "międzyczasie" (ponoć to słowo jest już wg językowców akceptowane), jakieś detale, drobiazgi, duperele.
Pozdrawiam.
Jutro dodam (ku porządkowi i pamięci), "cienie" całej reszty postaci. Na wszelki wypadek wprowadzę już system nazewnictwa tych plików, aby jako taki ład zaistniał.
(*) Liosan, zasoby ludzkie po to są, aby z nich czerpać. Swoją drogą czerpanie, jak dziedziczenie - ważne, aby class na "górze" była baaaaaaardzo abstrakcyjna.
A, co do traktowania programowo alpha, to w plikach zawsze ustawiam na 50% (na color black). Póki mam trochę czasu, podgonię postaci animowane. W "międzyczasie" (ponoć to słowo jest już wg językowców akceptowane), jakieś detale, drobiazgi, duperele.
Pozdrawiam.
on 2009-08-07 01:55 *
By
Ok, dobrze, że to się zapowiada. Na "wszelki słuczaj", ja u siebie będę trzymał wszystkie pliki z cieniami. Mam nadzieję, że to nie "zabije FPS'ów".
Od teraz na assembla, będę wysyłał tylko pliki "zasadnicze",a cały kram trzymał u siebie (archiwizowane jak przykazanie głosi).
p.s. zawsze miałem to na uwadze (ten stary jak świat sposób tworzenia "cienia", i zawsze mi to wylatywało z głowy.
Od teraz na assembla, będę wysyłał tylko pliki "zasadnicze",a cały kram trzymał u siebie (archiwizowane jak przykazanie głosi).
p.s. zawsze miałem to na uwadze (ten stary jak świat sposób tworzenia "cienia", i zawsze mi to wylatywało z głowy.