我正在制作一个行星上的游戏,我计划存储数据的方式是6个二维数组,这是围绕球体的高度图(在立方体的面上).我遇到的问题是,给定一个从球体中心向外指向的归一化向量,我如何确定这两个方面:
我目前的解决方案是这个(使用XNA):
一个有用的约束是球体/立方体系统位于原点附近.
因此,需要解决的问题是: 给定方向向量,如何确定它与周围立方体的交叉点.使用此结果,我如何在2D立方体中获取正确的值,该数组在此立方体的表面上"绘制"?
看看方向的3个组成部分的大小.具有最大幅度的那个告诉你你击中的立方体的哪个面(并且它的符号告诉你它是+或 - 面.)
另外两个坐标为您提供2D映射值.但是,我们需要将它们标准化.如果您的XYZ方向的X为最高幅度,那么您的2D面部坐标只是U = Y/X和V = Z/X. 这些都在-1到1之间.
要注意从正面到负面的翻转,您可能需要翻转2D U和/或V值以匹配您的坐标系.