PDA

Voir la version complète : Résolu Tolerant Edge/Polygon Selection: raccourci clavier possible?



Morgoth2k
19/09/2013, 01h00
Bonjour ou Bonsoir à tous.

Etant modeleur depuis un peu plus de 15 ans sur un produit concurrent, j'en suis venu, petit à petit, suite aux commentaires de certains collègues à observer de loin, votre application phare: C4D.
Tout d'abord, bourré de préjugés et gonflé par une certaine suffisance propre aux utilisateurs de logiciels high end, j'ai fini par admettre un certain nombre de qualités inhérentes à votre logiciel 3D de prédilection.
Je me suis donc, depuis quelques jours maintenant, lancé plus sérieusement dans l'apprentissage de Cinema 4D, afin de pouvoir le comparer plus objectivement.
Dans ce contexte, en cherchant la rapidité de production, je me suis tout naturellement intéressé à la cutomisation du soft (layout, shortcut, ...) qui je dois l'avouer est probablement l'une des plus simple à mettre en oeuvre qui soit parmi ce type de produits disponibles sur le marché.
Grâce au "Customize Commands", j'ai rapidement pu assigner des raccourics "mélancoliques" qui me rappelaient certains softs.
Cependant, j'ai eu du mal à localiser l'option de sélection "Only Select Visible Elements". Heureusement, en scrutant l'ensemble des fonctions disponibles, j'ai pu trouver sa correspondance "Toggle Visible Only" et lui assigner un shortcut personnel.:biggrin:
En confiance, j'ai alors tenté de faire la même chose avec l'autre option suivante: "Tolerant Edge/Polygon Selection"... et là, pas de chance: je cherche toujours...:icon_pleure:
Parmi vous, quelqu'un pourrait-il me confirmer la possibilité d'assigner un raccourcis à cette option "Tolerant Edge/Polygon Selection" présente dans les attributs des différents mode de sélection?
Jusqu'à maintenant, j'ai pu m'en tirer par moi-même avec l'aide de la doc du soft mais aussi en scrutant les différents posts de votre forum qui est une véritable petite mine d'or. Mais là, je dois bien l'admettre, je coince...:icon_question:

à vot' bon coeur 'sieur, dame

Morgoth2k

valkaari
19/09/2013, 01h43
ben bienvenu alors :)
Je ne sais pas si toutes les options de tous les outils ont des commandes associées. Encore moins de raccourcis.

Par contre tu peux créer des scripts et assigner ces scripts à des raccourcis.

Par exemple pour changer l'option que tu désires dans l'outils de sélection :


import c4d
from c4d import documents, plugins
#Welcome to the world of Python

def main():

c4d.CallCommand(200000083) # Live Selection
toto = doc.GetActiveToolData()
#toto[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE]=False
toto[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE] = ~toto[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE]

if __name__=='__main__':
main()



Dans le menu script tu as la commande "script log" qui te permet d'avoir assez facilement les c4d.CallCommand( Numéro )

Le reste faut parfois légèrement traduire ce que fait le script log. La commande Tool vient du COFFEE et n'a pas l'air d'exister en python.

Enfin le code au dessus fonction lui en python. Tu peux aller dans le menu script et script manager, faire fichier nouveau et coller ce code. Puis fichier enregistrer et lui donner un nom. Il apparaitra dans les commandes du coup et tu pourra lui donner un raccourcis.

La ligne avec un # met tout le temps False (donc décoche la case), la ligne en dessous change l'état à chaque fois que tu exécute le script. Active/Desactive gngngngnggngngetc..etc..etc..

Bon spa l'idéal pour découvrir un logiciel c'est sur, mais ça reste assez facile à mettre en place.

Morgoth2k
19/09/2013, 08h59
Merci beacoup pour l'accueil et la Bienvenue, Valkaari:thumbup1:

En effet, la solution de scripting proposée est un peu "refroidissante"... mais je vais malgré tout la tenter dès ce soir.
Je tenterai de vous donner un feedback dès que possible... suis bien débordé professionnellement pour le moment (comme tout le monde dans ce métier).

Encore merci et à très prochainement.

Morgoth2K

Fluffy
19/09/2013, 16h23
Merci Val, ça va aussi m'être utile pour les toggles!

Par contre, il me semblait que le caractère # ne servait qu'à commenter?
et le caractère ~, ça sert à faire le toggle? Un truc conditionnel?

valkaari
19/09/2013, 17h02
oui le # c'est pour un commentaire, mais c'était pour mettre un exemple avec false et un avec un toogle.

Le ~ c'est "inverse" ça marche aussi pour inverser une matrice. True = ~False et False = ~True

Dans beaucoup de langage on utiliser le point d'exclamation et me semble qu'en python aussi parfois, mais là ça marchait pas donc j'ai utilisé le ~

voili voilà.

Sinon ne pas oublier qu'on peut Drag@Drop un paramètre dans la fenêtre de script pour compléter son code et avoir facilement les
[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE]


Même si là encore, des fois faut "traduire"

Fondation
19/09/2013, 17h05
Oui, c'est ce qui est expliqué lorsqu'il dit :
La ligne avec un # met tout le temps False (donc décoche la case), la ligne en dessous change l'état à chaque fois que tu exécute le script. Active/Desactive gngngngnggngngetc..etc..etc..

Si tu mets le # sur une ligne ou l'autre, tu auras un comportement différent.

EDIT : Oups, double réponse.. j'ai été pris de vitesse ^^

oli_d
19/09/2013, 17h15
sinon on peut mettre aussi un not, j'me souviens jamais comment on fait le tile (~ ah ben j'ai réussi!)



import c4d

def main():

c4d.CallCommand(200000083) # Live Selection
toto = doc.GetActiveToolData()
toto[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE] = not toto[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE]


if __name__=='__main__':
main()

Fluffy
19/09/2013, 17h40
Merci les gars!

Morgoth2k
21/09/2013, 01h30
Super!!

J'ai essayé en copiant simplement le code de Valkaari et celui de Oli_D dans un nouveau script , puis mapper le tout à un nouveau raccourci clavier. Et çà fonctionne assez bien... du moins si l'on reste cantonné à l'outil Live Selection.

Mon fantasme était de pouvoir profiter d'un tel script pour mapper sur un seul raccourci clavier unique tous les toggles de "Tolerant selection" propres à tous les outils de sélection: Live selection, Rectangle Selection, Lasso Selection et Polygon Selection.

Mais sur ce coup là, je crois que j'en demande un peu trop. En fait, si je comprends bien, chaque Toggle est specifique à chaque commande et donc, tous ces différents toggles qui ont pourtant le même rôle (activer/desactiver la sélection tolérante) ne peuvent être appelé que par un script spécifique et donc un raccourci à chaque fois différent.

Donc en conclusion, il faudrait un script avec un raccourci pour la Tolerant Selection de la commande Live selection, un autre pour la Tolerant Selection de la commande Rectangle Selection, un autre encore pour la Tolerant Selection du lasso, ect...
Dites-moi si je me trompe dans ma manière de voir la chose.

J'en viens à me demander si je ne fais pas fausse route: mes habitudes de mod, sur un autre soft, m'ont habitué à activer/désactiver régulièrement ce type d'options de sélection (window/crossing). En tant qu'utilisateurs C4d, faites-vous souvent appel à ces options de sélection ou préférrez-vous une autre manipulation, ou une manière de faire qui vous éviterait d'utiliser trop régulièrement les options "Tolerant"?

Je suis curieux de savoir comment vous pratiquez de votre coté? Activation des toggles tolerant à la souris ou raccourcis multiples ou encore utilisation d'autres outils (scripts, plugins freeware,...) pour éviter l'usage des options Tolerant.

Ceci étant, encore merci pour votre aide et vos commentaires constructifs sur la précédente requête.:icon_prie:

valkaari
21/09/2013, 03h14
un poil plus tordu pour un "novice" pour le coup. Rien de méga compliqué mais c'est peut être moins digeste.




import c4d
from c4d import gui
from c4d import documents, plugins
#Welcome to the world of Python


def main():
validTools = [c4d.ID_MODELING_LIVESELECTION,c4d.ID_MODELING_RECT SELECTION,c4d.ID_MODELING_FREESELECTION,c4d.ID_MOD ELING_POLYSELECTION ]

activeTool = doc.GetAction()
if activeTool in validTools:

if (activeTool == c4d.ID_MODELING_LIVESELECTION):
toolData = c4d.plugins.GetToolData(doc, c4d.ID_MODELING_LIVESELECTION)
toolData[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE] = not toolData[c4d.MDATA_SELECTLIVE_TOLERANT_EDGE]
else:
toolData = c4d.plugins.GetToolData(doc, c4d.ID_MODELING_RECTSELECTION)
toolData[c4d.MDATA_SELECTION_TOLERANCE] = not toolData[c4d.MDATA_SELECTION_TOLERANCE]

c4d.EventAdd()

if __name__=='__main__':
main()

En fait l'outil de sélection Live ne partage pas les mêmes données que les autres outils. Par contres les autres outils eux, partagent bien les même données. C'est à dire que si sur la sélection rectangle tu change la tolerance, celà vas également changer la tolerance des lasso.

Sachant ça, ça devient plus clair à coder (j'avais jamais spécialement remarqué).

Si on est sur l'outil live sélection on prends les données de l'outils live selection. Si c'est un autre des outils de sélection, on prends les données de l'outil rectangle.

Avant on s'assure que l'outil actif fait partie de la liste des "validTools" qui contient toutes les IDs des outils de sélection.

L'idée de cette vérification c'est que la données d'un outil est identifié par son IDs. (c4d.MDATA_SELECTION_TOLERANCE)
Cela correspond à un numéro (2106 dans ce cas). Ce numéro n'est pas forcement unique et donc on évite de changer une donnée d'un autre outils qui pourrait correspondre.

exemple le tag baketexture a une option dont l'identifiant est BAKETEXTURE_CHANNEL_BUMP qui est aussi égale à 2106

donc c4d.BAKETEXTURE_CHANNEL_BUMP = c4d.MDATA_SELECTION_TOLERANCE

Même si dans ce cas, un tag n'est pas un outil, il est préférable de vérifier.

edit :
Petite remarque en passant il est préférable d'utiliser pour le bool le not d'oliD et pas le ~ les deux fonctionnent mais le not est beaucoup plus correcte et le ~ qui pourrait donner des résultats humhum.

Autre remarque, éviter au possible des noms de données comme "toto" et encore pire, toto1, toto2, toto3

Chose que je n'ai pas faite sur le premier script beurk !!!


edit 2:
étant un médiocre modeleur, je peux pas te donner de précision sur "LA" façon d'utiliser c4d en modé. Si on peut dire qu'il y a UNE méthode. Tant que ça marche et que je mets pas 3ans je m'en fiche x)

Floc
21/09/2013, 04h09
Bons sang je suis pas le seul couche tard ici :icon_mrgreen:
Une chose est sure chacun à ses petites habitudes et que chaque soft induit aussi des habitudes. Je ne suis pas non plus un super modeleur et donc sur ce coup je ne peux pas trop t'aider non plus. Mais je ne peux que t'encourager à persister car j'ai fait la transition vers C4D il y a un peu plus d'un an et je dois dire que je ne le regrette pas.
Un lien qui si tu ne le connais pas déja peut t'être utile (si tu viens de Max).
http://www.mattrittman.com/3d-modeling/migrating-from-3ds-max-to-cinema-4d
Et comme tu le dis les méthodologies peuvent être très différentes (surtout si tu viens de Max). Pour ma part j'ai pratiqué Max puis Maya et c'est vrai que y a des fois tu te dis "Arghh ca c'était vraaaiment mieux dans Maxya" et en fait au bout d'un moment... plus ou moins long tu te rend compte qu'avec une autre approche, ben finalement ça le fait, ou même que c'est carrément mieux. Évidemment y a quelques points qui fâche mais honnêtement pour le moment si je met dans la balance ce que j'ai perdu par rapport a ce que j'ai gagné il est clair que je ne reviendrai pas en arrière. Bon ça dépend aussi de ce que tu fait, mais pour un freelance généraliste comme moi, le choix est vite fait.

D'ailleur je me demande si ouvrir une discussion à l'attention des Maxiens et des Mayateux qui débarquent ne serait pas une bonne idée (a moins que cela n'ai déjà été fait). Pour moi le sujet est encore frais et il y a quelques point sur lesquels j'ai pas mal bloqué qui pourrait être utile à d'autre.

Qu'en pensent les maîtres modos (et les autres) ?

oli_d
21/09/2013, 10h21
Ça donne des idées tout ça, ça faisait un moment que je me demandais s'il y avait un raccourci pour passer d'un mode à l'autre (modèle,point,arête,polygone). Un script, un p'tit raccourci et yop la boum c'est fait:


import c4d


def main():
lst = [c4d.Mmodel,c4d.Mpoints,c4d.Medges,c4d.Mpolygons,c4 d.Mmodel]
id = lst.index(doc.GetMode())+1
doc.SetMode(lst[id])

if __name__=='__main__':
main()



NB : est-ce qu'il y avait déjà un truc qui existait pour faire ça ?

valkaari
21/09/2013, 19h19
à ma connaissance non, le seul truc se rapprochant et la touche entrée qui permet de switcher entre les modes point, arrêtes et poly.

Rajouter le mode modèle spa si mal ^^

Morgoth2k
22/09/2013, 01h10
Tout d'abord, un grand merci à Valkaari:
- Ton script fonctionne de manière impeccable.
- Tes explications sont limpides même pour un béotien en Python tel que moi.

Je peux donc maintenant switcher à la volée l'option "Tolerant" quelle que soit l'outil de sélection actif: un pur bonheur en matière d'efficacité.:icon_thumbsup:

On peut donc considérer la question initiale de ce Thread comme résolue.:icon_clap:

Je suis tout à fait d'accord pour ce qui concerne le switch entre les modes model, vertex, edge et face. Les devs auraient très bien pu insérer dès le départ le mode model dans le cycling de la touche Return. Personnellement de mon coté, j'avais assigner les shortcuts &,é,",', pour passer de l'un à l'autre. Cependant le script d'oli_d est encore plus efficace.

Pour Floc, merci d'avoir indiquer l'url du Blog http://www.mattrittman.com/3d-modeling/migrating-from-3ds-max-to-cinema-4d. Elle sera utile à quiconque souhaite se lancer dans ce type de migration. Maintenant, çà reste assez "léger" et çà ne survolle que d'assez loin les choses. Mais, j'en conviens: çà à bien le mérite d'exister et c'est une initiative volontaire, constructive et positive. Dans quelques temps, peut-être Matt Rittman aura-t-il étoffé son contenu de manière à rendre l'ensemble plus complet, plus profond.

Il est vrai que de ma position de débutant sur C4d, je ne peux encore correctement analyser les choses. Le temps me permettra de me faire une idée plus objective quant à la qualité de l'ensemble des outils de modélisation low-poly disponibles dans C4d. Le soft continue à évoluer lui aussi de son coté (R15: Bevel et Slide par exemple).

Maintenant, je dois avouer que l'idée de Floc concernant l'ouverture d'une rubrique du forum ou d'un thread spécialisé permettant aux autilsateurs "Maxiens et Mayanesques" de mieux aborder et comprendre les différences d'approches proposées par C4d/Bodypaint 3d en matière de mod, sculpture, uvs, painting, skining, rig , anim, rendu et postprod serait la bienvenue.
Mais selon moi, çà représente un investissemnt temps/rentabilité trop disproportionné pour être efficace. C'est probablement pour cette raison que Matt Rittman, de son coté, n'a pas plus approfondi les choses.
De plus les utilisateurs d'autres packages 3d (dont je fais partie) rééllement motivés par l'apprentissage de C4d et en partie déjà expérimentés trouveront les réponses qu'ils cherchent pour l'essentiel dans la documentation du soft, sur les sites d'autoformation (Digital Tutors, Cmivfx, FXPhd, Video2brain, ...) et en dernier recours quand la question sort vraiment des sentiers battuts, ce forum dans sa forme actuelle semble être la solution la plus efficace, dans la langue de Voltère qui plus est.

Encore merci à tous.

Floc
22/09/2013, 04h28
Ouulalaaa :biggrin: j'avais pas l'intention de faire un tutorial géant ou exhaustif, ni rivaliser avec les sites de formation.
Mais plutôt de réunir petit à petit l'expérience de gens qui comme toi, moi, ou d'autre on fait la transition (après tout ce ne serai qu'une discussion). Le problème c'est que quand tu as une longue expérience dans un autre soft, tes recherches ce font forcément avec les références que tu connais ce qui ne facilite pas forcément les recherches.

De plus quand tu as déjà de l'expérience tu n'est pas forcément aussi patient que quelqu'un qui découvre le soft en même temps que la 3D. Tu ne découvre pas les choses au fur et a mesure de ton apprentissage, mais tu cherche à retrouver rapidement tes repères pour pouvoir être opérationnel le plus vite possible. D'où l'intérêt de centraliser les points "difficiles". Et je dirais qu'on peut considérer un point difficile quand on à mis beaucoup de temps malgré des recherches dans la doc sur les forum etc... à trouver la réponse.
Par exemple pour ma part j'ai vraiment cru qu'on ne pouvait avoir l'équivalent des uv channels (Max) ou uv sets (Maya). La réponse que j'ai trouvé était toujours la même à savoir qu'il suffisait d'ajouter un ou plusieurs autre Tag texture associés à des tags de sélection ou des masque. mais ce n'est pas l'équivalent. Et ça m'a pas mal gêné car c'est une technique que j'utilisai pas mal. Et en fait j'ai découvert récemment que ben si, ca existe. En fait il y a un shader dans le sous menu effect qui s'apelle "projector" et c'est exactement l'équivalent des uv sets. Mais quand tu n'as pas la bonne terminologie, des fois c'est pas évident à trouver.
Je dirai aussi qu'un "transitionnaire" a des besoin spécifiques, comme ton switch "visible only". Pour moi ça à été d'avoir un raccourci pour cacher et décacher les objet à la fois en viewport et en rendu. Car que ce soit dans max ou dans maya quand tu cache un objet, il est caché dans les deux modes, c'est le comportement par défaut. Et, bien que le principe avec les petits point rouge et vert soit sympa ça m'a foutu dedans un bon nombre de fois dans les rendus (des habitude de dix ou quinze ans on les change pas comme ça), si bien que j'ai fini par ne plus utiliser que les calques pour cacher. Mais c'était pas vraiment idéal si bien que j'ai fini par faire un petit script pour rétablir le comportement "habituel" et maintenant la vie est belle. Mais c'est vrai que c'est une astuce qui n'a pas vraiment d’intérêt pour les C4D user.
Voila c'est ce genre de petit trucs qui gagnerait à être centralisés.
Et persos j'y mettrai bien une petite rubrique "les trucs ou y a vraiment pas d'espoir" (en tous cas pour le moment, car C4D est un soft qui évolue bien), ce qui éviterai de se casser la tête sur des recherches ou y a pas de réponse, et peut être aussi et c'est mon souhait, qu'on me dise "ben voyons coco met tes lunettes ce truc c'est finger in the nose"
pfiou bon j'arrête je commence à avoir mal au doigts.

Morgoth2k
23/09/2013, 08h35
Pas de souci Floc,

Je suis entièrement d'accord: créer une rubrique spécifique dans le forum pour les nouveaux arrivants sur C4d ayant déja une expérience sur maya, max, xsi, ... serait probablement une bonne chose, un confort supplémentaire, gage d'efficacité pour ceux-ci. Le fait de l'envisager comme étant une simple suite de trucs et astuces allant chaque fois à l'essentiel serait probablement la chose la plus efficace.

Il faudrait alors demander à ces "membres particuliers" mais néanmoins "nouveaux membres classiques" de stipuler à chaque fois dans l'entête de leur Thread de qel(s) soft(s) ils proviennent et ainsi donner un commentaire plus efficient. Ce ne sera pas une chose simple à organiser et à gérer.

Bonne continuation.
Morgoth 2k