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

Trešās personas kamera.

 
dev.gamez.lv Forum Index -> OpenGL
View previous topic :: View next topic  
Author Message
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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... Question
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Mon Sep 04, 2006 10:47 pm    Post subject:

Paldies, bubu, tieši tas, kas bija vajadzīgs.
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> OpenGL All times are GMT + 2 Hours
Page 1 of 1

 
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