Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

richting-vector naar quaternion

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb in mijn game engine een directioneel licht dat de zon voorstelt.
om een lightmap voor de zon te krijgen render ik de scene eerst naar depthmap, vanuit de richting van de zon (= wat de zon ziet, zeg maar)

de positie van deze 'zoncamera' = de positie van mijn onderwerp (een auto) + de positie van de zon (unit vector) * een bepaalde afstand

de richting van de zoncamera moet dus -(positie van de zon) zijn, zodat hij op mijn autootje uitkijkt en alles in de omgeving in de depthmap terechtkomt.

voor de rotatie van camera's gebruik ik een quaternion (die ik eventueel kan setten met een gewenst axis+angle)

het probleem is dat ik het niet voor elkaar krijg de kijkrichting-vector om te zetten naar een quaternion om aan de camera te voeren. ik heb geprobeerd de vector naar een rotatiematrix om te zetten, en die weer om te zetten naar een quaternion, maar dat is helaas mislukt (rotatie klopt van geen kant, geen idee waar het probleem zit); maar misschien is het geheel wel makkelijker in te stellen via de axis+angle functie en wat quaternion-vermenigvuldigingen.. zou alleen niet weten hoe :P

iemand enig idee?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een kijkrichting is geen volledige oriëntatie - je kunt namelijk nog roteren om die vector. Dus je zult eerst moeten definieren wat de exacte oriëntatie is voordat je er een quaternion van kunt maken.

Als dat je niet boeit kun je simpelweg de rotatie nemen van de kijkrichting bij een identity matrix ((0, 0, 1) in d3d of (0, 0, -1) in opengl) naar je daadwerkelijke kijkrichting. De rotatie-as is dan natuurlijk de as die loodrecht op beide kijkvectors ligt, en de hoek de hoek tussen de twee vectoren. Beide zijn uit te rekenen met het crossproduct. De lengte van het crossproduct is de sinus van de hoek, en de richting van het crossproduct is de rotatie-as.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
bedankt, die info zocht ik :)
(rotatie om kijkrichtingvector boeit me idd niet)