Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 10. březen 2008, 08:45:01 Předmět: |
|
|
1. to uz tu ideme do veci ako su organizacia objektov na scene v octree BSP tree a ine.
2. skybox?? _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 10. březen 2008, 22:27:16 Předmět: |
|
|
nou napsal: |
1. to uz tu ideme do veci ako su organizacia objektov na scene v octree BSP tree a ine.
2. skybox?? |
Tak díky za dopověd skybox, něco už jsem si o tom našel, dokonce jsem si oprášil znalosti jak vykreslit kostku, ale pořád nějak nechápu umístění v prostoru skyboxu.. Jde mi o to když si představíme např scénu s 5 domy a 5 stromy, kde se bude kamera moci volně pohybovat, i zde je dobré použít skybox?
Pokud ano, musím tedy vytvořit box o velikosti celého prostoru?
Také jsem našel že skybox se má vykreslovat jako poslědní, pokud ho však vykrelím jako poslední, box mi překrývá veškěré objekty.. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 10. březen 2008, 22:38:10 Předmět: |
|
|
Se zapnutým depth testem se ti nic překrývat prostě nemůže. Kresli ho na zadní ořezávací rovině a pokud je to pro tebe těžké, tak ho prostě kresli někde daleko od všeho ostatního. Jak jako velikost prostoru? Celý prostor je nekonečně velký. Skybox umísťuješ vždy na pozici kamery.
Taky se dá kreslit skybox pomocí jednoho trojúhelníku přes celý viewport (nebo čtverce). Je to přímočaré řešení, protože nemusíš řešit jeho umístění v prostoru a představit se to dá jako "pozadí" nebo "podklad scény", který vždy leží přesně na zadní ořezávací rovině. Bohužel je to technicky i matematicky trochu náročnější. _________________ AMD Open Source Graphics Driver Developer
Naposledy upravil Marek dne 10. březen 2008, 22:39:40, celkově upraveno 1 krát |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 10. březen 2008, 22:39:09 Předmět: |
|
|
da sa vykreslovat ako prvy. ale tam sa potom je to neefektivnejsie. a skybox treba vykreslovat tak aby kamera bola vzdy v strede skyboxu. da sa to dosiahnut jednoducho tak ze sa do modelview matice na posledny riadok(stlpec) dosadi 0 0 0 1. su na to funkcie
kód: |
glLoadMatrix(m[16]); glGetFloatv(GL_MODELVIEW_MATRIX, m[16]); |
treba si len odsledovat ci je pozicia ulozena v 12 13 14 alebo 3 7 11(skor 12 13 14) _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 10. březen 2008, 22:41:05 Předmět: |
|
|
To jsou dva různé problémy.
Umístění v prostoru lze řešit nastavením posuvné části modelview matice na 0, takže zbude jenom rotační část. Tím pádem stačí skybox malý, třeba 10x10x10.
Jak kreslit skybox jako poslední nevím. Sám ho kreslím jako první s vypnutým depth testem. |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 11. březen 2008, 06:03:46 Předmět: |
|
|
ak sa ma kreslit posledny tak ho treba vykreslit velky tak aby sa vosla cela scena. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 11. březen 2008, 13:46:21 Předmět: |
|
|
Eosie napsal: |
Se zapnutým depth testem se ti nic překrývat prostě nemůže. Kresli ho na zadní ořezávací rovině a pokud je to pro tebe těžké, tak ho prostě kresli někde daleko od všeho ostatního. Jak jako velikost prostoru? Celý prostor je nekonečně velký. Skybox umísťuješ vždy na pozici kamery.
Taky se dá kreslit skybox pomocí jednoho trojúhelníku přes celý viewport (nebo čtverce). Je to přímočaré řešení, protože nemusíš řešit jeho umístění v prostoru a představit se to dá jako "pozadí" nebo "podklad scény", který vždy leží přesně na zadní ořezávací rovině. Bohužel je to technicky i matematicky trochu náročnější. |
Tak nevím, nějak to stále nemohu pochopit.. Nevíš kde bych mohl najít nějaké povídání o skyboxu, co to je a tak? (hlavně ne AJ!)
Vykreslit kostku není problém, ale nějak nevím jak ji zvěšit, pokud vynásobím jednotlivé souřadnice, pouze se mi někam posune ale rozhodně nemění velikost. A pochybuji že by se mi do ní všel nějaký objekt když je takto "malá".
ps: velikost skyboxu se přeci musí dát nějak měnit, není každá cnéna přeci stejně velká... |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 11. březen 2008, 15:17:48 Předmět: |
|
|
My ti tady radíme každý něco jiného, tak se ani nedivím, že jsi z toho zmatený  |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 11. březen 2008, 15:42:08 Předmět: |
|
|
kód: |
float modelmatrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX,modelview[16]);//nacita maticu do pola
modelmatrix[12]=modelmatrix[13]=modelmatrix[14]=0;//x,y,z transformaciu nastavime na 0
glLoadMatrix(modelmatrix);//naloadujeme naspet do OpenGL
|
tento kod vyrusi vsetky posuny ktore sa vykonaly ale kamera ostane natocena tak ako ma. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 11. březen 2008, 21:10:02 Předmět: |
|
|
Posuny to rozhodně nevyruší, protože ty posuny jsou zapečený i v té rotační části. Sice se nějak dají dostat pryč, ale rozhodně to není takto jednoduché.
Juraj: Bez znalosti AJ a bez nějakého matematického základu asi nic neuděláš, resp. něco uděláš, ale bude to zplácaný kód odjinud, protože tomu nebudeš rozumět. Fakt nevím, co ti poradit, když máš problém jenom zvětšit krychli. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 11. březen 2008, 22:59:20 Předmět: |
|
|
Copak v DX SDK není ukázka skyboxu? |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 12. březen 2008, 00:17:19 Předmět: |
|
|
Eosie napsal: |
Posuny to rozhodně nevyruší, protože ty posuny jsou zapečený i v té rotační části. Sice se nějak dají dostat pryč, ale rozhodně to není takto jednoduché. |
Já mám zkušenost přesně opačnou, tzn. mám stejný názor jako nou. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 12. březen 2008, 01:21:34 Předmět: |
|
|
Jistě oba máte pravdu v tom smyslu, že když nekombinujete do sebe moc transformací, dá se takto snadno vyřadit posun. Bohužel obecně to nefunguje, například když si přímo vezmeš součin matice kamery a projekční matice, tak posun odtamtud takhle snadno neodstraníš (protože se tam plete ta projekce). Tam už jsem musel z jedné strany násobit inverzní maticí posunu, abych ho opravdu vyrušil. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
wozembouch
Založen: 03. 09. 2007 Příspěvky: 31
|
|
Návrat nahoru |
|
 |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 12. březen 2008, 13:16:14 Předmět: |
|
|
No možná je špatně chápu umístění toho skyboxu v prosotru.. No ale teď mám nyní trochu jiný problém, pokud kreslím jen skybox, vse je asi v poradku, vse vypada tak jak ma. Ale jakmile vykreslim nejake objekt (model) tak se mi cely skybox hodi nekam dozaku a vzbec to nevypada jako kostka..
Do teď jsem si myslel že trosnformaci jednoho objektu (skyboxu) utvari pouze nastaveni world matice device před vykreslením. Ale i kdžy world matici takto nastavím, stále se mi deformuje..
DODATEK: omlouvám se za zbytečnou paniku, chyba byla u mě, špatně jsem si nastavoval data do bufferu. Takže problém vyřeše. Ovše stále se mi nedaří kreslit skybox jako poslední aby mi nepřekrýval všechny objekty, je to asi tím že nenastavuji nějakou vlastnost device, však nevím kterou. Jedná se mi o directX, můžete mě nědko alespoň nasměrovat, dza to není např až tak jednoduché...
Naposledy upravil Juraj dne 12. březen 2008, 15:00:03, celkově upraveno 1 krát |
|
Návrat nahoru |
|
 |
|