Построение примитивов на основе координат XYZ для каждой точки вместо вершин и граней (pyqtgraph.opengl) - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу построить трехмерную фигуру (прямоугольник, куб ...), используя 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_()
...