Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Skrócony regulamin

[OpenGL] Oświetlenie



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Biblioteki
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Glinka



Dołączył: 12 Paź 2009
Posty: 8
Skąd: ZDWola

PostWysłany: Pon Sty 09, 2012 2:14 pm      Temat postu: [OpenGL] Oświetlenie Odpowiedz z cytatem Pisownia

Witam.
Zacząłem uczyć się OpenGL-a (z książki "OpenGL i wprowadzenie do programowania gier"). Do kodu dostarczonego wraz z książką (rozdział o oświetleniu) dodałem do renderowania swoją sferą. Ładnie ją oświetla ale tylko połowę.. Druga połowa jest zupełnie czarna. Dlaczego?? o0

Kod z książki:
Treść posta przeniesiona przez moderatora do posta.

Kod sfery:
Treść posta przeniesiona przez moderatora do posta.
Kod:
void renderrr(float R_X, float R_Y, float R_Z, int wertical, int horizontal)
{
    float x, y, z;    // Położenie
    float angle_horizontal;    // Kąt do rysowania równych równoleżników
    float angle_vertical;    //
    float angle_HH;            //
    float angle_VV;            //
    float angle_VV2;        //
    int i, j;                // Do pętli for

    y    =R_Y;                                                    // Ustawiamy 'y' na promień RY
    angle_vertical   =(90.0  /(horizontal /2)) *(M_PI /180);    // Ustalamy miarę kąta potrzebnego do wyliczenia położenia 'x', 'y' i 'z'
    angle_horizontal =(360.0        /wertical) *(M_PI /180);    // Ustalamy o ile będziemy zwiększać 'angle' podczas szukania 'x' i 'z'

    glPushMatrix();
        glBegin(GL_TRIANGLE_STRIP);
            glColor3f( 0.0, 1, 0.0);
            glNormal3f(1.0f, 0.0f, 1.0f);
            for (i =0; i <horizontal; i++)
            {
                angle_VV =(M_PI /2) -(angle_vertical *i);            // Liczymy kąt dla górnych wierzchołków
                angle_VV2 =(M_PI /2) -(angle_vertical *(i +1));        // Liczymy kąt dla dolnych wierzchołków

                for (j =0; j <wertical +1; j ++)
                {
                    angle_HH =angle_horizontal *(j +1);        // Liczymy kąt do narysowania 'koła'
                    x = (float)(cos(angle_HH));                // Wyliczenie 'x' na podstawie powyższego kąta
                    z = (float)(sin(angle_HH));                // Wyliczenie 'y' na podstawie powyższego kąta

                    glVertex3f( x *(R_X *cos(angle_VV)), y *sin(angle_VV), z *(R_Z *cos(angle_VV)));
                    glVertex3f( x *(R_X *cos(angle_VV2)), y *sin(angle_VV2), z *(R_Z *cos(angle_VV2)));
                }
            }
        glEnd();
    glPopMatrix();
}


Treść posta przeniesiona przez moderatora do posta. Po co rozbijasz posta na kilka serwisów!?



664291.c
 Opis:

Pobierz
 Nazwa pliku:  664291.c
 Wielkość pliku:  4.19 KB
 Pobierano:  9 raz(y)

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Furry



Dołączył: 05 Lut 2008
Posty: 765

PostWysłany: Wto Sty 10, 2012 5:53 pm      Temat postu: Odpowiedz z cytatem Pisownia

z prostego powodu: normalke masz dla każdego trójkąta w tę samą stronę. Czyli po 1 stronie(tej ciemnej) normalki masz skierowane do środka sfery. Tak ogólnie to radzę normalki wyliczyć tak by były prostopadle do trójkąta.
_________________
Win (XP/Vista/7) | Linux Ubuntu
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
Glinka



Dołączył: 12 Paź 2009
Posty: 8
Skąd: ZDWola

PostWysłany: Czw Sty 12, 2012 8:43 pm      Temat postu: Odpowiedz z cytatem Pisownia

Normalki, czyli?? o0

Sorry za "rozbijanie posta na kilka srvisów".. Przyzwyczajenie z innego forum :b
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Garf



Dołączył: 25 Maj 2005
Posty: 3348
Skąd: Rzeszów

PostWysłany: Czw Sty 12, 2012 9:41 pm      Temat postu: Odpowiedz z cytatem Pisownia

Wektor prostopadły do powierzchni o długości 1. Inaczej zwany wektorem normalnym. Odsyłam do wyszukiwarki - na ten temat trochę znajdziesz.
_________________
Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś,
powodującego zależność emocjonalną od tego kogoś.
Na miarę siły owej zależności następuje proporcjonalnie:
utrata zdrowego rozsądku oraz zdolności do samodecydowania.
o. Paweł Gużyński OP
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Glinka



Dołączył: 12 Paź 2009
Posty: 8
Skąd: ZDWola

PostWysłany: Czw Sty 12, 2012 11:08 pm      Temat postu: Odpowiedz z cytatem Pisownia

Nie no wektor normalny już wiem co to tzn. czytałem o tym ale widzę że muszę do tego wrócić :)
Widzę że oprócz normalnego języka (książkowego) to jeszcze muszę się nauczyć języka żargonowego? :b
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Biblioteki Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 1.83243 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | VB4all | Tansze zakupy w Helionie |