three.js ustawianie kamery za obiektem

Odpowiedz Nowy wątek
2013-09-25 20:36
0

Witam.
Jestem w trakcie tworzenie gierki opartej na three.js czyli webGL i napotkałem pewien problem.
Normalnie mogę ustawić kamerę tak żeby patrzyła się nie na samochód tylko problem jest tego typu, że gdy auto zawraca lub to jest skierowane przodem do kamery.
Chciałbym zrobić coś jak mniej w NFS ze kamera nie jest na sztywno przyspawana do samochodu chodź i takie rozwiązanie by mnie ucieszyło.

Obecnie robię to tak, że sprawdzam w jakim położeniu znajdowało się auto i obecne położenie w oparciu o te 2 punkty otrzymuje prostą i ustawiam kamerę np 10 lub 15 jednostek (nie wiem jakie bo piksele to to raczej nie są :)) dalej od samochodu.Teoretycznie to powinno działać, ale praktycznie kamera jest skacząca..


var divX = currentX - LastX;
var divY = currentY - LastY;
vat divZ = currentZ - LastZ;

// i pozycja kamery

camPos(currentX-(divX*10), currentY-(divY*10), currentZ-(divZ*10));

Być może kamera skaczę bo nawet gdy jadę prosto to divX nie zawsze ma tą samą wartość.

edytowany 1x, ostatnio: hauleth, 2013-09-27 01:13

Pozostało 580 znaków

2013-09-25 21:00
0

Być może kamera skaczę bo nawet gdy jadę prosto to divX nie zawsze ma tą samą wartość.

a nie możesz zostawić jednej współrzędnej na sztywno a reszty zmieniać?


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2013-09-25 21:05
0

mogę zostawić Y na sztywno wtedy kamera jest nad samochodem, ale dalej skacze.

Pozostało 580 znaków

2013-09-27 23:29
0
var relativeCameraOffset = new THREE.Vector3(0, 7, -20);
self.vehicle.mesh.updateMatrixWorld();  
var cameraOffset = relativeCameraOffset.applyMatrix4( self.vehicle.mesh.matrixWorld );

camera.position.x = cameraOffset.x;//.toFixed(2);
camera.position.y = y + 7;
camera.position.z = cameraOffset.z;//.toFixed(2);
camera.lookAt(self.vehicle.mesh.position );

na razie udało mi się zrobić takie coś i kamera śledzi ładnie auto tylko przy poruszaniu się kamera bardzo skacze..
Gdy ustawie new THREE.Vector3(0, 7, -60); mniejszy parametr z to jakby mniej skakało.. Macie może pomysł jak się pozbyc takiego efektu?

po dodaniu self.vehicle.mesh.updateMatrixWorld() wszystko działa jak trzeba.

edytowany 1x, ostatnio: backen, 2013-10-05 13:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0