3d 如何将纹理映射到八面体上?

3d 如何将纹理映射到八面体上?,3d,textures,coords,3d,Textures,Coords,我快要发疯了。我一辈子都搞不懂纹理坐标。我有一个八面体,由下面的8个三角形定义。我想在上面绘制地球的纹理。请参见此处的纹理: 我希望北极在顶点,南极在北极点,赤道绕着中心点。有人能告诉我每个点的UV来映射纹理吗 0, 0, 1 1, -1, 0 1, 1, 0 -1, 1, 0 0, 0, 1 1, 1, 0 0, 0, 1 -1, 1, 0 -1, -1, 0 1, -1, 0 0, 0, 1 -1, -1, 0 1, -1,

我快要发疯了。我一辈子都搞不懂纹理坐标。我有一个八面体,由下面的8个三角形定义。我想在上面绘制地球的纹理。请参见此处的纹理:

我希望北极在顶点,南极在北极点,赤道绕着中心点。有人能告诉我每个点的UV来映射纹理吗

 0,  0,  1
 1, -1,  0
 1,  1,  0

-1,  1,  0
 0,  0,  1
 1,  1,  0

 0,  0,  1
-1,  1,  0
-1, -1,  0

 1, -1,  0
 0,  0,  1
-1, -1,  0

 1, -1,  0
 0,  0, -1
 1,  1,  0

 0,  0, -1
-1,  1,  0
 1,  1,  0

 0,  0, -1
-1, -1,  0
-1,  1,  0

 0,  0, -1
 1, -1,  0
-1, -1,  0

一个简单的思考方法是像这样展开八面体:

   /\     /\     /\     /\   
  /  \   /  \   /  \   /  \  
 /    \ /    \ /    \ /    \ 
X------X------X------X------X
 \    / \    / \    / \    / 
  \  /   \  /   \  /   \  /  
   \/     \/     \/     \/

然后,您可以将平面上的点映射到纹理坐标,我不确定您所说的UV是什么意思,但八面体的每个面将对应于贴图的矩形区域。这将涉及拉伸和压缩,但没有切割,没有遗漏的地方

首先,将地图划分为两个矩形,北矩形和南矩形。现在从北向南做三次切割,将地图切割成8个相等的矩形。左上角的矩形包括北美洲的西半部、北太平洋的东半部和夏威夷。让我们把它映射到你描述的第一个三角形上

如果我们在矩形中放置一个坐标系,从赤道的中太平洋到赤道附近的八面体,一直到八面体

(s,t) -> (1-t, (1-t)(2t-1), t)

其他人也应该清楚如何做到这一点。

对欧洲感到遗憾,但嘿,他们已经出现在很多地图上了。@Beta:True。这是一个相当简单的问题,但要以合理的方式覆盖整个纹理,需要改变几何体(到四边形)或改变纹理(将使用的贴图位压缩到渲染的区域)。当然,八面体面必须对应于三角形贴图区域,而不是矩形。(三角形的意思是这些区域被3个测地圆而不是4个测地圆所包围)@Ofek Shilon:我描述的地图区域在这个意义上是三角形的。请注意,地图的整个上边缘,
(x100)
,对应于地球上的一个点,北极。