这一切都是以编程方式完成的,而不是使用任何类型的 3D 编辑器。
映射棋盘的 UV 坐标只是形状的 x、y 坐标,但我可以指望任何我想映射到它的大小为 1.0、1.0 的东西。
现在,我的工作是以编程方式从这个形状中挤出一个圆柱体。足够简单:
我只是从顶部获取 UV 坐标并将它们保存在底部的顶点上。但是现在,规范说最终的圆柱体应该看起来像这样(这是模拟的,我无法生成它):
我以为我只是要调整我的 UV 坐标以说明高度,并在侧面放置跳棋,但我最终得到的是像这样的漩涡纹理:
我明白为什么。我通过将 n 添加到 V 坐标来创建它。但是由于 v 坐标在向下挤压时并不总是在格子边界上,所以它最终就像图像一样。
我相信我需要某种方向矢量来添加圆柱体底部的 UV 坐标,以使侧面检查器笔直,但我尝试的一切都会产生更糟的混乱。
我怎样才能正确地对这些边进行 UV 映射?
想象打开一个圆柱体(为了简单起见,忘记顶盖和底盖)。你不是留下了一个矩形吗?现在,让我们想想横坐标和纵坐标是如何计算的。
当您计算椭圆的弧度(圆柱体的基本形状)时,您还计算了 U 映射坐标。您仍然需要的是 V 方向的坐标:圆柱体的底部可以是
v0
,顶部可以是 v1
坐标。
|< 0..2*PI >|
u0,v1 u1,v1
x-----------x ---
| | | | | | | ^
| | | | | | | height (extrusion length)
| | | | | | | v
x-----------x ---
u0,v0 u1,v0