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

Par kursora poziiciju uz terraina
Goto page Previous  1, 2
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: 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
View user's profile
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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... Very Happy
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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 Smile

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
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page Previous  1, 2
Page 2 of 2

 
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