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

All about 3D Graphic without DX and oGL

[es] :: 3D programiranje :: All about 3D Graphic without DX and oGL

Strane: 1 2

[ Pregleda: 4584 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

markotasic
BALKAN

Član broj: 8815
Poruke: 93
194.106.186.*

Sajt: sartarata.port5.com


Profil

icon All about 3D Graphic without DX and oGL16.05.2004. u 09:02 - pre 213 meseci
Posto mi nije vise zanimljivo da koristim DX i oGL za izradu mini-igrica, odlucio sam da sve to odradim od "NULL". Znam za projektcije sa 3d na 2d, znam kako svetlost funkcionise, i jos dosta zafrkancija, ALi kako ide uklanjanje "back" strana i z-order.
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: All about 3D Graphic without DX and oGL16.05.2004. u 18:01 - pre 213 meseci
Pa ti rece da znas osnovne stvari vezane za 3D...

U svakom slucaju, ako si vec odlucio da sam sve radis, to je dobro, tako se najbolje uci. Z order se radi ili pored Z buffera koji ti ne mozes da koristis za softverski renderer, a back face culling se radi tako sto pogledas na koju stranu ti je orijentisan trougao u screen spaceu: ako gleda na pozadi, onda ga odbacis, a u suprotnom ga iscrtas. Jednostavna matematika.
 
Odgovor na temu

markotasic
BALKAN

Član broj: 8815
Poruke: 93
194.106.186.*

Sajt: sartarata.port5.com


Profil

icon Re: All about 3D Graphic without DX and oGL17.05.2004. u 09:49 - pre 213 meseci
Znam ja za tu vrstu HSR-a, tj ako je ugao izmedju vektora normale trougla i vektora camere (from-to) manji od 90 onda je on vidljiv, i da se on lako trazi preko skalarnod i vekorskog proizvoda, itd...
Sve je to lako, medjutiim kako da odredim smer normale, znam za koriscenje pravila desne zavojnice-ruke, sta ce se desiti na sledecem primeru (u dodatku dole).
Prikačeni fajlovi
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: All about 3D Graphic without DX and oGL17.05.2004. u 16:36 - pre 213 meseci
Probaj da u screen space-u uradis sledece:
Code:
z = X1*Y2 - Y1*X2;

Ukoliko je ovo vece od nule, trougao je vidljiv.
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1339
*.ppp-bg.sezampro.yu

ICQ: 14293955
Sajt: https://github.com/milost..


+46 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 10:36 - pre 213 meseci
U svakom slucaju bi bilo bolje eliminisati poligon pre projekcije.
Time se izbegava suvisni racun...
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 10:50 - pre 213 meseci
A kako mislis da odredis da li je poligon forward facing ili back facing pre projekcije?
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1339
*.ppp-bg.sezampro.yu

ICQ: 14293955
Sajt: https://github.com/milost..


+46 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 16:58 - pre 213 meseci
Transformacija normale je jeftinija od transformacije tri vertex-a
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 17:28 - pre 213 meseci
I da i ne:

Transformacija normale jeste jeftinija, ali cilj je da uklonis faceove, a ne vertexe. Normale se nazalost vezuju za vertexe. Pogledaj primer gde imas vertex na silueti objekta - ti njega moras da transformises jer je deo neko forward facing trougla, ali takodje i back facing trougla. U slucaju da radis sa normalama, morao bi da transformises 3 normale, i da onda za svaki face izracunas i 'face normal' i da na osnovu njega izracunas na koju stranu gledas. Ovo je isti djavo kao da transformises sve vertexe.

Postoji i varijanta da osim vertex normala koje koristis za osvetljenje sacuvas i face normal, i da onda nju transformises, i na osnovu nje odredis da li treba da iscrtas face. Nazalost, cak ni to te ne cuva od toga da moras da transformises vise vertexa nego sto ti treba (jer to sto neki face gleda na pozadi ne znaci da ne treba transformisati barem neki njegov vertex).

Takodje, sa face normal varijantom je problem to sto za sve forward facing faceove ti moras da transformises i po jednu normalu vise po faceu da bi video na koju stranu gleda. A faceova ima vise nego vertexa ...

Kako god da okrenes zeznuto :)

Marko, cak i da resis ovo, problem je i to sto ne mozes da se oslonis samo na bilo koju od ovih metoda uklanjanja nevidljivih trouglova: sta se desava kada objekat ima forward facing trougao koji se nalazi iza nekog drugog forward facing trougla? Drugim recima, sta cemo ako objekat nije konveksan? Zamisli objekat koji se sastoji od dve sfere:

Code:

->         OO
kamera   objekat


U svakom slucaju, pisanje softverskog renderera je otprilike kao pisanje asemblera - da, naucices nesto, ali ces vise vremena potrositi na resavanje poznatih problema nego na resavanje novih i verovatno zanimljivijih problema (osvetljenje, senke, itd.).

---

U svakom slucaju, dopada mi se da je ponovo krenula neka diskusija na 3D programiranju, a da nije o holodeku. :)
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 18:19 - pre 213 meseci
Citat:
Reljam:
Transformacija normale jeste jeftinija, ali cilj je da uklonis faceove, a ne vertexe. Normale se nazalost vezuju za vertexe.


Zapravo ono sto Tosa prica je normala face-a. U software renderingu nema pravila, sam vezujes normale sa cim hoces. ;) Naime proveris da li je normala face-a vidljiva (klasican dot produkt normala pravac u koji gleda kamera). Sve pozitivno je sigurno vidljivo, onda za negativne vrednosti odredis neku vrednost npr. -30 stepeni i sve ispod te vrednosti je nevidljivo. Sve izmedju -30 i 0 mozes da tretiras kao vidljivo i renderujes ili da za te poligone dodas jos jedan screen space test pre renderinga.

Ova tehnika nije idealna jer u nekim slucajevima poligoni (kada su dovoljno veliki i kada se nalaze u uglovima ekrana) postaju nevidljivi, ali bi bili vidljivi kada se koristi samo screen space test.

Uglavnom u proslosti u igrama sa software rendering-om ovaj problem se nije vidjao zato se ovakav backface culling koristio samo za animirane karaktere. Za velike poligone koji bi pravili ovaj problem koriscena je BSP tehnika.

One koje zanima software rendering najbolje je da pogledaju ove knjige:

Michael Abrash's Graphics Programming Black Book
http://public.planetmirror.com/pub/gpbb/

Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization
ISBN: 0672318350

Branimir

 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 18:32 - pre 213 meseci
Secam se te knjige :)

Jeste, ali za face normal vazi i sve ono sto sam napisao gore - moras da transformises vertexe (SSE - protrcis jedanput kroz ceo VB i sve transformises, ovo je verovatno brze nego da gledas face po face i da onda transformises njegove vertexe sa kesiranjem). E sad se postavlja pitanje da li je efikasnije za svaki face transformisati i normalu pre renderinga, ili raditi nesto na osnovu vertex normala (dakle bez face norm)? Pogotovu sto ti vertex norm ne gine zbog osvetljenja...

Takodje, kao sto sam kazes, ne mozes da dozvolis da ti trouglovi tek tako nestaju ako zadju u nezgodan ugao - morao bi da radis u screen spaceu.

Marko, kad vec pricamo oko ovoga, sta si namerio da uradis sa rendererom? Teksture, osvetljenje, samo solid color?
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: All about 3D Graphic without DX and oGL18.05.2004. u 18:46 - pre 213 meseci
Citat:
Reljam:
Takodje, kao sto sam kazes, ne mozes da dozvolis da ti trouglovi tek tako nestaju ako zadju u nezgodan ugao - morao bi da radis u screen spaceu.


Da u sadasnje vreme to je totalno neprihvatljivo. :) Mada kada sam ja radio software rendering to je bila normalna praksa (386, 486, Pentium 1). Jer tada je bilo dovoljno impresivno da renderujes 3D i niko nije cepidlacio ako par poligona nestane... ;)

Evo i demo koji sam radio 1995. 100% x86 assembler, radi pod 95, 98, ME, za 2K i XP treba dosbox emulator. :)
http://www.scene.org/file.php?...95/demo/money.zip&fileinfo

BTW, primetices da ni subpixeling ni subtexeling "nisu" bili u modi. :D

Branimir

 
Odgovor na temu

markotasic
BALKAN

Član broj: 8815
Poruke: 93
195.252.103.*

Sajt: sartarata.port5.com


Profil

icon Re: All about 3D Graphic without DX and oGL20.05.2004. u 09:31 - pre 213 meseci
Kao prvo drago mi je da ste se zainteresovali za 'moje' pitanje, a kao drugo zelim da vrsim i iscrtavanje TEXTURE na poligon, kako da to na sto jednostavniji nacin uradim to. Zagazio sam u vode C++, koristim Dev-C++ beta 5 i dosta toga sam postigao, a za cim sam u VB mastao, ali i VB je dugo vremena za mene bio 'osnova', naime lako ali sporo iscrtavanje i...
 
Odgovor na temu

AMomcil
Aleksandar Momcilovic
SW inzenjer
myVR Software
Oslo, Norveska

Član broj: 27189
Poruke: 773
193.214.113.*



+1 Profil

icon Re: All about 3D Graphic without DX and oGL25.05.2004. u 11:41 - pre 213 meseci
Vidim da je bilo ovde ljudi koji su vec radili SW rasterajzing..

Mozete li me uputiti na neki Source za SW triangle texture rasterizing?
Samo mi je potrebno da bilinearno iscrtam teksturisani trougao, dakle samo da se razvuce tekstura preko njega, bez ikakvog svetla - nista Phong, Gouraud..

Koristim pbuffer za mesanje tekstura u OpenGL-u i sad se pojavio zahtev da to radi i na nekim server masinama za generisanje tekstura terena. Naravno, nema tamo ni pomena od pbuffer-a..

Ako nekoga zanima, razvijam 3D engine za:
http://www.lencods.com/CODS.aspx
http://www.mapcube.com/
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: All about 3D Graphic without DX and oGL25.05.2004. u 16:24 - pre 213 meseci
Pretpostavljam da ovo radis za neki preview, jer sa samo bilinearnim i bez svetla ne mozes da dobijes nista sto ce pristojno da izgleda.

Pogledaj neki rendering library na sourceforge-u, to bi ti verovatno bilo najlakse resenje.
 
Odgovor na temu

AMomcil
Aleksandar Momcilovic
SW inzenjer
myVR Software
Oslo, Norveska

Član broj: 27189
Poruke: 773
*.adsl.tele2.no



+1 Profil

icon Re: All about 3D Graphic without DX and oGL25.05.2004. u 17:22 - pre 213 meseci
Citat:
Reljam:Pretpostavljam da ovo radis za neki preview, jer sa samo bilinearnim i bez svetla ne mozes da dobijes nista sto ce pristojno da izgleda.

Radi se o delu koji kreira teksture. Slicno kao "Merge Layers" u PhotoShopu. Scena moze da ima i 10-15 Layer-a i oni se spajaju u 2D Alpha Blenderu, i onda se samo konacna tekstura salje za rendering. Zapravo, dodaju se jos i dinamicke teksture, oblaci i sl. sa multiteksturiranjem ali seovde priprema bazna tekstura.
Za to inace koristim PBuffer i Orto projekciju, vec postoji i SW rasterizator, ali samo za pravougaono mapiranje (axis aligned). Sad se pojavila potreba za mapiranjem proizvoljnih trouglova.

Nije meni problem da to uradim, ali trazi vremena, uvek ga je manjak, pa ako vec ima neko gotovo resenje.. Ranije (pre HW 3D) je bilo puno tih SW rasterizatora, pa se nadam da neko mozda ima ili zna gde ima gotov Source ili primer..
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: All about 3D Graphic without DX and oGL25.05.2004. u 21:49 - pre 213 meseci
Citat:
Koristim pbuffer za mesanje tekstura u OpenGL-u i sad se pojavio zahtev da to radi i na nekim server masinama za generisanje tekstura terena. Naravno, nema tamo ni pomena od pbuffer-a..


OpenGL ima software implementaciju (spor, ali je precizan rendering) u slucaju da te "server masine" nemaju podrsku za 3d akceleraciju. Takodje sve sto renderujes u pbuffer mozes da renderujes i u frame buffer. Jedini problem na koji mozes da naidjes je da frame buffer rezolucija ne moze biti dovoljno velika da izrenderujes celu teksturu odjednom, ali je moguce tu teksturu podeliti i onda renderovati deo po deo.

Ako to nije dovoljno pogledaj:
http://www.mesa3d.org/

Branimir

 
Odgovor na temu

markotasic
BALKAN

Član broj: 8815
Poruke: 93
194.106.186.*

Sajt: sartarata.port5.com


Profil

icon Re: All about 3D Graphic without DX and oGL25.05.2004. u 22:47 - pre 213 meseci
Hvala jos jednom, ali kako svi mi ne volimo samo 'praznu' diskusiju hajde da bacimo malo matematike i nekih jednacina, znaci kako da mapiram texturu (u trouglu ili cetvorouglu) u 2D sistemu, za pocetak.
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: All about 3D Graphic without DX and oGL26.05.2004. u 02:48 - pre 213 meseci
Citat:
znaci kako da mapiram texturu (u trouglu ili cetvorouglu) u 2D sistemu, za pocetak.


Da li znas da nacrtas popunjen trougao bez teksture (bez API poziva)?

Branimir
 
Odgovor na temu

markotasic
BALKAN

Član broj: 8815
Poruke: 93
194.106.186.*

Sajt: sartarata.port5.com


Profil

icon Re: All about 3D Graphic without DX and oGL26.05.2004. u 08:16 - pre 213 meseci
Ne bi se uhvatio ozbiljnog posla da nemam nelu osnovu. Imam neko svoje resenje ali je brzina problem, ali ne bi smetalo neko uprosceno.
 
Odgovor na temu

AMomcil
Aleksandar Momcilovic
SW inzenjer
myVR Software
Oslo, Norveska

Član broj: 27189
Poruke: 773
193.214.113.*



+1 Profil

icon Re: All about 3D Graphic without DX and oGL26.05.2004. u 09:20 - pre 213 meseci
Citat:
bkaradzic:OpenGL ima software implementaciju (spor, ali je precizan rendering) u slucaju da te "server masine" nemaju podrsku za 3d akceleraciju. Takodje sve sto renderujes u pbuffer mozes da renderujes i u frame buffer. Jedini problem na koji mozes da naidjes je da frame buffer rezolucija ne moze biti dovoljno velika da izrenderujes celu teksturu odjednom, ali je moguce tu teksturu podeliti i onda renderovati deo po deo.


Teksture mesam u posebnom Threadu, tako da ne dolazi u obzir koriscenje Frame buffer-a za to, pbuffer je mnogo bolje resenje.
Ne isplati se koristiti SW OpenGL, trajalo bi nedeljama - neki nasi fajlovi sa mapama imaju i po 30-40 GB tekstura i mesa.

Takodje vec postoji odredjeno SW resenje, samo ga treba obogatiti sa uopstenim trouglovima. Dakle, radi se zapravo o 2D rasterizaciji, bilinearno, nista svetlo i ostalo.

Da, svestan sam da Mesa3D ima SW implementaciju, takodje i razni Open Source engini kao Irrlicht, ali kopati po kodu koji je cesto vrlo uopsten nije uvek efikasno.

Ipak, hvala na interesovanju.
 
Odgovor na temu

[es] :: 3D programiranje :: All about 3D Graphic without DX and oGL

Strane: 1 2

[ Pregleda: 4584 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

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