AC4DC4D6 ?????????&Creez une spline... ?????????&Appelez la "Spline"+>肂// // LightSpline // par Tengaal // tengaal@libertysurf.fr // // (Programme bas sur l'expression BonesToSpline de NAAM.) // // // 1 - Ouvrir cette expression et dfinir le nom de la spline // "guide", et le nombre de segments lumineux // // 2 - Crer une Spline avec le nom donn prcdemment. // // ===> Les objets Lumires "Neons"sont aussitt crs. // // ****** Pour modifier les paramtres des Neons ****** // il suffit de changer les paramtres de la premire // lumire "NeonLight" puis d'y glisser l'expression de // "Spline.Neon" qui va copier ces paramtres sur tous // les "NonLight" suivants. // Ensuite on remet cette expression sa place, sauf si on cr // une animation lumineuse (sur le 1er Neon de la chane), // et que les paramtres doivent tre rafrachis en permanence. var actif=1; // 1:programme actif // 0:programme inactif const var nom_spline="Spline"; // nom de la spline "guide" const var nb_lights=20; // nombre de nons utiliser const var nom_light="Neon"; // nom pour les objets Nons // LE PROGRAMME --------------------------------------------- main(doc,op) { if (actif==0) return; var spdest=doc->FindObject(nom_spline);if (!spdest) return; if (instanceof(spdest,SplinePrimitiveObject)) spdest=spdest->GetSplineObject(); var oplights,opl,light; var old=NULL; var lc; var neonlights=doc->FindObject(nom_spline+"."+nom_light); //cration de la chane de nons if (!neonlights) { oplights=new (NullObject); if (!oplights) return; oplights->SetName(nom_spline+"."+nom_light); doc->InsertObject(oplights,NULL,NULL); var prog=new(CoffeeExpressionTag); var cc=prog->GetContainer(); if (!prog) return; var code="main(doc,op) \u000d{\u000d"; code+="if (!instanceof(op,LightObject)) return;\u000d"; code+="var opc=op->GetContainer();\u000d"; code+="var op1=op->GetPrev();if (!op1) return;\u000d"; code+="while (op1) \u000d{\u000d"; code+="op1=op1->GetDown();if (!op1) return;\u000d"; code+="op1=op1->GetNext();if (!op1) return;\u000d"; code+="op1->SetContainer(opc);op1=op1->GetPrev();\u000d}\u000d}"; cc->SetData(COFFEEEXPRESSIONTAG_PASS,1); cc->SetData(COFFEEEXPRESSIONTAG_TEXT,code); if (!prog->SetContainer(cc)) return; if (!oplights->InsertTag(prog)) return; old=oplights; light=new(LightObject); if (!light) return; light->SetName(nom_light+"Light"); lc=light->GetContainer(); lc->SetData(LIGHT_MAIN_TYPE,7); light->SetContainer(lc); doc->InsertObject(light,old,NULL); var i; for (i=1;i<nb_lights;i++) { opl=new(NullObject);if (!opl) return; opl->SetName(nom_light); doc->InsertObject(opl,old,NULL); old=opl; light=new(LightObject); if (!light) return; light->SetName(nom_light+"Light"); lc=light->GetContainer(); lc->SetData(LIGHT_MAIN_TYPE,7); light->SetContainer(lc); doc->InsertObject(light,opl,NULL); } opl=new(NullObject);if (!opl) return; opl->SetName(nom_light); doc->InsertObject(opl,old,NULL); } // actualisation des nons sur la spline var sop=doc->FindObject(nom_spline);if (!sop) return; if (instanceof(sop,SplinePrimitiveObject)) sop=sop->GetSplineObject(); var op1=doc->FindObject(nom_spline+"."+nom_light);if (!op1) return; var op2=op1->GetDown(); op2=op2->GetNext(); sop->InitLength(1); var mat,smat=sop->GetMg(),pos,pos1,i=0.0,bc,rot; while (op1) { i++; pos=smat->GetMulP(sop->GetSplinePoint(sop->UniformToNatural((i-1)/nb_lights),1)); pos1=smat->GetMulP(sop->GetSplinePoint(sop->UniformToNatural((i)/nb_lights),1)); mat=op1->GetUpMg(); mat->Invert(); pos=mat->GetMulP(pos); pos1=mat->GetMulP(pos1); op1->SetPosition(pos); bc=op2->GetContainer(); bc->SetData(LIGHT_MAIN_OUTERRADIUS,vlen(pos-pos1)/2); op2->SetContainer(bc); op2->SetPosition(vector(0,0,vlen(pos-pos1)/2)); rot=VectorToHPB(pos1-pos); op1->SetRotation(rot); op1=op1->GetDown();if (!op1) return; op2=op1->GetDown();if (!op2) return; op2=op2->GetNext();if (!op2) return; } } _AM?????????,LightSpline ExpressionFNew CC???@?>?????e@$@????'&H,?333F??@A d?=?PQ[\RSRUVWXZ F鄄ꄄ'(a''$'' 'SVQ3''' '!S'"'#+,DHDdB?DzDE;BDC????I۾DHDdB?DzDE;B????I۾DHDdB?DzDE;B????I۾DHDdB?DzDE;B????I۾2   ?@???@??jX~M&%;Ύ6ja t.Pw-ڏޑZ'|<$LΨ@J.ҖB_O䡴`ךMGV/)r{]~.G9JFUM8r^Zy^V+Q:ͼRzm7ߏga(Q6Z̭h=1Z3k5GvBnE eTc(y}  =燉J"=>{0eUGOhGɀdT.j%IkD[r$ah*>k`Fp `ımPr[ ca8q6lA&}ŏ4F*ԦT5J͙>a&*6 oF4'5jofQ*!hoXO/uoEkZG(lLd ( S{g `݂@RFGo}J/ n*v"g9~ jd.Lt!_gכΟT޿[[Q6abvjKV$Ud/S Y0 r q'btgF8mR[Kr*mv*\뙁k_1ΆΟW ~bо =ڛ6=J+dt!ι:1 4^sP@:U`{fU@CI+d*N+QEJEK}ydQ/kD$%>ހ?IJhyuCrn*fN0 j G>RbY/_` mHv#rKOV(N#2/][\iPO9QvܤOj6"db]b\Z-^u.7.ߗS%p=cRI CM BD!8s,-}V66USP|zC+lTyt2L\gJ:V&\ġ ğ2`)ωZ;q=|\xC9m@9/vXpFSlYi1/ړn,@rJɩ+n_io_W)n_Lm\܋#.{\^qp37"yفИn )1!PMВM:⍐ʞiKIJcY~z>LrOD}hʑ> V),bYBtwWm,Ru<| 5ba/elqde%/TMۣYb|+P?/vUntitled.wavUntitled.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?