Skocz do zawartości

Czy ktoś z Was używał grafiki wektorowej w GMS?


DangBean

Rekomendowane odpowiedzi

Narysowałem sobie prosty rysunek w InkScapie - buźka i dwa oczka, a następnie przekonwertowałem do SWF.

Taki rysunek jak go się podgląda np w Foxie lub Operze nie wygląda może atrakcyjnie, ale identycznie jak w Inkscapie.

Bez problemu zaimportowało do GMS, ale ... buźka i jedno oczko. Drugie oczko wcięło. :blink:

Jak zaczęłem obiekt z takim spritem przesuwać po roomie to zostawiał za sobą smugi, tworząc węża, którego głową była buźka z jednym oczkiem.

 

Czy ja coś robię źle, może te wektorowe trzeba jakoś inaczej, czy grafika wektorowa w GMS to na razie tylko chwyt marketingowy i lepiej sobie odpuścić?

 

Jest ktoś na tym forum, kto by próbował albo używa grafiki wektorowej?

Odnośnik do komentarza
Udostępnij na innych stronach

Może kwestia głębokości warstw? To jest jednak do grafik tworzonych we Flashu a nie InkScape i na to też bierz poprawkę.

 

Z tym brakującym oczkiem to możliwe. Warstwa była jedna, może GMS jakoś inaczej interpretuje kolejność rysowanych krzywych.

 

Ale czemu zostawia węża? Obiekt się przesuwa to i sprite też powinien, bez zostawiania śmieci, niezależnie od głębokości warstw.

 

Próbowałeś używać spritów wektorowych w GMS?

Odnośnik do komentarza
Udostępnij na innych stronach

Z tym 'wężem' to jest błąd z pamięcią w GM:S. Powiedz jakie są warunki? Jest to pusty projekt? Masz ustawiony kolor albo obrazek tła? Obiekty ze zwykłym sprite też zostawiają ślad?

Dzięki Threef.

Poeksperymentowałem.

Pusty projekt - room nie miał tła - zwykłe sprites też zostawiają węża. Jak się włączy tło, to wszystko jest ok - wąż znika.

Jak się doda tilesy - też jest ok.

Fajny efekt powstaje jak tiles jest półprzezroczysty - za obiektem idzie taki półprzezroczysty znikajacy cień na kilkanaście pixlów. Efekt przypominający sposób rysowania ruchu w niektórych komiksach :rolleyes: . Możnaby wykorzystać gdyby nie świadomość, że pewnie YoYo to naprawi.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Nie, YYG tego nie naprawi, to jest umyślnie zrobione i było jeszcze przed GM:S. Po prostu włączony background to tak jakbyś rysował sobie prostokąt o danym kolorze, a potem dopiero wykonał eventy draw obiektów. Jak masz tilesety, albo jakiś inny powód czasem bez sensu rysować to tło. To jest jak najbardziej umyślnie dodana opcja.

Odnośnik do komentarza
Udostępnij na innych stronach

To jest jednak do grafik tworzonych we Flashu a nie InkScape i na to też bierz poprawkę.

Znalazłem coś takiego: http://gmc.yoyogames.com/index.php?showtopic=643832

Gosciu eksportował bezposrednio z flasha i też mu oczko zjadło. Czyli to jednak błąd GMS.

(to w ogóle jakiś spisek iluminatich - w obu przypadkach oczko :rolleyes: ).

 

Kolejny ciekawy efekt jaki zauważyłem to zmiana grubosci fragmentów krzywych importowanych z SWF podczas ruchu. Tak jakby te linie migotały. Gdy się ruch spritów ogląda w flashu to tego nie ma.

Chyba trzeba jeszcze poczekać aż dopracują grafikę vektorową. Może dodadzą import SVG. Nie trzeba będzie konwertować, a bardzo to upierdliwe.

Odnośnik do komentarza
Udostępnij na innych stronach

Ale to nie jest grafika wektorowa. To jest konwersja wektorów do vertexów.

Trochę mnie zaskoczył Twój post, ale pomysł by krzywe beziera zamieniać na trójkąty nie wydaje się bezsensowny, więc poeksperymentowałem. Gdyby było tak jak piszesz, to przy powiększaniu sprite'a powinna pojawić się struktura złożona z trójkątów, bo przecieź sprite musi być pamiętany jako skończona liczba vertexów.

W SWF sprite składa się z takich obiekcików:

    <DefineShape3 ShapeId="8">
        <Bounds MaxX="5132" MaxY="4098" MinX="4982" MinY="3365" />
        <FillStyles>
            <SolidFillStyle Color="9b" />
        </FillStyles>
        <LineStyles>
            <LineStyle Width="96" Color="ff00009b">
            </LineStyle>
        </LineStyles>
        <Edges>
            <StyleChange>
                <Move DX="5084" DY="3860" />
                <SetFill0 Index="1" />
                <SetLine Index="1" />
            </StyleChange>
            <Curve CDX="-12" CDY="280" ADX="-25" ADY="-89" />
            <Curve CDX="-24" CDY="-143" ADX="8" ADY="-302" />
            <Curve CDX="12" CDY="-280" ADX="25" ADY="88" />
            <Curve CDX="3" CDY="17" ADX="3" ADY="26" />
            <Line DX="-17" DY="276" />
            <Line DX="27" DY="127" />
        </Edges>
    </DefineShape3>

Rysyję sprite'a zaimportowanego z SWF skalując:

GML
draw_sprite_ext(sprite0, 0, x, y, skala, skala, 0, c_white, 1);

No i przy dużej skali nie pojawiają się trójkąty, tylko pixeloza.

Obawiam się, że krzywe beziera są podczas importu zamieniane nie na vertexy, ale na pixle :( .

 

Czyli jak chcemy aby nasz bohater odchodził w siną dal na tle jelonka i zachodzącego słońca, to najlepiej narysować go wektorowo, i wyeksportować z inkskapa kilka png w różnych skalach i gdy bohater odchodzi skalować, a co ileśtam kroków podmieniać sprite'a na mniejszy.

 

A miało być tak pięknie. Jestem dziebko zawiedziony.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 miesiące temu...

Może kogoś zainteresuje, że w nowej wersji GMS 1.4.1556 poprawili import SWF. Moja paskudna geba ma już dwa oczka i jak sie ją skaluje to bardzo alegancko się powiększa, bez żadnej pixelozy :) .

 

Niestety nie wszystko jest jeszcze super - w HTML5 grafika wektorowa się robi niwidzialna.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...