dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Visibility & Lighting techniques.

 
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija
View previous topic :: View next topic  
Author Message
BHC
Guest





PostPosted: Tue Jun 01, 2004 10:30 pm    Post subject: Visibility & Lighting techniques.

Pirms eju līst iekšā ārzemju forumos gribu šo uzjautāt vietējiem gd cilvēkiem.
Gribētu dzirdēt vairāk - mazāk pieredzējušu lv 3d programmētāju viedokli, ieteikumus par occlusion culling (redzamo objektu atlase aka VISibility) indoor tipa pirmās personas spēles dzinējam.
Noteikti morpheus būs sastapies ar zemu freim'reitu lielās kartēs ar kompleksu ģeometriju. Kā tu atdalīji redzamos objektus no neredzamajiem(pārklātajiem)? Vai arī sadalīji visus objektus sektoros un grupās(tas ir, ja iet runa par indoor)?
PS, kādā veidā labāk uztaisīt vienkāršu apgaismojumu un ēnas? Lightmapping (izmantots ala kveikā), vertex lighting vai garaud shading?
Gribētos dinamisko apgaismojumu, kurš tiktu renderēts un veidots on the fly.
GiGa, kādā veidā DogFligh'tā tu realizēji apgaismojumu?
Būtu priecīgs par vienkāršiem apgaismojuma sempļiem iekš tā OpenGL.
Tās nu būtu tās divi svarīgākie jautājumi dzinēja izstrādē un ātrdarbībā.
Jūsu viedoklis un ieteikumi velkomēti.
Back to top
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Tue Jun 01, 2004 10:54 pm    Post subject:

Sveiks, BHC

nu par to kaa es dabuuju apgaismojumu DogFight'aa - pac elementaraakais un laikam leenaakais panjeemiens - vienkaarshi GL_LIGHTING ar pervertex normaaljiem. Buutiibaa, ja mees to klasificeetu tad tas buutu dinamisks, jo tika "paarreekinaats" katru kadru, bet reaali tas mainiits netika, vispaar iesaku ta labaak terrainiem nedariit :)

Par occlusion culling (un vispaar visibility culling) -> pats gan ar indoor neesmu iipashi njeemies, bet manliekas vislabaakais variants buutu BSP tree ar portaaliem starp nodeem. Pa'searcho, lielaakaa dalja linku buus labaaki nekaa es tev speeshu paskaidrot.

Nu ja tu gribi dinamisko apgaismojumu ar eenaam tad tev ir divas izveeles - stencil shadows, manupraat labaakais variants, jo laikam ir aatraaks. Un lightmappings (iisti nezinu kaa tas straadaa). Par gaismu pashu - ja taisi vecaakaam video karteem tad vaidzees iztikt ar to pashu OpenGL lighting, un nav nemaz vinshs tik slikts iisteniibaa. Bet es gan ieteiktu pixel vai vismaz vertex shaderus, jo tie noteikti izskatiisies labaak un ir pat iespeejams tos nooptimizeet taa, ka tie ir aatraaki par fixed pipeline lightingu.

Ko izveeleeties dynamic lighting vai static? kaa buutu ar gudru apvienojumu? Painkiller ir gan tas gan tas un izskataas fantastiski Smile turklaat diezgan aatri arii...

Apgaismojuma semplji ieksh OGL ? Nekas sarezgiits tur nav - glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0) (uz visiem kompiem liidz LIGHT7, daziem arii vairaak)

glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);

visi shie ir gaismas iipashiibu reguleejoshi mainiigie, visi 4 ir pointeri uz 4 floatiem (rgba)

glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, xxx);

viens float kas regulee gaismas konusu - xxx- float graados, puse no konusa

glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction); pointers un 3 floatiem - konusa virziens

glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, xxx);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, xxx);
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, xxx);

xxx-1float shie regulee kaa attalinoties no gaismas ta paliks vaajaaka...

Nu karo4 jaazin tur daudz, bet iisteniibaa viss ir elementaari ie4eko http://fly.cc.fer.hr/~unreal/theredbook/
_________________
Back to top
View user's profile Send e-mail
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Wed Jun 02, 2004 8:41 pm    Post subject:

BHC:

1)VISIBILITY
Skaidriibas labad tev ir jaaklasificee sceenas sastaavs, t.i.
statiskaa geometrija, dinamiskie objekti, utt.
FPS statiskajai geometrijai visefektiivaak ir izmantot BSP, bet var arii kaut ko vienkaarsaaku.
Dinamiskie objekti tiek sorteeti jau atkariibaa no citiem aspektiem - renderinga principa/koliiziju algoritma/utt.
pavisam vienkaarss variants ir salikt objektus(vai poligonus) ieksh octree.

2)LIGHTING
visvienkaarsaak ir standarta gl apgaismojums Wink
otrs variants: lightmapings - ir neskaitaami toolji kas tava vietaa generees laightmapu, un sliktaakajaa gadiijumaa tu vari laightmapu uztaissit ar 3dsmax (render to texture!). Rakstiit pasam savu radiocity solveri ir aarpaatiigs darbs!
Dinamiskais apgaismojums..hmm...ja vien tu neesi rados ar J.Karmaku iesaku par to aizmirst. Vismaz par 100% dinamisku apgaismojumu.

GIGA:
1) SHADOWS (STENCIL vs. DEPTH BUFFER SHADOWS)
abas ir dinamiskas, un nevar apgalvot ka viena metode ir aatraaka par otru. Stencil shadows prassiis papildus informaaciju modelii - (conectivity) kas var palielinaat modela trijstuuru skatu aptuveni triis rezes taapeec vajadzees viltiigu veidu kaa uzbuuveet modeli. Depth map shadows savukaart neprasa nekaadu papildu infu ieksh geometrijas un tu vari veidot eenas no jebkura modela.

2) DYNAMIC LIGHT
jap, tev taisniiba, var to lietu apvienot ar statisko gaismu. Piem: saakumaa karti uzrendereet ar laightmapaam un tad vietaam uzkabinaat dinamisku gaismu. Varianti ir daudz!

un vispaar kad es savulaik par to intereseejos man sakraajaas sameeraa daudz tutoriaalu/samplju/docu par teemu (ap 100mb Wink), arii par dinamisko apgaismojumu un vecajiem labajiem GeForce Combineriem. Taa kaa ja interesee varu padaliities un vispaar ja to vissu atsortee vareetu kaut kur onlainaa nolikt, mosh kaadam noder.

--------------------------------------------------------------------------
finaalaa: iesaku izmantot gatavus dzinjus, speelei ir tik daudz dazaadaas lietas kas ir jaauztaisa ka veel tasiit pasam savu apgaismojumu/modelu loadingu/uc. staffu ir vienkaarsi bezjeedziigi!
Back to top
View user's profile Send e-mail Visit poster's website
chaosman



Joined: 28 Oct 2003
Posts: 64
Location: Rīga

PostPosted: Wed Jun 02, 2004 11:18 pm    Post subject:

Varu padaliities tiiri teoreetiskaa pieredzee, riskeejot kaut ko samuldeet (shis tomeer nav mans laucinjss Smile )

BSP / Octrees is da best. bez tiem laikam neiztikt (veel ir kaukkaads PVS -potentially visible set, ko it kaa var lieto BSP vietaa vai kopaa ar to)
Sektori - nu nez. Neesmu paarliecinaats, ka tie ir obligaati, var buut taapat vareesi iztikt un buus pietiekoshi augsts FPS. Sektorui -> papildus kjeepa implementeet + kaada veidaa tu taisies vinjus defineet kartes failaa? Ja karte tiek taisiita ar WOldcraft vai 3DS, tad visticamaak vajadzees noteikt sektoru robezhas manuaali. Kas savukaart ir papildus kjeepa cilveekam, kurs taisiis mapu.

Gaismoshana - ja jaaizveelaas starp vertex lightning un lightmapiem, tad noteikti lightmapus. Vairrak nemaacheshu pateikt, bet droshi vien dinamiskajam apgaismojumam ir citas, labaakas metodes.
Vismaz no ideologijas viedoklja ir veerts izmantot sheiderus un meerkeet uz merkeet uz auditoriju ar GeForce3 + liimenja karteem.

P.S. Laba teema. Vajadzeetu te taadu vairaak.

P.P.S Apsveicu visus ar vasaras saakshanos! Wink
Back to top
View user's profile
BHC
Guest





PostPosted: Thu Jun 03, 2004 2:20 pm    Post subject:

Lielu lielais paldies visiem par ieteikumiem.
Jā, tas tiešām būtu ļoti labi padalīties ar saviem uzkrātajiem e-bookiem un manuāļiem, noliekot šos online. Tā tas ir, ka lightmapi gan ir pārāk lēni, lai tos ģenerētu real time. Darīšu tā, kā Hobits un Giga ieteica, iedalīšu scēnas objektus ar statisko un dinamisko apgaismojumu grupās.

Sadalīšana sektoros ir primitīvs veids, kā atdalīt redzamos objektus no neredzamajiem. Respektīvi, ir indoor fps, kur visas istabas, zāles, telpas atzīmē kā sektorus. Tātad, zīmē tikai to sektoru, kurā tu atrodies, pilnīgi ignorējot pārējo. Toties tādā gadījumā līmeņu arhitektūra ir ierobežota, kā arī jābūt no sektora uz sektora atdalītājtelpai. Un līmeņu designeris ir creatīvi ierobežots. (bet programmētājam... nav jātaisa algoritms, kas precīzi nosaka OC Wink , un, btw, sektoru metode darbojās daudz ātrāk).

Un ģeometrijas grupēšana aizsedzējos paātrina culling darbību, jo, piemēram, ļoti labi izdetalizētu PC modeli mums būs ātrāk pārbaudīt nosakot, vai viss PC aizsedz kādu objektu(pieņemot PC formu kā vienu vai vairākas četrstūra prizmas), nevis pārbaudīt visus ģeometriskos ķermeņus, kas veido to(iedomājies, pārbaudīt katru klāvas pogu Laughing ).

Domāju izmantot BSP/octree.

Šī ir viena no svarīgākajām tēmām, kas ļoti iespaido ātrdarbību, tādēļ tai ir jābūt kārtīgi izskatītai.
Back to top
Display posts from previous:   
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group