【发布时间】:2018-06-03 11:34:56
【问题描述】:
我复制了更正后的代码 here,以将我自己的太阳成像数据集中的纹理应用到 OpenGL 球体上。在这样做的过程中,我注意到纹理并没有完全包裹在球体周围——只有“前半部分”——并且没有应用照明阴影(在该问题的答案中也很明显)。
如何修改代码以将纹理包裹在整个球体周围?
这是纹理图像,它是 360 度经度 x 正弦(纬度)格式的数据(实际上应该在应用于球体之前将其转换为经度 x 纬度,但这是一个细节......):
这是纹理映射的结果,表明图像仅应用于前/可见半球:
【问题讨论】:
-
你的意思是你想要一个透明的球体?如果不是,那么渲染隐藏的一半有什么意义?
-
@Ripi2:否 - 请参阅原始问题中的说明。我明白你关于“渲染隐藏的一半”的观点,但这里的目标是最终有一个旋转球体,在球体上显示整个 360 度数据集。因此,开始的地方似乎是获取整个 3D 对象的纹理,然后进行交互式旋转。
-
应用纹理是将图像的矩形包装成所需的形式,在您的情况下为圆形。你期待什么?
-
期待纹理应用于 3D 球体,而不是圆形。
-
如果你想要纹理的一部分,那么你必须计算显示的部分并使用
glTexCoord传递它的坐标
标签: python opengl pyopengl opengl-compat