Мне бы хотелось иметь трехмерный график непрозрачных кругов без аддитивного смешивания, а также иметь возможность вращать сцену так, чтобы самые близкие круги отображались поверх самых дальних.
С помощью этой команды
gl.GLScatterPlotItem(pos=pos, color=color, size=size, pxMode=False)
Я получаю смешение цветов в области, где перекрываются круги:
Опция 'opaque'
gl.GLScatterPlotItem(pos=pos, color=color, size=size, pxMode=False, glOptions = 'opaque')
отключает смешение, однаковместо окружностей он строит квадраты:
Третий доступный вариант 'полупрозрачный'
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» для параметра «полупрозрачный» удаляет черные углы квадратов из «плохого» изображения, но также сохраняет последний нарисованный круг всегда сверху, чтоне то, что я хочу.
Я не мог понять комбинацию 'glBlendФункциональные параметры, которые будут производить желаемое изображение.Это вообще возможно?