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

Koku ģenerēšana
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> OpenGL
View previous topic :: View next topic  
Author Message
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Tue Mar 22, 2005 5:47 pm    Post subject: Koku ģenerēšana

Te atkal sāku taisīt savu koku projektu. Nolēmu pamēģināt uztaisīt tādu brīnumu kā lightmaps (uz koka).
Taisīju bez multiteksturēšanas, bet ar glBlendFunc(). Redzu šādu lietu - kaut kādi balti plankumi zem zariem. Uz gaismas tekstūras tajā vietā ir balta krāsa (ja cita - attiecīgi mainās plankumi). Redzami tikai no tālienes, tuvāk pieejot kļūst arvien mazāki un pārvēršas par gandrīz nepamanāmiem punktiņiem uz robežas, kur zars ieiet stumbrā. Starp citu, aizsūtīju vienam biedram paskatīties, un viņam viss esot kārtībā - bet man taču plankumi ir redzami!


Last edited by Lāčblēdis on Fri Mar 25, 2005 9:26 pm; edited 3 times in total
Back to top
View user's profile
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Tue Mar 22, 2005 6:10 pm    Post subject:

Hmm, varbuut vari paraadiit pashas textuuras? Tu izmanto mipmapingu?
_________________
Back to top
View user's profile Send e-mail
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Tue Mar 22, 2005 11:29 pm    Post subject:

Mipmapus izmantoju gan, un nekas nemainās, ja neizmantoju. Kāpēc tev vajag tekstūru? Tāpat tās neizskatās pārāk labi - taisīju Peintā.
Back to top
View user's profile
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Tue Mar 22, 2005 11:39 pm    Post subject:

Ne jau man vaig to textuuru Smile redzot to vienkaarshi buutu vieglaak saprast, kas vareetu buut pa lietu. Ljoti diivaini, ka tas ir tikai uz tava kompja... un ja lietas nemainaas izmantojot/neizmantojot mipmapus ir veel diivainaak... nu neredzot neko vairaak es tev paliidzeet nevaru.
_________________
Back to top
View user's profile Send e-mail
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Tue Mar 22, 2005 11:53 pm    Post subject:

Vai tad gluBuild2DMipMaps neizsauc tās pašas glTexture2f()?
Miza (pagriezta, lai ieietu ekrānā):

Ēna:


Code:

glDepthFunc(GL_LEQUAL);
glEnable(GL_BLEND);
glBindTexture(GL_TEXTURE_2D,miza);
glBlendFunc(GL_ONE,GL_ZERO);
...
//zīmē ar mizas koordinātām
...
glBindTexture(GL_TEXTURE_2D,ena);
glBlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
...
//zīmē ar ēnas koordinātām
...

Varbūt es kaut ko aizmirsu.
Back to top
View user's profile
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Wed Mar 23, 2005 12:37 am    Post subject:

Nepateikshu neko par tavu konkreeto probleemu, bet te ir tas kas man salikaas savaadi no koda:

1) Kaapeec pirmajaa passaa (mizas ttx) tiek setots blendings? Ja koks nav caurspiidiigs tad blendingu var izsleegt.

2) Otrajaa passaa, kur lightmape, blendinga faktori ir stipri jociigi un manupraat viniem vispaar nevajadzeetu darboties. Rezultaata blendinga eq. sanaak aptuveni taada = Sc*D+Dc*S . Kas noved pie taa ka tur kur lightmapee ir 1.0 (balts) rezultaataa arii uz koka buus balts tonis.

Parasti pie laightmapeem izmanto reizinaashnas op. glBlendFunc(GL_DST_COLOR, GL_ZERO);

Mans variants:
Code:

glDepthFunc(GL_LEQUAL);
glBindTexture(GL_TEXTURE_2D,miza);
...
//zīmē ar mizas koordinātām

glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR, GL_ZERO);
glBindTexture(GL_TEXTURE_2D,ena);
...
//zīmē ar ēnas koordinātām
...
glDisable(GL_BLEND);
Back to top
View user's profile Send e-mail Visit poster's website
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Wed Mar 23, 2005 1:03 am    Post subject:

Paldies par padomu, rīt pamēģināšu.
Back to top
View user's profile
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Wed Mar 23, 2005 4:28 pm    Post subject:

Ko lai dara, mēģināju visus variantus ar glBlendFunc parametriem. Patiešām, tagad labāk. Mani bija samulsinājis tas, ka baltumi pakāpeniski samazinās, ejot klāt pie koka.

Burvju mežs, kurā ēnas kokiem krīt no dažādām pusēm.
Back to top
View user's profile
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Wed Mar 23, 2005 11:16 pm    Post subject:

Vienmeer ir interesanti apskatiities uz proceduraali rendereetaam lietaam :)

Tikai, hmm kaut kaa shausmiigi nedabiigi izskataas. Kaa tu gjeneree tos zarus?

Hopsaa, man tiko radaas ideja kaa to vareetu izdariit ar rekursiivu rendereeshanu.
Kaut kaa taa:
Code:

1) Uztaisam f-ciju kas renderee cilindru - tas buus zara segments. Funkcijas parametri vareetu buut, teiksim, sekojoshi:
- cilindra saakumpunkts
- segmenta virziens
- segmenta(cilindra) garums
- apaksheejaa gala diametrs
- augsheejaa gala diametrs

tb. rezultaataa ir kaut kas taads:

void RenderBranchSegmet(Vector3 pos,
                  Vector3 dir,
                  float   len,
                  float   d1,
                  float   d2);

2)Taa, tagad tikai jaaizdomaa rekursiivaa funkcija.
Hmm, teiksim ja saak ziimeet no koka pamata un tad virzaas uz augshu katraa naakamajaa posmaa veicot divu jaunu zaru ataudzeeshanu, labi,  vienkaarshiibas labad vareetu dariit taa ka katraa naakamajaa posmaa zars tiek daliits uz divi un virziens visulaiku tiek saglabaats 45 graadu lenkjii taa ka veidosies aptuveni sekojosha bilde:

             
             
      \      /   \      /
        \  /       \  /
          \         /
            \     /
              \ /
               |
               |
               |
               |
(ascii maaxla:p)


Taatad , paproveeshu uzrakstiit kodu uz aatru roku:

   void RenderRecursiveBranch(Vector3 pos, Vector3 dir, float len, float r, int depth)
   {

      //ziimeejam zara segmentu
      //katraa naakamajaa posmaa zara resnums tiek reizinaats ar 0.8
      RenderBranchSegment(pos, dir, len, r, r*0.8);

      //maksimaalais atzarojumu skaits - 4
      if(depth<4)
      {

         Vector3 end_pos = pos+(dir*len);

         //ataudzeejam divus zarus, viena virziens buus 45 graadi, otrs buus simetrisks un iet 135 graados
         RenderRecursiveBranch(end_pos, Vector3(0.707,0.707,0), len*0.6, r*0.8, depth+1);
         //ots zars: 135 graadu lenkjii
         RenderRecursiveBranch(end_pos, Vector3(-0.707,0.707,0), len*0.6, r*0.8, depth+1);
         //segmenta garums katraa naakamajaa posmaa tiek reizinaats ar 0.6
         //resnums joprojaam samazinaas reizinot ar 0.8
      }    
   }

Cerams neko nepalaidu garaam.

//Izsaucot shito visam vajadzeetu rulleet:
RenderRecursiveBranch(Vector3(0,0,0), Vector3(0,1,0), 100, 30, 0);

Un buutiibaa lai ieguutu nedaudz dabiskaaku izskatu var pieskilt nedaudz randomizaacijas, piem. mainot zaru virzienu, vai varieejot ataudzeejamo zaru skaitu katraa naakamajaa posmaa. Variabljus var piesaistiit afigenna daudz. Var njemt veeraa kaut veeja virzienu un speeku, utt. :)

Vispaar toch baigi aizraujosha padariishana, gribeetos kaadreiz reaali uztaisiit shito. ;)


Ei, bija taada paruna, katram viiram muuzhaa jaaiestaada koks... virtuaals?!
Back to top
View user's profile Send e-mail Visit poster's website
Lāčblēdis



Joined: 16 Jan 2005
Posts: 113

PostPosted: Thu Mar 24, 2005 7:51 pm    Post subject:

Jā, koki, ko es esmu dzīvē redzējis, arī izskatās citadi. Pašlaik nekādas atšķirības starp stumbru un zaru nav, zara resnums ir piecpadsmitā daļa no garuma.
Es biju līdzīgi uztaisījis, kā tu teici, - koks glabājas kā binārs grafs, ja zars tālak sadalās, zīmē prizmu, ja ne, zīmē piramīdu.
Sanāca kaut kas tāds:


Tas kopumā bija tik sarežģīti, ka es nolēmu neturpināt šo ideju.
Back to top
View user's profile
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Thu Mar 24, 2005 11:14 pm    Post subject:

Quote:
Tas kopumā bija tik sarežģīti, ka es nolēmu neturpināt šo ideju.

Hmm, kas konkreeti bija par sarezgjiitu?

Ok, nenjem launaa Lāčblēdi, nenotureejos un uzrakstiiju savu versiju.
Buutiibaa princips ir pilniigi taads kaa rakstiits augstaak, iznjemot to ka koks tiek sagjenereets pie ielaades un saglabaats grafaa.

Te ir tas kas sanaaca varieejot atzarojuma skaitu, t.i. rekursijas dziljumu.

Pirmajaa bildee atzarojumi = 3, rezultaats ~nepaaraak veiksmiigs.
Otrajaa atzarojumi = 6, jau izskataas labaak
Treshaa, = 11, ja zari neveidotos 2d tad buutu baigi pienjemami!

Taa, te ir variants ar varieetiem zaru ataudzeeshanas lenkjiem:

pirmajaa bildee <30 graadiem
otrajaa <60,
treshajaa <75, virzieni sagrozaas absoluuti neizskaidrojami.

Izversums tiek randomizeets njemot veeraa lenkja offsetu.
Arii segmentu garums tiek randomizeets.

Un peedeejaa bilde, closeups ar textuuraam. Tikai pagaidaam zari tiek veidoti 2d, savaadaak izskatiitos tiiri ok. :)



Nedaudz veelaak iepostoshu arii kodu!




source
Back to top
View user's profile Send e-mail Visit poster's website
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Fri Mar 25, 2005 9:52 am    Post subject:

par kokiem - ja nemaldos arii sourci vareeja dabuut un nenjem ljaunaa izskatiijaas djika smukaak Wink [tur arii veel ir linki uz teoriju un taa]



http://www.ogre3d.org/phpBB2/viewtopic.php?t=6220
http://www.ogre3d.org/phpBB2/viewtopic.php?t=6384
_________________
...un ja bites buutu laachi...
Back to top
View user's profile
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Fri Mar 25, 2005 11:20 am    Post subject:

Skaidrs ka ar lapaam izskataas 'djika' smukaak, pliki zari arii buutu taa taa. Vareetu uztaisiit plikus zarus taa lai izskataas reaali, kaa piem SpeedTree, tas buutu iespaidiigi.
Bet vispaar vakar veel paproveeju to pashu shitu normaali 3d gjenereet un veel rand%zaru skaitu katraa posmaa, bet tikuntaa izskataas peeec kaut kaadas binaaro grafu zinaatniskaas simulaacijas. Jaapadomaa citaa virzienaa, varbuut zaru var audzeet gar splainu kas gjenereets ar kaadu noise funkciju...

Ok, papeetiishu tos tavus linkus, thnx.
Back to top
View user's profile Send e-mail Visit poster's website
Vecais_Dumais_Laacis
Guru
Guru


Joined: 29 Jan 2004
Posts: 800

PostPosted: Fri Mar 25, 2005 1:05 pm    Post subject:

Hobits wrote:
bet tikuntaa izskataas peeec kaut kaadas binaaro grafu zinaatniskaas simulaacijas


tas luuk arii ir tas kas baisi kriit aciis - ziimeejumi no grafu teorijas
_________________
...un ja bites buutu laachi...
Back to top
View user's profile
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: Fri Mar 25, 2005 1:11 pm    Post subject:

Nu ja. ;) Apskatiijos to Ogres sorci un pdf'u un principaa tur tas ir izveidots stipri liidziigi kaa tas ir man tikai ar iznjeemumu ka tur viss ir stipri vairaak parametrizeets un tiek nodaliiti stumbrs no zara un katrs tiek audzeets peec atseviskjiem noteikumiem, taa ka esam uz pareizaa celja. :) Visa saals sleepjas daliishanas un augsanas virziena nosaciijumos.
Back to top
View user's profile Send e-mail Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> OpenGL All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 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