1

我有一组形成形状的点(特别是半个管道,其他类似的形状)。我需要一种方法来绘制这个圆柱面。

例如:

在此处输入图像描述

我想画这个半管,我有标记的点(绘制为红色圆圈)。

具有圆柱体的近似值(具有线性边缘,而不是完全圆形)很好。

我的形状并不总是半管或圆柱形,而是总是封闭的多边形,我有一组点形成它。

(我正在使用 PyOpenGL,但这并不重要)

4

1 回答 1

2

您应该学习如何在 3D 中渲染模型,之后,您将能够制作任何您想要的东西。

每个模型由三角形组成,一个三角形是空间中的 3 个任意顶点。

您可能想要下载并启动一个建模程序,例如搅拌机,并在尝试之前尝试构建您想要构建的东西,因为您要么必须手动构建它,要么编写一个算法来执行此操作。

然后转到线框视图或点视图,您将看到您实际构建的内容。只是不要忘记先正确进行三角测量(如果您出于某种原因使用四边形,搅拌机可以自动进行)。

最重要的是,您想使用现代 openGL,这意味着您必须学习管道......

好吧,没有办法避免这种情况,你必须阅读和学习:https ://learnopengl.com/

但我可以为你总结一下:

  1. 获取模型数据——在这种情况下,如果你想让它看起来像你展示的那样,顶点和三角形就足够了;
  2. 加载顶点数据并将其绑定到 VAO,并将您的三角形(索引,指定 VAO 数据中顶点排序的数字)绑定到 EBO。意义就在这里
  3. 现在,您构建矩阵,例如投影矩阵,它将用于正确变换顶点,使其看起来像一个适当的 3D 对象,可以根据需要进行旋转等等;
  4. 使用 glDrawElements() 渲染 EBO 数据;

是的,这不应该说得很清楚,但是随着本教程的进行,您将学习如何做到这一点。

至于如何获取实际半管的数据...你需要取圆公式,选择一个你想要的弧,比如说,,PI * 2 / 3或者换句话说,圆的三分之一,把这个弧分成N几部分,然后在每一段,您创建一个从圆面向外的平面,该平面每个是 2 个三角形(使 2 个三角形在视觉上形成一个矩形),最后,您将获得所需的结果。

要真正弄清楚如何做到这一点,您需要学习如何手动构建网格,然后拿一张纸进行数学计算。此外,您可以手动构建整个东西,它只是数字,代表空间中的点,由线连接,包围平面。每个平面都是一个三角形。

于 2018-10-19T12:48:18.217 回答