我还没有找到关于这方面的文档(可能只是在谷歌中没有输入正确的搜索词(。我目前正在重新编写一台内部相机,想知道Vector3.ForwardRH
和Vector3.ForwardLH
的值是多少。我已经知道Left
、Right
、Up
和Down
的值,它们在给定传统Vector3
:的情况下已经足够简单了
Vector3.Left = (-1, 0, 0);
Vector3.Right = ( 1, 0, 0);
Vector3.Up = ( 0, 1, 0);
Vector3.Down = ( 0, -1, 0);
我还知道,在Unity
中,Vector3
类具有属性forward
和back
,它们分别对应于Z
轴:
Vector3.Forward = (0, 0, 1);
Vector3.Backward = (0, 0, -1);
问题:但是,DirectX 11对于forward
和back
都有两个属性,即LH
和RH
变体。有人有关于这些值是什么以及为什么LH
和RH
不同的文档吗?为什么大多数现代发动机只使用forward
和back
?
注意:感谢大家的帮助,如果你觉得我需要在这篇文章中添加更多信息来进一步澄清,请随时在评论中告诉我,我会尽我所能进一步充实它。
也:指向Google
的链接是我的实际搜索。
答案:LH
和RH
表示左手坐标系和右手坐标系之间的差异。Forward
属性需要根据DirectX中的坐标系进行选择。例如,我的坐标系是右旋的,所以我需要使用ForwardRH
和BackwardRH
。
LH和RH分别代表左侧和右侧坐标系。Z轴将指向相反的方向,具体取决于使用的坐标系。DirectX不知道您使用的是哪种系统,因此它同时提供了常量以方便阅读。
其他游戏引擎(例如Unity(只提供一个常量,因为它们假设每个人都使用相同的坐标系。