# ==================================
# Charge et affiche une image jpg/png/tga ou bmp v.0.2
# en utilisant les nouvelles fonctions du module image
#
# jmsoler, 29/10/2004
# ==================================
import Blender
from Blender import BGL
IMAGE_ADRESSE="F:/EasyPHP/www/jmsoler/util/blenderfile/bonneannee2004.jpg"
img=Blender.Image.Load(IMAGE_ADRESSE)
img.glLoad()
def Display_Image(img,x,y,dx,dy):
"""
img = l'objet chrage' en passant par la fonction
Blender.Image.Load()
x,y = position dans la fentre de script à
partir de coin inferieur gauche
dx,dy = mise a l'echelle : dx*longuer, dy*hauteur
"""
BGL.glEnable(BGL.GL_TEXTURE_2D)
BGL.glBindTexture(BGL.GL_TEXTURE_2D, img.getBindCode())
BGL.glBegin(BGL.GL_POLYGON)
BGL.glTexCoord2f(0.0,0.0)
BGL.glColor3f(1.0,1.0,1.0)
BGL.glVertex3f(float(x),float(y),0.0)
BGL.glTexCoord2f(1.0,0.0)
BGL.glColor3f(1.0,1.0,1.0)
BGL.glVertex3f(float(x+img.getSize()[0]*dx),float(y),0.0)
BGL.glTexCoord2f(1.0,1.0)
BGL.glColor3f(1.0,1.0,1.0)
BGL.glVertex3f(float(x+img.getSize()[0]*dx),float(y+img.getSize()[1]*dy),0.0)
BGL.glTexCoord2f(0.0,1.0)
BGL.glColor3f(1.0,1.0,1.0)
BGL.glVertex3f(float(x),float(y+img.getSize()[1]*dy),0.0 )
BGL.glEnd()
BGL.glDisable(BGL.GL_TEXTURE_2D)
def draw():
global img
size= BGL.Buffer(BGL.GL_FLOAT, 4)
BGL.glGetFloatv(BGL.GL_SCISSOR_BOX, size)
size= size.list
# Exemple 1, image en fond d'ecran
# au dimension de la fenetre de script
Display_Image(img,1,1,size[2]/img.getSize()[0],size[3]/img.getSize()[1])
#exemple 2, image redimensionnee
Display_Image(img,30,10,0.3,2.0)
#exemple 3, decoupe dans un coin en haut a droite
Display_Image(img,size[2]-100,size[3]-100,2.0,0.5)
#exemple 4, affichage normal
Display_Image(img,130,100,1.0,1.0)
Blender.Draw.Button("Exit", 1, 100, 10, 80, 19)
def event(evt, val):
global img
if (evt== Blender.Draw.QKEY and not val):
Blender.Draw.Exit()
img.glFree()
else:
Blender.Window.Redraw(Blender.Window.Types['SCRIPT'])
def bevent(evt):
if (evt== 1): Blender.Draw.Exit()
Blender.Draw.Register(draw, event, bevent) |