játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5484
FZoli:    4893
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2526

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2196
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] > 30 < [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]
Geri - Törzstag | 2196 hsz       Online status #163900   2011.09.15 01:23 GMT+1 óra  
mindent felejtsen el mindenki, úgy KELL ahogy leírtam, pont.

   
borsi - Tag | 180 hsz       Online status #163895   2011.09.15 00:55 GMT+1 óra  
Igazából azt nem értem, hogy miért kell ehhez kvaternió? Az aktuális orientációt eltárolod egy mátrixban (vagy kvaternióban), az új, relatív forgatást felírod mátrix (vagy kvaternió) formában, és megszorzod vele az aktuálisat. Végül mindenképp mátrixszá kell alakítani a kvaterniót, hogy összeszorozhasd az eltolással. Mondjuk kvaterniókkal meg lehet spórolni valamennyi számolást, ha többször forgatsz, mint ahányszor újraszámolod a transzformációs mátrixot.

A lényeg, a sorrend. Ha fix sorrendben szorzod össze az x / y / z irányú forgatásokat, akkor kapod azt ami a videón is van. Ha viszont mindig az előző eredő forgatás "elé" iktatod be az új forgatást, akkor a forgatás tengelye mindig world-spaceben lesz.

De az is lehet, hogy tök hülyeséget írok, mert késő van, szóval inkább megyek is aludni.

   
Geri - Törzstag | 2196 hsz       Online status #163894   2011.09.15 00:27 GMT+1 óra  
DMG, brotip, csak asylum meg ne lássa, mert nem ért hozzá (pesze úgyis jön majd hogy ő a nagy mátrixzsuga, meg minden, de ha tovább hallgatod amit mond, sose tudod megcsinálni)

szóval:

1. csinálsz egy 16 elemű float tömböt az objektumokhoz. identity mátrixot teszel bele alapból.
2. billentyűlenyomásnál betöltöd openglbe a tömbben lévő mátrixot
3. elvégzed a szűkséges forgatást glrotate-vel (ha bal gombot nyomsz, akkor egy db glrotatef(1,1,0,0) pl, tehát 1!)
4. lemented a forgatást a tömbödbe az ojjektumhoz, felülírva a régit. az openglben lévő mátrixot törlöd.
5. kirajzoláskor ezt a mátrixot belövöd glmultmatrixxal az ojjektum elhelyezése után, majd így rajzolsz ki

problem solved
ha gondolod, kapj fel msnre

a köszönetként küldött fehérbugyis anime kislányokat az offtopikba várom

   
DMG - Szerkesztő | 3172 hsz       Online status #163892   2011.09.14 23:55 GMT+1 óra  
Semmi, csak a gimbal lock-ot szeretném elkerülni.


Azt hiszem így lesz a legérthetőbb:

NEM JÓ


Mielőtt teljesen hülyének néznétek, mert tök trivi. Tudom, hogy az, csak a fátol nem látom már az erdőt. Mint amikor a sokszor ismételt szó értelmét veszti, most kb így állok a kérdéskörrel.


EDIT:
Francokat. Már tényelg ennyire le vagyok zsibbadva, a videón látható forgatás sem jó, mert az x tengely körüli forgatás elforgatja az y tengelyt.
-----------------------------------------
Dont Listen to the Naysayers
   
Geri - Törzstag | 2196 hsz       Online status #163888   2011.09.14 23:29 GMT+1 óra  
és mi akadályoz meg benne?

   
DMG - Szerkesztő | 3172 hsz       Online status #163853   2011.09.14 18:39 GMT+1 óra  
Az objektumot szeretném forgatni, első körben "kurzor billentyűkkel"
-----------------------------------------
Dont Listen to the Naysayers
   
Asylum - Törzstag | 5484 hsz       Online status #163851   2011.09.14 18:28 GMT+1 óra  
Na akkor most egy tömör mondatban ird le, hogy mit is akarsz csinálni?
Valamilyen kamerát vagy objektum forgatást? És mivel? Egérrel?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
DMG - Szerkesztő | 3172 hsz       Online status #163821   2011.09.14 00:03 GMT+1 óra  
Kösz, ezt holnap megnézem, most már bosszant ez a workaround.

Az y tengely már a helyén marad.

Szóval előbb csak azért is, aztán beleolvasok a forrásba.


EDIT: Na jó belelestem, kísértetiesen hasonlít a képlet az enyémre, majd azért össze vetem.
-----------------------------------------
Dont Listen to the Naysayers
   
Geri - Törzstag | 2196 hsz       Online status #163820   2011.09.13 23:55 GMT+1 óra  
DMG - Szerkesztő | 3172 hsz       Online status #163819   2011.09.13 23:33 GMT+1 óra  
Na jó feladom.

Most már minden lehetséges variációt kipróbáltam, átvariáltam a Projection és ModelViewMatrix kezelésemet is, mert kicsit szar volt elvben, de lehet, még mindig az és az a gond.

Kezdjük az alapoknál.

Szóval van egy projectMatrix-om, amit az elején beállítok perspektívre, és békén hagyom.

Van egy ModelView Matrixom, amin végzem az eltolást, forgatást, skálázást.

Majd ezekből számolom ki a ProjectionViewmatrixot (projection * modelview), ez lesz aztán átadva a shadernek, amivel dolgozik.


Nem tudom ez jó-e eddig minden működött vele szépen, most amit variáltam rajta, hogy eddig a teljes projectionviewmatrix-ot forgattam toltam skáláztam.



na most, erre jön a katernió.

Ügye van 3 szögem x, y, z. Ezek megfelelő tengelyen való forgatásából gyártok 3 katerniót.

Így:

Kód:
public static void AxisToQuat(float[] resQuat, float angle, float x, float y, float z){

resQuat[0] = (float)Math.cos(Math.toRadians(angle)/2.0);
resQuat[1] = x * (float)Math.sin(Math.toRadians(angle)/2.0);     
resQuat[2] = y * (float)Math.sin(Math.toRadians(angle)/2.0);     
resQuat[3] = z * (float)Math.sin(Math.toRadians(angle)/2.0);

//TODO Normalize

//Log.i(OpenGLRenderer.kTag, "teszt: " + Float.toString(resQuat[0]));

}


Aztán ezeket összeszorzom (a sorrendben nem vagyok biztos, valahol azt írták, hogy y*z*x, de mindenhogy szar.)

Ha összeszoroztam, akkor az eredményből kinyerem a forgási szöget, meg a tengelyt.
Így:
Kód:
public static void GetAxisAngle(float[] resVector, float[] srcQuat){

scale = (float)Math.sqrt(Math.pow(srcQuat[1], 2)+Math.pow(srcQuat[2], 2)+Math.pow(srcQuat[3], 2));

resVector[0] = 2 * (float)Math.acos(srcQuat[0]);
resVector[1] = srcQuat[1]/scale;
resVector[2] = srcQuat[2]/scale;
resVector[3] = srcQuat[3]/scale;


}


Aztán ezzel a szöggel, és tengellyel forgatom el a modelView matrixot. A 3 külön tengelyes elforgatás helyett.

Na az eredmny Bimbal Lock.



Aztán, gondoltam ez így nem kóser.

Csináltam egy egység matrixot, amit elforgattam a megkapott szöggel a megkapott tengelyen.
Majd ezt szoroztam hozzá a modelview matrix-hoz. Na ennek az eredménye ugyan az, mintha a katernió-ból csinálnék mátrixot. forgás közben a teszt kocka, mint valami papír doboz összecsuklik.




Ebből már rá tud valaki világítani, hog ymit csinálok rosszúl? mit felejtek ki a "képletből"


GOndoltam átverem, hagyom a katerniót, és a következőt eszeltem ki, ami így elméletben tök jónak tűnt.

Szóval elöbb forgatok X tengelyen ß fokkal. Aztán mielőtt forgatnék y tengelyen ¤ fokkal előbb magát az y tengelyt forgatom el -ß irányba, így elméletben visszaforgatom az í tengelyt a helyes irányba nem? lehet a megvalósítás sántít és nem az elmélet, de ez sem működik, most ellenőrzöm, hogy miért is, de akkor is csak workaround.

HELP!
-----------------------------------------
Dont Listen to the Naysayers
   
