View previous topic :: View next topic |
Author |
Message |
Storm
Joined: 11 Apr 2006 Posts: 742
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Aug 10, 2007 11:10 am Post subject: |
|
Kas tur jāzin? Vienkāršs dubults cikls - tb divi cikli viens iekš otra (vienu par X, otru pa Y asi), kurā iekšā ģenerē indeksa bufera daļu priekš vienas mazās šūnas.
A kā precīzi to uzģenerēt var pateikt tikai tad, kad zin kādā kārtībā tev virsotnes ir saliktas vertex bufferī.
Vispārīgā gadījumā:
vertex buferis:
index buferis: |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Fri Aug 10, 2007 11:34 am Post subject: |
|
Tur taa probleema kaa dabuut rokaa pareizo vertexi. Man vertex buferii ir visas rindas peec kaartas. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Aug 10, 2007 12:13 pm Post subject: |
|
Nu ja A vertexim ir pozīcija X vertex bufferī, un vienā rindā ir W vertexi, un rindas iet no apakšas uz augšu, tad jau elementāri:
B verteksis = X + 1
C vertexis = X + W
D vertexis = X + W + W-1
E vertexis = X + W + W-1 + 1
Parasti jau 2d masīvs tiek realizēts datorā kā 1d row-major masīvs: http://en.wikipedia.org/wiki/Array#Multi-dimensional_arrays |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Fri Aug 10, 2007 1:05 pm Post subject: |
|
Nu jaa, bet tas ko tu paraadi ir masiivam kam elementu skaits rindaa nemainaas. Krustinju gridam vinaa rindaa ir X elementi, otraa X-1 Un, jaa, es lietoju 1D masiivu (bez shaubaam xD) Es meeginaasu kaut kaa sadabuut ciklaa to elementu skaita "switchosanos"... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Aug 10, 2007 1:53 pm Post subject: |
|
Edit: ŠIS POSTS IR AR NEPAREIZĀM FORMULĀM. Pareizas ir nākamajā postā
Kāpēc W-1 nevis W/2. Jo es tagad tā padomāju, ka man bij nepareizi - arī kautkādu mistisku W-1 izraku. Pareizās formulas ir šādas:
B verteksis = X + 1
C vertexis = X + W
D vertexis = X + W + W/2
E vertexis = X + W + W/2 + 1
Skaties:
Piemēram - C verteksis ir nākamjā rindā no A verekša, un A rindā ir W elementi. Tāpēc C = A + W.
Taču D verteksis ir aiznākamjā rindā no A vertekša, tāpēc ir jāpieskaita A rindā esošie verekši - W, un aiznākamajā rindā esošie vertekši - W/2. Kopā: D = A + W + W/2.
utt..
Ja vēl joprojām netici. Tad paņem mazu piemēru:
Code: | 6 7 8 9
4 5
0 1 2 3 |
Tādā kārtībā tev tie vertekši ir vertex buferī, vai ne? Tātad W=4.
Tātad, lai uzzīmētu pirmo rūtiņu, pēc manām formulām iznāk:
A = 0
B = A+1 = 0+1 = 1
C = A+W = 0+4 = 4
D = A+W+W/2 = 0+4+2 = 6
E = A+W+W/2+1 = 0+4+2+1 = 7
Indeks buferis: ABC BEC EDC DAC = 014 174 764 604. Ir pareizi?
Last edited by bubu on Fri Aug 10, 2007 2:05 pm; edited 1 time in total |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Aug 10, 2007 2:04 pm Post subject: |
|
Ai tas viss ir nepareizi. Tas strādā tikai pirmajai rūtiņai rindā..
Pavisam pareizās formulas ir šādas :)
A verteksis = Y + 2*X
B verteksis = Y + 2*X + 1
C vertexis = Y + W + X
D vertexis = Y + W + W/2 + 2*X
E vertexis = Y + W + W/2 + 2*X + 1
Kur Y un X ir rūtiņas numurs attiecīgi pa vertikāli un horizontāli.
Piemērs:
Code: | 9 10 11 12 13 14
6 7 8
0 1 2 3 4 5 |
W=6.
Tātad, lai uzzīmētu trešo rūtiņu, pēc manām formulām iznāk (X=2, Y=0):
A = Y+2*X=0+4=4
B = Y+2*X+1=0+4+1=5
C = Y+W+X=0+6+2=8
D = Y+W+W/2+2*X=0+6+3+4=13
E = Y+W+W/2+2*X+1=0+6+3+4+1=14
Galvenais ir ir izmantot faktu, ka pāra rindā (tur kur ir rūtiņas apakšējā mala ar A un B verteksu), nākamās rindas sākums ir +W, bet aiznākamās +W+W/2. |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Fri Aug 10, 2007 4:27 pm Post subject: |
|
Paldies jau atkal visu varenajam bubu Paldies ka ziedoji savu laiku
|
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Tue Aug 14, 2007 9:09 pm Post subject: |
|
Kaa pareizi vajadzeetu reekinaat normaaljus shaadam gridam? Ar vnk gridu man izdevaas uzrakstiit loti labu genereeshanas algoritmu, bet kkaa neizdodas piemerot vinju shaadam "variantam"... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Tue Aug 14, 2007 9:58 pm Post subject: |
|
Normāli tev jārēķina tieši tāpat kā jebkurai citai plankei: N = norm(A) x norm(B), kur A un B ir jebkuri divi nesakrītoši vektori dotajā plaknē, un x apzīmē vektoriālo reizinājumu, un norm(Y) atgriež normalizētu vektoru no Y vektora.
Tavā gadījumā pilnīgi pietiek par A paņemt vienu režģa malu, bet par B otru režģa malu. |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Tue Aug 14, 2007 11:52 pm Post subject: |
|
patiesiibaa vins nav rezgis bet tur ir vesels grids ar rezgiem un turklaat ar height map'u (bildee tas nav iesleegts vnk) |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Aug 15, 2007 12:02 am Post subject: |
|
Tādas aizdomas man jau bij, par to height mapu. Pats nesen taisīju liela terraina renderēšanu no heightmapa. Un tavi jautājumi dikti līdzīgi izkalausījās tiem pašiem, par kuriem es biju jau domājis kādu laiciņu atpakaļ.
A par normālēm priekš heightmapa - ja tu negribi asas pārejas uz poligoniem, tad katrai virsotnei sasummē visas normāles kopā, kuras dod katrs trijstūris, kuram šī virsotne pieder. Un tad izdali rezultējošo vektoru ar summēto normāļu skaitu. Gan jau tu šo "fīču" zināji, bet nu gan kādam citam varbūt noderēs, lasot šo topiku. |
|
Back to top |
|
|
|