Пример #1
0
def handle_arcball():
    global last_click_pos
    global model_mod
    global model
    global view_mod
    global view

    # LMB = rotate arcball
    if (pygame.mouse.get_pressed()[0]):
        if (last_click_pos[0] == (-1, -1)):
            last_click_pos[0] = pygame.mouse.get_pos()

        v_new = screen_to_arcball(pygame.mouse.get_pos())
        v_old = screen_to_arcball(last_click_pos[0])

        angle = math.acos(min(1.0, v_new.dot(v_old)))
        axis = (v_new.cross(v_old)).normalize()
        model_mod = Matrix44.rotation_about_axis(axis, angle)
    else:
        if (last_click_pos[0] != (-1, -1)):
            last_click_pos[0] = (-1, -1)
            model = model_mod * model
            model_mod = Matrix44.identity()

    # MMB = translate arcball
    if (pygame.mouse.get_pressed()[1]):
        if (last_click_pos[1] == (-1, -1)):
            last_click_pos[1] = pygame.mouse.get_pos()

        dx = (pygame.mouse.get_pos()[0] - last_click_pos[1][0]) / float(res[0])
        dy = (pygame.mouse.get_pos()[1] - last_click_pos[1][1]) / float(res[1])

        view_mod = Matrix44.translation(-dx, -dy, 0)
    else:
        if (last_click_pos[1] != (-1, -1)):
            last_click_pos[1] = (-1, -1)
            view = view_mod * view
            view_mod = Matrix44.identity()

    # RMB = scale arcball (based on RMB delta y)
    if (pygame.mouse.get_pressed()[2]):
        if (last_click_pos[2] == (-1, -1)):
            last_click_pos[2] = pygame.mouse.get_pos()

        dy = (pygame.mouse.get_pos()[1] - last_click_pos[2][1]) / float(res[1])
        model_mod = Matrix44.scale(max(-dy + 1.0, 0.01))
    else:
        if (last_click_pos[2] != (-1, -1)):
            last_click_pos[2] = (-1, -1)
            model = model_mod * model
            model_mod = Matrix44.identity()
Пример #2
0
void main()
{
   float t = fract(time); 
   vec4 c = vcolor;
   gl_FragColor = vec4(c.xyz, 1.0f);
}
"""

# GLOBALS

gVertices = data.getVertices()
gColors = data.getColors()

# MVP matrices
model = Matrix44.identity()
view = Matrix44.identity()
proj = Matrix44.identity()
view_mod = Matrix44.identity()
model_mod = Matrix44.identity()

# mouse vars
last_click_pos = [(-1, -1), (-1, -1), (-1, -1)]

# display vars
res = (1024, 1024)

# Read data into vertices
# TODO: Streamline this