如何在pyglet中制作带有面孔图像的多维数据集

时间:2019-07-04 00:38:39

标签: python pyglet

我正在制作3D游戏,需要将图像粘贴到多维数据集上,但是我找不到front / back / top / {{ 1}} / bottom / left纹理就可以了。

我刚刚开始使用pyglet,所以我对此不太熟悉。我已经将立方体的纹理部分翻转了几天,但仍然很混乱。这是我下面的多维数据集函数的代码:

right

由于没有有效的3d渲染程序,因此无法显示期望的结果。

1 个答案:

答案 0 :(得分:1)

我假设坐标(x1y1z1)是立方体的最小值,坐标是最大值(x1,{{1} },y1)。例如:

z1

如果在视图空间中绘制了多维数据集,则:

x轴指向左侧。必须将self.cuboid(0, 0, 0, 1, 1, 1, self.tex) 纹理放置在所有顶点的x坐标为left的位置,将x1纹理放置在x坐标为right的位置:

x2

y轴指向上。因此,self.batch.add(4, GL_QUADS, right, ('v3f',(x1,y1,z1, x1,y1,z2, x1,y2,z2, x1,y2,z1)), tex_coords) self.batch.add(4, GL_QUADS, left, ('v3f',(x2,y1,z2, x2,y1,z1, x2,y2,z1, x2,y2,z2)), tex_coords) 是y坐标为bottom的位置,顶部是y坐标是y1的位置:

y2

Right-handed系统中,z轴指向视图之外。 z轴是x轴和y轴的Cross product
这导致必须将self.batch.add(4, GL_QUADS, bottom, ('v3f',(x1,y1,z1, x2,y1,z1, x2,y1,z2, x1,y1,z2)), tex_coords) self.batch.add(4, GL_QUADS, top, ('v3f',(x1,y2,z2, x2,y2,z2, x2,y2,z1, x1,y2,z1)), tex_coords) 放置在z坐标为front的地方,将z2放置在z坐标为back的地方:

z1

方法self.batch.add(4, GL_QUADS, back, ('v3f',(x2,y1,z1, x1,y1,z1, x1,y2,z1, x2,y2,z1)), tex_coords) self.batch.add(4, GL_QUADS, front, ('v3f',(x1,y1,z2, x2,y1,z2, x2,y2,z2, x1,y2,z2)), tex_coords)

cuboid