PDA

Voir la version complète : Un contour de spline dynamique ?



Aurety
08/06/2014, 01h18
Y'aurait pas quelqu'un qui aurait ça dans sa besace ? Un plugin, un script qui ferait ça ?

Pour un projet perso, j'ai 35 splines d'instruments de musique à me taper et à animer, aussi j'ai bidouillé des setups Xpresso pour automatiser un certain nombre de presets mais là j'arrive à mes limites. J'ai besoin de générer dynamiquement des débords à mes tracès vectoriels afin que je puisse glisser la spline dans un champs XPresso qui n'attendrais que ça pour me générer mon contour exterieur espacé de X cm.. :huh: ainsi en décalant en Z la spline originale et le contour généré, j'aurais mon instrument dans un cadre qui lui ressemble et c'est ce que je cherche à obtenir.

Je cherche un moyen de générer un outline dynamique à une spline donnée.. Si je devais faire ça manuellement, je prendrais ma spline -> Clic-droit->Outline et je spécifie soit à la souris, soit en paramêtre la valeur de contour.. C4D génère donc le contour de pars et d'autre de la spline et finalement je dois donc supprimer soit la spline extérieure, soit intérieure en fonction de mes besoins.. Foutrecouille ce que c'est laborieux !!!

Ca se trouve, il y a déjà quelque chose qui fait ça mais là tout de suite, je me souviens pas.:icon_pleure:

Aurety
08/06/2014, 11h05
J'essaie de me créer un script via la console mais un truc bizarre se passe : Plutôt que d'avoir les callcommand, j'ai une phrase qui revient en boucle :

INFO: THStats do not require an update.

Une idée de, ce qui peut se passer ? :sweatdrop:

oli_d
09/06/2014, 09h31
Pour commencer un début de script python qui remplace l'objet sélectionné par son contour. Je n'ai pas bien compris quand tu dis "je dois donc supprimer soit la spline extérieure, soit intérieure en fonction de mes besoins" , si c'est pour des boîtes, c'est toujours celle qui est à l'extérieur, non ? Au final tu souhaiterais plutôt un plugin de type objet, où l'on met la spline en enfant et il génère le contour selon les paramètres, ou plutôt un plugin de type outil avec à les mêmes paramètres que l'outil contour mais qui supprime l'objet source, ou encore un autre truc ?



import c4d


DISTANCE = 50

def main():
doc.StartUndo()
settings = c4d.BaseContainer() # Settings
settings[c4d.MDATA_SPLINE_OUTLINE] = DISTANCE # Distance
settings[c4d.MDATA_SPLINE_OUTLINESEPARATE] = True #Crée un nouvel objet

#on envoie la commande
res = c4d.utils.SendModelingCommand(command = c4d.MCOMMAND_SPLINE_CREATEOUTLINE,
list = [op],
mode = c4d.MODELINGCOMMANDMODE_POINTSELECTION,
bc = settings,
doc = doc)

#si on a un résultat, on efface l'objet sélectionné et on insère le nouveau
#que l'on sélectionne
if len(res) :
doc.AddUndo(c4d.UNDOTYPE_DELETE,op)
op.Remove()
new_sp = res[0]
doc.InsertObject(new_sp)
doc.AddUndo(c4d.UNDOTYPE_NEW,new_sp)
doc.SetActiveObject(new_sp)
doc.EndUndo()
c4d.EventAdd()

if __name__=='__main__':
main()



Sinon
Une idée de, ce qui peut se passer ? :sweatdrop: absolument aucune ....

EDIT : j'ai rajouté le UNDO

Aurety
09/06/2014, 11h47
C'est exactement ça ! Merci Oli, et ça marche aussi avec une valeur négative, donc j'ai bien ma spline intérieure ou ma spline extérieure ( tu sais, quand on lance la fonction contour sur une spline, il part de la spline d'origine qu'il dédouble, une vers l'extérieur et l'autre vers l'intérieur et du coup celle d'origine disparait ).

