Ignore:
Timestamp:
09/24/08 06:28:06 (4 years ago)
Author:
flupke <flupke@…>
Children:
1b0cdd33d70957213349cfa0cae373c7350c73a5
Parents:
206d95c9b3331ad20b32a8ff1c5e9666a2029a28
git-committer:
flupke <flupke@…> (09/24/08 06:28:06)
Message:

palette:

  • corrigé l'init de GLUT pour que la fenêtre soit créée avec la taille spécifiée dans le plugin
  • les classes pour utilisers les FBO fonctionnent
  • fait un test d'encodage d'animation en moiré


git-svn-id:  http://kawa.selfip.org/svn/projects@503 532e76a9-45ae-c241-9c6d-8309ac6440cd

File:
1 moved

Legend:

Unmodified
Added
Removed
  • palette/trunk/palette/plugins/moire/__init__.py

    r5964203 rbfad342  
    22from OpenGL.GL import * 
    33from OpenGL.GLU import * 
     4from encode import ScreenEncoder 
    45 
    56 
     
    2021    "elements_resolution": "integer(from=3, to=1024, default=256)", 
    2122    "line_width": "float(from=0.05, to=150.0, increment=0.1, default=3.4)", 
    22     "mode": "enum(values=lines|circles|spiral, default=lines)", 
     23    "mode": "enum(values=lines|circles|spiral|dynamic, default=dynamic)", 
     24    "encoder_steps": "integer(from=2, to=50, default=5)", 
    2325} 
    2426 
     
    2931    "spiral": None, 
    3032} 
     33encoder = None 
    3134 
    3235 
    3336def setup(): 
    34     global display_lists_base, display_lists 
     37    global display_lists_base, display_lists, encoder 
    3538    display_lists_base = glGenLists(len(display_lists)) 
    3639    for i, dl_id in enumerate(display_lists): 
     
    3942 
    4043def tear_down(): 
    41     global display_lists_base, display_lists 
    4244    glDeleteLists(display_lists_base, len(display_lists)) 
    4345 
    4446 
    4547def parameters_changed(parameters): 
    46     global display_lists_base, display_lists 
     48    global encoder 
    4749    glNewList(display_lists["circle"], GL_COMPILE) 
    4850    glBegin(GL_LINE_LOOP) 
     
    6264    glEnd()     
    6365    glEndList() 
     66    encoder = ScreenEncoder(parameters["encoder_steps"], (512, 512)) 
    6467 
    6568 
    6669def render(p, canvas, parameters, frame, time): 
    67     global display_lists_base, display_lists 
    6870    # Setup a 2D transformation 
    6971    glMatrixMode(GL_PROJECTION) 
     
    7375    # Enable antialiasing 
    7476    glEnable(GL_LINE_SMOOTH) 
    75     glEnable(GL_BLEND); 
     77    glEnable(GL_BLEND) 
    7678    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 
    7779    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST) 
     80    glShadeModel(GL_SMOOTH) 
     81    glDisable(GL_TEXTURE_2D) 
    7882    # Clear screen 
    7983    glClearColor(1, 1, 1, 0) 
     
    99103                parameters["elements_resolution"]) 
    100104    elif parameters["mode"] == "spiral": 
     105        #scale = canvas.size[0] *0.9 
    101106        glLoadIdentity() 
     107        glTranslate(canvas.center[0], canvas.center[0]) 
     108        #glScale(scale, scale, scale) 
    102109        spiral() 
    103110        glLoadIdentity() 
    104111        amp_x = sin(time * 0.7657) * parameters["amplitude"] 
    105112        amp_y = cos(time * 0.25687) * parameters["amplitude"] 
    106         glTranslate(cos(time) * amp_x, sin(time) * amp_y, 0) 
     113        glTranslate(canvas.center[0] + cos(time) * amp_x,  
     114                canvas.center[1] + sin(time) * amp_y, 0) 
     115        #glScale(scale, scale, scale) 
    107116        spiral() 
    108          
     117    elif parameters["mode"] == "dynamic": 
     118        encoder.begin_frame() 
     119        glLoadIdentity() 
     120        frame = frame % encoder.num_frames 
     121        a = float(frame) / encoder.num_frames * 2.0 * pi 
     122        x = parameters["amplitude"] * cos(a) + canvas.center[0] 
     123        y = parameters["amplitude"] * sin(a) + canvas.center[1] 
     124        glTranslate(x, y, 0) 
     125        glScale(100, 100, 1) 
     126        glBegin(GL_TRIANGLE_FAN) 
     127        glVertex2f(0, 0) 
     128        for i in range(10): 
     129            alpha = float(i) / 5.0 * pi 
     130            x = cos(alpha) 
     131            y = sin(alpha) 
     132            glVertex2f(x, y) 
     133        glVertex2f(1, 0) 
     134        glEnd() 
     135        encoder.end_frame() 
     136        if encoder.complete: 
     137            encoder.render_base() 
     138            glLoadIdentity()             
     139            glTranslate((time * 30.0) % encoder.num_frames, 0, 0) 
     140            encoder.render_mask() 
    109141 
    110142 
Note: See TracChangeset for help on using the changeset viewer.