View Full Version : Panning Textures across a plane.
shivanangel
04-06-2006, 10:47 AM
Helllo,
I'm attempting to create an old school environment by creating a clouds plane to put up in my sky.
I'm perfectly capable of getting the clouds to just sit there on my plane through a texture file, however what I want to know is if I can
move the texture over the plane in a direction so that it seems like they
are moving.
Thanks,
George
P.S. Is there a way to define a set color on a texure to be transparent? So that I can have multiple cloud cover layers to give things some depth?
farshizzo
04-06-2006, 11:29 AM
Hi,
I've attached a sample script that shows how to move a texture across a surface:import viz
viz.go()
viz.clearcolor(viz.SKYBLUE)
#Create a quad to display texture
quad = viz.add(viz.TEXQUAD)
quad.translate(0,1.8,3)
CLOUD_SPEED = 0.1
#Create texture with repeating wrap mode
tex = viz.add('ball.jpg')
tex.wrap(viz.WRAP_S,viz.REPEAT)
tex.wrap(viz.WRAP_T,viz.REPEAT)
tex.pos = 0
#Apply texture to quad
quad.texture(tex)
def ontimer(num):
#Increment texture position
tex.pos += CLOUD_SPEED * viz.elapsed()
#Create transform for texture
mat = viz.Transform()
mat.setTrans(tex.pos,0,0)
#Apply transform to texture
quad.texmat(mat)
viz.callback(viz.TIMER_EVENT,ontimer)
viz.starttimer(0,0,viz.FOREVER)There is no built-in command to set a transparent color on a texture. You can set the transparent level on an object though. If you want only a certain color to be transparent then you will have to use a shader or simply edit the image with a program like Photoshop and save it to a format that supports transparency (png,tiff,etc..).
Also, I've attached a sample script that uses shaders to creating a moving sky with two cloud layers. I think it might be usefull for you.
halley
04-07-2006, 07:14 AM
farshizzo,
Thanks for the specific shader example (I don't think there's an example of this in the manuals). I will also put it to work in a couple outdoor scenarios I have.
Am I understanding it right that the .vp is a "vertex program" OpenGL shader, and the .fp is a "face program" or "fragment program"? You grab the timestamp of the frame, and give it to the .vp code as a parameter. The .vp chooses the appropriate coordinates in the texture to correspond to the frame time, for each vertex. The .fp chooses the appropriate pseudocoloring for a pixel inside a textured triangle face (or fragment) from the given monochrome texture.
Does Vizard parse and compile the .vp/.fp content, or does the underlying OpenGL graphics system?
[I noted you had some Unix line endings in your scripts when I viewed them in Notepad. If anyone else sees that, just replace the little box characters into line breaks. The Vizard editor itself doesn't mind the difference.]
farshizzo
04-07-2006, 08:45 AM
Am I understanding it right that the .vp is a "vertex program" OpenGL shader, and the .fp is a "face program" or "fragment program"?
Yes, these are standard OpenGL vertex/fragment programs. Vizard 3.0 will support the higher level OpenGL shading language, which has a more C like syntax.
Does Vizard parse and compile the .vp/.fp content, or does the underlying OpenGL graphics system?
Your OpenGL driver is in charge of compiling the program and uploading it to the graphics card.
vBulletin® v3.8.7, Copyright ©2000-2024, vBulletin Solutions, Inc.