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): 616
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): 99
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): 616
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): 616
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 [DEBUTANT] Comment exporter 2 canaux uv/texture en glTF 2.0 ? 1 7 Aujourd'hui 06:46:57
punkcoders 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[13] 124 9760 Hier 20:21:02
blend74 
Moteur de jeu GameBlender et alternatives [WIP] Godot Engine - Projet Arsenal    [1][2][3] 21 1470 Hier 16:20:45
Redstar 
Questions & Réponses plan de coupe booléen 3 56 Hier 15:21:37
yawdpwal 
Questions & Réponses Rendement en temps réel pour l'animation ? 6 76 Hier 14:21:48
thomas56 
Questions & Réponses [non résolu] Question/Problème de Fluides sur Blender 2 40 Hier 11:57:08
CBY 
Python & Plugins BlenderGeoAlt - Générer le terrain d'après des coordonnées 1 8101 Hier 08:33:08
Jambz 
Questions & Réponses Armature en IK sur squelette complexe 6 175 26/10 19:27:26
Redstar 
Questions & Réponses Texture Procedural Cercle de point 2 55 26/10 16:48:31
Berger 
Questions & Réponses MeasureIt et dpi 5 1004 26/10 15:16:15
Cdric 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[22] 219 22085 26/10 14:37:28
moonboots 
Questions & Réponses comment modifier l'échelle d'incrémentation d'un champ? 1 28636 24/10 20:09:37
moonboots 
Le coin des geeks vitesse d'un rendu EEVEE Windows/Linux 5 182 24/10 15:18:10
Bibi09 
Questions & Réponses Pousser le pc au max 3 190 22/10 11:07:37
xjoce 
Questions & Réponses [non résolu] Problème de vide 1 131 21/10 18:09:50
sapajou 
[WIP] et travaux terminés [WIP] La gabarre '' Le Gros Ventre''    [1][2][3]...[10] 98 17994 21/10 15:53:58
Guiu 
Questions & Réponses [résolu] Os et FBX 3 298 20/10 16:15:38
zeromeetsinfinity 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[56] 559 171492 20/10 11:06:51
Redstar 
Questions & Réponses texture procédurale qui suis une plane 2 169 20/10 10:19:22
Many 
Questions & Réponses Vertex groups qui disparaissent 0 100 20/10 09:09:22
Melodicpinpon 

Qui est en ligne
246 utilisateur(s) en ligne (dont 90 sur Forums)

Membre(s): 8
Invité(s): 238


MarylynWeg, DanaeBusto, JaiDelFabb, SaraMulgra, WalkerMcda, DeePurcell, ChanceAsch, Tina00Y808, plus...
Nouveaux membres
ShielaLkm3 28/10/2021
KarenLangl 28/10/2021
BHAAva1430 28/10/2021
VenusBeer 28/10/2021
KelvinHend 28/10/2021
OlivaCarne 28/10/2021
ChristieFr 28/10/2021
OYRGrady13 28/10/2021
Alyssa18N 28/10/2021
RashadTild 28/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