PyQtGraph GLScatterPlotItem:3D中的不透明彩色圆圈

时间:2019-03-01 14:10:25

标签: opengl pyqtgraph scatter3d

我希望能够在不进行附加混合的情况下获得不透明圆的3D图,并且还能够以最接近的圆显示在最远的圆的方式旋转场景。

使用此命令

gl.GLScatterPlotItem(pos=pos, color=color, size=size, pxMode=False)

我在圆圈重叠的区域得到了颜色融合:

image

“不透明”选项

gl.GLScatterPlotItem(pos=pos, color=color, size=size, pxMode=False, glOptions = 'opaque')

禁用混合,但是它绘制正方形而不是圆形:

image

第三个可用选项“半透明”

gl.GLScatterPlotItem(pos=pos, color=color, size=size, pxMode=False, glOptions = 'translucent')

几乎可以满足我的需要,但前提是我要从某些方向看:

不好

我对OpenGl模块进行了深入研究,直到'GLOptions':

GLOptions = {
    'opaque': {
        GL_DEPTH_TEST: True,
        GL_BLEND: False,
        GL_ALPHA_TEST: False,
        GL_CULL_FACE: False,
    },
    'translucent': {
        GL_DEPTH_TEST: True,
        GL_BLEND: True,
        GL_ALPHA_TEST: False,
        GL_CULL_FACE: False,
        'glBlendFunc': (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA),
    },
    'additive': {
        GL_DEPTH_TEST: False,
        GL_BLEND: True,
        GL_ALPHA_TEST: False,
        GL_CULL_FACE: False,
        'glBlendFunc': (GL_SRC_ALPHA, GL_ONE),
    },
}

为“半透明”选项设置“ GL_DEPTH_TEST = False”会从“不良”图像中删除正方形的黑角,但也会使最后绘制的圆圈始终位于顶部,这不是我想要的。

我不知道'glBlendFunc'选项的组合会产生想要的图像。甚至有可能吗?

0 个答案:

没有答案