void updateListener(ICameraSceneNode* cam){
ALfloat pos[3];
ALfloat ori[6];
pos[0] = cam->getPosition().X;
pos[1] = cam->getPosition().Y;
pos[2] = cam->getPosition().Z;
ori[0] = cam->getTarget().X;
ori[1] = cam->getTarget().Y;
ori[2] = cam->getTarget().Z;
ori[3] = cam->getUpVector().X;
ori[4] = cam->getUpVector().Y;
ori[5] = cam->getUpVector().Z;
alListenerfv(AL_POSITION,pos);
alListenerfv(AL_ORIENTATION,ori);
}
OpenAL and Irrlicht
I have this tiny problem with a testing program implementing Irrlicht and OpenAL.
I know I could condense this a bit without the arrays, doesn't matter. The problem is that sound seems reversed, left and right are switched. I use this in a tiny program where I load a TestSceneNode and travel around with a CameraNodeFPS. There's nothing special... Initialisation is done with ALUT, everything seems to be alright. It *could* of course be that the device driver is wrong, or that my stereo system is just set up wrong, but I higly doubt it.
I can post the full source to the program is that is any more helpful. It ain't that much bigger, but I don't think it's important. Most other variables are left at defaults.
Any views on this? Thanks!
What the...
You're right.
I didn't quite expect Irrlicht to have a left-handed coordinate system.
Anyway, now for a solution...
[EDIT] Am I right in that I only need to change one sign of my lookat vector?
[Edited by - Amarth on April 24, 2006 2:13:49 PM]
You're right.
I didn't quite expect Irrlicht to have a left-handed coordinate system.
Anyway, now for a solution...
[EDIT] Am I right in that I only need to change one sign of my lookat vector?
void updateListener(ICameraSceneNode* cam){ ALfloat pos[3]; ALfloat ori[6]; pos[0] = cam->getPosition().X; pos[1] = cam->getPosition().Y; pos[2] = cam->getPosition().Z; ori[0] = cam->getTarget().X; ori[1] = cam->getTarget().Y; ori[2] = cam->-getTarget().Z; //LHS to RHS ori[3] = cam->getUpVector().X; ori[4] = cam->getUpVector().Y; ori[5] = cam->getUpVector().Z; alListenerfv(AL_POSITION,pos); alListenerfv(AL_ORIENTATION,ori);}
[Edited by - Amarth on April 24, 2006 2:13:49 PM]
I think that should work did you take a look at the openal wrapper on the wiki site? my bad thats from site ogre. I'll see if i can code it up for you some time tommor im busy with work right now
I think the solution has to be to flip *all* the Z signs.
However, this doesn't solve it. It feels as if listener orientation doesn't change a thing... If I turn around, nothing changes, while the sound should be in the 'other ear'.
However, this doesn't solve it. It feels as if listener orientation doesn't change a thing... If I turn around, nothing changes, while the sound should be in the 'other ear'.
Finally solved it. getTarget() does not return the direction vector, but the actual target.
Hope this helps someone else.
void updateListener(ICameraSceneNode* cam){ ALfloat pos[3]; ALfloat ori[6]; pos[0] = cam->getPosition().X; pos[1] = cam->getPosition().Y; pos[2] = -cam->getPosition().Z; ori[0] = cam->getTarget().X - cam->getPosition().X; ori[1] = cam->getTarget().Y - cam->getPosition().Y; ori[2] = -(cam->getTarget().Z - cam->getPosition().Z); ori[3] = cam->getUpVector().X; ori[4] = cam->getUpVector().Y; ori[5] = -cam->getUpVector().Z; alListenerfv(AL_POSITION,pos); alListenerfv(AL_ORIENTATION,ori);}
Hope this helps someone else.
It helps me, thanks !
These at and up vectors are a nightmare, it's badly explained in the documentation.
These at and up vectors are a nightmare, it's badly explained in the documentation.
I use Irrlicht myself. I used to use it with OpenGL, which uses the same coordinate system as OpenAL, which I also used for a time. I got to liking DirectX's sound stuff a little better and since I only use windows, it works for me. I switched to Irrlicht to learn that positive Z is now in front instead of behind like in OpenAL/GL. It wasn't hard to switch, but yeah, using OpenAL for sound with it adds in a little bit of complication but for the most part, just switching the Z axis around should do the trick, but you have to do it for everything, not just sound positions.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement