🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.demoscena
23 messages
23 total messages Started by artur Thu, 20 Jan 2005 17:45
OPENGL: jaka technika rozwiaze ten problem?
#32703
Author: artur
Date: Thu, 20 Jan 2005 17:45
19 lines
1242 bytes
Czesc,
jaka technika rozwiaze ten problem? czy w OGL jest juz gotowiec
czy trzeba napisac samemu?

z gory dziekuje za pomoc: linki, kod

http://auto-service.w.interia.pl/torus.jpg

- face culling jak sie mozna bylo od razu domyslec 
nie pomaga bo wewnetrzne sciany torusa sa uznawane jako widoczne 
(tym samym nie ma przysloniecia przy rysowaniu siatki - a wlasnie
to jest w tej sytuacji mi potrzebne)

pozdr,
A


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32704
Author: red
Date: Thu, 20 Jan 2005 22:43
15 lines
1448 bytes
artur wrote:

> - face culling jak sie mozna bylo od razu domyslec
> nie pomaga bo wewnetrzne sciany torusa sa uznawane jako widoczne
> (tym samym nie ma przysloniecia przy rysowaniu siatki - a wlasnie
> to jest w tej sytuacji mi potrzebne)

znaczy back face culling? no to oczywiscie nic nie da w tym przypadku.  
zastanawiam sie tylko co chcesz osiagnac, widok wireframe, ale taki nie do  
konca? :) jesli masz jednolite tlo mozesz malowac sciany w kolorze tla, a  
tylko krawedzie innym kolorem, jesli nie to pozostaje ci jakas detekcja  
widocznosci, w sumie dowolna, byle na poziomie trojkatow.

-- 
_red ____ _ ____ ____ __ _
Re: OPENGL: jaka technika rozwiaze ten problem?
#32705
Author: red
Date: Thu, 20 Jan 2005 23:08
9 lines
1042 bytes
red wrote:

> jesli nie to pozostaje ci jakas detekcja widocznosci, w sumie dowolna,  
> byle na poziomie trojkatow.

albo sobie jakas zmodyfikowana wersje bufora z dziabij :)

-- 
_red ____ _ ____ ____ __ _
Re: OPENGL: jaka technika rozwiaze ten problem?
#32707
Author: biki
Date: Fri, 21 Jan 2005 06:53
6 lines
1051 bytes
1. narysuj torusa wypelnionymi wielokatami ale nie wpisuj nic do bufora 
koloru a jedynie do z-bufora
2. narysuj torusa liniami korzystajac z przygotowanego z-bufora
 (z-test powinien przepuszczac gdy jest mniejsze lub rowne)

i narysuje ci sie to co jest widoczne.
Re: OPENGL: jaka technika rozwiaze ten problem?
#32706
Author: artur
Date: Fri, 21 Jan 2005 09:18
32 lines
1904 bytes
> znaczy back face culling? no to oczywiscie nic nie da w tym przypadku.  

tak

> zastanawiam sie tylko co chcesz osiagnac, widok wireframe, ale taki nie do  
> konca? :) 

dokladnie

> jesli masz jednolite tlo mozesz malowac sciany w kolorze tla, a  
> tylko krawedzie innym kolorem, 

no dobra - jak jednoczesnie wymusic rysowanie "filled" trojkata z ustalona
krawedzia (i ustalona gruboscia) w innym kolorze? bo to tylko sie uda jak 
jednoczesnie bedzie rysowane - narysowanie najpierw "filled" a potem
jeszcze raz rysowanie linii nic nie zmieni przeciez.

> jesli nie to pozostaje ci jakas detekcja  
> widocznosci, w sumie dowolna, byle na poziomie trojkatow.

tu sie nie zgodze: widocznosc na poziomie trojkata oznacza ze albo
trojkat jest widoczny albo nie wiec to nic nie da, bo zauwaz ze trojkat
moze tu byc czesciowo przesloniety wiec czesciowo powinien zostac narysowany
chyba ze zle zrozumialem to prosilbym o jakis wycinek kodu
> 

w kazdym razie wielkie dzieki za pomoc...


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32708
Author: artur
Date: Fri, 21 Jan 2005 09:22
19 lines
1459 bytes
biki@viper.pl (biki) napisał(a): 

> 1. narysuj torusa wypelnionymi wielokatami ale nie wpisuj nic do bufora 
> koloru a jedynie do z-bufora
> 2. narysuj torusa liniami korzystajac z przygotowanego z-bufora
>  (z-test powinien przepuszczac gdy jest mniejsze lub rowne)
> 
> i narysuje ci sie to co jest widoczne.
> 

biki, dzieki - pewnie wiesz z mojego poprzedniego postu ze jestem w OGL
nowicjuszem, jak to sie robi w OGL? to co opisales? jak nie wpisac
nic do bufora koloru a jedynie do z-bufora a potem z niego czytac i testowac?




-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32709
Author: mx
Date: Fri, 21 Jan 2005 12:03
24 lines
1546 bytes
> biki, dzieki - pewnie wiesz z mojego poprzedniego postu ze jestem w OGL
> nowicjuszem, jak to sie robi w OGL? to co opisales? jak nie wpisac
> nic do bufora koloru a jedynie do z-bufora a potem z niego czytac i 
> testowac?

pass1:

glDepthMask(TRUE);
glDepthFunc(GL_LESS);
glColorMask(FALSE, FALSE, FALSE, FALSE);
glEnable(GL_DEPTH_TEST);

rysujesz wypelnionego torusa

pass2:

glDepthMask(FALSE);
glDepthFunc(GL_LEQUAL);
glColorMask(TRUE, TRUE, TRUE, TRUE);

rysujesz torusa w wireframe

-- 
mx 
Re: OPENGL: jaka technika rozwiaze ten problem?
#32710
Author: artur
Date: Fri, 21 Jan 2005 13:27
27 lines
1462 bytes
a sprawdziles czy to co napisales dziala?
bo u mnie po wklepaniu tego co proponujesz, chodzi tak:

http://auto-service.w.interia.pl/torus2.jpg


> pass1:
> 
> glDepthMask(TRUE);
> glDepthFunc(GL_LESS);
> glColorMask(FALSE, FALSE, FALSE, FALSE);
> glEnable(GL_DEPTH_TEST);
> 
> rysujesz wypelnionego torusa
> 
> pass2:
> 
> glDepthMask(FALSE);
> glDepthFunc(GL_LEQUAL);
> glColorMask(TRUE, TRUE, TRUE, TRUE);
> 
> rysujesz torusa w wireframe
> 


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32711
Author: poison64
Date: Fri, 21 Jan 2005 15:32
23 lines
1749 bytes
Użytkownik "artur" <bonart1.WYTNIJ@gazeta.pl> napisał w wiadomości 
news:csr00s$lcs$1@inews.gazeta.pl...
>a sprawdziles czy to co napisales dziala?
> bo u mnie po wklepaniu tego co proponujesz, chodzi tak:
>
> http://auto-service.w.interia.pl/torus2.jpg

    to musi dzialac :) a z tego co widac z tego obrazka to
    chyba po prostu obiekt przy 1 passie masz obrocony
    inaczej niz przy 2... czyzbys robil

    glLoadIdentity()

        pierwszy pass (i tu w srodku translate i rotatef)
        drugi pass (i tu znowu translate i rotatef, bez wczytania identity)

    :>

    tak strzelam tylko ;)

-- 
    Poison64
    http://www.poison64.prv.pl/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32712
Author: art boni
Date: Fri, 21 Jan 2005 17:28
77 lines
3254 bytes
nie, nie robie zadnych translacji/obrotow itp we wspomnianych passach

jest to robione tylko raz na poczatku rysowania calej gl sceny

zreszta ten obrazek jest na to dowodem, inaczej przeciez bym mial np
podwojny torus albo cos. niewazne, najlepiej jak wkleje tu
to co wpisalem na szybko zeby sprawdzic pomysl:

glDepthMask(TRUE);
glDepthFunc(GL_LESS);
glColorMask(FALSE, FALSE, FALSE, FALSE);
glEnable(GL_DEPTH_TEST);


	glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
	glColor3f(0,0,0);
	
	glBegin(GL_TRIANGLES);
		for (int i=0;i<obj->getNoF();i++)
		{
		glVertex3f(verty[(facy[i*3+0]*3)+0],verty[(facy[i*3+0]*3)
+1],verty[(facy[i*3+0]*3)+2]);
		glVertex3f(verty[(facy[i*3+1]*3)+0],verty[(facy[i*3+1]*3)
+1],verty[(facy[i*3+1]*3)+2]);
		glVertex3f(verty[(facy[i*3+2]*3)+0],verty[(facy[i*3+2]*3)
+1],verty[(facy[i*3+2]*3)+2]);
  		}  		
 	glEnd();

glDepthMask(FALSE);
glDepthFunc(GL_LEQUAL);
glColorMask(TRUE, TRUE, TRUE, TRUE);

	glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
	glColor3f(0,0.5,0);

	glBegin(GL_TRIANGLES);
		for (int i=0;i<obj->getNoF();i++)
		{
		glEdgeFlag(faceflagy[i] & 4);
		glVertex3f(verty[(facy[i*3+0]*3)+0],verty[(facy[i*3+0]*3)
+1],verty[(facy[i*3+0]*3)+2]);
		glEdgeFlag(faceflagy[i] & 2);
		glVertex3f(verty[(facy[i*3+1]*3)+0],verty[(facy[i*3+1]*3)
+1],verty[(facy[i*3+1]*3)+2]);
		glEdgeFlag(faceflagy[i] & 1);
		glVertex3f(verty[(facy[i*3+2]*3)+0],verty[(facy[i*3+2]*3)
+1],verty[(facy[i*3+2]*3)+2]);
  		}  		
 	glEnd(); 

poison64 <poison64@DELTHISopBLABLA.pl> napisał(a): 

> Użytkownik "artur" <bonart1.WYTNIJ@gazeta.pl> napisał w wiadomości 
> news:csr00s$lcs$1@inews.gazeta.pl...
> >a sprawdziles czy to co napisales dziala?
> > bo u mnie po wklepaniu tego co proponujesz, chodzi tak:
> >
> > http://auto-service.w.interia.pl/torus2.jpg
> 
>     to musi dzialac :) a z tego co widac z tego obrazka to
>     chyba po prostu obiekt przy 1 passie masz obrocony
>     inaczej niz przy 2... czyzbys robil
> 
>     glLoadIdentity()
> 
>         pierwszy pass (i tu w srodku translate i rotatef)
>         drugi pass (i tu znowu translate i rotatef, bez wczytania identity)
> 
>     :>
> 
>     tak strzelam tylko ;)
> 


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32713
Author: Kołek Szymon
Date: Mon, 24 Jan 2005 08:26
9 lines
1476 bytes
Wszystko gra.
Fill i Line nie sa zamienne - tzn - rastryzacja przy jednym i przy drugim
wyliczy podobne wartosci Z - ale nie identyczne. Ide o zaklad ze jak ruszasz
tym torusem to masz klasyczny przyklad z-fighting-u. Musisz lekko biasnac
wartosci z - np rysujac drugiego pass-a lekko przybliz obiekt, lub rusujac
pierwszego lekko go oddal.

Pozdr.
    st3tc
Re: OPENGL: jaka technika rozwiaze ten problem?
#32714
Author: art boni
Date: Mon, 24 Jan 2005 14:25
26 lines
1938 bytes
lekko przybliz tzn poprzez glTranslate(0,0,0.01) np wstawiajac po narysowaniu
pierwszego passa...

jesli to to informacje mam taka ze nie dziala,
probowalem z malymi wartosciami z (np. 0.01) i z wiekszymi 
zeby sie upewnic (np.0.5 - 1 - 5) i to samo,
tzn widok jest podobny do tego z obrazka...
dla 5 torusa juz bylo ciut wiecej widac...

Kołek Szymon <simon@bf2engine.com> napisał(a): 

> Wszystko gra.
> Fill i Line nie sa zamienne - tzn - rastryzacja przy jednym i przy drugim
> wyliczy podobne wartosci Z - ale nie identyczne. Ide o zaklad ze jak ruszasz
> tym torusem to masz klasyczny przyklad z-fighting-u. Musisz lekko biasnac
> wartosci z - np rysujac drugiego pass-a lekko przybliz obiekt, lub rusujac
> pierwszego lekko go oddal.
> 
> Pozdr.
>     st3tc
> 
> 


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32715
Author: Kołek Szymon
Date: Tue, 25 Jan 2005 07:16
4 lines
1257 bytes
Pisalem o wartosciach buforka Z a nie o wsp. Z  pozycji 3D.

Pozdr.
       st3tc
Re: OPENGL: jaka technika rozwiaze ten problem?
#32716
Author: artur
Date: Tue, 25 Jan 2005 14:42
20 lines
1544 bytes
> Pisalem o wartosciach buforka Z a nie o wsp. Z  pozycji 3D.

ok, to moglbys zaproponowac wycinek kodu ktory powinienem wkleic
miedzy pass 1 a pass 2? czy to tajemnica?

z gory dziekuje i pozdr,
A

Kołek Szymon <simon@bf2engine.com> napisał(a): 

> Pisalem o wartosciach buforka Z a nie o wsp. Z  pozycji 3D.
> 
> Pozdr.
>        st3tc
> 
> 


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32717
Author: artur
Date: Wed, 02 Feb 2005 15:45
31 lines
2576 bytes
> > Pisalem o wartosciach buforka Z a nie o wsp. Z  pozycji 3D.
> 
> ok, to moglbys zaproponowac wycinek kodu ktory powinienem wkleic
> miedzy pass 1 a pass 2? czy to tajemnica?
> 
> z gory dziekuje i pozdr,
> A

hmm, nikt juz nie ma ani pomyslu ani rady? mowic mozna wiele,
ale rezultaty sie licza... jesli st3c pisze o wartosciach Z-bufora
(a ja sie przyznaje - zle zrozumialem i zaczalem zmieniac Z koordynaty
przez glTranslate) i jesli ma na mysli zmiane +/- jakas wartosc 
wlasnie tych wartosci z Z bufora to mam pytanie jak sie do nich dobrac i w 
jaki sposob zmodyfikowac. st3c nie odpisal, nie wiem czy to oznacza
ze sprobowal to skodowac i mu sie nie udalo wiec nie odpowiada,
czy po prostu zakonczyl na teorii bo w praktyce braki...
moze ktos pomoc? wydaje mi sie ze dobrze trafilem z zapytaniem
(dobra grupa, wlasciwa audiencja) i pytanie tez jest na miejscu
(nie pytam o nie dzialajaca drukarke). tutaj takie problemy
jak moj powinny byc z sukcesem rozwiazane...

ps. od razu informuje: nikogo nie pietnuje ani nie probuje wejsc 
nikomu na ambicje, szukam rozwiazania, nie znalazlem wiec moze
ktos jest w stanie zaproponowac wycinek kodu ktory implementuje
teorie ktora przedstawil st3c albo zupelnie cos innego jesli
st3c sie pomylil lub wprowadza w blad bo przeciez
to tez moze sie zdarzyc prawda...? - z gory dzieki, A


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32718
Author: Kołek Szymon
Date: Thu, 03 Feb 2005 06:49
20 lines
2079 bytes
> st3c nie odpisal, nie wiem czy to oznacza
> ze sprobowal to skodowac i mu sie nie udalo wiec nie odpowiada,
> czy po prostu zakonczyl na teorii bo w praktyce braki...

Rotfl ... Ok - uznajmy ze mam 0% praktyki a to wyczytalem w swierszyku ;p.
PS - po prostu nie mam czasu (i myslalem, ze juz dawno to rozpykales)

> st3c sie pomylil lub wprowadza w blad bo przeciez
> to tez moze sie zdarzyc prawda...? - z gory dzieki, A

Rzadko sie myle ;). (wiem wiem ... ;p - po prostu mowie wtedy kiedy jestem
czegos pewny ;) ). To zalezy od wielu czynikow (ztuningowanie biasa) - ot
chocby ustawien macierzy projekcji i dokladnosci zbuforka. Zeby to zrobic
trzeba dysponowac ta aplikacja, i dopiero wtedy sie brac za dobranie odp.
wartosci.

PS - nie st3c tylko st3tc ... brrr....

Pozdr.
    st3tc
Re: OPENGL: jaka technika rozwiaze ten problem?
#32719
Author: artur
Date: Thu, 03 Feb 2005 12:31
18 lines
1762 bytes
st3tc,
mam nadzieje ze sie nie obraziles, nie znam cie, nie wiem kto ty jestes,
w meilu to nie byly oskarzenia tylko przypuszczenia...

fakt, teraz malo kto ma czas, sam fakt ze po dlugim czasie od ostatniego 
twojego posta na ten watek sie odezwalem o tym swiadczy... 

nie nie rozpykalem tego...
ok, mowisz o aplikacji, ustawieniach - rozumiem ze chodzi ci o cala zrodlowke,
jakbym to wrzucil gdzies na stronce, to znalazlbys czas na pomoc, moglbys
w to zerknac i sie pobawic?

pozdr,
A


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32720
Author: Kołek Szymon
Date: Thu, 03 Feb 2005 12:48
7 lines
1554 bytes
Watpie czy znalazlbym czas (mowie szczerze : sesja + praca + druga praca ==
zostaje jakies 4 - 5h na sen ...)
Ale pewnie ktos inny tutaj Ci sprawdzi - wiec to dobry pomysl z pokazaniem
zrodelek.

Pozdr.
    st3tc
Re: OPENGL: jaka technika rozwiaze ten problem?
#32721
Author: artur
Date: Sat, 12 Feb 2005 13:33
44 lines
2725 bytes
Czesc,
powrot po malej przerwie, przeczytalem odpowiedz od st3tc, 
przygotowalem zrodlowke, zostawilem tylko to co dotyczy problemu coby nie
wprowadzac coniektorych w blad, ten sam obiekt nawet wrzucilem do torus.h.

pliki: main.cpp, torus.h, torus.dev

Nie wiem jak dobrac sie w opengl do danych z zbuf (tak przy okazji
gdzie moge o tym przeczytac?) wiec nie wiem jak zaimplementowac 
to co st3tc proponuje.

zakladam ze ma racje, jak to teraz skodowac?

st3tc stwierdzil ze trzeba miec dostep do zrodlowki, zeby moc to zrobic,
juz ona jest umieszczona na:


http://auto-service.w.interia.pl/torus.h.txt
http://auto-service.w.interia.pl/main.cpp.txt
http://auto-service.w.interia.pl/torus.dev.txt

wrzucilem tam 3 wersje kodu (odhaszujcie to co trzeba w main.cpp
to dobierzecie sie do odpowiedniej wersji)

version1 - to czysty face culling
version2 - to to co proponowal RED w tym watku
(tzn to co zrozumialem z jego postu bo kodu nie podal)

version3 - to jest implementacja tego co zaproponowal BIKI a kawalek
kodu jako komentarz do propozycji BIKIEGO podal MX

version4 - to jest prosba, kto skoduje to co zaproponowal ST3TC, lub
inne rozwiazanie tego problemu

z gory dzieki za pomoc,
mam nadzieje ze ktos znajdzie chwile na wytezenie umyslu...
pozdr,
A

ps. nie dziwi was to ze caly czas meczy mnie to zagadnienie?


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: OPENGL: jaka technika rozwiaze ten problem?
#32722
Author: biki
Date: Mon, 14 Feb 2005 09:05
21 lines
1931 bytes
sprobujmy tak.
macierz opengl projection wyglada chyba tak

2n/(r-l)  0        (r+l)/(r-l)    0
0         2n/(t-b) (t+b)/(t-b)    0
0         0        -(f+n)/(f-n)  -2fn/(f-n)
0         0         -1            0


czyli wsp Zz uzywana przy porownywaniu z-bufora sie liczy z czegos w stylu

Zz=[(f+n)/(f-n)*Z+2fn/(f-n)]/Z
Zz=(f+n)/(f-n) + (2fn/(f-n))/Z
a my chcemy to ciut zmniejszyc zeby porownanie dawalo lepszy wynik
czyli manipulujemy (f+n)/(f-n)

wiec o ile sie nie walnolem w rozumowaniu to wystarczy
zassac macierz projection
zmienic o jakas niewielka wartosc pozycje [2][2] macierzy
i zaladowac z powrotem
i wtedy wyrenderowac drugi przebieg
Re: OPENGL: jaka technika rozwiaze ten problem?
#32723
Author: Sulsa
Date: Mon, 14 Feb 2005 15:33
24 lines
2193 bytes
biki wrote:
> sprobujmy tak.
> macierz opengl projection wyglada chyba tak
> 
> 2n/(r-l)  0        (r+l)/(r-l)    0
> 0         2n/(t-b) (t+b)/(t-b)    0
> 0         0        -(f+n)/(f-n)  -2fn/(f-n)
> 0         0         -1            0
> 
> 
> czyli wsp Zz uzywana przy porownywaniu z-bufora sie liczy z czegos w stylu
> 
> Zz=[(f+n)/(f-n)*Z+2fn/(f-n)]/Z
> Zz=(f+n)/(f-n) + (2fn/(f-n))/Z
> a my chcemy to ciut zmniejszyc zeby porownanie dawalo lepszy wynik
> czyli manipulujemy (f+n)/(f-n)
> 
> wiec o ile sie nie walnolem w rozumowaniu to wystarczy
> zassac macierz projection
> zmienic o jakas niewielka wartosc pozycje [2][2] macierzy
> i zaladowac z powrotem
> i wtedy wyrenderowac drugi przebieg

i po tym wszystkim koniecznie napisac grupowiczą czy zadzialalo
Re: OPENGL: jaka technika rozwiaze ten problem?
#32724
Author: biki
Date: Mon, 14 Feb 2005 15:35
5 lines
1423 bytes
>i po tym wszystkim koniecznie napisac grupowiczą czy zadzialalo
>

koniecznie!
Re: OPENGL: jaka technika rozwiaze ten problem?
#32725
Author: bonart1
Date: Tue, 22 Mar 2005 14:15
16 lines
1778 bytes
Czesc, po dlugim czasie milczenia.

W ostatni weekend znalazlem czas na OPEN GL.

Czy ktos mi moze powiedziec jak to sie stalo 
ze nikt nie podal:

void glPolygonOffset(GLfloat factor, GLfloat units); 

z redBooka: Chapter 7. Blending, Antialiasing, Fog, and Polygon Offset

pozdr,
A

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads