|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Mon Sep 04, 2006 9:50 pm Post subject: Trešās personas kamera. |
|
Centos izveidot kameru kura varētu griezties apkārt orbītā ap speles objektu.
Sākuma centos izveidot ar gluLookAt() un glRotatef(), bet rotējot kameru viņa sāk rotēt tādā kā virpuļveidā, bet ne ap savu asi ... so tā pēc laika jau viņa atrodās kautkur pavisam netur, kur vajadzētu būt.
Būtu pateicīgs ja kāds izstāstītu alternatīvas iespējas šādas kameras veidošanai vai pašu ideju kā tas notiek... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Sep 04, 2006 10:05 pm Post subject: |
|
Nez, es ar gluLookAt īpaši neaizraujos kameras veidošanai. Es kameru implementēju pats ar savu 4x4 matricu, un attiecīgi to roteju/translēju.
Bet ja gribi ar gluLookAt, tad jau ir vienkārši. gluLookAt sagaida 3 vektorus (to varēji arī manuālī izlasīt):
1) kameras atrašanās vieta - (Cx, Cy, Cz)
2) punkta koordinātes, kas atradīsies ekrāna centrā (Ox, Oy, Oz)
3) augšupvektors - (0, 1, 0)
Tātad, pieņemot, ka kamera atrodas nedaudz augstāk virs objekta, tad Cy = Oy + 5 (skaitli pamaini pats atkarībā no tava mēroga.
Ja jau gribi to rotēt orbītā pa rinķi (tā vismaz sapratu), tad punkta koordinātes, kas rotē ap punktu P divās dimensijās (pieņemšu x-z) izsaka vienkārša vienādojumu sistēma:
x(t) = Px + R*cos(2*pi*t/T),
z(t) = Pz + R*sin(2*pi*t/T),
kur x(t), z(t) - punkta koordinātes laikā t
R - aprinķojuma rādiuss
T - aprinķojuma periods
Tātad, ja gribi, lai kamera rotē ap objektu, tad atliek paņemt:
Cx = Ox + R*cos(2*pi*t/T)
Cz = Oz + R*sin(2*pi*t/T)
Un visi 9 mainīgie, kas jāpadod gluLookAt, ir zināmi: Cx, Oy+5, Cz, Ox, Oy, Oz, 0, 1, 0. Cx un Cz mainīsies atkarībā no laika. (Ox, Oy, Oz) - atkarībā no tā vai objekts kustās vai nē. |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Mon Sep 04, 2006 10:47 pm Post subject: |
|
Paldies, bubu, tieši tas, kas bija vajadzīgs. |
|
Back to top |
|
|
|
|
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
|