Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: 3D kameran liikuttelu

punppis [03.10.2010 10:01:20]

#

Aloitin tässä testimielessä pienen ohjelman, jolla voi pyöritellä 3d-objektia sekä liikkua kameralla vapaasti. Kameran liikuttaminen vaaka-akselilla onnistuu hienosti, mutta halutaan laittaa kulmaa pystysuunnassa, niin kulma rajoittuu 90 asteeseen (ja jotenkin hidastuu loppua kohden).

Aloitin tekemään systeemiä XNA:lla tutoriaalin pohjalta, jossa kameralle annetaan sijainti sekä kohteen sijainti.

// cameraPosition on kameran sijainti
// cameraPoint on sijainti, johon kamera osoittaa
// kulma_x on rotaatio vaaka-akselilla
// kulma_y on rotaatio pystyakselilla
cameraPoint.X = cameraPosition.X + (float)Math.Cos((kulma_x-90) * Math.PI / 180); // kulma on -90, koska osoittaa vakiona väärään suuntaan
cameraPoint.Z = cameraPosition.Z + (float)Math.Sin((kulma_x-90) * Math.PI / 180);
cameraPoint.Y = cameraPosition.Y + (float)Math.Sin(kulma_y * Math.PI / 180);

Vaakatasossa siis onnistuu pyörimään ympyrää, mutta pystysuunnassa tuo rajoittuu 90 asteeseen (kun menee yli niin lähtee menemään väärinpäin). Miten tämä pitäisi oikeasti tehdä?

groovyb [03.10.2010 17:45:17]

#

esimerkiksi näin:

http://www.xnawiki.com/index.php?title­=Easy_Camera_Movement_Class

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta