callback qui tourne en boucle
Touriste
Inscrit:
16/07/2020 16:02
Post(s): 3
suite à un poste précédent ou je cherchais à faire une texture à partir du GPU, j'ai avancé sur ce sujet, mais je me retrouve avec des comportements que je ne m'explique pas, par manque d’expérience en python / blender tres certainement.
aussi si quelqu'un peut m'expliquer les comportement suivants, ce serait hyper cool.
je rencontre les problèmes suivants:
lorsque je lance mon opérateur, la commande modal (bouton gauche) pour lancer l’opérateur fonctionne, mais la commande 'esc' n'est jamais reçu et ma callback tourne en boucle (pour preuve le print) sans avoir d'autre moyen de l’arrêter que de fermer blender.

merci d'avance pour le coup de main.
import bpy
import gpu
import bgl
import random, base64, io, os
import numpy as np
from mathutils import Matrix
from gpu_extras.presets import draw_circle_2d, draw_texture_2d
#from PIL import Image


def draw2(self, context, offscreen):
    print ("test 2")
   
    IMAGE_NAME = "Generated Image"
    RING_AMOUNT = 10
    WIDTH = 512
    HEIGHT = 512
    
    global buffer
    context = bpy.context
    scene = context.scene    
    view_matrix = scene.camera.matrix_world.inverted()

    projection_matrix = scene.camera.calc_matrix_camera(
        bpy.context.evaluated_depsgraph_get(), x=512, y=512)
        
    offscreen.draw_view3d(
        scene,
        context.view_layer,
        context.space_data,
        context.region,
        view_matrix,
        projection_matrix)

    bgl.glDisable(bgl.GL_DEPTH_TEST)
    draw_texture_2d(offscreen.color_texture, (0, -125), WIDTH, HEIGHT)

    buffer = bgl.Buffer(bgl.GL_BYTE, WIDTH * HEIGHT * 4)
    bgl.glReadBuffer(bgl.GL_BACK)
    bgl.glReadPixels(0, 0, WIDTH, HEIGHT, bgl.GL_RGBA, bgl.GL_UNSIGNED_BYTE, buffer)
    
    #if not IMAGE_NAME in bpy.data.images:
    #    bpy.data.images.new(IMAGE_NAME, WIDTH, HEIGHT)
    image = bpy.data.images[IMAGE_NAME]
    image.scale(WIDTH, HEIGHT)
    image.pixels = [v / 255 for v in buffer]
        # restore opengl defaults

    bgl.glDisable(bgl.GL_BLEND)
             
class render_mouth(bpy.types.Operator):
    """test"""
    bl_idname = "render.render_mouth"
    bl_label = "render mouth"    
                   
    def modal (self,context,event):
        if event.type == 'LEFTMOUSE':
            print ("test start")
            return {'RUNNING_MODAL'}
        
        elif event.type == 'ESC':
            bpy.types.SpaceView3D.draw_handler_remove(self._handle, 'WINDOW')
            print ("test end")
            return {'CANCELLED'}
        
        return {'RUNNING_MODAL'}
    

    def invoke(self, context,event):
        if context.area.type == 'VIEW_3D':
            WIDTH = 512
            HEIGHT = 512
            offscreen = gpu.types.GPUOffScreen(WIDTH, HEIGHT)
            args = (self, context,offscreen)
            self._handle = bpy.types.SpaceView3D.draw_handler_add(draw2, args, 'WINDOW', 'POST_PIXEL')
            #bpy.app.handlers.frame_change_pre.clear()
            print ("test 3")
            return {'RUNNING_MODAL'}     
        

    
   

def register():
    bpy.utils.register_class(render_mouth)

def unregister():
    bpy.utils.unregister_class(render_mouth)
    
if __name__=='__main__':
    register()

Contribution le : 16/07/2020 16:20
Créer un fichier PDF de la contribution Imprimer


Re: callback qui tourne en boucle
Touriste
Inscrit:
16/07/2020 16:02
Post(s): 3
pour info, si je desactive les lignes:
image = bpy.data.images[IMAGE_NAME]
image.scale(WIDTH, HEIGHT)
image.pixels = [v / 255 for v in buffer]


ca regle le probleme. mais pourquoi ??

Contribution le : 16/08/2020 15:04
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses [non résolu] Enlever "snapping" dans la timeline ? 3 34 Hier 20:49:31
moonboots 
[WIP] et travaux terminés [terminé] Appli Blender de Poche en FR    [1][2][3] 25 895 Hier 19:30:49
moonboots 
Questions & Réponses [WIP] Dragster-Tracteur pour Bécassine    [1][2][3] 24 5629 Hier 18:37:48
Laorz 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 123 8854 Hier 14:20:26
blend74 
Questions & Réponses Bug texture sur plane avec bevel 1 166 16/10 08:09:13
Laorz 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 557 170371 16/10 08:04:25
Redstar 
Questions & Réponses MeasureIt et dpi 1 823 16/10 08:01:41
Laorz 
Questions & Réponses [terminé] Supprimer le lien d'un objet entre 2 scènes 4 87 15/10 12:52:21
Horemheb 
Questions & Réponses Blender kit : barre d'assets 0 51 15/10 09:26:52
Sphere3d 
Questions & Réponses MeasureIt et dpi 3 97 15/10 08:39:25
Cdric 
Questions & Réponses Comment faire la symétrie d’une multitude d’éléments.    [1][2] 13 40290 14/10 23:35:18
meltingman 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 213 20959 14/10 12:21:54
moonboots 
Questions & Réponses Conversion courbe 1 86 13/10 16:59:40
moonboots 
Moteur de jeu GameBlender et alternatives [non résolu] Godot Engine - Projet Arsenal    [1][2] 15 1029 13/10 16:14:33
Redstar 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[9] 86 26583 12/10 17:38:03
Bibi09 
Questions & Réponses magie vaudou :)    [1][2] 17 611 12/10 13:24:04
blend74 
Questions & Réponses Couleur étrange en sculpt mode 2 139 12/10 13:07:46
Arielboid 
Graphisme alternatif les addons pour blender : bumarin etc    [1][2] 16 1233 11/10 14:50:16
blend74 
Questions & Réponses Opacité texture PNG 9 279 11/10 13:50:10
Bibi09 
Questions & Réponses [résolu] (animation) Avoir des layers de keyframe ? 7 293 10/10 20:03:35
PounchPounch 

Qui est en ligne
200 utilisateur(s) en ligne (dont 40 sur Forums)

Membre(s): 7
Invité(s): 193


AudraWarre, IrvingLank, Latia90O4, ScottyTopp, ZNKCliff78, Finley6857, CecilaArmi, plus...
Nouveaux membres
EmersonVig 18/10/2021
EduardoRam 18/10/2021
RoderickWa 18/10/2021
UteHanes85 18/10/2021
KassieNina 18/10/2021
UKBTravis 18/10/2021
Salvador57 18/10/2021
DanaX88303 18/10/2021
LenoraRose 18/10/2021
MarilynSki 18/10/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
plus 247 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445