Hey everyone. I am working on a game where a character walks around the surface of a sphere (think Super Mario Galaxy), so I figured it would be wise to use quaternions for orientation since it is very important that the player and camera orientations work well. I understand the idea behind quaternions, but I don't really understand how to generate them in the first place... previously I had been storing an "up" vector and a "forward" vector to define my character's orientation, and had been doing Euler rotations to construct a rotation matrix. Each time my character moved, the up vector would be recalculated to be the vector from the center of the sphere to the player's position, and the forward vector would be the movement vector projected onto the plane that the player is standing on. I would like to have a similar way of constructing quaternions (where I can define it from and "up" and "forward" vector), but it seems that every resource that I have found online about quaternions explains how to use them for *rotations*, and not for *orientations*. I have found some source code online that supposedly implements the behavior I am looking for, but I don't really understand it and when I tried to implement it I wasn't getting the behavior I wanted.

Maybe I am thinking about quaternions all wrong? I'm not 100% sure what I'm asking, but I've been struggling with this all day to no avail. Given the description of my game, could someone who is experienced using quaternions suggest to me how they would go about using them?