Previous topic

Drifting plaid demo

Next topic

Links

Quick links

Draw a rotating faceΒΆ

This demo shows a couple of uses of bitmap images as masks. 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/local/bin/python2.5
from psychopy import core, visual, event
import psychopy.sound
#create a window to draw in
myWin = visual.Window((600,600), allowGUI=False, rgb=(-1,-1,-1))

#INITIALISE SOME STIMULI
faceRGB = visual.PatchStim(myWin,tex='face.jpg',
    mask=None,
    pos=(0.0,0.0),
    size=(1.0,1.0),
    sf=(1.0, 1.0))
    
faceALPHA = visual.PatchStim(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()