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