Srodne teme
24.05.2003. OpenGL
13.12.2004. OpenGL sa .NET - om
17.07.2002. OpenGL 1.4
21.07.2003. random graph
18.01.2004. Tastatura i OpenGL
10.04.2004. opengl optimizacija
26.06.2004. Asembler i opengl
16.05.2006. Preslikavanje OpenGL-a u Javu
04.02.2005. OpenGL ili DirectX?
23.05.2005. Promjena smjera z ose(openGL)
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OpenGL polja cvorova

[es] :: 3D programiranje :: OpenGL polja cvorova

[ Pregleda: 2026 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

retard378
retard378
nema
srbija

Član broj: 191148
Poruke: 14
79.101.79.*



Profil

icon OpenGL polja cvorova19.02.2009. u 23:03 - pre 183 meseci
zanima me kako da iskoristim polja cvorova za definisanje vektora normala
problem je u tome sto jedan vertex moze imati vise vektora normala u zavisnosti na kom se mesh-u nalazi a ako koristim DrawElements on ce da radi jedan cvor jedna normala,jer za svaku koordinatu vezuje tacno jednu normalu....
unapred hvala
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
212.200.238.*

ICQ: 208550327


+14 Profil

icon Re: OpenGL polja cvorova02.03.2009. u 12:37 - pre 183 meseci
Citat:
vertex moze imati vise vektora normala u zavisnosti na kom se mesh-u nalazi


Verovatno si mislio 'u zavisnosti kojem poligonu pripada'...

Svaki vertex bi trebao da ima samo jednu normalu. Ako je vertex zajednicki za npr. N poligona, ti ces sabrati svih N normala ( svaki poligon ima jednu normalu ) i podeliti sa N svaku komponentu (x, y, z) dobijene sume i ako je potrebno normalizovati dobijenu normalu. To ti je konacna normala vertexa koji je zajednicki za vise poligona. Na ovaj nacin se dobija iluzija smooth povrsine.


Code:


for( i = 0; i < numVertices; i++ )
{
      vector3D normalSum;
      int numFaces; // broj poligona kojima je ovaj vertex zajednicki

      for(int j = 0; j < numFaces;j ++)
      {
             if( Faces[0] == i || Faces[1] == i || Faces[2] == i )  // Face je struktura sa indexima vertexa koji cine face
             {
                     Vector3D n = GetFaceNormal( j ) ; // koriscenjem vektorskog proizvoda dobices normalu ovog poligona ( postoje primeri na netu )
                     normalSum += n;
                     numFaces++;
              }
      }

      Vector3D finalNormal = normalSum/(float)numFaces;
      finalNormal = normalize(finalNormal);

      // sacuvaj normalu u neki niz
}



Postoji detaljniji kod na netu, ovde sam zeleo samo da ti dam ideju kako mozes da odradis.

EOF
 
Odgovor na temu

[es] :: 3D programiranje :: OpenGL polja cvorova

[ Pregleda: 2026 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.