Salut,
Je souhaite relier des objets entre eux comme dans l'image jointe. Avec le Tracer Mograph je n'arrive pas à ce que je souhaite car il manque une option "relier au plus près", du il relie dans l'ordre, alors que je souhaiterais une connexion basée sur la proximité des objets, si A est à une distance inférieure de x pixels de B alors A est relié à B, valable pour x objets et si ça s'éloigne ben hop ça se déconnecte voyez le genre ?
En tout cas moi en x-presso je suis pas top à l'aise et j'avoue être un peu coincé niveau délai pour me lancer dans d'improbables essais
Merci pour votre aide !
Iolofato
En xpresso je ne sais pas, en python cela me semble pas très compliqué.
Je teste dès que j'ai un moment (mais aujourd'hui encore)
Bon je ne sais pas si c'est vraiment ce que tu voulais, mais charge le fichier c4d en annexe
Il y a un générateur python avec des données utilisateur, dans la première tu glisses tous les objets que tu veux relier selon la distance
puis joue avec la Distance max
Tous les objets qui sont à une distance plus petite que la distance max sont liés par un segment de spline (ce qui peut faire un sacré plat de spaghettis)
N'hésites pas à demander si c'est pas tout à fait ce que tu souhaitais faire ....
[EDIT] : si tu veux que le générateur se modifie en direct quand tu bouges un objet, décoche la case Optimiser le cache de l'onglet Objet du générateur
[EDIT2] : modifié avec le fichier qui fonctionne (enfin j'espère !)
Dernière modification par oli_d ; 24/05/2013 à 13h38.
woa woa c'est super cool, j'en suis carrément Par contre juste une question… comment ça marche ? je vois bien tout ce dont tu parles mais j'arrive pas à voir les segments de spline et du coup comment leur donner une extrusion contrôlée
J'ai essayé en lecture continue en cochant décochant, rien, je vois pas comment faire
Hello Oli_d !
J'ai voulu tester, car ce genre de manip m'intéresse également. Mais je n'arrive pas à générer les splines avec le script.
J'ai manqué une étape ?
En fait c'est Plexus sur C4D !
(EDIT) Bien grillé par iolo !
www.paradoxstudio.fr - MacPro 12 core 2.93 ghz - 16 Go Ram - NVIDIA Quadro 4000 + GT120 / MacPro Octo-core 3.2 ghz / Wacom Cintiq 12 WX
En fait le générateur renvoie une spline, que tu ne vois pas mais qui existe (sauf si il n'y a aucun objet qui est à moins de la distance, il renvoie un neutre). Si tu veux modifier la spline tu peux éditer le générateur (comme n'importe que objet paramétrique touche c). Mais tu peux l'utiliser tel quel, comme une vraie spline, c'est ce que j'ai fait dans l'exemple en le mettant en deuxième enfant de l'extrusion contrôlée (en tous cas chez moi ça marche ...). L'avantage en le gardant comme générateur, c'est que tu peux animer le truc.
Vous avez bien trouvé les userdatas sur le générateur ?
[EDIT] avec un exemple animé ...
Dernière modification par oli_d ; 24/05/2013 à 13h05.
Bon faut que je regarde ton fichier (qui fonctionne bien) de plus près car j'avais fait ça dans le premier fichier et ça ne marchait pas :/
Bon je viens de regarder vite fait et en faisant la même opération dans le 1er et 2e fichier, ça ne marche que dans le 2e, en tout cas bravo, merci, c'est inespéré
Je viens de voir que le script n'est pas le même dans les 2 versions ce qui explique l'histoire.
[edit] pour info ça marche aussi dans un objet MoGraph fracture, par contre le paramètre position des effecteurs ne fonctionne pas à l'inverse de taille et rotation
Dernière modification par iolofato ; 24/05/2013 à 13h36.
Oupsss, j'ai du joindre le fichier sans avoir fait la dernière sauvegarde ! J'édite le premier post ...
Oui ça marche pour le second ! Vraiment top !
Merci Oli_d !
www.paradoxstudio.fr - MacPro 12 core 2.93 ghz - 16 Go Ram - NVIDIA Quadro 4000 + GT120 / MacPro Octo-core 3.2 ghz / Wacom Cintiq 12 WX
Une variante qui utilise un tag python ( les données utilisateurs sont sur le tag) plutôt que le générateur.
Par contre je ne garantis pas que la numérotation des segments de la spline corresponde d'une frame à l'autre ...
Top ! Ça simplifie encore plus les choses.
Est-ce qu'il y a moyen de docker la fonction ? J'ai enregistré le script, mais je ne sais pas comment faire pour que c4d ajoute le tag ou l'objet par clic sur l'interface... J'ai encore du mal avec les script.
www.paradoxstudio.fr - MacPro 12 core 2.93 ghz - 16 Go Ram - NVIDIA Quadro 4000 + GT120 / MacPro Octo-core 3.2 ghz / Wacom Cintiq 12 WX
En fait là c'est pas des scripts, c'est des "objets scripts" (terme complètement inventé à l'instant !) donc c'est pas vraiment dockable tel quel, il faudrait transformer en plugin (quand j'aurais le temps ...). Par contre tu peux stocker dans la médiathèque
Oki doki ! J'ai bien compris l'affaire. Je range ça bien au chaud dans la médiathèque.
Merci encore à toi !
www.paradoxstudio.fr - MacPro 12 core 2.93 ghz - 16 Go Ram - NVIDIA Quadro 4000 + GT120 / MacPro Octo-core 3.2 ghz / Wacom Cintiq 12 WX
Avez-vous remarqué la différence de performance de lecture une fois la case "Fermer la spline" cochée ?!
Sinon le problème avec le paramètre de position des effecteurs serait dû à quoi ? Quand on l'active, quelque soit l'effecteur, le script garde la position d'origine de objet alors que les objets sont déplacés.
Bon j'ai réussi à régler plus ou moins le problème de l'objet Fracture, on peut mettre dans la DU Objets du tag python n'importe quel générateur mograph (testé uniquement avec Cloneur et Fracture)
Par contre il y a une latence de 1 frame dans les animations, qui doit venir d'une histoire de priorité. Mais j'ai beau essayer de les changer dans le tag python, il a toujours un temps de retard. Si quelqu'un a une explication ...
Tu nous déçois vachement oli_d.
Blague mise à part, hormis la latence c'est déjà super, il y a de quoi bien s'amuser. Si un jour l'histoire des perf spline ouverte ou fermée et la latence sont réglés ça sera la banane sur le pudding
Encore bravo et merci
Bravo Oli_D, encore un exploit de plus à ton actif !
Un grand merci pour ton partage
http://dr-graphix.blogspot.com/-DRG Design / Portfolio
j'veux bien essayer
il faut avoir l'ordre de calcul en tête (des priorités) :
initial --> animation --> expression --> dynamics --> generators (sans parler des ik et de clothilde)
Donc, le cloneur, fractures et sweep nurbs sont des générateurs.
Pour que le tag python prenne en compte les cloneurs / fracture, il faut mettre sa priorité à generator.
Le problème c'est que le sweep nurbs est situé avant le tag, donc calculé avant. Sur le principe si on rajoute dans le code un message de mise à jour au sweep nurbs, il devrait se mettre à jour. Sauf que j'ai pas trouvé comment le faire :p
Autre solution (qui fonctionne) mettre ton code dans un générateur avec une DU pointant vers la spline.
Ce générateur doit se situer après le cloner /fracture et avant le sweep nurbs. Et tout ce calcul dans le bon ordre.
Merci Val, c'est limpide !
C'est ça qui m'échappaitLe problème c'est que le sweep nurbs est situé avant le tag, donc calculé avant
Voici donc le nouveau fichier modifié selon les explications de Val, avec une DU de plus qui pointe vers la spline à modifier. Ne pas mettre le générateur python après le sweep nurbs sous peine de problème de latence
+1Sur le principe si on rajoute dans le code un message de mise à jour au sweep nurbs, il devrait se mettre à jour. Sauf que j'ai pas trouvé comment le faire
Dernière modification par oli_d ; 26/05/2013 à 10h03.
c'est génial
Un grand merci Oli pour ton partage et ta réactivité !!
Super ! Merci pour le partage !!
Est-il possible de rendre/dessiner un plan ( triangle ) lorsque le générateur retourne au moins 3 liaisons ?
kenavo !! // Pinterest KAMIGAZ®
salut
honte a moi je me suis permis de rajouter une ligne de code et une DU ' distance min ' qui permet de stipuler la distance minimum entre 2 point ce qui permet d' éliminer si nécessaire les liaisons trop petite ou de n 'avoir que des liaison dans un intervalle de distance precis.
le fichier modifier
dans mon exemple ça permet de n' avoir que les diagonals entre les cubes
ps : si ça te dérange que que je te chipote le code dis le moi
paspas rouge de honte
Cela doit être faisable (je dis toujours ça et après je regrette...), je regarde ça ce soir. Mais tu aimerais que cela renvoie un autre objet polygonal avec les triangles ou dans la même spline avoir des segments fermés (les triangles) et les lignes en segments ouverts ?
Mais pas du tout, si je laisse le code visible c'est bien pour cela aussisi ça te dérange que que je te chipote le code dis le moi
Un autre objet polygonal serait top ! L'idée serait que si les spline présentes au même instant et connectées définissent un triangle ( un plan donc ) alors ce triangle ( plan ) est rendu..
kenavo !! // Pinterest KAMIGAZ®
Je crois que c'est à peu près ça, le générateur renvoie un objet polygonal avec les triangles et modifie la spline si la DU est renseignée. Si on veut que la spline, il n'y a cas masquer le générateur, et si on ne veut pas la spline on ne met rien dans la DU Spline cible
Mais ça commence à être un peu lourd comme code (il y sûrement moyen de faire plus simple). Avec trop d'objets ça rame, mais le générateur python est pas super optimisé, il me semble qu'il rafraichit un peu trop souvent, ou alors pas du tout si on décoche la case Optimiser le cache. Il faudrait transformer ça en plugin, ou trouver un truc pour que le code ne se relance que si il y a réellement des modifs.
Par contre je suis reparti de mon dernier fichier, j'ai oublié le curseur distance minimum de Paspas.
Super ! C'est très graphique Merci Oli
kenavo !! // Pinterest KAMIGAZ®
Très réussi, on peut ensuite cuisiner la spline en bezier, extrusion ou révolution avec une explosion TNT et ça devient très marrant
Comme je suis entrain d'exploiter la bête, je constate une limitation que je n'avais pas imaginée. Une option permettant de moduler la longueur en fonction de la taille de l'objet serait pas mal pour éviter la création quasi systématique de polygones
exemple :
deux sphères de 1 m se relient sans un rayon de 1m alors que des sphères de 50cm se relient dans un rayon de 50cm etc. le rayon étant une variable modulable cf image jointe
Je dis ça je dis rien hein
Dernière modification par iolofato ; 29/05/2013 à 11h58.