OpenGL - gluLookAt() – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

OpenGL - gluLookAt() – C / C++ – Fórum – Programujte.comOpenGL - gluLookAt() – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
fnenks+1
Stálý člen
4. 11. 2013   #1
-
0
-

Zdravím,

Specifikace funkce:

void gluLookAt( float eyeX,  float eyeY, float eyeZ, float  centerX,  float centerY,  float centerZ, float upX,  float upY,  float upZ);

Potřeboval bych poradit jak převést moje parametry na parametry potřebné do této funkce.

Moje parametry jsou:
-pozice na mapě(float x, float y, float z)
-úhel natočení kamery(float angleX, float angleY, float angleZ)

Úhel hodnota je ve stupních! Díky za rady, pokud nějaké budou.

Nahlásit jako SPAM
IP: 88.101.84.–
Reklama
Reklama
z
~ Anonymní uživatel
268 příspěvků
5. 11. 2013   #2
-
0
-

Tak si z těch úhlů spočítáš nějaký bod na přímce pohledu a ten UP vektor. Vždyť se goniometrické funkce (sinus, kosinus) učí snad už někdy na základní škole.

Takže když máš třeba toto:

Připojen obrázek.

Zelená - angleLR (natočení pohledu kolem osy Y, vlevo-vpravo)
Modrá - angleUD (natočení kolem X, nahoru-dolu)
Červená - angleCT (natočení kolem Z, rotace kamery)

Tak to bude nějak takhle:

GLdouble eX = x
GLdouble eY = y;
GLdouble eZ = z;

double vLRx = cos(DEG2RAD(angleLR)), vLRy = 0, vLRz = sin(DEG2RAD(angleLR));
double vUDx = 0, vUDy = sin(DEG2RAD(angleUD)), vUDz = cos(DEG2RAD(angleUD));
double vCTx = cos(DEG2RAD(angleCT)), vCTy = sin(DEG2RAD(angleCT)), vCTz = 0;
double vx = vLRx + vUDx, vy = vLRy + vUDy, vz = vLRz + vUDz;

GLdouble cX = eX + vx * 100.0;
GLdouble cY = eY + vy * 100.0;
GLdouble cZ = eZ + vz * 100.0;

gluLookAt(eX, eY, eZ, cX, cY, cZ, vCTx, vCTy, vCTz);

Nejspíš tam bude něco blbě, nechce se mi nad tím přemýšlet.

Nahlásit jako SPAM
IP: 88.101.8.–
fnenks+1
Stálý člen
5. 11. 2013   #3
-
0
-

#2 z
Díky přesně tohle jsem potřeboval, večer to testnu

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
5. 11. 2013   #4
-
0
-

asi tam bude někde chybička ve vzorci, pač to nefunguje správně: https://dl.dropboxusercontent.com/u/97350425/problem.png

Nahlásit jako SPAM
IP: 88.101.84.–
z
~ Anonymní uživatel
268 příspěvků
6. 11. 2013   #5
-
0
-

Proto jsem přidal ten obrázek, abys pochopil proč to počítám, tak jak to počítám.

- Souřadnice rostou od středu od nuly ve směru šipky do plusu.
- Úhly rostou od začátku oblouku od nuly ve směru šipky do plusu.
- Pro pohled rovnoběžný s osou Z směrem ke vzdálenějším objektům (vektor [0,0,-1], default OpenGL) bez náklonu kamery by byly úhly angleLR = 270, angleUD = 180, angleCT = 90.

Pravděpodobně to máš jinak, takže si ty výpočty musíš upravit.

http://commons.wikimedia.org/wiki/File:Einheitskreis_Ani.gif

Nahlásit jako SPAM
IP: 78.156.159.–
fnenks+1
Stálý člen
6. 11. 2013   #6
-
0
-

nastavil jsem ty default úhly angleLR = 270, angleUD = 180, angleCT = 90 po spusteni je kamera spravne natocena

ten vypocet mi smysl dává, problem je jak zacnu rotovat

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
7. 11. 2013   #7
-
0
-

tak uz asi vim kde je problem, kdyz pracuju jenom s vLR nebo jenom s vUD, tak to rotuje spravne, ale kdyz je pak sectes tak to zacne blbnout

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
8. 11. 2013   #8
-
0
-

vyreseno, dik za help :)

Nahlásit jako SPAM
IP: 88.101.84.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 89 hostů

Podobná vlákna

C++, OpenGL, SDL /// C++, OpenGL — založil Kolemjdouci

OpenGL — založil Wizard

OpenGL 1.4 — založil koudis;

OpenGL — založil Miro1701

OpenGL? — založil Lordest

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý