PDA

View Full Version : How to draw a circle?


Saz
05-04-2011, 06:15 AM
Hi,

I'm trying to draw two flat circles side by side on which I need to put textures on (a sphere is no good due to the curvature). Is there a simple command to create a circle in Vizard (I have looked but the nearest so far is a sphere) or would I have to use an mathematical operator to do this?

Thanks

Jeff
05-04-2011, 07:31 PM
You could create circular images in an image editor and apply those to a texture quad. Use an image format that supports alpha channels to make the areas outside the circle transparent.

The Python Imaging Library has functions to draw 2D shapes but I'm not sure if you can easily add textures to them.

Jeff
05-04-2011, 07:33 PM
Here's a link to our kb article about PIL:

http://kb.worldviz.com/articles/470

Saz
05-05-2011, 04:58 AM
Hi Jeff,
thanks for that, I've decided to use to quads and apply the textures to them instead. I'm trying to code for the textures in these two quads to both move at independent speeds in a downward motion (like lines moving down a page). In the past I've used the viz.MainView.move command but obviously that moves the whole viewpoint and so the whole quad moves (and then disappears) rather than the textures inside them.

Here is the code written so far:

import viz
#Import vizjoy module
import vizjoy
import time
import math
import vizact
import vizinfo
import vizshape

viz.displaymode(1024, 512)
viz.go(viz.FULLSCREEN)
viz.mouse(viz.OFF)
vizact.ontimer(32,viz.quit) #runs file for 32 secs


subject = viz.input('What is the participant number?')

#define speed
MOVE_SPEED = 0.1041 #scalar constant for speed gain

viz.clearcolor(0.5,0.5,0.5)
viz.MainView.setPosition(0,.5,0)



#add the road texture
road = viz.add('roadld3.png')

#create a texture quad1 to add the road texture to
#and place it over ground
quad1 = viz.addTexQuad()
quad1.setScale(0.25,0.5,0.25)
quad1.setPosition(0.75,0.5,3)
quad1.setEuler(0,0,0)
quad1.texture(road)

#create a texture quad2 to add the road texture to
#and place it over ground
quad2 = viz.addTexQuad()
quad2.setScale(0.25,0.5,0.25)
quad2.setPosition(-0.75,0.5,3)
quad2.setEuler(0,0,0)
quad2.texture(road)


#move quad 1
def moveQuad1():

viz.MainView.move(0,0,MOVE_SPEED,viz.BODY_ORI)

moveQuad1()
#call a timer every frame to check if road needs to be added
vizact.ontimer(0, moveQuad1)


Is there tutorial that explains how to assign different speeds (or speeds at all) to the textures inside quads? Any help is much appreciated
Thanks

Jeff
05-05-2011, 03:25 PM
You can try changing the texture coordinates to move the image on the quad. In the Textures section of Vizard Teacher in a Book, available from our downloads page, there is an example that moves clouds across a window by manipulating the texture coordinates of the window object.