使用复杂的 UV 映射挤压圆柱体

问题描述 投票:0回答:1

这一切都是以编程方式完成的,而不是使用任何类型的 3D 编辑器。

我正在交付这样的形状:

映射棋盘的 UV 坐标只是形状的 x、y 坐标,但我可以指望任何我想映射到它的大小为 1.0、1.0 的东西。

现在,我的工作是以编程方式从这个形状中挤出一个圆柱体。足够简单:

我只是从顶部获取 UV 坐标并将它们保存在底部的顶点上。但是现在,规范说最终的圆柱体应该看起来像这样(这是模拟的,我无法生成它):

我以为我只是要调整我的 UV 坐标以说明高度,并在侧面放置跳棋,但我最终得到的是像这样的漩涡纹理:

我明白为什么。我通过将 n 添加到 V 坐标来创建它。但是由于 v 坐标在向下挤压时并不总是在格子边界上,所以它最终就像图像一样。

我相信我需要某种方向矢量来添加圆柱体底部的 UV 坐标,以使侧面检查器笔直,但我尝试的一切都会产生更糟的混乱。

我怎样才能正确地对这些边进行 UV 映射?

opengl 3d primitive uv-mapping
1个回答
0
投票

想象打开一个圆柱体(为了简单起见,忘记顶盖和底盖)。你不是留下了一个矩形吗?现在,让我们想想横坐标和纵坐标是如何计算的。

当您计算椭圆的弧度(圆柱体的基本形状)时,您还计算了 U 映射坐标。您仍然需要的是 V 方向的坐标:圆柱体的底部可以是

v0
,顶部可以是
v1
坐标。

  |< 0..2*PI >|

u0,v1       u1,v1
  x-----------x   ---
  | | | | | | |    ^
  | | | | | | |  height (extrusion length)
  | | | | | | |    v
  x-----------x   ---
u0,v0       u1,v0
© www.soinside.com 2019 - 2024. All rights reserved.