 |
Coders' city Nasza pasja to programowanie!
|
| Zobacz poprzedni temat :: Zobacz następny temat |
| Autor |
Wiadomość |
Glinka
Dołączył: 12 Paź 2009 Posty: 8 Skąd: ZDWola
|
Wysłany: Pon Sty 09, 2012 2:14 pm Temat postu: [OpenGL] Oświetlenie |
|
|
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!?
| Opis: |
|
 Pobierz |
| Nazwa pliku: |
664291.c |
| Wielkość pliku: |
4.19 KB |
| Pobierano: |
9 raz(y) |
|
|
| Powrót do góry |
|
 |
|
|
Furry
Dołączył: 05 Lut 2008 Posty: 765
|
Wysłany: Wto Sty 10, 2012 5:53 pm Temat postu: |
|
|
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 |
|
 |
Glinka
Dołączył: 12 Paź 2009 Posty: 8 Skąd: ZDWola
|
Wysłany: Czw Sty 12, 2012 8:43 pm Temat postu: |
|
|
Normalki, czyli?? o0
Sorry za "rozbijanie posta na kilka srvisów".. Przyzwyczajenie z innego forum :b
|
|
| Powrót do góry |
|
 |
Garf

Dołączył: 25 Maj 2005 Posty: 3348 Skąd: Rzeszów
|
Wysłany: Czw Sty 12, 2012 9:41 pm Temat postu: |
|
|
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 |
|
 |
Glinka
Dołączył: 12 Paź 2009 Posty: 8 Skąd: ZDWola
|
Wysłany: Czw Sty 12, 2012 11:08 pm Temat postu: |
|
|
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 |
|
 |
|
|
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
|