我正在制作3D游戏,需要将图像粘贴到多维数据集上,但是我找不到front
/ back
/ top
/ {{ 1}} / bottom
/ left
纹理就可以了。
我刚刚开始使用pyglet,所以我对此不太熟悉。我已经将立方体的纹理部分翻转了几天,但仍然很混乱。这是我下面的多维数据集函数的代码:
right
由于没有有效的3d渲染程序,因此无法显示期望的结果。
答案 0 :(得分:1)
我假设坐标(x1
,y1
,z1
)是立方体的最小值,坐标是最大值(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