Hello FMOD team,
There is a question puzzle me about the FMOD_INIT_3D_RIGHTHAND and system::set3DListenerAttributes.
as the doc says, the righthand Coordinates is treat +X=right, +Y=up, +Z= backwards or towards you.
However, in system::set3DListenerAttributes, it says : By default, FMOD uses a left-handed co-ordinate system. This means +X is right, +Y is up, and +Z is forwards. To change this to a right-handed coordinate system, use FMOD_INIT_3D_RIGHTHANDED. This means +X is left, +Y is up, and +Z is forwards.
i am wonder that why this two coordinate are different, please help me , hunger for your answer, thanks advance.
- alfa1783 asked 8 years ago
[quote:1l7bpk7u]hunger for your answer[/quote:1l7bpk7u]
I hope to satisfy your appetite.
[quote:1l7bpk7u]…use FMOD_INIT_3D_RIGHTHANDED. This means +X is left, +Y is up, and +Z is forwards. [/quote:1l7bpk7u]
That appears to be a mistake, it should say "+Z is backward".
The right handed coordinate option is there to help people using right handed coordinate systems. It saves them the trouble of manually converting all their coordinates to left handed before passing them into FMOD.
Hope this answers your question.
you say +X is left, +Y is up, +Z is backward, and i draw the coordinates out, it just the FMOD_INIT_3D_RIGHTHAND described coodinates’s reverse phase (+X is right, +Y is up, -Z is forward), I wonder that is the right-hand coordinates kept the three coordinate sequences remain the same, but can be rotated at will when i using the Righthand Coordinates in the game designing?
In the Doc’s 3D sound tutorials says:
Orientation and left-handed vs right-handed coordinate systems.
Getting the correct orientation set up is essential if you want the source to move around you in 3d space.
FMOD Uses a left handed coordinate system by default, (+X = right, +Y = up, +Z = forwards), which is the same as DirectSound3D and A3D.
If you use a different coordinate system, then you will need to flip certain axis or even swap them around inside the call to System::set3DListenerAttributes and Channel::set3DAttributes.
Take the right handed coordinate system, where [u:296gdr23]+X = right, +Y = up, +Z = backwards or towards you[/u:296gdr23]. To convert this to FMOD coordinate system simply negate all instances of the Z coordinate for listener and sound position and velocity, as well as listener up and forward vector Z components.
To make things easier for people using the right handed coordinate system, you can initialize FMOD Ex using FMOD_INIT_3D_RIGHTHANDED in System::init and not do any conversion. FMOD will automatically convert its internal 3D calculations to be right handed instead of left handed.
In the Doc System::set3DListenerAttributes:
By default, FMOD uses a left-handed co-ordinate system. This means +X is right, +Y is up, and +Z is forwards.
To change this to a right-handed coordinate system, use FMOD_INIT_3D_RIGHTHANDED. This means [u:33mvdbey]+X is left, +Y is up, and +Z is forwards.[/u:33mvdbey]
Is the "+X=left, +Y=up, +Z=forward" in last sentence should be change "+X=right, +Y=up, +Z=backward" would be correct?
Please answer this little question for me , thanks advances.
Please login first to submit.