Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenGL中创建带有三角形的均匀球体?_Opengl - Fatal编程技术网

如何在OpenGL中创建带有三角形的均匀球体?

如何在OpenGL中创建带有三角形的均匀球体?,opengl,Opengl,有没有公式可以生成顶点位于球体上的三角形的一组坐标 我可能正在寻找类似于gluSphere的东西。然而,我需要用特定的颜色给不同的三角形上色,这样看起来我就不能使用gluSphere 另外:我确实理解,gluSphere沿着具有相同经度和晶格的线绘制边,这意味着三角形在极点比在赤道的尺寸小。现在,如果这样一个公式可以生成三角形,使它们的大小差异最小化,那就太好了。从一个单位二十面体开始。然后应用三角形的多重同质细分,标准化结果顶点到原点的距离。计算法线和uv贴图 幸运的是,在计算球体上的法线时,

有没有公式可以生成顶点位于球体上的三角形的一组坐标

我可能正在寻找类似于
gluSphere
的东西。然而,我需要用特定的颜色给不同的三角形上色,这样看起来我就不能使用
gluSphere


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

从一个单位二十面体开始。然后应用三角形的多重同质细分,标准化结果顶点到原点的距离。

计算法线和uv贴图

幸运的是,在计算球体上的法线时,有一个奇妙的技巧。仔细想想,球体上的法线实际上就是从球体中心到该点的方向!!此外,如果你仔细想想,这意味着法线实际上等于点!i、 就是同一个向量只是别忘了正常化长度,为正常

你可以在这一点上赢得酒吧赌注:“有没有一个形状,所有法线恰好……等于顶点?”乍一看,你会认为,这是不可能的,没有这样的巧合形状可能存在。当然,答案很简单,就是“半径为1的球体!”

关于紫外线。假设以“明显”的方式投影到2D,则在球体上相对容易。在这种情况下,u和v基本上就是任意点的经度/纬度,标准化为0,1

希望有帮助


这是一个经典的网页,完美地解释了如何构建一个icosphere

对于第一个模型,八面体也是一个不错的选择。更多信息:您正在寻找“地球圈生成”。谷歌用这两个词找到了很多信息。无价页面:我支持乔·布鲁对安德烈亚斯·卡勒博客文章的推荐。Kahler提供了C#格式的代码和清晰的描述。请注意,该页面上有几个著名的bug,所以请小心!