eGospodarka.pl
eGospodarka.pl poleca

Ilość wypowiedzi w tym wątku: 25

  • 1. Data: 2012-12-01 11:39:40
    Temat: 3d -> 2d
    Od: firr kenobi <p...@g...com>

    Ostatnio naszła mnie idea by podzialac troche w
    softwarowym rasteryzerze, tj zrobic sobie prosty,
    (prosty framework do 2d mam juz zrobiony, o tyle
    prosty rasteryzer z kulkami czy trojkatami to
    nie jest juz tak duzo roboty

    https://dl.dropbox.com/u/42887985/soft.zip

    potrzebuje jednakze wzorku na rrzutowanie
    wspolrzednych 3d na ekran 2d dla danego
    ustawienia kamery

    kamera jest u mnie opisana przez:

    float3 cameraPos = {0,0,0};
    float3 cameraDir = {0,0,-1};
    float3 cameraUp = {0,1,0};
    float3 cameraLeft = {1,0,0};

    jak zrzutowac

    float3 wierzcholek = {-20, -10, 200};

    na ekran dla danych ustawien kamery?


  • 2. Data: 2012-12-01 12:10:26
    Temat: Re: 3d -> 2d
    Od: firr kenobi <p...@g...com>

    W dniu sobota, 1 grudnia 2012 11:39:40 UTC+1 użytkownik firr kenobi napisał:
    > Ostatnio naszła mnie idea by podzialac troche w
    >
    > softwarowym rasteryzerze, tj zrobic sobie prosty,
    >
    > (prosty framework do 2d mam juz zrobiony, o tyle
    >
    > prosty rasteryzer z kulkami czy trojkatami to
    >
    > nie jest juz tak duzo roboty
    >
    >
    >
    > https://dl.dropbox.com/u/42887985/soft.zip
    >
    >
    >
    > potrzebuje jednakze wzorku na rrzutowanie
    >
    > wspolrzednych 3d na ekran 2d dla danego
    >
    > ustawienia kamery
    >
    >
    >
    > kamera jest u mnie opisana przez:
    >
    >
    >
    > float3 cameraPos = {0,0,0};
    >
    > float3 cameraDir = {0,0,-1};
    >
    > float3 cameraUp = {0,1,0};
    >
    > float3 cameraLeft = {1,0,0};
    >
    >
    >
    > jak zrzutowac
    >
    >
    >
    > float3 wierzcholek = {-20, -10, 200};
    >
    >
    >
    > na ekran dla danych ustawien kamery?

    ok, nie zastanowilem sie i wydawalo mi sie
    to trudniejsze niz jest - wystarczy chyba odjac wierzcholek od cameraPos po czym
    zrzutowac na cameraUp i cameraLeft

    9jestem niby dobrej mysli co do takiej
    softowej rasteryzacji ale z prymitywami
    jest troche (tj duzo) dlubaniny, np
    ja rysuje kulki (tj lito wypelnione
    okregi takim algorytmem

    void DrawFillCircle(int x1, int y1, int radius, unsigned color)
    {


    int x = 0; //0
    int y = radius; //1
    int d1 = 3 - (2 * radius);

    do
    {

    if (d1 < 0) d1 += (x<<2) + 6;
    else d1 += ((x-(y--))<<2) + 10;

    drawPozioma(y1+x, x1-y, x1+y, color);
    drawPozioma(y1-x, x1-y, x1+y, color);
    drawPozioma(y1+y, x1-x, x1+x, color);
    drawPozioma(y1-y, x1-x, x1+x, color);
    x++;

    }
    while(x<y);

    }

    niestety dla malych promieni (i to nie takich malych <10 ) kulki wychodza brzydko i
    tak samo
    brzydko wychodzą zmiany ich rozmiaru (nie ma
    tu zadnego antyaliasingu ) czy ktos zma moze
    szybki algorytm na ladniejsze kulki ?


  • 3. Data: 2012-12-01 13:27:19
    Temat: Re: 3d -> 2d
    Od: Michoo <m...@v...pl>

    On 01.12.2012 12:10, firr kenobi wrote:
    >
    > ok, nie zastanowilem sie i wydawalo mi sie
    > to trudniejsze niz jest - wystarczy chyba odjac wierzcholek od cameraPos po czym
    zrzutowac na cameraUp i cameraLeft

    Zobacz "the OpenGL graphics system: a specification" Jest cały rozdział
    o transformacji współrzędnych.

    > szybki algorytm na ladniejsze kulki ?

    O tym jak działa wypełnianie też jest.


    --
    Pozdrawiam
    Michoo


  • 4. Data: 2012-12-01 17:53:00
    Temat: Re: 3d -> 2d
    Od: firr kenobi <p...@g...com>

    >
    > brzydko wychodzą zmiany ich rozmiaru (nie ma
    > tu zadnego antyaliasingu ) czy ktos zma moze
    > szybki algorytm na ladniejsze kulki ?

    co ciekawe, to ma calkiem duza wydajnosc,
    potrafi uciagnac u mnie (na starym jednordzeniaku) przy w miare rozsadnej
    plynnosci 100k kulek :O - to jest mz duzo

    (ale bez depthbufora, z tym mocno zmuli
    tak samo na trojkatach na pewno mocno zmuli)


  • 5. Data: 2012-12-01 18:25:41
    Temat: Re: 3d -> 2d
    Od: bartekltg <b...@g...com>

    W dniu 2012-12-01 11:39, firr kenobi pisze:
    > Ostatnio naszła mnie idea by podzialac troche w
    > softwarowym rasteryzerze, tj zrobic sobie prosty,
    > (prosty framework do 2d mam juz zrobiony, o tyle
    > prosty rasteryzer z kulkami czy trojkatami to
    > nie jest juz tak duzo roboty


    Parser mi się wyłożył. Nie zamknąłeś nawiasu, nie
    kontynuowałeś myśli sprzed nawiasu. Wdałeś się
    w dygresję i zapomniałeś napisać, o co chodzi.
    ...zrobić sobie prosty _co_?

    Czytaj posty przed wysłaniem.

    > potrzebuje jednakze wzorku na rrzutowanie
    > wspolrzednych 3d na ekran 2d dla danego
    > ustawienia kamery
    >
    > kamera jest u mnie opisana przez:

    > float3 cameraPos = {0,0,0};
    > float3 cameraDir = {0,0,-1};
    > float3 cameraUp = {0,1,0};
    > float3 cameraLeft = {1,0,0};


    A co znaczą te punkty?
    Rozumiem, że pos to położenie środka (wyróżnionego
    punktu), dir to kierunek patrzenia, up i left to
    ścianki kamery.

    {dir, up, left} są wzajemnie prostopadłe.
    > jak zrzutowac
    >
    > float3 wierzcholek = {-20, -10, 200};
    >
    > na ekran dla danych ustawien kamery?


    No to nic prostszego.
    Zakładam, że wektory są stojące. ' to transpozycja, * mnożenie.

    {dir, up, left} są prostopadłe i odpowiednio wyskalowane.

    X - punkt do obróbki.

    X2 = X - Pos.

    Cle = (Left')*X2 (czyli po ludzku, dostajemy liczbę w wyniku
    dodania przemnożonych współrzędnych
    left.x * X2.x + left.y * X2.y +left.z * X2.z)

    Cup = (Up')*X2

    Dodatkowo, jeśli chcesz wiedzieć, czy punkt nie jest czasem
    za kamerą, liczysz Cdi = (Dir')*X2. Jeśli jest dodatni, jest
    przed kamerą, jeśli ujemny, za. Jeśli ==0, to punkt jest na
    powierzchni kamery.

    Można to zapisać macierzowo

    [Cle;Cup; Cdi] = [left'; up'; dir] * (X-Pos)

    Macierz ze środka składa się z wektorów leżących (obróconych)
    jeden na drugim.

    Jeśli zamiast wektorów w 3D użyjesz sztuczki z dodatkowym wymiarem,
    zawsze równym 1, czyli
    X = {x; y; z; 1}

    to możesz stworzyć jedną macierz rzutowania na kamerę:
    M = [left', 0; up', 0; dir, 0; 0,0,0,1] *
    * [ 1,0,0,-pos_x; 0,1,0,-pos_y; 0,0,1,-pos_z; 0,0,0,1 ]

    A taka operacja ma najprawdopodobniej wsparcie sprzętowe.
    Chociaż pierwsza wersja nie wykonuje niepotrzebnych obliczeń,
    nie wiem, którą się obecnie używa.

    pzdr
    bartekltg





  • 6. Data: 2012-12-01 18:43:22
    Temat: Re: 3d -> 2d
    Od: bartekltg <b...@g...com>

    W dniu 2012-12-01 18:25, bartekltg pisze:
    > W dniu 2012-12-01 11:39, firr kenobi pisze:
    >> Ostatnio naszła mnie idea by podzialac troche w
    >> softwarowym rasteryzerze, tj zrobic sobie prosty,
    >> (prosty framework do 2d mam juz zrobiony, o tyle
    >> prosty rasteryzer z kulkami czy trojkatami to
    >> nie jest juz tak duzo roboty
    >
    >
    > Parser mi się wyłożył. Nie zamknąłeś nawiasu, nie
    > kontynuowałeś myśli sprzed nawiasu. Wdałeś się
    > w dygresję i zapomniałeś napisać, o co chodzi.
    > ...zrobić sobie prosty _co_?
    >
    > Czytaj posty przed wysłaniem.
    >
    >> potrzebuje jednakze wzorku na rrzutowanie
    >> wspolrzednych 3d na ekran 2d dla danego
    >> ustawienia kamery
    >>
    >> kamera jest u mnie opisana przez:
    >
    >> float3 cameraPos = {0,0,0};
    >> float3 cameraDir = {0,0,-1};
    >> float3 cameraUp = {0,1,0};
    >> float3 cameraLeft = {1,0,0};
    >
    >
    > A co znaczą te punkty?
    > Rozumiem, że pos to położenie środka (wyróżnionego
    > punktu), dir to kierunek patrzenia, up i left to
    > ścianki kamery.
    >
    > {dir, up, left} są wzajemnie prostopadłe.
    > > jak zrzutowac
    > >
    > > float3 wierzcholek = {-20, -10, 200};
    > >
    > > na ekran dla danych ustawien kamery?
    >
    >
    > No to nic prostszego.
    > Zakładam, że wektory są stojące. ' to transpozycja, * mnożenie.
    >
    > {dir, up, left} są prostopadłe i odpowiednio wyskalowane.
    >
    > X - punkt do obróbki.
    >
    > X2 = X - Pos.
    >
    > Cle = (Left')*X2 (czyli po ludzku, dostajemy liczbę w wyniku
    > dodania przemnożonych współrzędnych
    > left.x * X2.x + left.y * X2.y +left.z * X2.z)
    >
    > Cup = (Up')*X2
    >
    > Dodatkowo, jeśli chcesz wiedzieć, czy punkt nie jest czasem
    > za kamerą, liczysz Cdi = (Dir')*X2. Jeśli jest dodatni, jest
    > przed kamerą, jeśli ujemny, za. Jeśli ==0, to punkt jest na
    > powierzchni kamery.
    >
    > Można to zapisać macierzowo
    >
    > [Cle;Cup; Cdi] = [left'; up'; dir] * (X-Pos)
    >
    > Macierz ze środka składa się z wektorów leżących (obróconych)
    > jeden na drugim.
    >
    > Jeśli zamiast wektorów w 3D użyjesz sztuczki z dodatkowym wymiarem,
    > zawsze równym 1, czyli
    > X = {x; y; z; 1}
    >
    > to możesz stworzyć jedną macierz rzutowania na kamerę:
    > M = [left', 0; up', 0; dir, 0; 0,0,0,1] *
    > * [ 1,0,0,-pos_x; 0,1,0,-pos_y; 0,0,1,-pos_z; 0,0,0,1 ]
    >
    > A taka operacja ma najprawdopodobniej wsparcie sprzętowe.
    > Chociaż pierwsza wersja nie wykonuje niepotrzebnych obliczeń,
    > nie wiem, którą się obecnie używa.


    A, żeby nie było nieporozumień, to jest rzut stereoskopowy.
    Taki jak w starym X-Com;)

    Założyłem, że o to chodzi, bo dla normalnej kamery
    potrzebujesz jeszcze jednego punkty definiującego kamerę.

    pzdr
    bartekltg






  • 7. Data: 2012-12-01 18:44:45
    Temat: Re: 3d -> 2d
    Od: bartekltg <b...@g...com>

    W dniu 2012-12-01 18:25, bartekltg pisze:
    > W dniu 2012-12-01 11:39, firr kenobi pisze:
    >> Ostatnio naszła mnie idea by podzialac troche w
    >> softwarowym rasteryzerze, tj zrobic sobie prosty,
    >> (prosty framework do 2d mam juz zrobiony, o tyle
    >> prosty rasteryzer z kulkami czy trojkatami to
    >> nie jest juz tak duzo roboty
    >
    >
    > Parser mi się wyłożył. Nie zamknąłeś nawiasu, nie
    > kontynuowałeś myśli sprzed nawiasu. Wdałeś się
    > w dygresję i zapomniałeś napisać, o co chodzi.
    > ...zrobić sobie prosty _co_?
    >
    > Czytaj posty przed wysłaniem.
    >
    >> potrzebuje jednakze wzorku na rrzutowanie
    >> wspolrzednych 3d na ekran 2d dla danego
    >> ustawienia kamery
    >>
    >> kamera jest u mnie opisana przez:
    >
    >> float3 cameraPos = {0,0,0};
    >> float3 cameraDir = {0,0,-1};
    >> float3 cameraUp = {0,1,0};
    >> float3 cameraLeft = {1,0,0};
    >
    >
    > A co znaczą te punkty?
    > Rozumiem, że pos to położenie środka (wyróżnionego
    > punktu), dir to kierunek patrzenia, up i left to
    > ścianki kamery.
    >
    > {dir, up, left} są wzajemnie prostopadłe.
    > > jak zrzutowac
    > >
    > > float3 wierzcholek = {-20, -10, 200};
    > >
    > > na ekran dla danych ustawien kamery?
    >
    >
    > No to nic prostszego.
    > Zakładam, że wektory są stojące. ' to transpozycja, * mnożenie.
    >
    > {dir, up, left} są prostopadłe i odpowiednio wyskalowane.
    >
    > X - punkt do obróbki.
    >
    > X2 = X - Pos.
    >
    > Cle = (Left')*X2 (czyli po ludzku, dostajemy liczbę w wyniku
    > dodania przemnożonych współrzędnych
    > left.x * X2.x + left.y * X2.y +left.z * X2.z)
    >
    > Cup = (Up')*X2
    >
    > Dodatkowo, jeśli chcesz wiedzieć, czy punkt nie jest czasem
    > za kamerą, liczysz Cdi = (Dir')*X2. Jeśli jest dodatni, jest
    > przed kamerą, jeśli ujemny, za. Jeśli ==0, to punkt jest na
    > powierzchni kamery.
    >
    > Można to zapisać macierzowo
    >
    > [Cle;Cup; Cdi] = [left'; up'; dir] * (X-Pos)
    >
    > Macierz ze środka składa się z wektorów leżących (obróconych)
    > jeden na drugim.
    >
    > Jeśli zamiast wektorów w 3D użyjesz sztuczki z dodatkowym wymiarem,
    > zawsze równym 1, czyli
    > X = {x; y; z; 1}
    >
    > to możesz stworzyć jedną macierz rzutowania na kamerę:
    > M = [left', 0; up', 0; dir, 0; 0,0,0,1] *
    > * [ 1,0,0,-pos_x; 0,1,0,-pos_y; 0,0,1,-pos_z; 0,0,0,1 ]
    >
    > A taka operacja ma najprawdopodobniej wsparcie sprzętowe.
    > Chociaż pierwsza wersja nie wykonuje niepotrzebnych obliczeń,
    > nie wiem, którą się obecnie używa.


    A, żeby nie było nieporozumień, to jest rzut izometryczny.
    Taki jak w starym X-Com;)

    Założyłem, że o to chodzi, bo dla normalnej kamery
    potrzebujesz jeszcze jednego punkty definiującego kamerę.

    pzdr
    bartekltg



  • 8. Data: 2012-12-01 19:53:27
    Temat: Re: 3d -> 2d
    Od: firr kenobi <p...@g...com>

    W dniu sobota, 1 grudnia 2012 18:25:41 UTC+1 użytkownik bartekltg napisał:
    > W dniu 2012-12-01 11:39, firr kenobi pisze:
    >
    > > Ostatnio naszła mnie idea by podzialac troche w
    >
    > > softwarowym rasteryzerze, tj zrobic sobie prosty,
    >
    > > (prosty framework do 2d mam juz zrobiony, o tyle
    >
    > > prosty rasteryzer z kulkami czy trojkatami to
    >
    > > nie jest juz tak duzo roboty
    >
    >
    >
    >
    >
    > Parser mi się wyłożył. Nie zamknąłeś nawiasu, nie
    >
    > kontynuowałeś myśli sprzed nawiasu. Wdałeś się
    >
    > w dygresję i zapomniałeś napisać, o co chodzi.
    >
    > ...zrobić sobie prosty _co_?
    >
    >
    >
    > Czytaj posty przed wysłaniem.
    >
    >
    >
    > > potrzebuje jednakze wzorku na rrzutowanie
    >
    > > wspolrzednych 3d na ekran 2d dla danego
    >
    > > ustawienia kamery
    >
    > >
    >
    > > kamera jest u mnie opisana przez:
    >
    >
    >
    > > float3 cameraPos = {0,0,0};
    >
    > > float3 cameraDir = {0,0,-1};
    >
    > > float3 cameraUp = {0,1,0};
    >
    > > float3 cameraLeft = {1,0,0};
    >
    >
    >
    >
    >
    > A co znaczą te punkty?
    >
    > Rozumiem, że pos to położenie środka (wyróżnionego
    >
    > punktu), dir to kierunek patrzenia, up i left to
    >
    > ścianki kamery.
    >
    >
    >
    > {dir, up, left} są wzajemnie prostopadłe.
    >
    > > jak zrzutowac
    >
    > >
    >
    > > float3 wierzcholek = {-20, -10, 200};
    >
    > >
    >
    > > na ekran dla danych ustawien kamery?
    >
    >
    >
    >
    >
    > No to nic prostszego.
    >
    > Zakładam, że wektory są stojące. ' to transpozycja, * mnożenie.
    >
    >
    >
    > {dir, up, left} są prostopadłe i odpowiednio wyskalowane.
    >
    >
    >
    > X - punkt do obróbki.
    >
    >
    >
    > X2 = X - Pos.
    >
    >
    >
    > Cle = (Left')*X2 (czyli po ludzku, dostajemy liczbę w wyniku
    >
    > dodania przemnożonych współrzędnych
    >
    > left.x * X2.x + left.y * X2.y +left.z * X2.z)
    >
    >
    >
    > Cup = (Up')*X2
    >
    >
    >
    > Dodatkowo, jeśli chcesz wiedzieć, czy punkt nie jest czasem
    >
    > za kamerą, liczysz Cdi = (Dir')*X2. Jeśli jest dodatni, jest
    >
    > przed kamerą, jeśli ujemny, za. Jeśli ==0, to punkt jest na
    >
    > powierzchni kamery.
    >
    >
    >
    > Można to zapisać macierzowo
    >
    >
    >
    > [Cle;Cup; Cdi] = [left'; up'; dir] * (X-Pos)
    >
    >
    >
    > Macierz ze środka składa się z wektorów leżących (obróconych)
    >
    > jeden na drugim.
    >
    >
    >
    > Jeśli zamiast wektorów w 3D użyjesz sztuczki z dodatkowym wymiarem,
    >
    > zawsze równym 1, czyli
    >
    > X = {x; y; z; 1}
    >
    >
    >
    > to możesz stworzyć jedną macierz rzutowania na kamerę:
    >
    > M = [left', 0; up', 0; dir, 0; 0,0,0,1] *
    >
    > * [ 1,0,0,-pos_x; 0,1,0,-pos_y; 0,0,1,-pos_z; 0,0,0,1 ]
    >
    >
    >
    > A taka operacja ma najprawdopodobniej wsparcie sprzętowe.
    >
    > Chociaż pierwsza wersja nie wykonuje niepotrzebnych obliczeń,
    >
    > nie wiem, którą się obecnie używa.
    >

    prosty softwarowy rasteryzer, Co do wzorkow to nie zatsanowilem sie ze wystarcza
    iloczyny skalarne, szybko sie wyjasnilo. Ciagle troche dziwi mnie ze to uciga az
    100tys kulek (moze raczej kropek) na ramke

    https://dl.dropbox.com/u/42887985/soft.zip

    https://dl.dropbox.com/u/42887985/100kKulekSoftRast.
    jpg

    Jestem zadowolony, zobacze pozniej jak
    by szlo z trojkatami - softwarowe srodowisko
    jest wygodne, lubie opengla, ale co pixele to pixele


  • 9. Data: 2012-12-02 20:23:27
    Temat: Re: 3d -> 2d
    Od: firr kenobi <p...@g...com>

    W dniu sobota, 1 grudnia 2012 18:25:41 UTC+1 użytkownik bartekltg napisał:
    > W dniu 2012-12-01 11:39, firr kenobi pisze:
    >
    > > Ostatnio naszła mnie idea by podzialac troche w
    >
    > > softwarowym rasteryzerze, tj zrobic sobie prosty,
    >
    > > (prosty framework do 2d mam juz zrobiony, o tyle
    >
    > > prosty rasteryzer z kulkami czy trojkatami to
    >
    > > nie jest juz tak duzo roboty
    >
    >
    >
    >
    >
    > Parser mi się wyłożył. Nie zamknąłeś nawiasu, nie
    >
    > kontynuowałeś myśli sprzed nawiasu. Wdałeś się
    >
    > w dygresję i zapomniałeś napisać, o co chodzi.
    >
    > ...zrobić sobie prosty _co_?
    >
    >
    >
    > Czytaj posty przed wysłaniem.
    >
    >
    >
    > > potrzebuje jednakze wzorku na rrzutowanie
    >
    > > wspolrzednych 3d na ekran 2d dla danego
    >
    > > ustawienia kamery
    >
    > >
    >
    > > kamera jest u mnie opisana przez:
    >
    >
    >
    > > float3 cameraPos = {0,0,0};
    >
    > > float3 cameraDir = {0,0,-1};
    >
    > > float3 cameraUp = {0,1,0};
    >
    > > float3 cameraLeft = {1,0,0};
    >
    >
    >
    >
    >
    > A co znaczą te punkty?
    >
    > Rozumiem, że pos to położenie środka (wyróżnionego
    >
    > punktu), dir to kierunek patrzenia, up i left to
    >
    > ścianki kamery.
    >
    >
    >
    > {dir, up, left} są wzajemnie prostopadłe.
    >
    > > jak zrzutowac
    >
    > >
    >
    > > float3 wierzcholek = {-20, -10, 200};
    >
    > >
    >
    > > na ekran dla danych ustawien kamery?
    >
    >
    >
    >
    >
    > No to nic prostszego.
    >
    > Zakładam, że wektory są stojące. ' to transpozycja, * mnożenie.
    >
    >
    >
    > {dir, up, left} są prostopadłe i odpowiednio wyskalowane.
    >
    >
    >
    > X - punkt do obróbki.
    >
    >
    >
    > X2 = X - Pos.
    >
    >
    >
    > Cle = (Left')*X2 (czyli po ludzku, dostajemy liczbę w wyniku
    >
    > dodania przemnożonych współrzędnych
    >
    > left.x * X2.x + left.y * X2.y +left.z * X2.z)
    >
    >
    >
    > Cup = (Up')*X2
    >
    >
    >
    > Dodatkowo, jeśli chcesz wiedzieć, czy punkt nie jest czasem
    >
    > za kamerą, liczysz Cdi = (Dir')*X2. Jeśli jest dodatni, jest
    >
    > przed kamerą, jeśli ujemny, za. Jeśli ==0, to punkt jest na
    >
    > powierzchni kamery.
    >
    >
    >
    > Można to zapisać macierzowo
    >
    >
    >
    > [Cle;Cup; Cdi] = [left'; up'; dir] * (X-Pos)
    >
    >
    >
    > Macierz ze środka składa się z wektorów leżących (obróconych)
    >
    > jeden na drugim.
    >
    >
    >
    > Jeśli zamiast wektorów w 3D użyjesz sztuczki z dodatkowym wymiarem,
    >
    > zawsze równym 1, czyli
    >
    > X = {x; y; z; 1}
    >
    >
    >
    > to możesz stworzyć jedną macierz rzutowania na kamerę:
    >
    > M = [left', 0; up', 0; dir, 0; 0,0,0,1] *
    >
    > * [ 1,0,0,-pos_x; 0,1,0,-pos_y; 0,0,1,-pos_z; 0,0,0,1 ]
    >
    >
    >
    > A taka operacja ma najprawdopodobniej wsparcie sprzętowe.
    >
    > Chociaż pierwsza wersja nie wykonuje niepotrzebnych obliczeń,
    >
    > nie wiem, którą się obecnie używa.
    >
    >

    Bardziej przydalaby mi sie inna sprawa -

    nie kojarzysz moze tych sztuczek z algorytmu
    bressenhama dla circle, tak jak tutaj


    void FillCircleWithDepth(int x1, int y1, float z, int radius, unsigned color)
    {


    int left = x1-radius-1;
    int right = x1+radius+1;
    int up = y1-radius-1;
    int down = y1+radius+1;


    if(!_rectanglesOverlap(0, 0, CLIENT_X, CLIENT_Y,
    left, up, right, down ) )
    return;


    int x = 0; //0
    int y = radius; //1
    int d1 = 3 - (2 * radius);

    do
    {
    if (d1 < 0) d1 += (x<<2) + 6;
    else d1 += ((x-(y--))<<2) + 10;

    drawScanlineWithDepth(y1+x, x1-y, x1+y, z, color);
    drawScanlineWithDepth(y1-x, x1-y, x1+y, z, color);
    drawScanlineWithDepth(y1+y, x1-x, x1+x, z, color);
    drawScanlineWithDepth(y1-y, x1-x, x1+x, z, color);
    x++;
    }
    while(x<y);
    }

    tyle ze tutaj wyzej updatuje depthbuffor plaską
    wartoscia z wzieta z z dla srodka kulki, potrzebowalbym poprawnej wersji tego
    algorytmu nie dla 'circle' tylko dla sphere tak zeby
    moc w przebiegu dostawac poprawne wartosci z by
    moc poprawnie zapisywac do depthtbufora

    bo jak robie plaskie to z podspodu przebijaja jakies polksiezyce (co mozna tu
    zobaczyc w
    programiku depthe ->

    https://dl.dropbox.com/u/42887985/soft.zip


  • 10. Data: 2012-12-03 00:32:27
    Temat: Re: 3d -> 2d
    Od: bartekltg <b...@g...com>

    W dniu 2012-12-02 20:23, firr kenobi pisze:
    > tyle ze tutaj wyzej updatuje depthbuffor plaską
    > wartoscia z wzieta z z dla srodka kulki, potrzebowalbym poprawnej wersji tego
    algorytmu nie dla 'circle' tylko dla sphere tak zeby
    > moc w przebiegu dostawac poprawne wartosci z by
    > moc poprawnie zapisywac do depthtbufora
    >
    > bo jak robie plaskie to z podspodu przebijaja jakies polksiezyce (co mozna tu
    zobaczyc w
    > programiku depthe ->

    Ale czekaj, co chcesz zrobić. Narysować linię (rzut linii z 3D
    na kamerę) czy powierzchnię?

    Michoo dobrze doradził, poczytaj dokumentacje do openGL.

    pzdr
    bartekltg

strony : [ 1 ] . 2 . 3


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: