Salut,
Puisque visiblement l'outil MrVue était très apprécié mais qu'il ne fonctionne plus sous la R12 (et donc R13 aussi).
Que Majoul, le créateur n'est visiblement pas très joignable (voire impossible à joindre), Vee m'a demandé de recréer ce plug.
Donc j'aimerais en profiter pour lancer un sujet sur la french afin de travailler dessus de manière collective.
1) le plug est fourni avec le code ouvert (tout le monde peut le voir et le modifier)
2) je ne suis pas le dev exclusif de l'outil. Si une personne désire modifier, améliorer, rajouter des options elle est plus que bienvenue. (hein Oli_D et XS_Yann ?)
3) Les graphistes qui voudraient faire une image, un icône peuvent toujours le faire
4) Les remarques ou demandes de nouvelles fonctions sont les bienvenues.
Je demande juste d'incrémenter la version, de rajouter un peu de blabla dans le cartouche et le nom du dev qui a fait la modif, histoire de s'y retrouver. Enfin je demande.... ça serait bien de le faire, hein, moi je m'en fous un peu finalement xD
Pour le mode de fonctionnement, si aucun objet n'est sélectionné, le plug prendra le premier niveau de la hiérarchie. Si on demande de prendre en compte les enfants, il prendra du coup tous les objets.
Si on sélectionne des objets, seuls ceux-là seront pris en compte. Si on coche la case "enfants" les objets sélectionnés + enfants.
La case tous les objets prend tous les objets, que la case enfants soit sélectionnée ou pas.
Known bugs :
- sur une scène de 26000 objets avec une grosse grosse hiérarchie, le plug arrive à saturer le nombre d'appel récursif.
- la désactivation de l'affichage de tous les objets (onglet affichage) est beaucoup plus rapide si l'on décoche "enfants" (2 s contre 10 s)
- dans l'interface, tous les objects et pas ojects
A faire :
- Prendre en compte les objets non sélectionnés seulement
- Faire une interface avec des icônes et horizontale pour pouvoir docker le plug dans un coin de l'interface ?
Bug à vérifier :
Bref vous pouvez faire vos remarques.
Dernière version
Py_MrVue1.04.zip
Ancienne version
Py_MrVuev1.01.zip
Py_MrVuev1.02.zip
Py_MrVuev1.03.zip
Dernière modification par valkaari ; 18/08/2011 à 22h42.
Fonctionne nickel chez ouam après test sur une grosse, grosse scène.
Catapultam habeo. Nisi pecuniam omnem mihi dabris, ad caput tuum saxum immane mittam.
Cool !
Je dois avouer, je n'ai jamais compris a quoi servait le 1er onglet (affichage),
Pour l'activation et desactivation des Hn, instances et tout le tremblement, ca fonctionne :-) ,
en revanche, rien concernant les textures (Ar ou vray)...
Edit : s'il y avait moyen d'y integrer l'activation ou desactivation des cloners mograph, ce serait plus que top !
Dernière modification par Huv ; 11/08/2011 à 14h49.
J'en ai rêvé, Val l'a fait : le premier plug collaboratif pensé par une communauté d'utilisateurs ! Comme beaucoup ici, je ne pense pas ajouter la moindre ligne de code, mais s'il y a des critiques à donner, je serai ravi de le faire ! A très vite pour le test !
PS : Le plug est-il en français ? Si c'est le cas, peut-être proposer une version anglais afin que cela profite au plus grand nombre.
Dans le répertoire res, il y a string_us et string_fr
Dans les deux il y a un fichier c4d_strings.str et un fichier dialogue_pymv.str
Ces deux fichiers contiennent les chaines de caractères. Si des gens veulent modifier les intitulés ou faire une traduction, ils peuvent. (attention aux caractères spéciaux qui sont codé)
Donc pour l'instant, anglais et français.
Les commentaires sont en anglais. (enfin mon anglais à moi hein ....)
J'ai choisi de travailler avec les fichiers externe d'interface et de langue pour justement faciliter l'évolution.
C'est peut être aussi l'occasion d'apprendre pleins de choses sur le développement de plugs.
Dernière modification par valkaari ; 11/08/2011 à 14h59.
Bien joué !
Alors le premier onglet dispose de deux lignes de boutons radio.
La première c'est le réglage de la vue. L'autre c'est au rendu.
Les colonnes :
la première c'est forcer en ON (vert) l'autre en off (rouge) la troisième c'est réglage par défaut et la dernière la noir, c'est "ne rien changer"
Options que j'ai remis même si c'est très discutable.
Pour l'histoire du tag vray, normalement si je dis pas de bêtises et si mes souvenirs sont bon, le tag texture que ça soit vray ou AR reste le même. Le plug ne fait que rajouter une chaine de caractère dans le champ de sélection et comme elle n'existe pas, la texture ne s'applique plus.
Pour ce qui est de rajouter un option d'objet, c'est là que c'est beau :
1) lancer cinema4D et le command manager.
2) chercher l'objet que l'on veut désactiver en tapant dans le champ de recherche son nom (ex cloner si vous êtes en anglais)
3) à coté du bouton assign en bas à droite il y a l'id correspondant à cet objet (toujours pour le cloner : ID 1018544)
4) fermer c4d et ouvrir le fichier pymv.pyp qui se trouve à la racine du plugins (c'est le code, avec un éditeur de texte tout simple ça marche)
5) trouver la section #define ckeckbox base ID start at 12xxx (ligne 123)
6) c'est là que ça devient un peu moins facile mais relativement simple
a)
créer une nouvelle ligne pour le cloneur en faisant en sorte que "id" soit unique
GuiCheckBoxCloClo = {"id":12013,
b)
ajouter une chaine de caractère pour le nom de la checkbox
"String":"le clocloMomo",
c)
ajouter l'ID trouvé dans le command manager
"c4dObjectID":1018544}
ce qui donne la ligne suivant
GuiCheckBoxCloClo = {"id":12013,"String":"le clocloMomo","c4dObjectID":1018544}
7) ajouter dans une des listes (deux lignes en dessous) la variable crée (GuiCheckBoxCloclo) soit dans le tableau BoxGenGrp1 ou BoxGenGrp2 (suivant où on veut le mettre dans l'interface)
ligne avant modife:
BoxGenGrp2 = [GuiCheckBoxIns,GuiCheckBoxMet,GuiCheckBoxSym,GuiCh eckBoxBoo,GuiCheckBoxArr,GuiCheckBoxAtm]
ligne après modif
BoxGenGrp2 = [GuiCheckBoxIns,GuiCheckBoxMet,GuiCheckBoxSym,GuiCh eckBoxBoo,GuiCheckBoxArr,GuiCheckBoxAtm,GuiCheckBo xCloClo]
(ne pas oublier la virgule pour séparer les variables)
8)Sauvegarder le fichier et c'est bon, testez la nouvelle case à cocher.
Du coup vous allez me dire "oui mais du coup, les anglais auront la même chaine de caractère."
Ben oui, c'est là qu'un codeur passe et vas rajouter une ID dans le fichier c4d_symbol.h et dans le code python (merci d'ailleurs pour cette fonction qui est en phase beta qui oblige de déclarer les variables dans les deux endroits)
et rajouter dans les fichiers string, et le code c4d.GeloadString(toto).
Tout ça pour permettre la diffusion plus globale de l'outils. Par contre chez vous, vous pouvez faire ce que vous voulez
Merci Val pour ce travail sur ce plug tellement utile…je vais tester de ce pas
http://dr-graphix.blogspot.com/-DRG Design / Portfolio
Super initiative, merci déjà pour l'immense travail !
J'ai testé en vitesse et il y a chez moi une pétouille avec les textures quand il n'y rien dans le champ sélection cela provoque une erreur à ligne 411 car la chaîne est "None".
J'ai juste rajouté une ligne dans ta fonction FindAndRemoveString pour le cas ou la chaine est None (if not myString : myString = '' ) et ça à l'air de fonctionner:
Je ne veux pas faire une version juste pour çaCode:def FindAndRemoveString(self,myString): if not myString : myString = '' return myString.replace(c4d.plugins.GeLoadString(IDS_TEXTURETAG),'')
Une petite chose au lieu d'utiliser les nombres de références et les transférer dans une constante à ta sauce, tu peux utiliser directement les constantes c4d, par exemple pour le tag texture au lieu de 5616 tu peux directement mettre c4d.Ttexture.
Le problème c'est pour les trouver ces constantes, il y en a une série dans la doc du C++ sous BaseObject, BaseTag, etc .. sous les méthodes Alloc(). Sinon on les trouve aussi dans un fichier coffeesymbols.h dans le dossier resource de c4d.
Sinon pour les améliorations, je trouverais bien de pouvoir revenir à un état initial avec les visibilités. Dans une scène on a toujours des trucs qui sont de toute façon masqués. Il faudrait pouvoir enregistrer un ou même plusieurs états de visibilité ce qui permettrait aussi d'enregistrer des variantes par exemple (en stockant les infos dans un Hyperfile ou un fichier texte...)
A part ça ton code est super bien structuré, mais ça prend quand même du temps de se plonger dedans et ces temps je suis à la bourre, pour changer ... Mais j'aimerais quand même bien participer, je réfléchis à la chose et je donne des nouvelles dès que possible
Dernière modification par oli_d ; 12/08/2011 à 08h20.
Catapultam habeo. Nisi pecuniam omnem mihi dabris, ad caput tuum saxum immane mittam.
arfff la chaîne de caractère vide .... faut que je me mettes à la programmation défensive moi
Pour les IDs des objets je sais mais je voulais avoir les déclarations des objets assez haut dans le code. En dehors d'une classe ou d'une fonction il trouve pas c4D.tTesture ou c4d.Ocube c4d.Osds et je sais pas pourquoi
pour les trouver on peut aussi utiliser la console python, quand tu drag and drop le truc, il te le dit "the object 'cloner' Omograph_cloner was added as 'Cloner'
ben je vais rajouter l'idée de """""sauvegarde"""""" de l'état de départ dans la TODO list du premier post ^^
Rhhôôôô trop bien le coup de la console, j'avais jamais pensé à ça, merci pour l'info c'est super plus mieux rapide...
Ne connaissant pas ce plug-in à l'origine, j'ai donc testé avec curiosité cette remise en forme
Avant tout, Merci valkaari
Ma version: V12 Prime.
- Le plug-in fonctionne bien sur ma scène en cours
- Seul défaut, le refresh écran, quant-on clique sur "Activé" ou "Désactivé", on ne voit pas de modification, au début j'ai cru que cela ne fonctionnait pas mais, un micro zoom (par exemple) permet de faire un refresh de la sècne et de montrer que le plug-in a bien fait son travail (c'est compréhensible mon charabia ? )
2000 ans, alors il faut que je m'occupe l'esprit...
C4D PRIME R13 / PC i7 2600 3.4Ghz / 16Go ram / Nvidia GTX 560 Mo / WIN7 Pro 64bits
Les Hélicos du fada: http://www.2mylent.fr/Helicos/index.php/
Bon, j'ai fait un test et la fonction texture…je n'ai pas compris, mais elle ne fonctionne pas avec une scene nouvellement créée avec R12…par contre si j'ouvre une ancienne scène sous R12 tout fonctionne…
Pour le reste c'est ok
http://dr-graphix.blogspot.com/-DRG Design / Portfolio
Super mazette,
Idem les cases à cocher de l'onglet texture ne réagissent pas chez moué.
Concernant les icônes je me suis fais vite fait un petit set plus dans le look c4d si ça vous intéresse
[màj] fichier lié .tif contient une couche alpha pour coller à n'importe quelle couleur de fond
Dernière modification par iolofato ; 12/08/2011 à 13h44. Motif: màj fichier .tif
Bizarre pour le refresh, je l'ai pourtant ajouté avec la commande EventAdd().
Pour ce qui est du tag texture, effectivement, lorsque l'on crée un tag texture, le champ sélection renvoi None.
La fonction ne fait pas la vérification. Le code proposé par Oli_D devrait résoudre le problème.
(voilà un cas typique de programmation défensive, toujours vérifier si la donnée qu'on veut traiter correspond bien à nos attentes ^^')
edit :
cool alors pour les images, si tu veux avoir la même couleur que ton interface, il suffit de mettre une couche alpha dans ton fichier. Du coup ton visuel fonctionnera aussi avec ceux qui ont personnalisé leurs couleurs ou qui utilisent la couleur claire par défaut.
Dernière modification par valkaari ; 12/08/2011 à 13h29.
ah ben mince c'est ce que j'avais fait mais il me collait tout de même un fond blanc… hop c'est bon je le corrige dans le lien ci-dessus !
Dernière modification par iolofato ; 12/08/2011 à 13h39.
D'ailleurs, du coup avec une interface en 'light' le dernier bouton disparait à cause de sa couleur, donc l'alpha est pas forcement une solution non plus
visu.tif.zip
Mais sur le principe ça fonctionne xD
ah oui ton visuel ne tient pas compte de tous les calques… (suffirait de les écraser note bien)
Chez moi c'est bon dans les deux interfaces, c'est du vite fait hein, mais le tif comporte les calques si qq'un veut s'amuser
Dernière modification par iolofato ; 12/08/2011 à 14h19.
Belle initiative valkaari
Et ton niveau en dev
Merci oli_D pour la ligne de code qui rétablie la fonction texture dans les nouvelles scènes R12 !
Bravo à tout les 2 !
http://dr-graphix.blogspot.com/-DRG Design / Portfolio
Je l'avais fait une fois avec un tag invisible dans l'object manager, qui permet de stocker l'état. C'est plus simple à mettre en place et à utiliser qu'un fichier mais peut-être un peu lourd (quoi qu'en créant seulement des tags pour les objets qui ne sont pas 'editeur:gris / rendu:gris' et en nettoyant les tags qui ne sont plus utiles ça peut se tenter).
Merci Val et xs_yann pour les plugs
Mr Vue est un incontournable, certes.
Cependant, yann a créé deux plug qui proposent une alternative intéressante xsHNSwitch et xsTextureSwitch, que j'utilise depuis.
Alors c'est dire l'intérêt avec lequel je suis ce sujet de très près.
My Blog □ Accepter une possibilité, c'est lui permettre de se réaliser ...
Si c'est pour un seul état le base container est à mon avis la meilleure solution. Quand je parlais de fichiers externes c'était pour pouvoir sauvegarder plusieurs "états d'affichages", mais à la réflexion cela fait peut-être un peu doublon avec les calques qui peuvent déjà plus ou moins jouer ce rôle ...
Ma petite contribution pour l'instant :
- correction pour les textures sans sélection
- ajout des Undo (annulation)
J'ai également ajouté un self.doc dans la méthode CreateLayout pour avoir accès partout dans la classe et pas refaire systématiquement un doc = c4d.documents.GetActiveDocument()
J'ai pas testé et vérifié en détail, donc si vous voyez des problèmes genre écrans bleus, ordinateur qui fume, signalez-les ....
J'avais commencé en commentant chaque ligne que j'avais modifiée, mais j'ai vite abandonné car cela devenait le bordel, au final j'ai juste modifié le cartouche pour ce qui est des commentaires.
Est-ce comme ça que tu voyais la chose Val ?
Dernière modification par oli_d ; 13/08/2011 à 07h24.
et un set d'icônes…
Merci, et bravo pour l'état d’esprits de création en communauté, c'est comme ça que doit être internet.
En complément du plugin SOLObutton c'est le top, peut être qu'il est possible d'ajouter l'équivalent un petit bouton qui isole une sélection et un qui réaffiche???
Sur le même onglet on-off si non on passe son temps à basculer d'un onglet à l'autre.
J'ai m'y PY Mr Vue sur l'interface par défaut, derrière l'onglet Objets et il y a de la place.
Je dit ça, je dit rien, je serais bien incapable d'écrire quoi que ce soit sur le plugin.
oli_d
En R12 Prime, tout fonctionne très bien y compris le refresh
iolofato, merci pour les icones
Suggestion: il serait bien de notifier le N°de version en cours du plug-in dans la partie commentaire (Info) afin que d'être sur que nous testons la bonne version
J'ai un autre problème en relation avec le plug-in mais pas directement:
- j'ai docker MrVue sur une de mes palettes
- Je mets à jour le plug-in MrVue dans le répertoire principale de C4D (C:\Program Files\MAXON\CINEMA 4D R12\plugins)
- Redemarrage de C4D
- Test de MrVue..... Rien ne fonctionne, nada
- Je relance MrVue depuis le menu de C4D..... MrVue fonctionne parfaitement
- Alors, je resauvegarde mon interface (par défaut) et ma personnalisée (avec MrVue en cour)
- Relance de C4D
- Test de MrVue...... fonctionne pas
- Je relance MrVue depuis le menu de C4D..... MrVue fonctionne parfaitement
- je .......
Je comprends pas!
Une idée du problème?
2000 ans, alors il faut que je m'occupe l'esprit...
C4D PRIME R13 / PC i7 2600 3.4Ghz / 16Go ram / Nvidia GTX 560 Mo / WIN7 Pro 64bits
Les Hélicos du fada: http://www.2mylent.fr/Helicos/index.php/
Y'a une petite erreur de typo dans l'interface : tous les ojects.