Maintenant ce que j'essaie d'avoir, c'est la possibilité d'utiliser ce script en XPresso avec un champs où je pourrais glisser ma spline référence ( genre une guitare ) et un champ pour spécifier le débord extérieur ou intérieur ( ta variable distance ) et donc de générer une nouvelle spline que j'utiliserais comme cadre ( distance positive ) ou marquise ( distance négative ).

L'idéal serait bien sur de générer dynamiquement une nouvelle spline ( en relation avec l'original ) qui tienne compte de modifications éventuelles de l'originale ( deformations, animation.. ).:icon_bave::icon_bave:

En tout cas, rien que ton script va me faire gagner un paquet d'opérations !! :icon_love:

Aurety
09/06/2014, 11h49
Si je ne veux pas que ton script efface l'objet d'origine, je peux zapper une ligne ?

oli_d
09/06/2014, 13h08
J'ai mis les deux lignes à enlever en commentaire (avec #)


import c4d


DISTANCE = 50

def main():
doc.StartUndo()
settings = c4d.BaseContainer() # Settings
settings[c4d.MDATA_SPLINE_OUTLINE] = DISTANCE # Distance
settings[c4d.MDATA_SPLINE_OUTLINESEPARATE] = True #Crée un nouvel objet

#on envoie la commande
res = c4d.utils.SendModelingCommand(command = c4d.MCOMMAND_SPLINE_CREATEOUTLINE,
list = [op],
mode = c4d.MODELINGCOMMANDMODE_POINTSELECTION,
bc = settings,
doc = doc)

#si on a un résultat, on efface l'objet sélectionné et on insère le nouveau
#que l'on sélectionne
if len(res) :
#doc.AddUndo(c4d.UNDOTYPE_DELETE,op)
#op.Remove()
new_sp = res[0]
doc.InsertObject(new_sp)
doc.AddUndo(c4d.UNDOTYPE_NEW,new_sp)
doc.SetActiveObject(new_sp)
doc.EndUndo()
c4d.EventAdd()

if __name__=='__main__':
main()

oli_d
09/06/2014, 13h47
J'attaque l'Xpresso ...

oli_d
09/06/2014, 14h47
En fait en Xpresso pur je n'y arrive pas , parce que je ne sais pas quoi faire de l'objet généré (c'est sûrement pour cela qu'il n'y a pas de générateur en Xpresso ..)

Je t'ai fait un générateur python dans lequel il y a deux DU, une pour la distance et l'autre pour la spline source. Avec ça tu devrais pouvoir connecter de l'Xpresso, non ?

EDIT : tu peux normalement utiliser le générateur comme une vraie spline

Aurety
09/06/2014, 15h05
C'est tipetop !! :icon_eek:
J'en veux pas plus, exactement ce dont j'ai besoin.. Je te montre bientôt une première version d'un des films que je me tape et là ton script va bcp bcp aider ! :icon_love::icon_love:

paspas
09/06/2014, 15h58
salut

Aurety je te met dans ta boite perso un plug que je suis en train de finaliser pour les splines il est fait en R13 j 'espere que çà serra compatible



Oli attention que quand tu crée un offset d ' une spline les tangentes des courbe doive être ajustée ;)


a bientôt

Aurety
09/06/2014, 17h15
voilà un premier jet où j'ai pu commencé à utiliser le script d'oli pour quelques splines mais maintenant que je l'ai, je vais pouvoir faire plus de choses :thumbup1:

Paspas, je vais mater ton plugin ! yeehhaa

Tous mes rigs Xpressos sont en place pour envoyer la sauce, tout ce film est paramétrique.

le format est en 4/3 car ce sera projeté sur les écrans géants du stade de Lorient pour le "Plus grand groupe rock du monde" où j'y participe au bouzouki ( je suis le seul ! :icon_pleure: )
Mais y'aura 400 guitares, 200 batteries, un triangle :icon_eek:... bref plus 1200 musiciens pour jouer les titres suivants :

Blur - Song 2
AC/DC - It’s a long way to the top (if you wanna Rock’n Roll)
Amy Winehouse - Rehab
Michael Jackson - Billie Jean
Pink Floyd - Another brick in the Wall
Noir Désir - L’homme pressé
Katerine - Louxor, j’adore

+ Un titre surprise en rappel (parce qu'on aime bien les surprises)

Quelques chiffres-clé :
1 record à battre*
1 200 musicien-n-e-s de 4 à 77 ans
14 000 personnes pour les applaudir au Stade du Moustoir à Lorient
8 grands titres du rock et de la pop des années 60 à aujourd'hui
2016 cordes de guitares et 16 heures de répétitions
0 fausse note garantie
Des milliers de sourires et un moment exceptionnel...
* le record est aujourd'hui détenu par Pernes-les-Fontaines (Vaucluse) avec 520 musiciens.




https://vimeo.com/97724495

Aurety
09/06/2014, 17h22
ah oui.. le film n'est pas complet, il manque toute la typo qui sera ajoutée sur After :sweatdrop:

rik25
09/06/2014, 17h36
C'est bien de préciser car là comme çà forcément ça manque de rythme, bon courage et merci de nous faire partager ton taf :thumbup1:

Aurety
09/06/2014, 17h39
Voilà pour vous donner l'ambiance, la précédente session à laquelle j'avais participé à la mandoline à l'époque, on jouait petit : 420 musiciens.. là on sera 3 x fois plus !!

:icon_mrgreen:


https://www.youtube.com/watch?v=hwYDMr_FUVE

Aurety
09/06/2014, 17h43
C'est bien de préciser car là comme çà forcément ça manque de rythme, bon courage et merci de nous faire partager ton taf :thumbup1:

oui, mais il en faudra pas beaucoup plus car je dois mettre l'accent sur le partenaire et laisser aux gens le temps de lire et y'a 35 pupitres ( intruments ) qui ont tous un partenaire :sweatdrop:, et comme c'est pour l'entrée sur le stade des musiciens il faut que le speaker ait le temps de présenter un groupe de 1 personne comme celui des guitaristes qui en compte env. 400 :ninja:

Le tout bénévolement bien sur ! mais c'est l'éclate comme boulot.. :icon_grin:

Aurety
09/06/2014, 19h28
paspas, à priori je ne le retrouve pas sur ma R15, il doit pas être compatible..:(

oli_d
10/06/2014, 06h56
Oli attention que quand tu crée un offset d ' une spline les tangentes des courbe doive être ajustée ;)

Il faut dire cela à Maxon, j'ai juste utilisé l'outil contour via un SendModellingCommand.

Aurety : trop bien ce projet, je peux venir avec mon cor des Alpes :icon_mrgreen:

Aurety
10/06/2014, 10h10
C'est complet depuis 1 mois, mais d'après les organisateurs i y aurait eu plus de 3000 musiciens intéressés de toute la france et d'ailleurs mais comme ca n'est que la deconde édition, ils ont préféré assurer car c'est tout de même l'équivalent de 300 maisons à électrifier, seul le stade pouvait tenir une telle charge à Lorient :sweatdrop:
Donc toi et ton cor serez les bienvenus en 2016 :icon_mrgreen:

paspas
10/06/2014, 12h06
paspas, à priori je ne le retrouve pas sur ma R15, il doit pas être compatible


je me renseigne pour quand il serra finaliser ;)

sinon joli taf en tout cas ,



Il faut dire cela à Maxon, j'ai juste utilisé l'outil contour via un SendModellingCommand.


En fait cette commende transforme les courbe de la spline en une multitude de segment linéaire, en tout cas merci ça vas bien me servir pour améliore mon plug ,


paspas

Aurety
10/06/2014, 13h37
voilà le triangle :icon_smile: après le kazoo qui est bientôt terminé :icon_arg:
Bon c'est pas parfait, parfait.. là je vise pas la qualité ( je retouche pas toutes les clés !! ) mais la production.. 35 films de 30 secondes à faire en 3 jours :icon_pleure:


https://vimeo.com/97807690

Aurety
10/06/2014, 14h42
Vu que ça tourne au WIP, j'ai copié la discussion : la suite se trouve ci-dessous pour éviter de polluer la partie programmation !! :icon_redface:

http://frenchcinema4d.fr/showthread.php?78474-Plus-grand-groupe-rock-du-monde-Speed-Prod