|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Oct 22, 2007 9:42 pm Post subject: |
|
Veidojas tas, ko tu vēlies. Tiem nav jābūt trijstūriem. Var veidoties punkti, var veidoties līnijas. Var veidoties četrstūri. Var pat veidoties spraiti - kvadāts, kas ir paralēls ekrāna plaknei.
Runa bija jau par to,, ko tas glabā. Nevis kas no tā veidojas. |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Mon Oct 22, 2007 9:50 pm Post subject: |
|
Nezinu kam tu gribi lai es kko pieskaitu...
Man galvaa vieniigaa iedeja buutu apmeeram saada:
Stars sliipi iet cauri tam terrainam (vnk Unprojekteeta kursora poziicija)
un jaaatrod pirmais punkts uz taa stara, kuram attieciigaa Height Value, kas atrodas perpendikulaari zem konkreetaa punkta uz stara, ir >= par attieciigo punkta uz stara attaalumu no 0 punkta |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Oct 22, 2007 9:59 pm Post subject: |
|
Tas jau ir tas, ko tev ieteicu jau pašā sākumā - ceturtajā šī topika postā (fui šņakem par kārtējo topika "offtopiku" - kur ir moderatori?)
Varu vēlreiz. Ja pareizi saprotu... Dotie lielumi:
O = (0,0,0) - koordināšu sistēmas sākumpunkts kameras koordinātēs
M = (mx,my,zNear) - peles kursora projekcija uz near plaknes (arī kameras koordinātēs).
Tos abus var unprojicēt atpakaļ uz world koordinātēm tādējādi izveidojot staru OM (no O uz M un tālāk).
Un vēl tevi ir dots z=f(x,y) - heighmapes funkcija (vai nu realizēta kā masīvs, vai kā savādāk - nav svarīgi).
Vajag atrast tādu P = (px,py,pz), ka punkts P atrodas uz stara OM, un pz=f(px,py), pie tam ja tādi ir vairāki, tad jāizvēlas tas P, kurš atrodas vistuvāk M punktam.
Pareizi? Ja jā, tad tas ir tas, ko teicu ceturtajā postā.
Last edited by bubu on Mon Oct 22, 2007 10:04 pm; edited 2 times in total |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Mon Oct 22, 2007 10:03 pm Post subject: |
|
ko? es jau to neiesāku!
EDIT:
Quote: | O = (0,0,0) - koordināšu sistēmas sākumpunkts kameras koordinātēs
M = (mx,my,zNear) - peles kursora projekcija uz near plaknes (arī kameras koordinātēs).
Tos abus var unprojicēt atpakaļ uz world koordinātēm tādējādi izveidojot staru OM (no O uz M un tālāk).
Un vēl tevi ir dots z=f(x,y) - heighmapes funkcija (vai nu realizēta kā masīvs, vai kā savādāk - nav svarīgi).
Vajag atrast tādu P = (px,py,pz), ka punkts P atrodas uz stara OM, un pz=f(px,py), pie tam ja tādi ir vairāki, tad jāizvēlas tas P, kurš atrodas vistuvāk M punktam. | "vajag atrast" ir tikai puse no darba...
es atkal piedāvāju matricu variantu, kuram būtu 100% jāstrādā, jo viņš darbojas pēc formulas, līdzīgas šai! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle
Last edited by snake5 on Mon Oct 22, 2007 10:16 pm; edited 2 times in total |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Mon Oct 22, 2007 10:14 pm Post subject: |
|
Nu ja.. bubu tas ir tas ko man vajag bet kaa tiesi tam buutu lielos vilcienos jaabuut? (taja linkaa 4ajaa postaa ir tikai summarys, a kur pats papiirs? Oo) |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Mon Oct 22, 2007 10:32 pm Post subject: |
|
Vai man ciklaa ar noteiktu intervaalu jaatestee vai konkreetais stara puntkts ir <= attieciigaa augstuma veertiiba terrainam? Nerunaajot par to ka sampljosana vienmeer ir leens "prieks" veel piedevaam preciizaaks rezultaats -> vairaak samplji -> leenaak.. ok pameegginaasu kaa tas straadaa... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Oct 22, 2007 10:39 pm Post subject: |
|
Nezinu :) Izskatās, ka "Graphics Gems" grāmatā.
Paņem novelc NewtonSDK: http://www.newtondynamics.com/downloads.html
Tur vari apskatīt sourci zem samples/common/HeightFieldCollision.cpp failā metode UserMeshCollisionRayHitCallback.
Tajā ir tas stars uzdots ar diviem punktiem rayDesc->m_p0 un rayDesc->m_p1. Tur ir do cikls, kurā notiek tā meklēšana tiek atgriezta t vērtība, pēc kuras var izrēķināt vajadzīgo augstumu y = p0.y + (p1.y-p0.y)*t. Tur heightmaps ir ar y koordinātu vertikāli.
Pats algoritms ir diezgan vienkāršs - ļoti līdzīgs izmantotajam ray-casting'am Wolfenstein 3D spēlē. Tiek meklēta sadursme "ejot" pa rūtiņām. Katra rūtiņa tur tiek aproksimēta ar diviem trijstūriem, kuriem tad arī meklē sadursmi (parasts trijstūris/stars tests).
Reku te 2D ilustrācijas: http://www.permadi.com/tutorial/raycast/rayc7.html
http://student.kuleuven.be/~m0216922/CG/raycasting.html
Tur tik vajag
Code: | if (worldMap[mapX][mapY] > 0) hit = 1; | vietā likt meklēt sadursmi starp sākotnējo staru un augstumu rūtiņā [mapX][mapY].
Storm wrote: | Vai man ciklaa ar noteiktu intervaalu jaatestee vai konkreetais stara puntkts ir <= attieciigaa augstuma veertiiba terrainam? |
Jā, tieši tā jādara. Lai sampļošanu panāktu ātrāku, kā jau sākumā minēju - vajadzēs lietot QuadTree (vai kādu līdzīgu koka struktūru). Tajā glabāsi augstuma vērtības nevis katrai rūtiņai, bet gan arī lielākiem reģioniem tādējādi efektīvi tos izlaižot, ja sadursmes tajā nenotiek. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Tue Oct 23, 2007 10:33 am Post subject: |
|
lookAt this -> http://yy.lv/download.php?f=75808
haha ar matricām, kā jau solīju!
visi klusi... _________________ "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: Tue Oct 23, 2007 11:53 am Post subject: |
|
Šī programma laikam ir the best, kas ir redzēts kopš Edija rotējošā kuba laikiem.
Trijsūris ar mirgojošu punktiņu?! Un ar matricām, tu tik padomā! Kuram, pie tam, nav nekāda sakara ar Storm jautājumiem :) |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Tue Oct 23, 2007 11:59 am Post subject: |
|
Nu es uztaisiiju... ^^ Interesanti ka nemaz nevar iisti saprast kurs vai tas ietekmee performaci vispaar (kameer vien nelietoju pirmeeram 0.001f precizitaati... ) Taakaa viena terraina quada (2trijsuuri) platums ir 4f un uz siem trijstuuriem attieciigais splat-maps ir 4x4 -> 1f katram punktam tad man pilniigi pietiek ar precizitaati, piemeeram 0.5f |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Tue Oct 23, 2007 12:13 pm Post subject: |
|
bubu wrote: | Šī programma laikam ir the best, kas ir redzēts kopš Edija rotējošā kuba laikiem.
Trijsūris ar mirgojošu punktiņu?! Un ar matricām, tu tik padomā! Kuram, pie tam, nav nekāda sakara ar Storm jautājumiem |
tu nesaproti, kas tas ir? tas pārbauda, vai peles kursora attālums līdz 3d punktam, kuru ar matricām pārvērš 2d koordinātēs, ir mazāks par noteiktu skaitli! kodu apskatītos, tad redzētu! un sakars tur liels! katru vertexu šitā pārbaudīt ir ātri, it īpaši tad, ja rezultātus saglabā un maina tikai ar view matricas mainīšanu! _________________ "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: Tue Oct 23, 2007 12:33 pm Post subject: |
|
Kodu es paskatījos, tad arī tikai sapratu, ka tur punkts uz ekrāna mirgo. Citādi, bez neskatīšanās, nekā nesapratu. Bet kods bij liela miskaste, lai saprastu kautko vairāk par to, ka punkts mirgo.
Bet pasaki kāds sakars ir tavam "piemēram" ar to, ko Storm'am vajadzēja? Viņam nav nekādu virsotņu/trijstūru, vismaz tad, kad grib krustpuntu ar terrainu atrast. Trijstūri ir tikai zīmējot, kam ar krustpunkta atrašanu nav nekāda sakara. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Tue Oct 23, 2007 2:30 pm Post subject: |
|
bubu wrote: | Kodu es paskatījos, tad arī tikai sapratu, ka tur punkts uz ekrāna mirgo. Citādi, bez neskatīšanās, nekā nesapratu. Bet kods bij liela miskaste, lai saprastu kautko vairāk par to, ka punkts mirgo.
Bet pasaki kāds sakars ir tavam "piemēram" ar to, ko Storm'am vajadzēja? Viņam nav nekādu virsotņu/trijstūru, vismaz tad, kad grib krustpuntu ar terrainu atrast. Trijstūri ir tikai zīmējot, kam ar krustpunkta atrašanu nav nekāda sakara. | es to 3stūri vnk tāpat atstāju! drīz salabošu projekciju un rotāciju pielikšu 3stūrim, un tad tas punkts būs visu laiku turpat, kur 3stūra vertexis
ai labi, kāda s*da pēc es te cenšos, nevajag - nevajag, paši vainīgi
vienīgais, kas man atlicis lai darbu pabeigtu bija pilnībā izprast direct3d matricu transformācijas, lai es varētu salabot dažas kļūdas!
ja kādu interesē mana ideja, tad pasviediet linku par direct3d matricu transformācijām! pēc kāda laika būšu ->TE<- _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
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
|