DMG - Szerkesztő | 3172 hsz       Online status #163701   2011.09.13 07:25 GMT+1 óra  
Hát azt én sem tudom miért kell belekeverni a kamerát. Csak amit találtam leírst, az ezt mondogatja.

-Namost ahogy lén csinálnám (felteszem nem jól)

Van egy rx, ry, rz forgási szögem, amiket balra, jobbra, fel, le tudok növelni (pontosabban csak x és y szögeket, z marad 0 fok.

Na ezekbőla forgási szögekből számolok egy-egy kvaterniót.

Ezeket összeszorzom.

Majd az eredményből, kinyerem a forgási szöget, és a tengelyt.

Amivel aztán egy glRotate(alfa, qx, qy, qz)-el elforgatom a testet.

De ez így szemmel láthatóan nem jó. Persze most hogy leírom, kezdem kapizsgálni hogy hol van a bibi. Na majd este folyt.köv.
-----------------------------------------
Dont Listen to the Naysayers
   
Asylum - Törzstag | 5484 hsz       Online status #163691   2011.09.13 00:52 GMT+1 óra  
Nahát ezexerint kínaiul is tudok. Nofene

Most mi is a feladat? Objektumot forgatni? Akkor mért kell belekeverni a kamerát?

- a forgatási sebességböl (egérrot * speed) kiszámolod a yaw, pitch, roll -t
- mindegyikböl csinálsz egy kvaterniot
- ezeket összeszorzod
- és megszorzod a jelenlegi orientációval
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
DMG - Szerkesztő | 3172 hsz       Online status #163675   2011.09.12 23:23 GMT+1 óra  
Asy, az a baj, hogy a te kódod nekem tök kínai a sok DX-es szintaktikátol.

Na, annyi már talán világos, hogy a katernióm az jól működik, csak rosszúl alkalmazom.

Azt mondja a cucc, hogy fogni kell a 3 tngely forgási szögét, ebből csinálni egy átmeneti katerniót, ez meg is van. Ezt a katerniót kell összeszorozni a kamera kvaterniójával, na talán itt a bibi. a kamera kvaternióját honnan nyerem ki?

Csak így vázlatpontokban, kvaternióval most akkor hogy is kell forgatni egy testet, mert lehet hgoy én értem félre?



EDIT:

Na végszóra találtam egy ilyet, ami nekem rémlik.

Szóval hogy egy egység mátrixon előbb elvégezzük a forgatásokat, aztán szorozzuk hozzá az így kapott mátrixot a modelview-hoz. Szóval valami rémlik, hogy ilyennel szórakoztam régebben, de már nem emlékszem kristály tisztán. Most már nem próbálom ki, elzsibbadtam, majd holnap.

Ezt a hozzászólást DMG módosította (2011.09.13 00:26 GMT+1 óra, ---)
-----------------------------------------
Dont Listen to the Naysayers
   
Asylum - Törzstag | 5484 hsz       Online status #163597   2011.09.12 14:36 GMT+1 óra  
Idézet
DMG :
Nem akarsz rá Tutorialt írni?



Meg lesznek majd valamikor emlitve (de mivel a dummyban van 50 féle példa ezért nem olyan sürgös nekem ).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
borsi - Tag | 180 hsz       Online status #163595   2011.09.12 14:17 GMT+1 óra  
dupla (mobilról)

Ezt a hozzászólást borsi módosította (2011.09.12 15:51 GMT+1 óra, ---)

   
borsi - Tag | 180 hsz       Online status #163594   2011.09.12 14:17 GMT+1 óra  
Meg a glm-et lenne erdemes megnezni, azt kifejezetten az opengl-hez irtak/irjak.

   
DMG - Szerkesztő | 3172 hsz       Online status #163567   2011.09.12 09:47 GMT+1 óra  
Kösz!

Megnézem amint hazaértem.

java-hoz kerestem Quaternion osztályt de nem találtam eddig semmi használhatót.


EDIT:

Alap esetben én x,y,z Euler szögekből (ez a becsületes nevük?) számolom a kvaterniót, most találtam egy doksit, ami a tegnapival szemben teljesen más sorrendben végzi az egyenletet, és azt írja, hogy meg sem szabad változtatni, hát megnézem, hátha csak ennyi a baja. Aztán megnézem az a mathlib forrást is, igaz első ránézésre nem láttam benne a megoldást, de elszokott a szemem a C++-os forrásoktól szóval még vetek rá egy pillantást maly otthon is.

Ezt a hozzászólást DMG módosította (2011.09.12 10:08 GMT+1 óra, ---)
-----------------------------------------
Dont Listen to the Naysayers
   
syam - Törzstag | 1491 hsz       Online status #163566   2011.09.12 09:27 GMT+1 óra  
Én simán lenyúltam függvényeket hozzá - azt hiszem innen:
http://tfc.duke.free.fr/
alias aalberik
   
DMG - Szerkesztő | 3172 hsz       Online status #163556   2011.09.12 08:07 GMT+1 óra  
Nem akarsz rá Tutorialt írni?
-----------------------------------------
Dont Listen to the Naysayers
   
Asylum - Törzstag | 5484 hsz       Online status #163551   2011.09.12 06:31 GMT+1 óra  
A kavterniókat szerintem senki sem érti, csak használják öket
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
DMG - Szerkesztő | 3172 hsz       Online status #163541   2011.09.12 00:07 GMT+1 óra  
Hát nekem ez most nem megy. Csináltam kavernió-t de az eredmény első próbálkozásra gimbal lock lett második próbálkozásra, hát... kicsit furcsa. Most tökre nem arra forog amerre mondom neki, meg még előjelet is vált valahol.

Na jó majd holnap szarakodom vele, aztán segítségért kiáltok ha végkép feladom, kösz az eddigieket!
-----------------------------------------
Dont Listen to the Naysayers
   
DMG - Szerkesztő | 3172 hsz       Online status #163477   2011.09.11 18:17 GMT+1 óra  
Köszönöm!

Kvaternió-t nézegetem. Hogy utálom az ilnye körmönfont módon ábrázold képleteket, mire kihámozom belőle, hogy mi micsoda, addigra már golyózik tőle a szemem.
-----------------------------------------
Dont Listen to the Naysayers
   
syam - Törzstag | 1491 hsz       Online status #163453   2011.09.11 13:50 GMT+1 óra  
Ha gimbal lock akkor kvaternió. Amikor pedig renderelni akarsz akkor a kvaternió, pozíció párosból tudsz mátrixot gyártani.
alias aalberik
   
Asylum - Törzstag | 5484 hsz       Online status #163451   2011.09.11 13:40 GMT+1 óra  
Idézet
DMG :
Megnézem, de még nem találkoztam eddig vele.

Hát az alap probléma, mondjuk egy test, amit érintéssel tudsz forgatni (vagy egértrel, ha PC-s oldalon maradunk) Na most vertikális iránybe elforgatod 180 fokkal, akkor ahorizontális irányba forgatásnál pont az ellenkező iránybe fog forogni, mint ahogy te szeretnéd, hogy forogjon. Ez jelentkezik mondjuk akkor is, ha egy adott pályán egy golyót gurítok ilyen transzformáció segítségével, nem tudom, mennyire érthető a probléma.

EDIT:

Közben rátaláltam a megfelelő kulcsszavakra google-ben, azt hiszem már tudom milyen irányba kell elinduljak, azért még hátgha tud valaki valami hasznos félmondatot.



Ezt a problémát hívják gimbal locknak és például egy megoldás rá ha kvaterniókkal forgatsz (viszont nehezebb értelmezni mint a mátrixokat).

Az XNA honlapján valamelyik (talán többen) sampleben van egy arcballcamera; abban a Free beállítás felel meg a gimbal lock-mentességnek (ha jól emlékszem még).

Söt a dummyban levö repcsis sample-ben a repcsi forgatása is gimbal lock mentes (és kvaterniós).

Sztem ezeket csekkold.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
DMG - Szerkesztő | 3172 hsz       Online status #163448   2011.09.11 13:21 GMT+1 óra  
Most már a nevét is tudom, szóval a "Gimbal Lock" hatást akarnám elkerülni.

Syam: úgy nagyából világos, de most valahogy nehezebb az agyam a szokottnál, szóval a minor matrixot melyik sor/oszlop eldobásával nyerem ebben az esetben? Bocs a tök alap kérdésért, szégyellem is magam.

Amúgy találtam egy ilyen linket, ami pont ezzel foglalkozni, most olvasgatom.

http://www.gamedev.net/page/resources/_/reference/programming/math-and-physics/quaternions/quaternion-powers-r1095
-----------------------------------------
Dont Listen to the Naysayers
   
syam - Törzstag | 1491 hsz       Online status #163442   2011.09.11 12:29 GMT+1 óra  
Szóval csak a pozíciót akarod mozgatni forgatással, de a test orientációját nem?
Ha igen, akkor 2 lehetőséged van:
- lemented a test minor mátrixát, eforgatod és visszaírod a végeredménybe a minor mátrixot
- csinálsz egy pontot a test mátrixának eltolásából azt beszorzod a kívánt mátrixszal és visszaírod a test mátrixának eltolás részébe.
alias aalberik
   
DMG - Szerkesztő | 3172 hsz       Online status #163431   2011.09.11 11:19 GMT+1 óra  
Megnézem, de még nem találkoztam eddig vele.

Hát az alap probléma, mondjuk egy test, amit érintéssel tudsz forgatni (vagy egértrel, ha PC-s oldalon maradunk) Na most vertikális iránybe elforgatod 180 fokkal, akkor ahorizontális irányba forgatásnál pont az ellenkező iránybe fog forogni, mint ahogy te szeretnéd, hogy forogjon. Ez jelentkezik mondjuk akkor is, ha egy adott pályán egy golyót gurítok ilyen transzformáció segítségével, nem tudom, mennyire érthető a probléma.

EDIT:

Közben rátaláltam a megfelelő kulcsszavakra google-ben, azt hiszem már tudom milyen irányba kell elinduljak, azért még hátgha tud valaki valami hasznos félmondatot.
-----------------------------------------
Dont Listen to the Naysayers
   
Pretender - Törzstag | 2498 hsz       Online status #163428   2011.09.11 11:04 GMT+1 óra  
RotationAxisAngle, dx-ben van ilyen, tuti van oglben is aztán az y meg az x tengelyt adod meg tengelynek, oszt' kész.
Amúgy mire jó ez, hogy amazon a koordináta-rendszeren forgatod?

   
DMG - Szerkesztő | 3172 hsz       Online status #163419   2011.09.11 10:00 GMT+1 óra  
megint nem látom a fától az erdőt, szóval gondoltam bedobom ide, hátha valaki fél mondattal helyre igazít.

Szóval Forgatnék egy testet X,Y tengelyen, de lehetőleg úgy hogy a tengelyek eközben ne forduljanak el. Szóval nem az objektum koordináta rendszerében szeretném forgatni, hanema világ koordináta rendszerében.

Szóval ezt hogy.

Most úgy néz ki alapból a dolgo, hogy elforgatom az x tengelyen, aztán az y tengelyen, ami már a forgatott y tengely körül fog forgatni, ami nekem nem jó
-----------------------------------------
Dont Listen to the Naysayers
   
borsi - Tag | 180 hsz       Online status #162839   2011.09.07 13:22 GMT+1 óra  
Ja tényleg az utolsó nulla paraméteremen valahogy átsiklottam

   
syam - Törzstag | 1491 hsz       Online status #162837   2011.09.07 13:20 GMT+1 óra  
Úgy rajzolsz, hogy (void*)(indices + 300).

De ha nincs kiszámolva a vertex index range, akkor a sima gldrawelementset használd.
alias aalberik
   
Geri - Törzstag | 2196 hsz       Online status #162836   2011.09.07 13:18 GMT+1 óra  
const GLvoid *indices

   
borsi - Tag | 180 hsz       Online status #162835   2011.09.07 13:17 GMT+1 óra  
De akkor hogyan rajzolok mondjuk a 300. indextől? Mert a start ezek szerint nem azt jelöli, hogy hanyadik indextől indul a rajzolás.

   
syam - Törzstag | 1491 hsz       Online status #162828   2011.09.07 13:08 GMT+1 óra  
A start és end azt mondja meg, h a kirajzolandó mesh index listájában mi a min. és max. vertex index érték.
Ez pedig nem korlátoz semmit csak a gpunak segít optimalizálni.
alias aalberik
   
Geri - Törzstag | 2196 hsz       Online status #162823   2011.09.07 13:00 GMT+1 óra  
Pont úgy, ahogy egyet

   
borsi - Tag | 180 hsz       Online status #162811   2011.09.07 12:32 GMT+1 óra  
void glDrawRangeElements
(GLenum mode
, GLuint start
, GLuint end
, GLsizei count
, GLenum type
, const GLvoid *indices
);

Két napon keresztül kerestem a lehetséges hibákat a konverteremben, mire rájöttem, hogy semmi baja, csak félreértettem a fenti metódus paramétereit
Eddig azt hittem, hogy a start és az end az index tömbön belüli pozíciókat jelölik, míg a count a rajzolás során felhasznált vertexek számát (tehát pl egy GL_TRIANGLE kockánál 24-et). Most hogy újra elolvastam a specifikációt, azt már tudom, hogy a count az a kirajzolt vertexek száma (kockánál 36). Viszont hogy ha a start és az end a minimum és maximum értéket jelölik az index tömbben, hogy lehet egy EBO-ba több mesh indexeit feltölteni?

   
Parallax - Tag | 606 hsz       Online status #162204   2011.09.01 16:30 GMT+1 óra  
"glBegin helyett VBO"-> Jól csináltad Csoki bácsi, kemény vagy!

   
DMG - Szerkesztő | 3172 hsz       Online status #162196   2011.09.01 15:08 GMT+1 óra  
Újabb szegénységi bizonyítvány.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1654 hsz       Online status #162192   2011.09.01 14:52 GMT+1 óra  
Biztonság kedvéért lett leírva a gluLookAt() magyarázata, hátha mégis azt látja könnyebbnek valaki.

Még nem teszteltem sebességben, de sztem mindegy hogy 0-hoz ad hozzá, vagy egy már meglévő számhoz adja hozzá a többit, mert mindenképpen vannak változások ugyanazokban az értékekben. Nagyjából ugyanannyit kellhet számolni, ha belegondolok a térgeometriába. De ez úgy is részlet kérdés...
Abban az esetben számíthat, ha először mindent ténylegesen is nullára állít és nem csak a felül írásnál számol nulláról a behelyettesítések helyett és a push-pop sem emelteti át a meglévő adatokat arra a helyre, ahol számol vele. Mondjuk ezt nem tudom hogy megy odabent pontosan.

Én kezdőként a glulookat-et használtam, aztán megcsináltam a poposat, aztán megint azt használom tesztekhez. Persze az first person forgáshoz kell bónusz metódus így is, amit könnyebb a glulookat-tel használni. És lehet rá camera objektumot is alapozni. És a playstation-ös "target"követés is simább vele.

---
A Begin - End nél ott van az "// akár". Javasolhatnék VBO-t is ahhoz a kérdéshez, hogy "miért nem mozognak külön az objektumok".
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
DMG - Szerkesztő | 3172 hsz       Online status #162183   2011.09.01 14:31 GMT+1 óra  
jahh igen, azt a részt én már ignoráltam.

Nade az NVidianak még eladható az ötlet.
-----------------------------------------
Dont Listen to the Naysayers
   
Parallax - Tag | 606 hsz       Online status #162182   2011.09.01 14:29 GMT+1 óra  
Ez a glBegin-glEnd se valami performanciás dolog. Ha szándékosan lassítani kell a renderelést, akkor ddwbo kolléga módszerei jók lehetnek, de egyébként mobilon már nincs is glBegin-glEnd gondolom nem véletlenül.

   
DMG - Szerkesztő | 3172 hsz       Online status #162178   2011.09.01 14:22 GMT+1 óra  
Abban az esetben ki lehet kerülni, ha, ahogy a kolelga mondja, minden objektum rajzolása elött kvázi a nulláról beállítjuk az egész jelenet nézetét. Persze ez előbb utóbb kaotikus lesz, felesleges szorzás műveletekkel jár, és a többi.
-----------------------------------------
Dont Listen to the Naysayers
   
syam - Törzstag | 1491 hsz       Online status #162176   2011.09.01 14:14 GMT+1 óra  
Kezdőnek push / pop párossal a legegyszerűbb ezt megoldani.

A glulookat pedig jellemzően egy glmultmatrix + gltranslate ergo a push / popot így sem lehet kikerülni.
alias aalberik
   
DMG - Szerkesztő | 3172 hsz       Online status #162175   2011.09.01 14:14 GMT+1 óra  
Nem kell bemutatni a LookAt() metódust, köszi!

Viszont tök felesleges és pazarló minden objektum rajzolása előtt beállítani, Bőven elég egyszer a render elején, utána meg ott a mátrix verem.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1654 hsz       Online status #162170   2011.09.01 13:52 GMT+1 óra  
Ez így igaz, nullázza. Viszont a glu erre ad megoldást, ha van glu. Illetve 2D rendszerben könnyű a koordinátákat eltolni.

glLoadIdentity();

gluLookAt( cam.pos_x, cam.pos_y, cam.pos_z, cam.view_x, cam.view_y, cam.view_z, 0.0, 1.0, 0.0 );

// float-ban megadva

stb..stb
---
ahol az első három a kamera pozíciója, a második három ahova néz a kamera, a harmadik három a kamera normálja. ami alap esetben stabil 0.0, 1.0, 0.0 lenne, hogy előre nézzen a kamera, inkább az oldal hajláshoz jó módosíthatóra berakni.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
DMG - Szerkesztő | 3172 hsz       Online status #162166   2011.09.01 13:33 GMT+1 óra  
Ezzel a megoldással az a baj, hogy szétcseszi az eredeti nézeti transzformációkat, kvázi a kamera beállítást., szóval nem igazán rugalmas.

Szóval a mátrix verem használata az ami inkább használható.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1654 hsz       Online status #162165   2011.09.01 13:27 GMT+1 óra  
Idézet
levi1224 :
Hali!
Lenne egy problémám. A baj az hogy létrehozok kettő objektumot 2D-ben. Én az egyiket szeretném mozgatni, de mindegyiket mozgatja glTranslatef(); függvénnyel. Mit csinálok rosszul?
Mi a megoldás?



Egy másik lehetséges megoldás. Teljesen különálló és alap szinten megérthető objektumhoz:

glLoadIdentity(); // új tárgy jön.. ez nullázza a változtatásokat

glTranslatef( cucc1.x, cucc1.y, cucc1.z );

glBegin(); // akár
...
glEnd();

glLoadIdentity(); // új tárgy jön.. ez nullázza a változtatásokat

glTranslatef( cucc2.x, cucc2.y, cucc2.z );

glBegin(); // akár
...
glEnd();
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Parallax - Tag | 606 hsz       Online status #162149   2011.09.01 11:31 GMT+1 óra  
Idézet
levi1224 :
Hali!
Lenne egy problémám. A baj az hogy létrehozok kettő objektumot 2D-ben. Én az egyiket szeretném mozgatni, de mindegyiket mozgatja glTranslatef(); függvénnyel. Mit csinálok rosszul?
Mi a megoldás?


Egy lehetséges megoldás a pop és push, hogy megmaradjon az állapota az adott objektumnak. Feltéve, hogy arrays-el rajzolsz:
Kód:
void Sprite::Update(double deltaTime)
{
    glPushMatrix();
        glTranslatef(position.x, position.y, 0.0f);
        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
    glPopMatrix();
}

   
levi1224 - Tag | 12 hsz       Online status #162148   2011.09.01 10:56 GMT+1 óra  
Hali!
Lenne egy problémám. A baj az hogy létrehozok kettő objektumot 2D-ben. Én az egyiket szeretném mozgatni, de mindegyiket mozgatja glTranslatef(); függvénnyel. Mit csinálok rosszul?
Mi a megoldás?

   
Pretender - Törzstag | 2498 hsz       Online status #160357   2011.08.20 22:22 GMT+1 óra  
Jó, hát sejtettem, hogy nem feltétlen azt kell használni, csak mondtam, hogy ha pl. debug objecteket akarok kirajzolni, akkor az tök egyszerű.

   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] > 30 < [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]