schrodinger.graphics3d.sphere module

OpenGL spheres.

The sphere module allows creation and drawing of spheres. Clients draw using Group instances not through Sphere instances.

Drawing is done in whatever is the current GL rendering context and current GL window. So you must set those prior to drawing. If you are using this with Maestro’s drawing callback mechanism you need not worry about the above details. These are handled for you automatically.

Control over the center, radius, color, resolution and opacity of a sphere are provided. See the Sphere class for more info.

To draw any number of spheres, create the Sphere instance and add it to a Group instance. Then invoke the Group’s draw() method.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.graphics3d.sphere.MaestroSphere(x=None, y=None, z=None, color=None, r=None, g=None, b=None, radius=None, transparency=None, opacity=1.0, resolution=16, angle_dep_transparency=False)

Bases: schrodinger.graphics3d.sphere.SphereCore

Class to create a 3D sphere in Maestro. This sphere will be drawn at the appropriate time in Maestro to interact properly with transparent objects.

Spheres should be added to a Group and drawing done via the Group. See Group documentation.

API Example:

import schrodinger.maestro.maestro as maestro
import schrodinger.graphics3d.common as common
import schrodinger.graphics3d.sphere as sphere

sphere_grp = common.Group()
st = maestro.workspace_get()
for at in st.atom:
    sph = sphere.MaestroSphere(
        x=at.x,
        y=at.y,
        z=at.z,
        radius=1.0,
        resolution=20,
        opacity=0.8,
        color='red'
    )
    # Add the primative to the container.
    sphere_grp.add(sph)

# Unlike Sphere MaestroSphere simply needs to be shown to be drawn.
# No special callback like there is for Spheres is needed.
sphere_grp.show()

# Hide the markers.
sphere_grp.hide()

# Remove the markers and the callback.
sphere_grp.clear()
maestro.workspace_draw_function_remove(sphere_grp.draw)
b

Blue value in RGB triplet

g

Green value in RGB triplet

material

Sphere’s material

opacity

Sphere’s opacity

pick_category

Sphere’s picking category

pick_id

Sphere object’s pick ID

r

Red value in RGB triplet

radius

Sphere’s radius

setColors()
setCoords()
setRGBColors(r, g, b)
setXYZCoords(x, y, z)
x

X coordinate

y

Y coordinate

z

Z coordinate

class schrodinger.graphics3d.sphere.Sphere(x=None, y=None, z=None, color=None, r=None, g=None, b=None, radius=None, transparency=None, opacity=1.0, resolution=16)

Bases: schrodinger.graphics3d.sphere.SphereCore

Class to draw a 3D sphere in OpenGL. Will be drawn in the current OpenGL drawable. This includes the ability to draw into Maestro’s Workspace. It just needs to be the current drawable.

Spheres should be added to a SphereGroup and drawing done via SphereGroup. See SphereGroup documentation.

This class draws the sphere directly using OpenGL.

API Example:

import schrodinger.maestro.maestro as maestro
import schrodinger.graphics3d.common as common
import schrodinger.graphics3d.sphere as sphere

sphere_grp = common.Group()
st = maestro.workspace_get()
for at in st.atom:
    sph = sphere.Sphere(
        x=at.x,
        y=at.y,
        z=at.z,
        radius=1.0,
        resolution=20,
        opacity=0.8,
        color='red'
    )
    # Add the primative to the container.
    sphere_grp.add(sph)

# Add the draw callback.
maestro.workspace_draw_function_add(sphere_grp.draw)

# Hide the markers.
sphere_grp.hide()

# Remove the markers and the callback.
sphere_grp.clear()
maestro.workspace_draw_function_remove(sphere_grp.draw)
class schrodinger.graphics3d.sphere.SphereCore(x=None, y=None, z=None, color=None, r=None, g=None, b=None, radius=None, transparency=None, opacity=1.0, resolution=16)

Bases: schrodinger.graphics3d.common.Primitive

Base class for Sphere and MaestroSphere classes.

See doc string for __init__ for details on instantiation.

Spheres should be added to a SphereGroup and drawing done via SphereGroup. See SphereGroup documentation.