This Page

Quick links

Draw a rotating faceΒΆ

This demo shows a couple of uses of bitmap images. You can use them either as textures for images or as the mask for another texture (the face on the left is used as a mask for a blue and yellow grating).

To work the demo needs a square image called face.jpg (e.g. ../images/face.jpg)

draw a drifting plaid
#!/usr/bin/env python2
from psychopy import core, visual, event

#create a window to draw in
myWin = visual.Window((600,600), allowGUI=False, rgb=(-1,-1,-1))

#INITIALISE SOME STIMULI
faceRGB = visual.GratingStim(myWin,tex='face.jpg',
    mask=None,
    pos=(0.0,0.0),
    size=(1.0,1.0),
    sf=(1.0, 1.0))

faceALPHA = visual.GratingStim(myWin,pos=(-0.5,0),
    tex="sin",mask="face.jpg",
    rgb=[1.0,1.0,-1.0],
    size=(0.5,0.5), sf=1.0, units="norm")

message = visual.TextStim(myWin,pos=(-0.95,-0.95),
    text='[Esc] to quit', rgb=1, alignHoriz='left', alignVert='bottom')

trialClock = core.Clock()
t=lastFPSupdate=0
while True:
    t=trialClock.getTime()
    faceRGB.setOri(1,'+')#advance ori by 1 degree
    faceRGB.draw()

    faceALPHA.setPhase(0.01,"+")#advance phase by 1/100th of a cycle
    faceALPHA.draw()

    #update fps every second
    if t-lastFPSupdate>1.0:
        lastFPS = myWin.fps()
        lastFPSupdate=t
        message.setText("%ifps, [Esc] to quit" %lastFPS)
    message.draw()

    myWin.flip()

    #handle key presses each frame
    for keys in event.getKeys():
        if keys in ['escape','q']:
            print myWin.fps()
            myWin.close()
            core.quit()
    event.clearEvents()