Я хочу построить трехмерную фигуру (прямоугольник, куб ...), используя pyqtgraph OpenGL, но я хочу сделать это без использования вершин и граней.Вместо вершин и граней я хочу иметь возможность использовать обычные координаты XYZ для каждой точки, в основном полилинии (каркас), и когда начальная и конечная точки установлены как:
linestart = [X0,Y0,Z0]
lineend = [X1,Y1,Z1]
, эти две точки будут связаны слиния и так далее, на случай, если я захочу сделать гораздо более сложную форму.И после этого закройте цикл линий, определите его как одну фигуру и залейте его каким-нибудь прозрачным цветом.
Вот что у меня есть сейчас для справки:
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph.opengl as gl
import pyqtgraph as pg
import numpy as np
from numpy import *
app = QtGui.QApplication([])
w = gl.GLViewWidget()
w.opts['distance'] = 40
w.show()
w.setWindowTitle('test plot')
w.setGeometry(300,300,2500,1500)
gx = gl.GLGridItem()
w.addItem(gx)
gy = gl.GLGridItem()
w.addItem(gy)
gz = gl.GLGridItem()
w.addItem(gz)
axis = gl.GLAxisItem()
w.addItem(axis)
def plot_shape():
verts = np.array([
[0, 0, 0],
[2, 0, 0],
[1, 2, 0],
[1, 1, 1],
])
faces = np.array([
[0, 1, 2],
[0, 1, 3],
[0, 2, 3],
[1, 2, 3]
])
colors = np.array([
[1, 0, 0, 0.3],
[0, 1, 0, 0.3],
[0, 0, 1, 0.3],
[1, 1, 0, 0.3]
])
m1 = gl.GLMeshItem(vertexes=verts, faces=faces, faceColors=colors, smooth=False)
m1.setGLOptions('additive') # transparency
w.addItem(m1)
plot_shape()
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()