eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › rasteryzacja malych kulek
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2013-07-15 16:54:02
    Temat: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    chcialbym napisac jakas w miare poprawną
    rasteryzacje malych kulek - problem z malymi
    kólkami rysowanymi bressenhamem polega na tym
    ze male kolka rysowane bressenhamem wygladają
    tak

    #

    albo tak

    #
    ###
    #

    jak sie ma cala hmare tekich kolek obracacnych w 3d
    to to nie wyglada wtedy za dobrze

    w sumie wieksze kolka dla srednicy d < kilkanascie
    tez nie wygladaja same z siebie za dobrze - potrzebny
    jest blending brzegów by to jakos wygladało

    jak to npisac ?

    1.

    dla kolka o srednicy 1 mozna by prawdopodobnie
    obliczyc lub stablicowac jasnosci czterech pixeli w
    zaleznosci od ulamkowego przesuniecie - na podobnej zasadzie jak z wu-pixel [czyli
    (1-fx)*(1-fy), (fx)*(1-fy), (1-fx)*(fy), (fx)*(fy) ] tylko ze dla kolka wzorek na te
    czesci bylby nieco inny - JAKI ?

    czy lepiej to tablicowac czy machnac jakis wzorek,
    jaki ?

    2. co zrobic dla d < 1 ? pomnozyc np wartosci
    te z przypadku d==1 przez (d*d) - nie byloby
    do konca scisle

    3. co zrobic w przypadku kulek wiekszych niz 1
    albo co zrobic w przypadku wogole sporych kulek
    gdzie mozna sie zajmowac tylko belndingiem brzegów

    W sumie dla malych kulek mozna pokusic sie o zwykle rasteryzowanie powiekszonych np 4
    razy w x/y
    kulek w pomocniczym buforze po czym downsampling
    bloku 4x4 czarne/biale piksele do stopnia szarosci
    ale to by troche muliło, moze jakies inne lepsze
    rozwiazania?









  • 2. Data: 2013-07-16 07:47:23
    Temat: Re: rasteryzacja malych kulek
    Od: bartekltg <b...@g...com>

    W dniu 2013-07-15 16:54, firr pisze:
    > chcialbym napisac jakas w miare poprawną
    > rasteryzacje malych kulek - problem z malymi
    > kólkami rysowanymi bressenhamem polega na tym
    > ze male kolka rysowane bressenhamem wygladają
    > tak
    >
    > #

    A jak inaczej ma wyglądać jednopikselowa kulka?

    >
    > albo tak
    >
    > #
    > ###
    > #



    >
    > jak sie ma cala hmare tekich kolek obracacnych w 3d
    > to to nie wyglada wtedy za dobrze
    >
    > w sumie wieksze kolka dla srednicy d < kilkanascie
    > tez nie wygladaja same z siebie za dobrze - potrzebny
    > jest blending brzegów by to jakos wygladało

    https://www.dropbox.com/s/sy9qmtxqx02eoex/kulki.png

    U mnie też brzydko wyglądają:(


    Za to jak jest ich 2500 mają >70fps,
    5000 kulek (zderzających się*) i 30fps.

    SFML jest całkiem przyjemne!
    Bawię się od paru h :)


    *) oczywiście nie n^2, ale też nie porządna miotła,
    kulki sortuję po jednej współrzędnej.

    >
    > jak to npisac ?

    Ja dopisałem dwie linijki
    sf::ContextSettings settings;
    settings.antialiasingLevel = 8;
    sf::RenderWindow window(sf::VideoMode(W, H), "SFML works!",
    sf::Style::Default, settings);//ta już była

    https://www.dropbox.com/s/x0ugtvf7hd72q8l/kulki_AA.p
    ng



    > 1.
    >
    > dla kolka o srednicy 1 mozna by prawdopodobnie
    > obliczyc lub stablicowac jasnosci czterech pixeli w
    > zaleznosci od ulamkowego przesuniecie - na podobnej zasadzie jak z wu-pixel [czyli
    (1-fx)*(1-fy), (fx)*(1-fy), (1-fx)*(fy), (fx)*(fy) ] tylko ze dla kolka wzorek na te
    czesci bylby nieco inny - JAKI ?
    >
    > czy lepiej to tablicowac czy machnac jakis wzorek,

    Wzorek.

    > jaki ?

    proporcjonalnie do położenia.

    > 2. co zrobic dla d < 1 ? pomnozyc np wartosci
    > te z przypadku d==1 przez (d*d) - nie byloby
    > do konca scisle

    Zwiększ rozdzielczość do takiej, aby nikt nie gapił
    się na pojedyncze piksele;-)


    > 3. co zrobic w przypadku kulek wiekszych niz 1
    > albo co zrobic w przypadku wogole sporych kulek
    > gdzie mozna sie zajmowac tylko belndingiem brzegów


    Użyj bressenhamanopodobnych algorytmów, ale
    zamiast decydować, który piksel kolorować,
    podziel zaciemnienie proporcjonalnie do odległości
    (jeśli wyliczona wspolrzedna pokrywa się z pikselem,
    jest czarny, jeśli w połowie pomiedzy dwoma - szare)
    w przypadku okręgu (dla pełnego koła oczywiście tylko zewnatrzny
    jest cieniowany)


    pzdr
    bartekltg



  • 3. Data: 2013-07-16 08:47:54
    Temat: Re: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    W dniu wtorek, 16 lipca 2013 07:47:23 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2013-07-15 16:54, firr pisze:
    > > chcialbym napisac jakas w miare poprawną
    > > rasteryzacje malych kulek - problem z malymi
    > > kólkami rysowanymi bressenhamem polega na tym
    > > ze male kolka rysowane bressenhamem wygladają
    > > tak
    > >
    > > #
    >
    >
    >
    > A jak inaczej ma wyglądać jednopikselowa kulka?
    >
    >

    no na przyklad

    ^"
    '%



  • 4. Data: 2013-07-16 09:16:25
    Temat: Re: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    W dniu wtorek, 16 lipca 2013 07:47:23 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2013-07-15 16:54, firr pisze:
    >
    > > chcialbym napisac jakas w miare poprawną
    >
    > > rasteryzacje malych kulek - problem z malymi
    >
    > > kólkami rysowanymi bressenhamem polega na tym
    >
    > > ze male kolka rysowane bressenhamem wygladają
    >
    > > tak
    >
    > >
    >
    > > #
    >
    >
    >
    > A jak inaczej ma wyglądać jednopikselowa kulka?
    >
    >
    >
    > >
    >
    > > albo tak
    >
    > >
    >
    > > #
    >
    > > ###
    >
    > > #
    >
    >
    >
    >
    >
    >
    >
    > >
    >
    > > jak sie ma cala hmare tekich kolek obracacnych w 3d
    >
    > > to to nie wyglada wtedy za dobrze
    >
    > >
    >
    > > w sumie wieksze kolka dla srednicy d < kilkanascie
    >
    > > tez nie wygladaja same z siebie za dobrze - potrzebny
    >
    > > jest blending brzegów by to jakos wygladało
    >
    >
    >
    > https://www.dropbox.com/s/sy9qmtxqx02eoex/kulki.png
    >
    >
    >
    > U mnie też brzydko wyglądają:(
    >
    >
    >

    no nieduze kulki bez blendingu nie sa calkiem okragle a dla malych kulek bez
    blendingu jest
    raptowny skok

    https://dl.dropboxusercontent.com/u/42887985/100kKul
    ekSoftRast.jpg

    i robi sie cos w rodzaju mgły/ siatki

    wlasnie chcialbym to ew poprawic (jeszcze
    wieksze problemy sa chyba z malymi trojkatami
    gdzie np daleko oddalona szachownica bardzo
    miga, pelza po niej masa artefaktów nie wiem
    czy jest jakis dobry sposob napoprawienie tego,
    moze wlasnie blendingiem - zalezaloby mi na tym


    >
    >
    > Za to jak jest ich 2500 mają >70fps,
    >
    > 5000 kulek (zderzających się*) i 30fps.
    >
    >
    >
    > SFML jest całkiem przyjemne!
    >
    > Bawię się od paru h :)
    >
    >
    >
    >
    >
    > *) oczywiście nie n^2, ale też nie porządna miotła,
    >
    > kulki sortuję po jednej współrzędnej.
    >
    >
    >
    > >
    >
    > > jak to npisac ?
    >
    >
    >
    > Ja dopisałem dwie linijki
    >
    > sf::ContextSettings settings;
    >
    > settings.antialiasingLevel = 8;
    >
    > sf::RenderWindow window(sf::VideoMode(W, H), "SFML works!",
    >
    > sf::Style::Default, settings);//ta już była
    >
    >
    >
    > https://www.dropbox.com/s/x0ugtvf7hd72q8l/kulki_AA.p
    ng
    >
    >
    >
    >
    >
    >
    >
    > > 1.
    >
    > >
    >
    > > dla kolka o srednicy 1 mozna by prawdopodobnie
    >
    > > obliczyc lub stablicowac jasnosci czterech pixeli w
    >
    > > zaleznosci od ulamkowego przesuniecie - na podobnej zasadzie jak z wu-pixel
    [czyli (1-fx)*(1-fy), (fx)*(1-fy), (1-fx)*(fy), (fx)*(fy) ] tylko ze dla kolka wzorek
    na te czesci bylby nieco inny - JAKI ?
    >
    > >
    >
    > > czy lepiej to tablicowac czy machnac jakis wzorek,
    >
    >
    >
    > Wzorek.
    >
    >
    >
    > > jaki ?
    >
    >
    >
    > proporcjonalnie do położenia.
    >

    ale jaki konkretnie ;/ dla kwadratu przsy przesuieciu +0.1 wzgledem 0.5, 0.5 jest
    0.6, 0.4 pozniej 0.7, 0.3 itd a dla kulki ? musialby byc jakis
    wzorek na objetosc (pole powierzchni) kulowej czapki,


    >
    >
    > > 2. co zrobic dla d < 1 ? pomnozyc np wartosci
    >
    > > te z przypadku d==1 przez (d*d) - nie byloby
    >
    > > do konca scisle
    >
    >
    >
    > Zwiększ rozdzielczość do takiej, aby nikt nie gapił
    >
    > się na pojedyncze piksele;-)
    >
    >
    to by mulilo i nie konieczie musi wygladac za dobrze

    >
    >
    >
    > > 3. co zrobic w przypadku kulek wiekszych niz 1
    >
    > > albo co zrobic w przypadku wogole sporych kulek
    >
    > > gdzie mozna sie zajmowac tylko belndingiem brzegów
    >
    >
    >
    >
    >
    > Użyj bressenhamanopodobnych algorytmów, ale
    > zamiast decydować, który piksel kolorować,
    > podziel zaciemnienie proporcjonalnie do odległości
    > (jeśli wyliczona wspolrzedna pokrywa się z pikselem,
    > jest czarny, jeśli w połowie pomiedzy dwoma - szare)
    > w przypadku okręgu (dla pełnego koła oczywiście tylko zewnatrzny
    > jest cieniowany)
    >
    wiadomo ze ogolnie np bressenhamo podobnych ;/
    ale pytanie/zagadnienie jest wlasnie jakich
    dokladnie


  • 5. Data: 2013-07-16 09:42:26
    Temat: Re: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    >
    > *) oczywiście nie n^2, ale też nie porządna miotła,
    > kulki sortuję po jednej współrzędnej.
    >
    >
    a w jakim kontenerze i jakim algorytmem ?
    jak pozniej wyglada petla na warunek
    ew testu kolizji ?


  • 6. Data: 2013-07-16 09:48:36
    Temat: Re: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    W dniu wtorek, 16 lipca 2013 08:47:54 UTC+2 użytkownik firr napisał:
    > W dniu wtorek, 16 lipca 2013 07:47:23 UTC+2 użytkownik bartekltg napisał:
    >
    > > W dniu 2013-07-15 16:54, firr pisze:
    >
    > > > chcialbym napisac jakas w miare poprawną
    >
    > > > rasteryzacje malych kulek - problem z malymi
    >
    > > > kólkami rysowanymi bressenhamem polega na tym
    >
    > > > ze male kolka rysowane bressenhamem wygladają
    >
    > > > tak
    >
    > > >
    >
    > > > #
    >
    > >
    >
    > >
    >
    > >
    >
    > > A jak inaczej ma wyglądać jednopikselowa kulka?
    >
    > >
    >
    > >
    >
    >
    >
    > no na przyklad
    >
    >
    >
    > ^"
    > '%

    dla kwadracika to by moglo byc np


    [ 40 % * 30 % ] [ 40 % * 70 % ]
    [ 60 % * 30 % ] [ 60 % * 70 % ]

    dla kulki to tez jest chyba mozliwe ale
    dla innych przesuniec - sa to nieco inne
    jasnosci ciekawe czy byloby widoczne
    golym okiem


  • 7. Data: 2013-07-16 10:19:07
    Temat: Re: rasteryzacja malych kulek
    Od: bartekltg <b...@g...com>

    W dniu 2013-07-16 09:42, firr pisze:
    >>
    >> *) oczywiście nie n^2, ale też nie porządna miotła,
    >> kulki sortuję po jednej współrzędnej.
    >>
    >>
    > a w jakim kontenerze i jakim algorytmem ?
    > jak pozniej wyglada petla na warunek
    > ew testu kolizji ?

    Algorytm to dużo powiedziane. Normalnie masz dwie
    zagnieżdżone pętle, sprawdzające każdy z każdym. Jeśli
    jednak kulki mam posortowane po jednej zmiennej,
    np x, to mogę sprawdzić, czy już nie odjechałem po x
    o 2r - wtedy na pewno już kolizji nie bedzie i mogę
    przerwać wewnętrzną pętlę.

    sort(kule.begin(),kule.end(),[](kulka&a,kulka&b){ret
    urn
    (a.pozycja.x<b.pozycja.x);});

    for (auto it=kule.begin();it!=kule.end();++it)
    {
    it->evolucja((clock.getElapsedTime()-t).asSeconds()*
    predkosc);

    for (auto itt=it+1; (itt!=kule.end()) && abs(itt->pozycja.x -
    it->pozycja.x)<=itt->r+it->r;++itt) //wbrew pozorom zakladamy stale r
    {
    it->kolizja(*itt);
    }
    }


    Klasa kilka ma metodę evolucja, pobierającą odstęp czasu i przesuwającą
    kulkę oraz kolizja, która wprost twierdzeniem pitagorasa sprzwdza,
    czy wystąpiła kolizja i ewentualnie podmienia prędkości.


    Miotła pewnie byłaby lepsza.

    Mięsko z kolizji:

    bool zaszla=false;
    if (dot(pozycja-druga.pozycja)<kw(r+druga.r))
    {
    zaszla=true;
    sf::Vector2< float > normalna = pozycja-druga.pozycja;
    normalna = normalna / sqrt(dot(normalna));

    float v_zbl = dot(normalna,predkosc) - dot(normalna,druga.predkosc);
    sf::Vector2f dv = normalna* v_zbl;
    if (v_zbl<0)
    {
    predkosc -= dv;
    druga.predkosc += dv;
    }
    }

    kw to kwadrat, dot to iloczyn skalarny (sam ze sobą dla
    jednego argumentu)

    pzdr
    bartekltg




  • 8. Data: 2013-07-16 10:46:53
    Temat: Re: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    W dniu wtorek, 16 lipca 2013 10:19:07 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2013-07-16 09:42, firr pisze:
    >
    > >>
    >
    > >> *) oczywiście nie n^2, ale też nie porządna miotła,
    >
    > >> kulki sortuję po jednej współrzędnej.
    >
    > >>
    >
    > >>
    >
    > > a w jakim kontenerze i jakim algorytmem ?
    >
    > > jak pozniej wyglada petla na warunek
    >
    > > ew testu kolizji ?
    >
    >
    >
    > Algorytm to dużo powiedziane. Normalnie masz dwie
    >
    > zagnieżdżone pętle, sprawdzające każdy z każdym. Jeśli
    >
    > jednak kulki mam posortowane po jednej zmiennej,
    >
    > np x, to mogę sprawdzić, czy już nie odjechałem po x
    >
    > o 2r - wtedy na pewno już kolizji nie bedzie i mogę
    >
    > przerwać wewnętrzną pętlę.
    >
    >
    >
    > sort(kule.begin(),kule.end(),[](kulka&a,kulka&b){ret
    urn
    >
    > (a.pozycja.x<b.pozycja.x);});
    >
    >
    >
    > for (auto it=kule.begin();it!=kule.end();++it)
    >
    > {
    >
    > it->evolucja((clock.getElapsedTime()-t).asSeconds()*
    predkosc);
    >
    >
    >
    > for (auto itt=it+1; (itt!=kule.end()) && abs(itt->pozycja.x -
    >
    > it->pozycja.x)<=itt->r+it->r;++itt) //wbrew pozorom zakladamy stale r
    >
    > {
    >
    > it->kolizja(*itt);
    >
    > }
    >
    > }
    >
    >

    ok, w sumie jest to zapewne b dobry sposob
    jesliby tylko wywalic globalne sortowanie,
    wlasciwie prawie staly koszt

    a miotła to co to takiego ??


  • 9. Data: 2013-07-16 11:53:26
    Temat: Re: rasteryzacja malych kulek
    Od: bartekltg <b...@g...com>

    W dniu 2013-07-16 10:46, firr pisze:

    > ok, w sumie jest to zapewne b dobry sposob
    > jesliby tylko wywalic globalne sortowanie,
    > wlasciwie prawie staly koszt

    Nie wywalisz, musisz sortować w każdym przebiegu.
    Sortowanie i tak jest szybsze niż 'każdy z każdym'

    >
    > a miotła to co to takiego ??

    Robisz sobie strukturkę, która trzyma posortowane
    po y kulki, ale tylko z pewnego przedzialo x-ów
    (szerokości 2r). Przechodzisz po posortowanych po x
    kulkach, dorzucasz do strukturki (sprawdzajkac kolizje)
    i wyrzucasz z niej, które już się zderzyć nie mogą.

    Zaimplementowałem na szybko na std::set<kulka*>
    Działa wolniej :] Za mało obiektów w interesujacym
    obszarze, by zyskać przewagę.

    pzdr
    bartekltg




  • 10. Data: 2013-07-16 12:14:46
    Temat: Re: rasteryzacja malych kulek
    Od: firr <p...@g...com>

    W dniu wtorek, 16 lipca 2013 11:53:26 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2013-07-16 10:46, firr pisze:
    >
    >
    >
    > > ok, w sumie jest to zapewne b dobry sposob
    >
    > > jesliby tylko wywalic globalne sortowanie,
    >
    > > wlasciwie prawie staly koszt
    >
    >
    >
    > Nie wywalisz, musisz sortować w każdym przebiegu.
    >
    > Sortowanie i tak jest szybsze niż 'każdy z każdym'
    >
    >
    >
    > >
    >
    > > a miotła to co to takiego ??
    >
    >
    >
    > Robisz sobie strukturkę, która trzyma posortowane
    >
    > po y kulki, ale tylko z pewnego przedzialo x-ów
    >
    > (szerokości 2r). Przechodzisz po posortowanych po x
    >
    > kulkach, dorzucasz do strukturki (sprawdzajkac kolizje)
    >
    > i wyrzucasz z niej, które już się zderzyć nie mogą.
    >
    >
    >
    > Zaimplementowałem na szybko na std::set<kulka*>
    >
    > Działa wolniej :] Za mało obiektów w interesujacym
    >
    > obszarze, by zyskać przewagę.
    >

    nie zrozumialem ale niewazne, ta opcja co
    mowilem z utrzymywaniem sortów (po x y z) jest b
    dobra (nic lepszego nie widze),

    chwilowo bardziej interesuja mnie --->
    kwestia recznych rasteryzacji z blendingiem
    bo to tez ciekawy temat a pracuje nad frameworkiem

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: