Viewport info

Modérateurs : Matpi, frez, Yadoob, stilobique, ModSquad

Viewport info

Message par pistiwique » 25 Mai 2015, 14:51

Yop tout le monde.
Voici un petit script qui est destiné à devenir un addon qui permet de faire apparaître dans le viewport les infos que l'on souhaite.
Pour l'instant, on ne peut afficher que le detail_refine_method avec son detail_size ainsi que le detail_type_method tout ça en mode Dyntopo activé.
Le panel qui se trouve dans l'UI:
Image
Et le Viewport:
Image
N'hésitez pas à me dire ce que vous aimeriez pouvoir ajouter.
Cédric et Stilobic on déjà parlé d'afficher le nombre de Ngons, de tris, de polys, s'il y a des UV's, ect...
Et le script :D :
Code : Tout sélectionner
import bpy
import blf
import bgl

def draw_text_array(context, text):
    st = context.window_manager.show_text
    offset_y = st.offset_y
    height = context.region.height   
    loc_x = st.text_pos_x
    loc_y = height - st.text_pos_y - st.text_font_size
   
    r, g, b = st.text_font_color
    bgl.glColor3f(r, g, b)
    blf.size(0, st.text_font_size, 72)
    for Text in text:
        blf.position(0, loc_x, loc_y, 0)
        blf.draw(0, ''.join(Text))
        loc_y -= offset_y + st.text_font_size
                           
def draw_text_callback(self, context):
   
    st = context.window_manager.show_text
    ds = context.scene.tool_settings.sculpt
    Detail_Size = ds.detail_size
    Constant_Detail = ds.constant_detail
    Detail_Percent = ds.detail_percent
   
    detail_refine = bpy.context.scene.tool_settings.sculpt.detail_refine_method
    Detail_Type = bpy.context.scene.tool_settings.sculpt.detail_type_method
   
    text = []
    if context.window_manager.show_text.enabled:
        if context.object.mode == 'SCULPT':
            if context.sculpt_object.use_dynamic_topology_sculpting:
                if st.refine_method:                                     
                    if ds.detail_type_method == 'RELATIVE':
                        text.append(detail_refine.lower() + ": " + str(round(Detail_Size, 2)) + " px")
                    elif ds.detail_type_method == 'CONSTANT':
                        text.append(detail_refine.lower() + ": " + str(round(Constant_Detail, 2)) + " %")
                    elif ds.detail_type_method == 'BRUSH':
                        text.append(detail_refine.lower() + ": " + str(round(Detail_Percent, 2)) + " %")                   
               
                if st.detail_type:
                    text.append(Detail_Type.lower())
               
        draw_text_array(context, text)
     
class VIEW3D_OT_ADH_display_text(bpy.types.Operator):
    """Display detail_refine_method active"""
    bl_idname = "view3d.adh_display_text"
    bl_label = "Display Text"
    bl_options = {'REGISTER'}
   
    _handle = None
   
    def modal(self, context, event):
        context.area.tag_redraw()
        if not context.window_manager.show_text.enabled:
            return {'CANCELLED'}
        return {'PASS_THROUGH'}
     
    @staticmethod
    def handle_add(self, context):
        VIEW3D_OT_ADH_display_text._handle = bpy.types.SpaceView3D.draw_handler_add(
               draw_text_callback,
               (self, context),
               'WINDOW', 'POST_PIXEL')
   
    @staticmethod
    def handle_remove(context):
        _handle = VIEW3D_OT_ADH_display_text._handle
        if _handle != None:
            bpy.types.SpaceView3D.draw_handler_remove(_handle, 'WINDOW')
        VIEW3D_OT_ADH_display_text._handle = None
                       
    def invoke(self, context, event):
        if context.window_manager.show_text.enabled == False:
            context.window_manager.show_text.enabled = True
            context.window_manager.modal_handler_add(self)
            VIEW3D_OT_ADH_display_text.handle_add(self, context)

            return {'RUNNING_MODAL'}
        else:
            context.window_manager.show_text.enabled = False
            VIEW3D_OT_ADH_display_text.handle_remove(context)

            return {'CANCELLED'}

        return {'CANCELLED'}
   
class VIEW3D_PT_ADH_display_matrix(bpy.types.Panel):
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_label = "Display Text"
    bl_options = {'DEFAULT_CLOSED'}
   
    @classmethod
    def poll(self, context):
        mode = context.mode
        return context.active_object is not None
   
    def draw(self, context):
        layout = self.layout
        st = context.window_manager.show_text
       
        if context.window_manager.show_text.enabled:       
            layout.operator('view3d.adh_display_text', text="Enabled", icon='RESTRICT_VIEW_OFF')
        else:
            layout.operator('view3d.adh_display_text', text="Disabled", icon='RESTRICT_VIEW_ON')
        col = layout.column(align=True)
        if context.object.mode == 'SCULPT':
            col.prop(st, "refine_method")
            col.prop(st, "detail_type")           
        row = col.row(align=True)
        row.prop(st, "text_pos_x")
        row.prop(st, "text_pos_y")
        row = col.row(align=True)
        row.prop(st, "offset_y")
        row.prop(st, "text_font_size")

        layout.prop(st, "text_font_color")

class ADH_DisplayTextProps(bpy.types.PropertyGroup):

    enabled = bpy.props.BoolProperty(default=False)
    # Sculpt properties
    refine_method = bpy.props.BoolProperty(default=False, name="Detail refine method")
    detail_type = bpy.props.BoolProperty(default=False, name="Detail type method")
    text_pos_x = bpy.props.IntProperty(name="Pos X", default=23, min=0, max=200)
    text_pos_y = bpy.props.IntProperty(name="Pos Y", default=30, min=0, max=200)
    offset_y = bpy.props.IntProperty(name="Offset Y", default=5, min=5, max=20)
    text_font_size = bpy.props.IntProperty(name="Font", default=12, min=10, max=50)
    text_font_color = bpy.props.FloatVectorProperty(name="Color", default=(1.0, 1.0, 1.0), min=0, max=1, subtype='COLOR')
   

def register():
    bpy.utils.register_module(__name__)
    bpy.types.WindowManager.show_text = bpy.props.PointerProperty(type=ADH_DisplayTextProps)

def unregister():
    bpy.utils.unregister_module(__name__)
    VIEW3D_OT_ADH_display_text.handle_remove(bpy.context)
    del bpy.types.WindowManager.show_text

if __name__ == "__main__":
    register()
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par cedric » 25 Mai 2015, 20:31

Hé Hé bien sympa, thx ;)
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 6451
Inscription : 03 Août 2013, 21:36

Re: Viewport info

Message par pistiwique » 25 Mai 2015, 22:21

OUIIIIIIIIIIIIII !!!!!!
Je viens d'ajouter la possibilité de voir le nombre de tris et de ngons en mode edit et surtout, que ça se refresh auto :D.
l'update.
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par cedric » 25 Mai 2015, 22:44

Hooo trop bien ^^

Je pense qu'on peu placer le mots direct au bon endroit, genre :

X 29, Y 75, font 18

Je pense qu'on peut faire un truc bien complet.

Il faut qu'on liste ce qui serait intéressant d'afficher en fonction du mode.

Un peu comme sur maya ou d'autres soft.

Comme :

- Le frame rate
- La distance de la cam par rapport à la vue
- Le nombre de tri en mode dyntopo (pratique pour savoir ou en en est si ça rame) C'est indiqué en haut, mais qui regarde en haut :/
- Si la symétrie est activée, enfin les options du sculpt/dyntopo pour quand on bosse en plein écran
- La taille de la brosse et son intensité par exemple.
- etc

Je pense qu'il faudrait en discuter en vocal pour voir ce qu'il serait intéressant de faire.
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 6451
Inscription : 03 Août 2013, 21:36

Re: Viewport info

Message par pistiwique » 26 Mai 2015, 08:08

Oui ça serai bien de faire une liste histoire de vie le boulot qui m'attend :lol:
Par contre j'ai remarqué hier que dans la fenêtre info j'avai un toggle constant entre edit et object mode mais ça doit surement venir du modal .
Je ne sais pas si ça a une importance mais j'aimerai bien pouvoir l'arrêter ce truc.
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par cedric » 26 Mai 2015, 09:43

Il n'y a pas tant de trucs que ça à afficher je pense, juste ce qui peut faire gagner du temps.
Le coup des ngons est très bon et bien utile !
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 6451
Inscription : 03 Août 2013, 21:36

Re: Viewport info

Message par pistiwique » 26 Mai 2015, 12:09

Peu être rajouter aussi une détection de N et E pole si ça peut être utile.
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par cedric » 26 Mai 2015, 12:12

Je pense qu'on peut faire une liste à côcher des éléments que l'utilisateur veut afficher.

En différents modes
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 6451
Inscription : 03 Août 2013, 21:36

Re: Viewport info

Message par pistiwique » 26 Mai 2015, 12:56

Oui c'est se que je comptai faire, limite un custom menu comme ça ça libère l'UI ou alors dans les perf de l'addon.
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par cedric » 26 Mai 2015, 13:12

Ouaip !
Pas dans les prefs de l'Addon, il faut qu'on puisse modifier ce qu'on veut rapidos.
Donc, un sous menu avec différentes parties comme sur mon pie retopo.

Je pense qu'on peu mettre des info en haut à gauche et à droite et en bas à droite.

Listons ce qui est utile :

Object mode :

- Ngons + Tri + Vert
- FPS

Edit Mode :

- Ngons + Tri + Vert
- FPS

Sculpt mode :

- Dyntopo mode
- Size de la brosse + strenght
- Symétry
- FPS

Info de Shading en haut à droite :

- Backface On/Off
- Wire On/Off
- Smooth On/Off

Info scène en bas à droite :

- Nb d'objets sélectionnés
- Distance from camera
- La frame sur laquelle on est
- La focale de la cam


Info de rendus :

- Reso
- Frame range
- Frame rate
- Sampling


Reprenez ce que j'ai mis pour ajouter ce qui serait utile.
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 6451
Inscription : 03 Août 2013, 21:36

Re: Viewport info

Message par pistiwique » 26 Mai 2015, 17:43

Bein ça en fait des choses à afficher dis donc quand même :lol:
Petite modif en edit mode qui évite le toggle à répétition dont j'avais parlé dans la fenêtre info.
Bmesh c'est magique :lol: .
Par contre , je vais passer pour un boulet mais, qu'est ce que tu veux dire par FPS ?
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par cedric » 26 Mai 2015, 18:11

Le frame rate du viewport, les fps, en sculpt, ça permet de voir si notre bécane suit et en dyntopo ça nous permet de modifier la topo en conséquence.
Si t'es à 4 fps, faut faire quelque chose ^^

Sinon, oui, il peu y avoir plein de trucs à afficher, c'est ce qui en fera un addon complet et bien utile ^^
Après, dépend de ce que tu veux faire bien entendu.

Faudrait que je matte ton code pour t'aider tant qu'à faire :/
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 6451
Inscription : 03 Août 2013, 21:36

Re: Viewport info

Message par Pixivore » 26 Mai 2015, 18:21

Le matériau associé à l'objet? Sinon beau boulot Pistiwique, t'as bien progressé en code ;)
Avatar de l’utilisateur
Pixivore
 
Message(s) : 226
Inscription : 08 Jan 2014, 11:10

Re: Viewport info

Message par pistiwique » 26 Mai 2015, 18:41

Sinon beau boulot Pistiwique, t'as bien progressé en code

Merci Pixivore, mais heureusement qu'il y a internet :lol: .
Rien que pour comprendre (et c'est pas encore bien net) comment afficher dans le viewport, j'ai du comparer 4 scripts :?

Après, dépend de ce que tu veux faire bien entendu.

Autant en faire un addon le plus complet possible, tout le monde n'a pas besoin des mêmes chose donc plus il y a de choix, mieux c'est ;) .
Avatar de l’utilisateur
pistiwique
 
Message(s) : 499
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Viewport info

Message par Cellulo » 26 Mai 2015, 21:01

Ce serai bien d'avoir l'affichage du nombre de tris en Dyntopo mais qui change de couleur, par exemple en vert la carte 3D gère bien, puis après ça passe en orange puis rouge quand ça commence à être critique pour la carte 3D lorsqu'il faut gérer plus de tris, peut être aussi mettre ce changement de couleur sur l'affichage fps, ça renseigne toute de suite, c'est juste idée je sais pas si c'est faisable en python, en tout cas merci pour votre forum et toutes les ressources que vous créez pour la communauté de blender, communauté qui commence à grandir de plus en plus d'ailleurs. :o
Cellulo
 
Message(s) : 21
Inscription : 27 Juil 2014, 07:21
Localisation : 9cube

Suivant

Retour vers Addons

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité