AC4DC4D6 ?????????DGlissez l'expression sur Spline...+D>肂&/* ChainSpline par Tengaal 29/04/2002. Site: http://tengaal.art.chez.tiscali.fr contact: tengaal@libertysurf.fr Utilisation: 1 -Placer dans une spline l'objet dupliquer. 2 -Placez sur cette spline l'expression ChainSpline et aussitt les instances seront cres et alignes sur la spline. Si vous voulez dformer ou animer les points devotre spline, il faut laisser ChainSpline sur celle-ci pour que les objets soient mis jour en permanence. Sinon, si votre spline doit rester fige, vous pouvez lui enlever l'expression, pour viter de ralentir CINEMA 4D. */ //Placer ici le nombre d'objets total mettre sur la spline var nb_objets=50; main(doc,op) { var courbe=op; if (instanceof(courbe,SplinePrimitiveObject)) courbe=courbe->GetSplineObject(); if (!instanceof(op,SplineObject)) return; courbe->InitLength(1); var longueur=courbe->GetLength(); //longueur de la spline var inter=longueur/(nb_objets-1); //calcule l'interval entre les objets var objet=op->GetDown(); //on accde l'objet source if (!objet) return; var source_objet=objet->GetName(); var instgrp=objet->GetNext();//groupe contenant les copies if (!instgrp) //cration des instances si elles n'existent pas { instgrp=new(NullObject); instgrp->SetName(source_objet+".grp"); doc->InsertObject(instgrp,op,objet); //on cr les instances de source_objet... var i; var bc,inst,inst_name=source_objet,oldinst; var position,rotation,oldpos; for (i=1;i<nb_objets;i++) { inst=new(InstanceObject); bc=inst->GetContainer(); bc->SetData(INSTANCEOBJECT_SOURCE,source_objet); inst->SetContainer(bc); inst->SetName(inst_name+tostring(i)); position=courbe->GetSplinePoint(courbe->UniformToNatural(i*inter/longueur),1); if (!oldpos) rotation=courbe->GetSplineTangent(courbe->UniformToNatural(i*inter/longueur),1); else rotation=VectorToHPB(position-oldpos); inst->SetPosition(position); //position de l'instance sur la spline inst->SetRotation(rotation); // orientation suivant la tangente de la spline doc->InsertObject(inst,instgrp,oldinst); oldpos=position; oldinst=inst; } } //on actualise les objets sur la spline var ii; var instobj=courbe->GetDown(); //objet source if (!instobj) return; var pos,rot,oldp; //positionnement de l'objet source pos=courbe->GetSplinePoint(courbe->UniformToNatural(0),1); oldp=courbe->GetSplinePoint(courbe->UniformToNatural(0.2*inter/longueur),1); rot=VectorToHPB(oldp-pos); instobj->SetPosition(pos); instobj->SetRotation(rot); instobj=instobj->GetNext(); //accs au groupe de copies if (!instobj) return; instobj=instobj->GetDown(); //1ere copie du groupe if (!instobj) return; for (ii=1;ii<nb_objets;ii++) { pos=courbe->GetSplinePoint(courbe->UniformToNatural(ii*inter/longueur),1); rot=VectorToHPB(pos-oldp); instobj->SetPosition(pos); instobj->SetRotation(rot); oldp=pos; instobj=instobj->GetNext(); if (!instobj) return; } } ?????????ChainSpline@?n~A_@Yl@$@IA ?????????Tore?jAPkAPqAPrAPlB4mo$pu@IA ????????? source pQh=pAQh•B`BŠ`߯B?8A߰?8BA>AA>‚iAe BKpBje KpAQ)iBAPB)hBºlººlBº<BA>¦ `ðBÒS`CTBQCiPKNXIרFC%%C5@0?IC"C(mBC<=????????? Spline%&Nouveau@CCp?????????L@$@????'&H,?333F??@A d?=?PQ[\RSRUVWXZ F鄄ꄄ'(a+,DHDdB?DzDE;B31BCHD8>???<*DHDdB?DzDE;B????I۾DHDdB?DzDE;B????I۾DHDdB?DzDE;B????I۾2   ?@???@??K{ 4A{'3NNҀW`q["ILWy^`X'%zrҙI"nh.<1jԖ^~^,Jdl e]WTklTc pJ*rVB&qʉt'*ށ/pzR:_طoP@,M=BM uX[FMz4pr((dDR_$u\zXac47BEr3 U"o,d"y<ĺ4'78ѧ{ǣʣ>wXZHuBH5>ϱGG -EbZ5*uy&Rȱl+@ʶ"  Rcpj@dWĪ?QB8:+b_ O+5!Ce LGV# &OA5׬.Ƈ0͚QRUy`߇#4VEu_󳍇?y3%ui3Hk(baxh?T V6eK=kg@1H~NǷ(=I k)(`''kAh\O-4\kbzȽ'Jz8i\+=_am5h7Αt2gZ5՗G/e--Jfa6EQ/&n3˨$xV$y b*͛ ?bts:M>}wԠ)hb?/xSans titre.wavSans titre.wav''@?'F@?'@?'F@?'>L'>'?'?'?''''' '!'"'#'$'8''&'''(')'*'+','-'.'/'0'1'2'3'4'5'7'%'''' ?@@?@?@@?#$BH%?L?L?L&>2'.(?)?*?+?,?-?:;8967<= KLM?A A A A A A I23@I54CCC???    ? @I??????<# BC?I@A @ "?IJH<# !/0?1DEBF?G @                   B d        A = = ; ?S >L=L=?I>L?