如何在OpenGL中创建一个带三角形的偶数球?

时间:2010-12-29 22:11:28

标签: opengl

是否有公式生成一组三角坐标,其顶点位于球体上?

我可能正在寻找与gluSphere类似的东西。然而,我需要用特定颜色为不同的三角形着色,这样我似乎无法使用gluSphere

另外:我确实理解gluSphere沿着具有相同经度和格度的线绘制边缘,这使得三角形在极点处比在赤道处的尺寸小。现在,如果这样的公式会生成三角形,使得它们的大小差异最小化,那就太好了。

2 个答案:

答案 0 :(得分:22)

计算法线 uv地图

幸运的是,在球体上有一个惊人的技巧来计算法线。如果你考虑一下,球体上的法线实际上只不过是从球体中心到这一点的方向!此外,如果你认为通过,这意味着法线在字面上等于点!即,它是相同的向量! - 正常情况下,不要忘记将长度标准化。

你可以在那一个上赢得赌注:“是否有一个形状,其中所有法线碰巧正好......等于顶点?”乍一看,你会想,这是不可能的,没有这种巧合的形状可能存在。但当然答案只是“一个半径为一的球体!”嘿!

关于紫外线。假设您以“明显”的方式投射到2D a "rectangle-style" map projection,那么在球体上相对容易。在这种情况下,u和v基本上只是任何点的经度/纬度,归一化为0,1。

希望它有所帮助!

这是历史悠久的经典网页,精美地解释了如何构建一个icosphere .. http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

答案 1 :(得分:5)

从单位二十面体开始。然后应用三角形的多个齐次细分,将结果顶点距离归一化到原点。