我使用three.js创建了一个全景拼图拼图旋转游戏, https://panopuzzle.created-by.me
它将360度全景图的多维数据集地图投影映射到由8个顶点定义的多维数据集上。计算所有到达较小图块的UV贴图,这很简单,因为每一边都是一个独立的正方形。我可以使用简单的数学来创建/计算适当的UV坐标,并将其分配给图块(也计算其顶点)。
因此,您最终会得到许多带有UV贴图纹理的正方形瓷砖,并且每个瓷砖都可以旋转-以及带有该纹理的纹理。
等矩形网格看起来像
到目前为止一切都很好
但是
我想使用不同的多面体-不仅仅是立方体。
我有一个旧的VRML模型库(例如足球(截短的二十面体等),但我想不出一种方法来将UV全景纹理映射到单独的图块(它们都是独立的,所以我可以轻松旋转他们)。
我有边缘和顶点,但是除了如何映射和等角的图像(或任何其他投影)之外,其他一切都超出了我的范围。
多面体的等矩形图像看起来像
问题是我不能使用立方体贴图,因为边缘不会在立方体一侧停止,所以我需要以某种方式进行UV贴图并同时投影纹理?
如果为不同的形状(三角形,五边形,六边形...)定义了几个纹理,则将它们放到瓷砖上没有问题
但我不能使用“真实世界”全景图并将其映射到任何多面体的图块。
在某种程度上,我正在考虑在球体内有一个多面体-然后我一次“打开”一个瓷砖,以“穿透”多面体上的孔进入周围的球体-如果我可以使用通过该孔看到的图像作为一种很好的纹理,但我需要能够将其映射到图块上,以便旋转它。
不确定如何更好地描述它。 希望有道理。
有人对在Three.js或任何其他JS库中如何将全景图像映射到多面体的图块上有想法吗?