Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Ed

Strony: 1 2 [3] 4
31
OpenGL / Kilka pytań
« dnia: Marzec 10, 2006, 19:45:43 »
Witam !

Mam kilka pytań :

1. Chciałbym się dowiedzieć jak jest obliczane położenie wierchołka w opengl? Z tego co wiem z gróbsza to jest jakoś mnożony przez macierz przekształceń i projekcji (?) , czy ktoś może mi to wytłumaczyć ,bo na internecie jakoś niemoge tego znaleść ?

2. W każdym przykładzie zastosowania kamery jaki pobrałem można znalesć np. UpVector albo Left/Right Vector. Czy ktoś może mi zobrazować lub zarzucić jakiś obrazek do czego on służy ?

3. Analizując Frustum Culling zauważyłem że jest tak funkcja wyliczająca coś z iloczynu macierzy modeli i projekcji. Chciałbym się dowiedzieć w teori jak to działa.

32
Programowanie grafiki / Odp: Drzewo BSP
« dnia: Marzec 02, 2006, 17:09:26 »
Chciałbym wszystkim BARDZO podziękować  :D  :D  :D Dzięki waszym postom dużo się nauczyłem i zrozumiałem. Pozatym na tym forum jak widze nie 'wyżywa' się na początkujących co mi się podoba. Jeszcze raz dzięki.  :)

33
Programowanie grafiki / Odp: Drzewo BSP
« dnia: Marzec 01, 2006, 15:50:09 »
Dzięki za tak liczne odpowiedzi  ;) Jeśli chodzi o BSP to chyba macie racje i zrezugnuje z tego na rzecz jakiegos innego algorytmu/struktury. Szukałem troche ale nie znalazłem przykładów w języku polskim. Czy będe musiał się meczyuć z tłumaczeniem czy ktoś moze zna jakies przykłady/arty/sample w polskiej wersji ?

PS : Piszecie dużo 'magicznych' nazw  :D tzn : test frustrum ,oc query, stencil buffer, raytracing. Wiem że wy jesteście profesionaliści ale człowiek poczatkujący nie rozumie dlatego jeśli by się dało to czasem napiszcie coto znaczy  ;) Bo sprawdziłem na gamedev.net te nazwy ale za duzo po angilesku sie nie dowiedziałem a mój tłumacz nie za dobrze to przetłumaczył.

34
Programowanie grafiki / Odp: Drzewo BSP
« dnia: Luty 28, 2006, 22:04:24 »
Mały ot się tu zrobił ale co tam dzięki za rady.  ;)

Cytuj
1. Dzielenie trójkatów / polygonów (można nie dzielić - ale współdzieli - tyle że to nadal jest problem)

Czy w takim razie jeśli moja geometria budowana jest z trójkątów to nie warto tworzyć jej na BSP ? ( jestem początkujący jeśli chodzi o jakieś drzewa i optymilizacje , nigdy tego nie robiłem , może mi ktoś doradzi ? ).

35
Programowanie grafiki / Odp: Drzewo BSP
« dnia: Luty 26, 2006, 16:21:28 »
Skoro mówisz że BSP jest przestarzałe to nie warto się go uczyć ? A czy na occlusion culling mozna oprzeć kolizje ?

EDIT: W jednym ze znalesionych przykładw na temat occlusion culling zauważyłem że jest to związane z OCTree. Tak więc czy zamast BSP lepiej nauczyć się OCT?

36
Programowanie grafiki / Drzewo BSP
« dnia: Luty 26, 2006, 14:05:46 »
Witam !

Od pewnego czasu zacząłem analizować kody i czytać zagraniczne kursy na temat drzewa BSP. Niestety niemoge sobie poradzić z implementacją i do końca zrozumieć działania drzewa. Czy ktoś może zna jakiś polski kurs na temat drzewa BSP albo jakiś bardzo prosty przykład ? I prosze nie wysyłać mnie na google, bo ostatnio nic odprócz przeszukiwania google i stron an temat BSP nie robie ale wszystkie ściągnie przykłady są niestety za trudne jak dla mnie ( w całości ) do zrozumienia.

37
OpenGL / Odp: Zapis geometri
« dnia: Luty 19, 2006, 15:14:46 »
No właśnie prosty sposób to ja mam  ;) Chciałbym się dowiedzieć o jakiś bardziej rozbuowany. Jeśli ktoś takiego używa i chce się pochwalic jego strukturą to bym był wdzięczny :)

