Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
OverdOzed
Inscrit:
18/02/2015 20:28
Post(s): 615
Si l'un de vous, pythoneux de tous poils, sait comment muter légèrement la bête pour que les deux magnifiques options 'add driver' et 'Copy data path' deviennent actives et fonctionnelles lors d'un RMB sur les icône en forme d'oeil de l'outliner(si possible des objets et aussi des collections)

je le PAIE

Contribution le : 08/09 17:03:19
Créer un fichier PDF de la contribution Imprimer


Re: Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
Clan Afficionado
Inscrit:
12/01/2019 19:44
Post(s): 98
Bonjour,

Pourquoi ne pas investir dans un keypad programmable. Souris dans la main droite, keypad à gauche, souplesse et productivité assurée. Personnellement j'utilise un Razer Tartarus où j'ai programmé tous les raccourcis usuels.

Il y a aussi les claviers programmables, moins pratiques car oblige à quitter la souris.

Contribution le : 14/09 09:35:38
Créer un fichier PDF de la contribution Imprimer


Re: Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
OverdOzed
Inscrit:
08/10/2003 09:20
De Annecy
Post(s): 3036
Hello,
C'est un peu subtile et pas franchement intuitif en fait. Explications.
Le problème c'est que l'icône d'oeil est liée à une fonction qui set la visibilité de l'objet lorsqu'elle est cliquée, ce n'est pas une property:
obj.hide_set(True/False)

Donc à priori pas moyen de la lier tel quel à un driver, quoique en cherchant peut être. Mais tu peux utiliser la property "hide_viewport" à la place. Dans l'outliner clique l'icône de filtre en haut à droite, et active l'écran à côté de l'oeil. C'est l'équivalent de cacher un objet dans un calque dans Blender 2.79, c'est mieux que l'icône d'oeil car ça désactive aussi toutes les évaluations. Par exemple si tu caches avec l'oeil un objet de 50 millions de polys, ta scène va continuer de ramer même s'il est caché. Par contre si tu le cache avec l'icone d'écran, là ça na ramera plus.

Contribution le : 14/09 10:36:26
_________________
lucky
www.lucky3d.fr
Auto-Rig Pro Addon: Blender Market - GumRoad
Créer un fichier PDF de la contribution Imprimer


Re: Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
OverdOzed
Inscrit:
18/02/2015 20:28
Post(s): 615
J'ai fini par obtenir un script qui lie la visibilité e l'enfant à celle du parent (et pas l'inverse) et qui garde les lumières allumées quand des objets sont isolés:

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
bl_info = {
"name" : "Z-Anatomy",
"author" : "Marcin Zieliński, Justin Müller",
"description": "Shows all objects that contains 'always_front' front faced and 'always_show' are never hidden in viewport. Makes hiding objects inheritable.",
"blender" : (2, 80, 0),
"version" : (0, 0, 1),
"location" : "",
"warning" : "",
"category" : "Interface"
}

import bpy

def family(object):
''' Object + Grand children without ancestors '''
family = [object.children[:]+(object,)]

def rec(object, family):
family[0] += object.children
for ob in object.children:
rec(ob, family)

for ob in object.children:
rec(ob, family)

return family.pop()

class OBJECT_OT_hide_wrapper(bpy.types.Operator):
"""Hide"""
bl_idname = "object.hide_wrapper"
bl_label = "Hide"
bl_options = {'REGISTER'}

unselected: bpy.props.BoolProperty(default = False)

@classmethod
def poll(cls, context):
return context.mode == 'OBJECT' and context.object is not None

def execute(self, context):
def findRoot(ob):
while ob and ob.parent:
if ob in objects_to:
objects_to.remove(ob)
# if '%' in ob.parent.name:
if not ob.parent.parent and not self.unselected:
return ob
ob = ob.parent
return ob

roots = []
objects_to = set(context.selected_objects)
while objects_to:
ob = objects_to.pop()
roots.append(findRoot(ob))

family_obs=[ob for r in roots for ob in family(r)]
if not self.unselected:
for ob in family_obs:
ob.hide_set(True)
else:
all_objects = set(context.view_layer.objects)
lights = {l for l in context.view_layer.objects if l.type=='LIGHT'}

for ob in all_objects-set(family_obs)-lights:
ob.hide_set(True)

return {'FINISHED'}

def get_user_keymap_item(keymap_name, keymap_item_idname, multiple_entries=False):
wm = bpy.context.window_manager
kc = wm.keyconfigs.user

km = kc.keymaps.get(keymap_name)
if multiple_entries:
return km, [i[1] for i in km.keymap_items.items() if i[0] == keymap_item_idname]
else:
return km, km.keymap_items.get(keymap_item_idname)

def register_keymaps():
kc = bpy.context.window_manager.keyconfigs
areas = 'Window', 'Text', 'Object Mode', '3D View'

if not all(i in kc.active.keymaps for i in areas):
bpy.app.timers.register(register_keymaps, first_interval=0.1)
else:
# can now proceed with checking default kmis
km, kmis = get_user_keymap_item('Object Mode', 'object.hide_view_set', multiple_entries=True)
wm = bpy.context.window_manager
addon_km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
for default_kmi in kmis:
addon_kmi = addon_km.keymap_items.new(OBJECT_OT_hide_wrapper.bl_idname, default_kmi.type, default_kmi.value)
addon_kmi.map_type = default_kmi.map_type
if hasattr(addon_kmi, 'repeat'):
addon_kmi.repeat = default_kmi.repeat
addon_kmi.any = default_kmi.any
addon_kmi.shift = default_kmi.shift
addon_kmi.ctrl = default_kmi.ctrl
addon_kmi.alt = default_kmi.alt
addon_kmi.oskey = default_kmi.oskey
addon_kmi.key_modifier = default_kmi.key_modifier

addon_kmi.properties.unselected = default_kmi.properties.unselected

addon_keymaps.append((addon_km, addon_kmi))


addon_keymaps = []
def add_shortkeys():
register_keymaps()

def remove_shortkeys():
wm = bpy.context.window_manager
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi)

addon_keymaps.clear()

# Follow Viewport

from bpy.props import (StringProperty,
BoolProperty,
IntProperty,
FloatProperty,
FloatVectorProperty,
EnumProperty,
PointerProperty,
)

from bpy.types import (Panel,
Operator,
AddonPreferences,
PropertyGroup,
)

from bpy.app.handlers import persistent
@persistent
def start_timer(scene=None):
def refresh():
for area in bpy.context.screen.areas:
if area.type == 'VIEW_3D':
area3D = area
viewport_orientation = area3D.spaces[0].region_3d.view_rotation

for obj in bpy.data.objects:
if '-label' in obj.name:
if obj.rotation_quaternion != viewport_orientation:
if obj.rotation_mode != 'QUATERNION':
obj.rotation_mode = 'QUATERNION'
obj.rotation_quaternion = viewport_orientation

if 'always_show' in obj.name and obj.hide_get():

obj.hide_set(False)
obj.hide_viewport = False
return 0.0165

bpy.app.timers.register(refresh, first_interval=0.01)

classes = (
OBJECT_OT_hide_wrapper,
)

def register():
start_timer()
bpy.app.handlers.load_post.append(start_timer)
for c in classes:
bpy.utils.register_class(c)

add_shortkeys()



def unregister():
for c in classes:
bpy.utils.unregister_class(c)
remove_shortkeys()

bpy.app.handlers.load_post.remove(start_timer)



if __name__ == "__main__":
register()

Contribution le : 15/09 10:46:31
Créer un fichier PDF de la contribution Imprimer


Re: Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
OverdOzed
Inscrit:
08/10/2003 09:20
De Annecy
Post(s): 3036
Hmm pas sûr de comprendre ce que tu veux faire, mais bon tant mieux si ce script t'es utile alors.

Contribution le : 15/09 18:48:03
_________________
lucky
www.lucky3d.fr
Auto-Rig Pro Addon: Blender Market - GumRoad
Créer un fichier PDF de la contribution Imprimer


Re: Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
OverdOzed
Inscrit:
18/02/2015 20:28
Post(s): 615
L'objectif initial étant de parvenir à créer des labels semblables à ceux de 'Call out tiles' mais qui disparaissent en même temps que l'objet légendé, comme ceux de MeasureIt, j'avais besoin de lier la visibilité de deux objets via les icônes d'oeil.

Ça a été résolu en liant la visibilité de l'enfant (le label) au parent (un os, ou autre),

dans la foulée, le script contraint les labels vers la vue 3D, comme MeasureIt

Et il résout aussi le problème des lumières qui s'éteignaient quand on isolait les structures avec Shift+H

Il ne me reste plus que ce petit script à obtenir:
https://blender.stackexchange.com/questions/238139/match-the-text-editor-to-the-active-objects-name
pour pouvoir entrer les définitions de chaque label, et chaque objet, et je pourrai enfin avoir un véritable atlas avec des légendes et ouvrir les définitions dans l'éditeur de texte.

Contribution le : 15/09 21:42:45
Créer un fichier PDF de la contribution Imprimer


Re: Combien pour me faire un script qui permet d'ajouter une option driver sur l'icone de l'oeil?
OverdOzed
Inscrit:
08/10/2003 09:20
De Annecy
Post(s): 3036
Je n'ai aucune idée de ce dont tu parles Melodicpinpon (Call out tiles, MeasureIt?)
Je ne sais pas si tu fais référence à un autre topic... en tout cas je comprends qu'il est question d'éclairage, de lampe qui doivent s'allumer ou s'éteindre...
Mais peut importe, problème auto résolu du coup, roulez jeunesse

Contribution le : 16/09 14:56:23
_________________
lucky
www.lucky3d.fr
Auto-Rig Pro Addon: Blender Market - GumRoad
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 comment modifier l'échelle d'incrémentation d'un champ? 1 8412 Hier 20:09:37
moonboots 
Questions & Réponses Armature en IK sur squelette complexe 3 115 Hier 18:36:27
Melodicpinpon 
Le coin des geeks vitesse d'un rendu EEVEE Windows/Linux 5 130 Hier 15:18:10
Bibi09 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 218 21706 23/10 16:17:44
moonboots 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2] 18 1336 22/10 16:38:22
Redstar 
Questions & Réponses Pousser le pc au max 3 143 22/10 11:07:37
xjoce 
Questions & Réponses [non résolu] Problème de vide 1 91 21/10 18:09:50
sapajou 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 98 17767 21/10 15:53:58
Guiu 
Questions & Réponses [résolu] Os et FBX 3 263 20/10 16:15:38
zeromeetsinfinity 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 559 171100 20/10 11:06:51
Redstar 
Questions & Réponses texture procédurale qui suis une plane 2 139 20/10 10:19:22
Many 
Questions & Réponses Vertex groups qui disparaissent 0 69 20/10 09:09:22
Melodicpinpon 
Questions & Réponses MeasureIt et dpi 4 949 20/10 09:02:36
jcnouveau 
Questions & Réponses De Maya vers Blender concordance de axes. 9 191 19/10 17:04:59
Bibi09 
Questions & Réponses [résolu] Enlever "snapping" dans la timeline ? 6 164 19/10 09:47:12
CBY 
[WIP] et travaux terminés [terminé] Appli Blender de Poche en FR    [1][2][3] 29 1338 18/10 19:14:29
moonboots 
Questions & Réponses Débutant Blender, temps de travail pour un rendu ? 2 134 18/10 11:37:55
Jalis 
Questions & Réponses [WIP] Dragster-Tracteur pour Bécassine    [1][2][3] 24 5832 17/10 18:37:48
Laorz 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 123 9452 17/10 14:20:26
blend74 
Questions & Réponses Bug texture sur plane avec bevel 1 235 16/10 08:09:13
Laorz 

Qui est en ligne
224 utilisateur(s) en ligne (dont 80 sur Forums)

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


JaimeMoult, TYVSophie, VictoriaBo, PhyllisVac, GwendolynT, BenitoPoli, EfrenWilli, plus...
Nouveaux membres
TamiBuchan 25/10/2021
LeonaBrodn 25/10/2021
KristanMcc 25/10/2021
PhillisHed 25/10/2021
LuisGoshor 25/10/2021
BlancheTor 25/10/2021
MatildaHil 25/10/2021
LatoshaMcA 25/10/2021
SonyaHinso 25/10/2021
AngelaBrun 25/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