1

Wygenerować maskę dla softwarowych sprajtów to nie jest problem.
Ale jak wygenerować maskę z outlinem?
Jedyne co mi przychodzi do głowy na szybko to 4 maski przesunięte lewo/prawo/gora/dół i nałożyć na siebie.
Niezbyt doskonały sposób (uciekną rogi) ale zadawalający.
Może ktoś już kiedyś męczył się z tym i znalazł dobre rozwiązanie?
A jakby w locie się jeszcze dało w miarę szybko generować taką maskę to ozłocę :))))

2

szczęśliwi ci, którzy nie muszą robić masek ręcznie, ja zawsze maski robiłem w G2F

3

Jaki tryb graficzny?
Dawno temu Alex zgłębiał ten problem podczas prac na grą Mr. Proper.

https://www.youtube.com/watch?v=jofNR_WkoCE

4

Hej!

Zgodnie z zasadą, "Nie pamiętam dobrze/nie znam się.. więc się wypowiem", to z tego co pamiętam to Alex wymyślił metodę próbkowania w kształcie krzyżyka, tzn. coś takiego:

 o
oxo
 o

gdzie "x" jest pixelem sprite który analizujemy a "o" punktami próbkowania, taką metodą przejeżdżamy całego sprite pixel po pixelu i generujemy maskę, ale działa to chyba wolniej niż ta metoda którą opisałeś (z generowaniem maski na podstawie przesunięcia obiektu).

5

jakikolwiek automat zaklada, ze kolor tla jest przezroczysty. przy tak malej ilosci kolorow nie wiem czy mozna sobie pozwolic na takie poswiecenie. poza tym pikselami z outline na ukos czy nie.

http://atari.pl/hsc/ad.php?i=1.

6 Ostatnio edytowany przez wieczor (2017-08-16 11:49:17)

Ale gdyby te 4 maski były generowane jedna z drugiej to rogi nie uciekną bo piksele na rogach zrobią się z powielenia już wygenerowanych tzn:

 Obiekt:

       x
      xxx
       x

 Maska 1 (z obiektu, przesunięcie w lewo)

      oo
     oooo
      oo

 Maska 2 (z maski 1, przesunięcie w prawo)

      ooo
     ooooo
      ooo

 Maska 3 (z maski 2, przesunięcie do góry)
      ooo
     ooooo
     ooooo
      ooo

 Maska 4 (z maski 3, przesunięcie w dół)
      ooo
     ooooo
     ooooo
     ooooo
      ooo

Zamaskowany obiekt
      ooo
     ooxoo
     oxxxo
     ooxoo
      ooo
The problem is not the problem; the problem is your attitude about the problem

7 Ostatnio edytowany przez Eagle (2017-08-16 21:27:03)

gorgh: też tak kiedyś robiłem ;)
fox: antic 4
seban: oczywiście szukam czegoś szybszego, ja znalazłem wcześniej między innymi coś takiego
http://www.imageprocessingplace.com/dow … m/alg.html
xxl: zobacz na takie klasyki jak Black Lamp czy Knigh Lore. Jakby one wyglądały bez outlajnów na maskach :)
wieczór: jutro odpisze, może ktoś coś jeszcze doda od siebie

8

Eagle napisał/a:

xxl: zobacz na takie klasyki jak Black Lamp czy Knigh Lore. Jakby one wyglądały bez outlajnów na maskach :)
wieczór: jutro odpisze, może ktoś coś jeszcze doda od siebie

No, KL to portował xxl, więc chyba nie musi tam patrzeć :P

Sikor umarł...

9

nie chodzi o zarzucenie pomyslu masek, chodzi o metode generowania masek - oczywiscie mozna stworzyc procke ktora wygeneruje maski do pozniejszego uzycia (w locie nie ma szans) ale nie bedzie uniwersalna. tak jak pisalem, w duszkach kolor 00 moze byc wykorzystywany a nie uzywany jako przezroczystosc i wtedy dupa blada.

maski wygenerowac powinien grafik :D


mozna tez skorzystac z uproszczenia (gdzies to widzialem):
ksztalt duszka:
0011011000 - jako indeks w tablicy 256 elementowej
na 216 pozycji znajduje sie wartosc:
1100000011 (maska): 195

http://atari.pl/hsc/ad.php?i=1.

10

Ja kiedyś napisałem toola, który generuje mi maski na podstawie sąsiedztwa Moore'a ( https://pl.wikipedia.org/wiki/S%C4%85si … 3%B3rkowe) ). Efekty użycia tego toola można zobaczyć w Undesigned oraz np. w Unglobal.
Jako parametr podaję tylko, na ile pól ma sięgać ramka (czy 1 pixel, czy więcej).
Jednakże, nie jest ona robiona w locie. Od biedy można taką prockę napisać, i wtedy w czasie initu taka ramka się wygeneruje.

11 Ostatnio edytowany przez seban (2017-08-17 17:11:30)

offtopic: ooo... to widzę Alex wymyślił koło od nowa ;) ... jego metoda okazała się "Sąsiedztwem von Neumanna" ;D no cóż, człowiek uczy się całe życie.

12

xxl napisał/a:

w duszkach kolor 00 moze byc wykorzystywany a nie uzywany jako przezroczystosc i wtedy dupa blada.

Ale to wtedy tylko kwestia użycia innej tablicy do wygenerowania maski, potem już na podstawie tej maski generujemy outline.
Sikor: przecież wiem ;)
bober: szybkie procki w locie nawet nie oczekuję i nawet nie potrzebuję. Ale spróbuję zrobić proof concept żeby sprawdzić ile czasu zajmie dla obiektu 3x3 znaki
seban: po to jest ten temat żeby nie wymyślać koła od nowa i co by google zindeksowało dla potomnych

Wracając do Black Lampa to dzięki outline aż tak bardzo nie rzuca się w oczy przeskakujący kolor inversu pomiędzy softwarowymi sprajtami. Pewnie tego nikt nawet nie zauważył :)