38
OpenGL / Odp: Zapis geometri
« dnia: Luty 19, 2006, 12:39:30 »
A gdzie zapisujesz dane jaką teksturą ma być oteksturowany obiekt ?

class CTriangle{
    int iNumVertices;
    int iFirstVerIdx;
};

Skoro to trójkąt to poco int iNumVertices; skoro trójkat ma 3 wierzchołki ?

39
OpenGL / Zapis geometri
« dnia: Luty 19, 2006, 00:10:25 »
Witam !

Chciałbym się dowiedzieć w jaki sposób  najlepiej zapisać geometrie do pliku ? Jak wygląda dobry i wydajny schemat budowy pliku z geometrią ? Do tej pory robilem to tak :

wercholek normalna coord
wercholek normalna coord
....
trójkąt z 3 indeksami
trójkąt z 3 indeksami
....
figura = numer tekstury i indeksy do trójkątow.

Nie jest to najlepszy sposób. Proszę o jakąś radę  :)

40
OpenGL / Indeksy do koordów
« dnia: Luty 16, 2006, 22:56:18 »
Witam !

Funkcja glDrawElements(); powoduje rysowanie wybranych o podanych numerach (indeksach) elementów z tablic które przypiszemy funkcjami :

glVertexPointer();
glTexCoordPointer();
glNormalPointer();

Jednak co zrobić gdy mamy różne wielkości poszczególnych tablic z wierzchołkami i koordami ? Czy da się jakoś korzystać z funkcji glDrawElements ale ustawijąc poszczególne tablice indeksów na poszczewgólny typ danych ?



41
OpenGL / Odp: Normalne
« dnia: Luty 04, 2006, 20:50:17 »
Cytuj
Dla jednej normalnej podajesz wierzchołki w kolejności CW a dla innej CCW, dlatego normalne są sobie przeciwne: (1,0,0) vs (-1,0,0).

A mógłbys mi powiedzieć jak powinno byc poprawnie? Bo przecierz jeśli wszystkie normalne będą takiej samej wartości to nie będzie efektu cieniowania dla każdego wierzchołka tylko cała figura odrazu bedzie się rozjasniać.

42
OpenGL / Odp: Normalne
« dnia: Luty 03, 2006, 16:30:39 »
Postanowiłem sam napisac funkcje do liczenia normalnych. Niestety efekt jest jak na ostatnim rysunku, z tym, że inne sa wartości normalnych. Przedstawiony kod wyliczył :

0 1 0
0 -1 0
0 -1 0
0 1 0
0 -1 0
0 -1 0

Czy bład leży w kodzie?

void GenNormals()
{
int i_NewNormalNum;
int i_vertexCouter;
int i_normalCouter;
Vertex3f* NewNormals; // nowe normalne

for (int i = 0; i < polygon_count; i++)
{
// wektor normalny dla kazdego wierzcholka
i_NewNormalNum = Polygons[i].NumOfVertexes;
NewNormals = new Vertex3f[i_NewNormalNum];

i_vertexCouter = -1;
i_normalCouter = -1;

for (int j=0; j<i_NewNormalNum / 3 ;j++)
{
cVector n1(Polygons[i].vertex[++i_vertexCouter]);
cVector n2(Polygons[i].vertex[++i_vertexCouter]);
cVector n3(Polygons[i].vertex[++i_vertexCouter]);
cVector r1, r2, r3;

// wyliczamy normalne dla kazdego wierzcholka
r1 = GetNormal(n1,n2,n3);
r2 = GetNormal(n2,n1,n3);
r3 = GetNormal(n3,n2,n1);

// wrzucamy do bufora
NewNormals[++i_normalCouter] = VectorToVertex3f(r1);
NewNormals[++i_normalCouter] = VectorToVertex3f(r2);
NewNormals[++i_normalCouter] = VectorToVertex3f(r3);

}

// przypisujemy nowe normalne
Polygons[i].normal = new Vertex3f[i_NewNormalNum];
Polygons[i].normal = NewNormals;
}
}
...

// zwraca wektor prostopadły do powierzchni
cVector GetNormal(cVector v1,cVector v2,cVector v3)
{
cVector vec1,vec2;
cVector result;

vec1 = v1 - v2;
vec2 = v2 - v3;

result = CrossProduct(vec1,vec2);
result.Normalize();

return result;
}

cVector CrossProduct(cVector v1,cVector v2) // iloczyn wektorowy
{
cVector result;

result.x = (v1.y * v2.z) - (v1.z * v2.y);
result.y = (v1.x * v2.z) - (v1.z * v2.x);
result.z = (v1.x * v2.y) - (v1.y * v2.x);

return result;
}

float cVector::Lenght() // długość wektora
{
return (float)sqrt(x*x + y*y + z*z);
}

void cVector::Normalize() // normalizacja wektora
{
float f_lenght;

f_lenght = Lenght();

if (f_lenght == 0.0f)
f_lenght = 1.0f;

x /= f_lenght;
y /= f_lenght;
z /= f_lenght;
}

43
OpenGL / Odp: Normalne
« dnia: Luty 02, 2006, 22:23:49 »
Cytuj
Mówię, że możesz mieć błąd gdzieś we wczytywaniu. Smiley

Sprawdziłem Debuger-em wartości przy wczytywaniu i się zgadzają.

Stworzyłem prostą figure w DeleD prostą figure i oto jakie dane otrzymałem : ( Ostatnie cztery to Normalne)
   
 6
     320.000000  0.000000 -256.000000 
     320.000000  0.000000  384.000000 
    -384.000000  0.000000  384.000000 
    -384.000000  0.000000 -256.000000 
     320.000000  0.000000 -256.000000 
    -384.000000  0.000000  384.000000 
     2.500000 -2.000000 
     2.500000  3.000000 
    -3.000000  3.000000 
    -3.000000 -2.000000 
     2.500000 -2.000000 
    -3.000000  3.000000 
     4
     1.000000 0.000000 0.000000 
     1.000000 0.000000 0.000000 
     1.000000 0.000000 0.000000 
     1.000000 0.000000 0.000000 

Oto efekt :

Co ciekawe wszystkie wektory normalności są takie same. Niewiem czy dobrze wnioskuje ale chyba w takim razie powinienem sobie sam wyliczyć normalne ?

PS : Wiem, że to nie forum typu "napisz mi program" ale może ktoś ma jakiś przykład użycia i wczytywania normlanych - osobą bez doswiadczenia takim jak ja na pewno by sie to bardzo przydało.

44
OpenGL / Odp: Normalne
« dnia: Luty 02, 2006, 21:40:29 »
Jeśli, jak mówisz mam błąd w rysowaniu to oto zarzucam kod :

for (int i = 0; i < polygon_count; i++)
{
glBindTexture(GL_TEXTURE_2D, Texture[Polygons[i].TexIndex].GLTexture);

        glTexCoordPointer(2, GL_FLOAT, 0,&Polygons[i].cord[0]);
        glVertexPointer(3, GL_FLOAT, 0, &Polygons[i].vertex[0]);
glNormalPointer(GL_FLOAT,0,&Polygons[i].normal[0]);

glDrawArrays(GL_TRIANGLES,0,Polygons[i].NumOfVertexes);

}

Polygons[0] = ta wieża z obrazka

EDIT by spax: code /code

45
OpenGL / Odp: Normalne
« dnia: Luty 02, 2006, 21:19:49 »
Zrobiłem jak powiedzialeś Real_Noname i niektóre ściany widac a niektóre nie. Dopiero gdy ustawie :

   glEnable(GL_CULL_FACE);
   glFrontFace(GL_CW);
   glCullFace(GL_FRONT);

To dobrze wyświetla.

Jeśli chodzi o ten normalne to zrobiłem funkcje od obliczenia normalnej dla trójkąta ale niewiem na jakiej zasadzie ma to działac tzn. dla jednego trójkata powinna być jedna normlana, czy dla każdego wierzchołka?

Cytuj
A jak niektóre widać, a niektóre nie (na jednej płaszczyźnie) to znaczy, że twój program do robienia modeli wszystko popierniczył Smiley

Mój program do program do robienia modeli po prostu kopiuje z pliku *.x i usuwa zbęde informacje a niesądze żeby DeleD źle exportował pliki.

PS: Dzięki za dotychczasowe wskazówki.

Strony: 1 2 [3] 4