|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Wed Jun 30, 2010 10:49 am Post subject: Lightmaps uzklāšana |
|
Vai ir kādas OpenGL bibliotēkas, kas ļautu esošā kodā piekabināt pāris rindiņas, lai palaižot programmu (spēli), uz tekstūrām būtu izrēķinātas Lightmaps?
Skatos, ka labāk ēnu iedot tikai personāžiem un dinamiskiem objektiem, citādi viss izskatās pretīgi ar esošiem parametriem. Var pietvīkot, bet tad jāsamazina konusa gaismas kūli prožektora gaismai. Un beigās sanāk nereāli. Bet meklēt atkal kādu dzini, nu nē.
Viss pārējais jau paliek. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Jun 30, 2010 11:51 am Post subject: |
|
Tāda bibliotēka nav iespējama.
Jo savā kodā objektus renderēt (kā datus padot CPU->GPU) ar OpenGL var ļoti daudz dažādos visneiedomajākos veidos. Tāpēc tāda bibliotēka nevar eksistēt, jo tā nevar paredzēt miljons un vienu renderēšanas veidu. Tā būs ne tikai nefleksibla, bet arī liela un monstrīga.
Lightmapi jau eksistējošam renderēšanas kodam var pielikt ļoti vienkārši, īpaši ja lieto šeiderus. Dabū tekseli no lightmapes un pareizini ar esošā pikseļa sampļa vērtību vienkāršākājā gadījumā (tik 2 operācijas!). FF-paiplainam bik vairāk koda, bet arī ne-īpaši sarežģītāk. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Jun 30, 2010 12:31 pm Post subject: |
|
Lightmapju renderēšana ir offline process. Lietoto algoritmu dēļ uz spēlētāja datora tas nenotiek parasti.
Bet nu princips sasodīti vienkāršs. Vari uztaisīt savu pats. Tā kā tev viss uz meshiem bāzēts, modelēšanas rīkā uztaisi otro tekstūru koordinātu kanālu, kurā katram trijstūrim ir sava vieta un vēlams, lai savienotie trijstūri paliek savienoti, vismaz tie, starp kuriem leņķis nav ass. Tad vari uztaisīt aprēķināšanu pirmajā palaišanas reizē, atstājot aprēķinātās lightmapes kopā ar spēli, kad dosi to spēlētājiem. Paši aprēķini ir vēl vienkāršāki. Katram lightmapes tekselim atrodi tā pozīciju līmenī, ieraksti tur ambient'o krāsu un ar katru gaismu...{ paņem tās krāsu (floating point vektora izskatā), piereizini stipruma faktoru pēc attenuation funkcijas, un, ja rezultāts iznāk lielāks par 0, tad uztaisi raycastu no tekseļa pozīcijas līmenī pret visiem meshiem (ieskaitot šo), piereizini ēnas faktoru un pieskaiti gaismas krāsu lightmapē esošajai krāsai. }
Ja plāno lietot lightmapes, kurās ir gaismas stiprākas par 1.0f kādā no kanāliem, dali beigās visu ar 4 vai 2, zīmējot lightmapes krāsu reizini ar 4 (vai 2), ja šeideri lieto, vai lieto atbilstošo iespēju FFP uzstādījumos. Ar Direct3D tas bija texture stage state - D3DTOP_MODULATE4x parastā D3DTOP_MODULATE vietā... ar OpenGL būtu jābut kaut kam līdzīgam. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Jun 30, 2010 12:48 pm Post subject: |
|
Es sapratu, ka viņš grib pielietot tās, nevis ģenerēt... |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Wed Jun 30, 2010 12:50 pm Post subject: |
|
snake5 wrote: | Lightmapju renderēšana ir offline process....... Lietoto algoritmu dēļ uz spēlētāja datora tas nenotiek parasti.......... Tad vari uztaisīt aprēķināšanu pirmajā palaišanas reizē, atstājot aprēķinātās lightmapes kopā ar spēli, kad dosi to spēlētājiem. |
Sāksim no sākuma labāk.
Tā ir offline spēle, singleplayer.
Palaižam spēli. Tiek ielādēts menu, paskraidam pa menu, spiežam play.
Te kaut kāds raytracing funktieris izrēķina no gaismām raidītos starus, sabliež kopā ar esošo tekstūras pixeli, ko atrod savā kolīzijas galā un viss.
Kaut kas līdzīgs bija uz DirectX SDK, kur tās grieķu kolonnas. Tur arī tika izrēķināts. Bet kvalitāte bija apšaubāma un tas nav lightmaps, bet gan kaut kāds radiance, fig zin. Izrēķināt es varu tepat mājās uz sava superdatora un iedot beigās gatavo failu.
Bet nu, negribu visu sarežģīt un zem saules nav nekā jauna, noteikti ir vienkāršāk viss darāms. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Jun 30, 2010 1:56 pm Post subject: |
|
bubu:
EDDY wrote: | ...lai palaižot programmu (spēli), uz tekstūrām būtu izrēķinātas Lightmaps? |
EDDY: Tiešām, nevajag visu sarežģīt. Es visu izstāstīju. Ja vajag radiosity lightmapes, tad ir pietiekami daudz pamācību.
Tas PRT rēķinās tiešām lēni un lightmapes gluži nedod. Ja nekļūdos, tur tika subdivide lietots un vertex'u krāsas mainītas.
Ar Offline procesu domāju to, ka tas nenotiek realtime. Tik ilgs, ka spēlētājam apniks gaidīt.
P.S. Vēl viens sīkums, ko aizmirsu pateikt - svarīgi lietojot meshus ir tas, ka lightmapes nosaukums satur gan līmeņa nosaukumu, gan mesh'a nosaukumu, gan tā indeksu (vieta spēles meshu masīvā / unikāls nemainīgs ID / ...). _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Wed Jun 30, 2010 2:09 pm Post subject: |
|
modelēšanas rīkā uztaisi otro tekstūru koordinātu kanālu, kurā katram trijstūrim ir sava vieta un vēlams, lai savienotie trijstūri paliek savienoti, vismaz tie, starp kuriem leņķis nav ass.
Šis nu tiešām viegli izklausās. .... _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Jun 30, 2010 2:21 pm Post subject: |
|
3DS Max 9:
Unwrap -> Map channel: 2 -> Edit -> iezīmējam visus daudzstūrus -> Flatten Mapping.
Sarežģīti gan. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Jun 30, 2010 3:03 pm Post subject: |
|
Ah rēķināt vajag tomēr.
Tad toč ar dažām koda rindām neko tur nepāksi. |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Wed Jun 30, 2010 3:06 pm Post subject: |
|
snake5 wrote: | Sarežģīti gan. |
Un? Man nevajag/negribās veidot/glabāt atsevišķas lightmapes. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Jun 30, 2010 3:14 pm Post subject: |
|
Nu tad liec visu apgaismojuma informāciju vienā. Tikai pašam grūtāk būs strādāt ar tādu. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Wed Jun 30, 2010 3:24 pm Post subject: |
|
Redz, daudzu objektu UV kartes izklājums ir cube ar vienādu malu garumu.
Negribās tagad ķēpāties un mēģināt pārtaisīt. Lai gan, protams, spēlei būs pavisam citi 3D objekti. Pašlaik tikai tāds tech-demo.
Es tik domāju, vai ir tāda iespēja pēc raytracing metodes.
Nu nez, varbūt tiešām multitexturing un melnbaltās ēnas pa virsu. Bet atkal, tikko kāds objekts mainās, tā neko vairs .... visu pa jaunam.
Tāpēc programmai pašai sākumā jāizrēķina lightmaps un jāieglabā vajadzīgā vietā. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
gazz
Joined: 03 Jan 2004 Posts: 355 Location: Teika
|
Posted: Thu Jul 01, 2010 3:38 am Post subject: |
|
ignorance is bliss |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Thu Jul 01, 2010 8:07 am Post subject: |
|
Laikam risinājums kā vienmēr nav. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Jul 01, 2010 8:55 am Post subject: |
|
Risinājums vienmēr ir. Nav tikai universāla risinājuma, kas der jebkur un jebkam. Katram konkrētajam gadījumam uzrakstīt lightmapju ģenerēšanu vinemēr var.
Nezinu, cik labs, bet vari pamēģināt irrEdit, kas ģenerē radiosity lightmapes. Ja šis tavu līmeni mācēs ielādēt, tad varēsi uzģenerēt lightmapes. |
|
Back to top |
|
|
|
|
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
|