BLENDER_v241REND SceneSRt m@SR1-Animation T @7(JDATA TnNDATANnT TDATATnHTNDATAHTn@ TDATA@ n HTDATA n @ DATA n  DATA n`  DATA` n  DATA n ` DATA n8  DATA8 n  DATA n 8 DATA n DATAoXNTDATAXoHT TDATAoXN DATAo0T DATA0ox  DATAxo0@  DATAox ` DATAoP ` DATAPo@  DATAoP T DATAo(@  DATA(opHT DATApo(  DATAop 8 DATAoH  DATAHo`  DATAoH8  DATAo   DATA oh  DATAho @ 8 DATAoh8  DATAo@  DATA@o  DATAq  T  HTLRXKRDATAXKRpJRLink and MaterialsEditing>DATAJRpXKRMeshEditingF>DATAp`JRAnim settingsObject>DATA`p8DrawObjectF>DATA8p`ConstraintsObject>DATAp8EffectsObjectDATApHooksObjectF>`DATApParticle InteractionObject>8DATAppSoftbodyObject>8DATAppHOutputRender>DATAHp pRenderRenderF>DATA pHAnimRender>DATAp FormatRender>DATApScriptlinksScript>DATA^R333?>@DhC7`DhCC(BDC?z?DATATR`333?>/9DATA q! NT DATA!q`$ 8  `  ==o?0NR"#DATA"p#Transform PropertiesView3d>DATA#p"3D Viewport propertiesView3d>"DATA0NYR333?>????????==o?*A$A?==o??????*AP B??=C ???Q0>f>-S??DATATR`0N333?>/9DATA`$q(0! `  @ ??PףPo8&.`%`%DATA`%pTransform PropertiesIpo!>DATA(8&]'333?4>?$B}VC1@F6BA #< #<`jFzD hOB?$B}VC1@DATA'a(8&333?4>CC|||??l|DATA(X)' 333?4>zCCHBC|||?CFC= ADATAxX)d*( 333?4> =rttDATA*c*X) 333?4>?zDzDBCl||ll|zDzD=HB DATA*+* 333?4>BCBCl|llFzD #<HB DATA+Y.*333?4>??? ???? A???PA A!O?j?}GCHB? AP B? #<CDATAT.`+333?4>/9DATA(0q7`$ 8 @  ,2x5(12DATA(1p2Link and MaterialsEditing>DATA2p(1MeshEditingF>DATA2f3333?l?zCB{ µCB,?BFB= ADATA3p42 333?l?zCCHBC$?CFC= ADATAp4^x53333?l?#DhC`DpJgChCC(BDC?z?DATATx5`p4333?l?/9DATA7q(0    } ?=o?9>88DATA8p8Transform PropertiesView3d>DATA8p83D Viewport propertiesView3d>"DATA9a;333?D?DCDC ??QSDATA QS:DATA:(JXrRP(Q (JPhxpQ8gDATA;Y>9333?D?????????} ?=o?f?*A?} ?=o??????*AP B??=C X7@X7@X7@?DATAT>`;333?D?/9SRt@m0 SR2-Model @C D0IxI (JDATA@nADATAAnPA@DATAPAnAADATAAnAPADATAAn(BADATA(BnpBADATApBnB(BDATABnCpBDATACnHCBXDATAHCnCCXDATACnCHC DATACnCX DATA DohDAPADATAhDoD D@ADATADoDhD@ADATADo@EDA(BDATA@EoEDA(BDATAEoE@EApBDATAEoFEPABDATAFo`FEpBBDATA`FoFF(BBDATAFoF`FACDATAFo8GF(BCDATA8GoGFpBHCDATAGoG8GBHCDATAGoHGCHCDATAHoXHGACDATAXHoHHpBCDATAHoHXHHCCDATAHo0IHCCDATA0IoHCCDATAxIq{@A(BA?@PףLtyRRxJsDATAxJpPKPreviewLamp>DATAPKp(LxJLampLampF>DATA(LpMPKSpotLamp>DATAMpM(LTexture and InputLamp>DATAMpNMMap ToLamp>MDATANpOMPreviewMaterial>DATAOp`PNMaterialMaterialF>DATA`Pp8QOPreviewWorld>DATA8QpR`PWorldWorldF>DATARpR8QMist Stars PhysicsWorld>DATARpSRTexture and InputWorld>DATASpTRMap ToWorld>RDATATppUSOutputRender>DATApUpHVTRenderRenderF>DATAHVp WpUAnimRender>DATA WpWHVFormatRender>DATAWpX WLink and MaterialsEditing>DATAXpYWMeshEditingF>DATAYpZXMesh ToolsEditing>DATAZpX[YMesh Tools 1Editing>DATAX[p0\ZCameraEditingF>DATA0\p]X[ShadersMaterial>DATA]p]0\TextureMaterial>DATA]p^]Anim settingsObject>DATA^p_]DrawObjectF>DATA_ph`^ConstraintsObject>DATAh`p@a_ScriptlinksScript>DATA@apbh`EffectsObject_DATAbpb@aMap InputMaterial>]DATAbpcbMap ToMaterial>]DATAcpdbAnimAnim>DATAdpxecSoundSound>DATAxepPfdListenerSoundF>DATAPfp(gxeSequencerSound>DATA(gphPfArmatureEditingF>DATAhph(gRampsMaterialF>ODATAhpihMirror TranspMaterial>0\DATAipjhMist / Stars / PhysicsWorld>jDATAjp`kiAmb OccWorld>DATA`kp8ljShadow and SpotLamp>DATA8lpm`kHooksObjectF>^DATAmpm8lParticle InteractionObject>_DATAmpnmSoftbodyObject>_DATAnpomPreviewTexture>DATAopppnTextureTextureF>DATApppHqoColorsTextureF>oDATAHqp rppRadio RenderRadio>DATA rprHqRadio ToolRadioF>DATArps rModifiersEditing>DATAsprShapesEditing>rDATAt^u333?xIDhC2}D;XCC(BDC?z?mDATAuYxt333?xI??? ???? A??@PA Aj?c3>}GCHB? AP B? #<CDATAxayu333?xI@̌AR|B1@lA A@CC #<@DATATy`x333?xISave AsFONTC:\Creation\BlenderFiles\Pythons\Trajectory\Trajectory_2_41.blendendDATA{q|xIpBAPABhVhVDATA|q{CHCB(B==o?YYY  ~}}DATA}p}Transform PropertiesView3d,>DATA}p}View PropertiesView3dT>"DATAx~dp 333?|* }?=?#MDATApYX~333?|?3?3CZ tW??33?'3CZ?fW ??=Lv_1n;=ꉖ +Fx8?ͦIA4j(ACCZ?eW ??==o??3?3CZ tW?5?5ͦIAP B??=CCZdW= 7?X<L?#`Y?Nϟ>!?C?n6?@ <@?DATA(X]p333?|zC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATAahX333?|79AffzAo6fB5B2l A@CC #<@lDATA,SCff(JDATA,OBPDATAh8 333?|zCCHBCD?CFC= ADATA8_h333?|zCA'.Yf"C @DD A@FB= A DATAb8333?|CC??D?DATAcЈ 333?|?zDzDBC D  DzDzD=HB DATAЈ 333?|?zDzDt{BAC D  DFzD #<HB DATA eЈ333?|DATA^333?|DdC8CnD fCC(BDC?z?DATAg 333?| F&(&' C:\Documents and Settings\Rgis\Mes documents\Mes images\cripts\pydata\C:\Documents and Settings\Rgis\Mes documents\Mes images\DATAT`333?|SAVE TEXT FILEIN PATHC:\Creation\BlenderFiles\Pythons\Trajectory\.\2Curve_1.02.blend\Text\-2.40-alpha2-windows\Trajectory_Mod.pyrajectory_Vertex_3.blend DATAq |ACCC?]@ JLWWW X4(ZZPDATApxTransform PropertiesView3d<>"<DATAxpPView PropertiesView3dT>"DATAPpxTransform PropertiesIpo4>" DATA(Y333?zdt?~?ȼ"=\:u?>QZ a?~?veȼu?t?!=>UB@^A?mҽղtt`? U5"@BE-=aBaBݰi?5ĶBF01 Üݩ _+C=2B;`Bp@?]@ JLzdt?~?ȼ"=\:u?>QZ a? >ݘ>fU?F"BP B??G;=C jWS_=7?X<o>q?){|J3)>벊1?AV7A?DATA(]h(333??Ao@ahW%BB,%@ #< #<`jFzD POBA??Ao@DATA he333?DATAah333?AffzAK_tK_tB33 33 B22 A@CC #<@2DATA 333??zDzDBD22FzD #<HB DATA^333?DdC8CnD fCC(BDC?z?DATAT`333? Save FileryRT PATHSC:\Creation\BlenderFiles\Pythons\Trajectory\ajectory2.blend\Text\ext\Trajectory_Vertex_2.blendd.py DATA qCpBHCC=m=o?W!W!;W< XОЋЋ DATA pTransform PropertiesView3d8>"'ZDATAp View PropertiesView3dT>"DATAОY333? Z?}|>z'>55>T:>Y.ށbs? )>Th?Z?65>*ށ|>R:>[s?t'>Y )>W%AÈWHA?<}<an< +<>_;3b=-5Z̿?=?eA"@`A~m?:+@ A,TC%W%AÈYHA?=m=o?Z?}|>z'>55>T:>Y.ށbs? )>Th?A?K|~#ҽKAP B??9==CX%È@XH7?X<i?E@f>c?o?e?k8"@cAP [A?DATAxd`О 333?  ]8@DATA(`]333? ?$BIfA—BvMK"fA #< #<`jFzD QxOB?$BIfADATAap`333? 0AffzABp p B2X A@CC #<@XDATA,SCff(JDATA,pOBPDATA,pХOB@xDATA,Х0pOB@RؒDATA,0ХOBRDATA,0OBR(DATA,POB@PDATA,POB@RxDATA,PME|ApDATA,pME@|ADATA,pШME|ADATA,Ш0pMEA DATA,0ШIP@ffAQDATA,0IPffA8gDATA,PIPffA0tDATA,PIPAhDATA,PIPADATA,MA@ADATA pe333? DATAp 333? ?zDzDBD22FzD #<HB DATA^333? DdC8CnD fCC(BDC?z?DATAT`333? Save FileryRT PATHSC:\Creation\BlenderFiles\Pythons\Trajectory\2.40-alpha2-windows\blender-2.40-alpha2-windows\Trajectory_Vertex_3.blend.pySRt0m@SR3-Materialodel SingدгH@(JDATAدn(DATA(npدDATApn(DATAnpDATAnH8DATAHn8DATAnرHDATAرn DATA nhر@8DATAhn @DATAnhDATAn@@DATA@nDATAn@DATAгo(pDATAo`гدDATA`oدDATAo`HDATAo8HDATA8o(DATAoȵ8pرDATAȵoرDATAoXȵHرDATAXo DATAoXH DATAo0رhDATA0ox hDATAxo0DATAoxDATAoPhDATAPo DATAoPDATAo(@DATA(op@DATApo(DATAophDATAo@DATAHqدH?@Pף77(HнDATAHp OutputRender>DATA pHRenderRenderF>DATApн AnimRender>DATAнpFormatRender>DATAfp333?~CA~CA?AFA= ADATAp@ 333?zCCHBC ?CFC= ADATA@^Hp333?DhC?DhCC(BDC?z?mDATAHY0@333???? ???? A??@PA Aj?c3>}GCHB? AP B? #<CDATA0a(H333?@̌AR|B1@lA A@CC #<@DATAT(`0333?/9DATAqH(pرDATAq hرHG@? JLA9A9SAT{~DATApOutputRender>DATAp`RenderRender>DATA`p8AnimRender0>DATA8p`FormatRenderH>DATAp8PreviewMaterial>DATApMaterialMaterial>DATApShadersMaterial0>DATAppTextureMaterialD>DATAppHMap InputMaterial\>DATAHp pMap ToMaterial`>DATA pHRampsMaterial>DATAp Mirror TranspMaterialH>DATA^333?'ChCC+lh.CC(BDC?z?{DATAY333?'J>H!?)xu?i6>Pbܗ=(?^L?a?滎z?J>#xu?ܗ=Hi6>(? ?Pb^L?\FAA?4[?[!?@jG>gb>Pb>4Im>k&?]M^L<0@AzA=>Kc<2֍7&> ?:x¸A1vB,jB~@G@? JLJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?@?$$OAP  B?=Ch?j(4?t'>dDATA(]333?'zC AzC A #< #<`jFzD OBDATAT`333?';SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATAqp U.=k=o??9?9S?T@@DATAY333?9???h?j(4?t'>????hj(4t'?U.=k=o< =F?OAAgj(4t'?U.=k=o????h?j(4?t'>??OAP  B??=Ch?j(4?t'>d????DATA^333?9DdC>9C,DeCC(BDC?z?DATA(]333?9zC AzC A #< #<`jFzD OBDATAT`333?9 SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATApq@@he??AHM???:SpDATApYX333?\@ݕ/?V~'?3F:?>T8175e?4>Z& 4?ߕ/?7F:?81X~>75e?'?T3>ne@>N@?4z?{''巄???T?y|? l4A.11A 4A*p>?Ĵkz3ڴ0>+>,4xB ֟&BĭeA(@e??AHMݕ/?V~'?3F:?>T8175e?4>Z& 4?H?N+Z#OAP  B??=Ch?j(4?t'>d????DATAX^`p333?\@DdC>9C,DeCC(BDC?z?DATA(`]X333?\@zC AzC A #< #<`jFzD OBDATAT``333?\@ SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATA@qp@&==o?:S@DATA@Y(333?G?3?3:-vl(4??3?3;@k(40v@?&=nn1n;=ꉖø;FWȾP{:?IXA54 AC:@k(4.v@?&==o??3?3:-vl(4?5?5IXAP  B??=C:j(4?.vd????DATA(^0@333?GDdC>9C,DeCC(BDC?z?DATA(0](333?GzC AzC A #< #<`jFzD OBDATAT`0333?G SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendSRtm0SR4-Sequence`H(JDATAnDATAnHDATAHnDATAnHDATAn DATA nhDATAhn DATAnhDATAn@DATA@nDATAn@dDATAndDATAn`DATA`nDATAoHDATAo8DATA8oDATAo8 DATAo DATAoXhDATAXoHDATAoXhDATAo0hDATA0ox@DATAxo0@DATAoxDATAoP@DATAPohDATAoPDATAo(DATA(opDATApo(DATAop@`DATAoH `DATAHo`DATAq DATAphOutputRender>DATAhp@RenderRenderF>DATA@phAnimRender>DATAp@FormatRender>DATA^333?\YDhCGIDhCC(BDC?z?DATAT`333?\Y/9DATAqhHDATAq ` 8=i>o? DATAfH333?La~CB~CB?BFB= ADATAH_ 333?LazCAzCA  A@FB= A DATA Y H333?La????????8=i>o?fffAD&@??fffAP B? #<CDATAT ` 333?LaAVE TARGA/t1.blend9DATA q@8=H>o?eee  PDATA _h 333? hzCAzCA1||1 A@FB= A DATAh YP 333? h????????8=H>o?fffA*@??fffAP B? #<CDATATP`h 333? hAVE TARGA/t1.blend9DATAq h8=>o?cccdDATA(]0333?nB̽̌?B̽̌?## #< #<`jFzD SQB̽̌?DATA0Y333?n????????8=>o?fffA@??fffAP B? #<CDATAT`0333?nOAD FILE/9DATAq@`8=i>o?`DATA_x333?DtzCAzCA A@FB= A DATAxY`333?Dt????????8=i>o?fffAD&@??fffAP B? #<CDATAT``x333?DtAVE TARGA/t1.blend9SRtmSR5-Scripting!`!P%%:(JDATAnDATAn DATA nhDATAhn DATAnhDATAn@ DATA@ n DATA n @ DATA n! DATA!n DATA`!o! DATA!o!`!DATA!o8"! @ DATA8"o"!@ DATA"o"8" DATA"o#" DATA#oX#"@  DATAX#o##  DATA#o#X#DATA#o0$#DATA0$ox$#!DATAx$o$0$h!DATA$o%x$ !DATA%oP%$ !DATAP%o%h@ DATA%q& @ DATA&q-%  'S==o?H)0,'p(DATA'pp(Transform PropertiesView3d>DATAp(p'3D Viewport propertiesView3d>"DATAH)Y0,333?????????'S==o?QcA*A?'S==o??????*AP B??=C ????DATAT0,`H)333?/9DATA-q:&! @ h??Pף X/@9..DATA.pTransform PropertiesIpo!>DATAx/d80 333?> =DATA80b 1/333?CCx??|?DATA( 1]x280333?zC̽̌?zC@;; #< #<`jFzD OBzC̽̌?DATAx2a3 1333?CC|||??l|p3p3DATA,p3BOp=APDATA34x2 333?zCCHBC|||?CFC= ADATA4cx53 333??zDzDBCl||ll|zDzD=HB DATAx5X64 333?BCBCl|llFzD #<HB DATAX6Y@9x5333???? ???? A???PA A!O?j?}GCHB? AP B? #<CDATAT@9`X6333?/9DATA:q- !OGH;FDATA;p<Link and MaterialsEditing>DATA<px=;MeshEditingF>DATAx=pP><Anim settingsObject>DATAP>p(?x=DrawObjectF>DATA(?p@P>ConstraintsObject>DATA@p@(?EffectsObjectDATA@pA@HooksObjectF>P>DATAApB@Particle InteractionObject>(?DATABp`CASoftbodyObject>(?DATA`Cp8DBOutputRender>DATA8DpE`CRenderRenderF>DATAEpE8DAnimRender>DATAEpFEFormatRender>DATAFpEScriptlinksScript>DATAG^H333?\ChC#Dk=@P ]CC(BDC?z?DATATH`G333?\/9SC(JWSCScenetageainPXrRPN0P@OcAP [AcAP [AcAP [A=PPdd??< ddd??Z  @????L?fff??@ A//backbuf/tmp\//ftype@&#@^@&^#DSVDATAPNON.DATANONPN.ؒDATANO@ONxDATA@OOON ](DATAOOO@O.xDATAOO0POPDATA0POO.PDATA(PN,d'=A@DATAPVZ ?o: DATAHDATAS kCAt(QCACameraamera.001L>=B B@?IPPQ8gIPObIpoPRV—BvMK"fAOBDATATPR,RW~Z@B=OBDATATR,`SPRX~Z@B=OBDATAT`S,SRZ~Z@B=OB DATATS,pT`S@\~Z@Bu>T|?OB u>DATATpT,TS]~Z@Bu>T|?OBu>DATATT,UpT_~Z@Bu>T|?OBu>DATATU,VTha?$BI< AOB @DATATV,VUXc?$BUfAOBYy@DATATV,VHe?$BJr@OBK>DATAW%~Z@ɓ@@t Ah4A'KA`AQAA,ABOAҸAAqAw B)BNBBBBDATAX%~Z@ɓ@@t Ah4A'KA`AQAA,ABOAҸAAqAw B)BNBBBBDATAZ%~Z@ɓ@@t Ah4A'KA`AQAA,ABOAҸAAqAw B)BNBBBBDATA@\%u>~Z@u>ɓ@u>@u>t Au>h4Au>'KAu>`Au>QAu>Au>,Au>BOAu>ҸAu>Au>qAu>w Bu>)Bu>NBu>Bu>Bu>Bu>DATA]%u>~Z@u>ɓ@u>@u>t Au>h4Au>'KAu>`Au>QAu>Au>,Au>BOAu>ҸAu>Au>qAu>w Bu>)Bu>NBu>Bu>Bu>Bu>DATA_%u>~Z@u>ɓ@u>@u>t Au>h4Au>'KAu>`Au>QAu>Au>,Au>BOAu>ҸAu>Au>qAu>w Bu>)Bu>NBu>Bu>Bu>Bu>DATAha%$3@?@j@@6k@@@7A @< AAQJA0Ad@lA@}~A\@A@7AhÈ@\A@AMo@A@XB[U?Bzif BbEBOBX>BZW  BI$BIŞ(BIDATAXc%6uU?Uj@U1@(s@P<@$x?VAs@0Aˎ?@@kAX׊@{A~@A<>@Ak@>A@A@.A@XB&@BA BAB`PABe8ZAABfA<B4DBA$B4DBA)B4DBADATAHe%Ks?p(@.@J@]-G@RAc<0A"P>nA^~>57Aٵ>A6?RA$=?xA| @A'@[7AL@Br@BTEi@P B\P@wBկ?BW?eBŐ>sB=$B=N)*B=IPP8g0tQIPObIpo.001gksGۃB š1+BOBDATATg,@hR?,B,t@X3AOBP@DATAT@h,hg@U?,B]?OBZ>DATATh,Pi@hHR?,B@l@OB@DATATPi,ihl?,Bc@@OBc@DATATi,`jPim?,Ba}=c}=OBc}=DATAT`j,jio?,B j@X[%BOB dADATATj,pk`jXp?,B?̌?OB ?DATATpk,kjq?,B?̌?OB?DATATk,pkr?,B?̌?OB?DATAR%r(A?(A(@(A^@X3A@,Av@&AvA A0A @BlA8@WA,t@AN[@AE@VBlA,BlAHBlADATA@U%b+x?x@x@Gx@wY5@8@";A->0A0GsA]?AѿACq<'nA>PB,BHBDATAHR%f@?@%@@s@a@@@Z@@A@0A@SsAl@A:@A"Ħ@sA:@,B@,B@ثIB@DATAl% sc@?c@(@c@@c@@c@C@c@@Ac@0Ac@uAc@ƶAc@Ac@UAc@cBc@,Bc@.IBc@DATAm% sa}=?a}=(@a}=@c}=@c}=C@c}=@Ac}=0Ac}=uAc}=ƶAc}=Ac}=UAc}=cBc}=,Bc}=.IBc}=DATAo% j@? j@)+@ j@ @Z@@ A ?@A:A|A__@A0AeRAfA>A<"A6=AAIAAABX[%B,BX[%BABX[%BDATAXp% s???(@?@?@?C@?@A?0A?uA?ƶA?A?UA?cB?,B?.IB?DATAq% s???(@?@?@?C@?@A?0A?uA?ƶA?A?UA?cB?,B?.IB?DATAr% s???(@?@?@?C@?@A?0A?uA?ƶA?A?UA?cB?,B?.IB?IPP0th8gIPObIpo.002tx1I?B.8AOBDATATt,8uxyAA3&A5AOB)ADATAT8u,utPzAA=OBDATATu,Hv8u({AA=OBDATATHv,vu|AA hr>OB 2DATATv,XwHv|AA?m@OB @DATATXw,wvx}AA?Y'?OBc?DATATw,hxXw~AA?X'?OBc?DATAThx,xw~AA{AրAOBr*vADATATx,hxAA1(AJgAOB3\5ADATAxy%]E@hAAhA?AhA\AdAAEAƣAjAyA3&AA3&AA3&ADATAPz%~@ACDA{AAJA-AAADATA({%~@ACDA{AAJA-AAADATA|%@ hA h1CA h{A [A2>(AB>ͮA2>A2>A2>DATAp|%Σ@?A?;DA?{Am@Am@W Am@DATApx}%(@?A?R;DA?{AY'?AY'?5AY'?DATAp~%(@?A?R;DA?{AX'?AX'?5AX'?DATA~%@`SAA`SA{HA`SA85}A$AA$AA$AAրAAրA(AրADATA%l@zAAzA HAzAݖ}ACAAMA#˩ATAATAATA&ATAIPPh0tIPObIpo.0036j7/B_4B@OBDATAT,p?$B3t@OB)DATATp,(?$B>!wlOBDATAT,p8?$B3AVja@OB ?DATAT,H@A8J @OB?DATAT,X?`B &%'@OBFӑDATAT,0?`B}V@OB @DATA% .?.;5D@.@<A^?fVA A৅A42AKξ B/?$B/?BB/?DATA(%#j?jf@d@jl@IAhTA5ʉAw Aa29A?- Bh,$Bh,11CBh,DATA8%II@?I@g@I@@3Ѡ@AX!@SA#+@ AA>nl{Abm B>$B>)CB>DATAH%̿]?]nK@]:/@. @]}DA,AT@AA8XA8A8ăA8DATAX%?@@hA &%ATA*_>i@A'@`B'@B'@DATA0%3}C1@?C1@@C1@{A@AC1@:A;\>vA}V`B}V9B}VIPPhIPObIpo.0040W.MiB!/@OBDATAT,?AnϠ.@OB!sA@DATAT,Ȏ?A'5Y:@OBWBDATAT, ؏?A3AW 5OBo4DATAT ,?A=OBDATAT,0 ?A=OBDATAT0,?AyOB ʷDATA%6o@?o@#@o@I@.@0A4@NbAn@ZAnQAƒ ,bAfuAAnϠAnϠi BnϠDATAȎ%tk??tk?/)@tk?B@O0ATfA4YAિA@ ?_AA:@AſAſ BſDATA؏%9f;?f;@f;y@q50A|5CdAW 5@ލAl3A !A@@A8A8Н B8DATA%9?@y@0ACdA@ލAA!A@AAН BDATA%9?@y@0ACdA@ލAA!A@AAН BDATA%,?s@ߨ@)0A3dA&A0=AAy2AA BWO XrRMWOWorldg=pb>>===??A@pA A?L=TXdHTXTrajectory_2_41.pyL x#00DATA@C:\Creation\BlenderFiles\Pythons\Trajectory\Trajectory_2_40.pyDATA hTxN DATAh #DATAh#/CllllDATA@p$V])0DATA@ T(S llllDATAЖ@$])DATAЖ%NV(llllDATA`Ж`%])DATA`%DATA`%xTDATA8 & VDATA8h&yNDATAȘ8'-llDATAȘ'HDATAXȘ(p1]-0DATAXH(R1]-0DATAX(V1]-0DATA0(`oRDATA0x)DATAx08)0Y1DATAx)hDATAP)S8DATAPH*FREEDATAP*XSlDATA(*6Ml DATA(pP+X4lDATAp(+/R(DATAp,5-arenDATAHx,"nonDATAH,S;"nonDATA؝H -V<"nonDATA؝ -_QnoneDATA h؝."noneDATAh N noneDATAhP.8*MnoneDATA@.VnoneDATA@/hnoneDATAП@@/ȱlDATAПx/xlDATA`П/ {VllllDATA`/&Lt()DATA`h0%%llllDATA80TizeZDATA80(llllDATAȡ8X1NizeYDATAȡ1?llllDATAXȡ2(S=izeXDATAXp2@llllDATAX2HR8ocZDATA0X3PRllllDATA0x3TAocYDATAx04_@llllDATAx4t>ocXDATAP4pu.llllDATAPP5RtZEDATAP5uCllllDATA(6TItYDATA(p6HvAllllDATAp(6vtXDATAp07#llllDATAH7L0]DATAH8HT!lllDATAئH`8vom:DATAئ 8`!llllDATA hئ9!portDATAh `9`Tlll DATAh9Vort DATA@BUHV""DATA@9ȯqlllDATAШ@8:$:DATAШ:h!t.GeDATA`Ш:!qDATA`@;:DATA`;p###DATA8;ȫies:DATA8 <  DATAȪ8x<x'DATAȪ<ج!DATAXȪ(=0riptDATAX`=hriptDATAX=qqqDATA04St:DATA0x=حt.GeDATAx0>qqqqDATAx@>H ##DATAP>p:PDATAP>خ##DATAP(R DATA(?qqqqDATA(pT T llllDATAp(X?` 15DATAp?XV$FREEDATAH TCS FREEDATAH@VllllDATAدH?UT .DATAد(H@VFJECTDATA(pد T T luatDATAp( TVluatDATAp@V"`DATAHAVDATAH}NȢVointDATAرHhA(V"ointDATAر AVointDATA hرBVFREEDATAh h)RNFREEDATAhHBVDATA@PDS 7 FREEDATA@BVFREEDATAг@B@V;FREEDATAг8C8VFREEDATA`гCVFREEDATA`CV FREEDATA`(DXVf roDATA8`DVFREEDATA8DVl7DATAȵ8DV)7DATAȵ@EVqDATAXȵ()RT $8DATAXExVDATAXEV DATA0SVDATA0xFV DATAx0hF`VllllDATAxFVKllllDATAP8GTDATAPpGT*DATAPGPT.GetDATA( HT#.GetDATA(pxHl1]-0DATAp(H T DATApITDATAH .S@N DATAHPI0T DATAغHI`VDATAغ ITo("AlDATA hغJ0TDATAh JhTDATAhKVDATA@HK(DATA@KTDATAм@ TDS DATAмKT)DATA`мLРVFREEDATA``LBS.DrDATA`@M8TiFREEDATA8M`X1FREEDATA8HNW/X9DATAȾ8NT=llDATAȾOH TllllDATAXȾPOVqDATAXO TA:DATAXP T:EEDATA0HP@VDATA0x$HVDATAx0PS DATAxP0!TDATAPQp!TDATAPPQVDATAPQ!T DATA(Q!TDATA(pRhVFREEDATAp(XR("T(DATApR"TDATAHR VllDATAH8SSDATAHS0SDATA ShS*DATA h TȨSlDATAh ThSrt oDATAhUS%DATA@hU؞Vrt oDATA@USCrt oDATA@(VSDATAxVVǨDATA`VتS%DATA`W0SDATA`PWhSDATA8WHVDATA8WSDATA8 XS<DATApX@SDATAXXVDATAXYSDATAX@YȬSDATA0xYSsglDATA0xYPS*strDATAx0ZS>cteDATAxZS>1]-0DATAPZSkotDATAP0[ ATsubDATAP[(UbutDATA([Vllx_DATA(p\`7b1]-0DATAp(\`UgainDATAp\pVatsDATAH0]U1]-0DATAH]UvecDATAH]8UerDaDATA ]pU)difiDATA hP^W0eMarDATAh ^UeSpDATAh_ UreeDATA@8_XU*ticlDATA@_U*nsorDATA@_UllDATA8`XU*ssiDATA``UtorDATA``U?bArmDATA`@ahU!llDATA8aUJstrDATA8b@UrainDATA8PbxUbStDATAbUlDATAXb U+DATAXHcUDATAXcU+llllDATA0c0U])DATA0x8d+])DATAx0dxDATAxd`&DATAP8e#DATAPe&0DATAPepoDATA( f&llDATA(pxf ODATAp(fp&qDATApgDATAHhg &DATAHgDATAHh'mDATA hh0DATA hhllllDATAh hIP)DATAh(iQDATA@ixhLocXDATA@PjgDATA@j(VpDATA(k$vDATA`kV-DATA`kDATA`kDATA80l DATA8pl(W3DATA8lV 15DATA mP 15DATAX`mqlllDATAXmDATAXmV2DATA0Hn ctueDATA0xnPctueDATAx0n'DATAxo'izeYDATAPpoH'izeZDATAPot()DATAPpPVarenDATA(Pp@NDATA(ppiVDATAp(pDATApqXV3lll DATAHq the DATAHqp DATAHr llllDATA Hr ort DATA hr0 portDATAh rh &DATAhs UXVDATA@sU.qqqqDATA@tP!CFREEDATA@xthVDATAtU2FREEDATA`(u!&DATA`uxhVXVDATA`u("+"""DATA8v`"""DATA88v U3bjetDATA8vT3FREEDATAwPT3llllDATAXpwS3llllDATAXwS30юDATAX@xS3HDATA0x"5om:DATA0xy#5.DATAx0xyx5jetsDATAxy nderDATAP z(ept:DATAPpzxH DATAPz- DATA({ DATA(p`{h8qDATAp({FREEDATAp|FDATAHP|XFREEDATAH|DATAH|SSDATA }DATA h~0hV DATAh P~0BlenDATAh~DATA@~DATA@BDATA@h&DATA DATA`(DATA``@!DATA`gV0]DATA8!y:Y=DATA8XgV.DATA8!HDATAXgVDATAX@H>pareDATAXgV ENTSDATAXFREEDATA0(#FREEDATA0xP$)<>DATAx0؃")<EDATAx0R-)EEDATAP7$REEDATAPfVFREEDATAP0x7$4DATA(7"DATA(pHR-FDATAp(@(8$]DATApfVFREEDATAH8$FREEDATAH88"FREEDATAHQ-4DATA 89$DATA hH8fVvDATAh 9DATAhȈ9)DATA@(0:_DATA@`h:"DATA@:dFREEDATAPxQ-lDATA``;lDATA`; lDATA`@;lDATA8x0<"llllDATA8ЋQ-llllDATA80<llllDATA< llllDATAX =llllDATAXX="llllDATAXPP-llllDATA0=llllDATA0x> llllDATAx0@H>lllDATAxx>llllDATAP>lll DATAP>DATAP .llDATA((?%VDATA(p؏mVDATAp(mV SDATApheVDATAH@nV actDATAHeVDATAHPnV DATA `eVDATA h(-DATAh PeVDATAhnV&DATA@dVDATA@8dVDATA@PoVDATAȓoVDATA`oVDATA`X@pVHUDATA`xpVFREEDATA8ȔpV(FREEDATA8(qVFREEDATA8`@dV4DATAcVFREEDATAXcVFREEDATAX0HqV#4DATAXqV2DATA0qVDATA0xrV+pUDATAx0XprVVDATAxhcVDATAPؗrV8DATAP(rVactuDATAPpHsVDATA(sV$DATA(psVDATAp(8tVDATAp`tVDATAHЙtVJDATAHP0uV%DATAHuVDATA uV DATA h S"dowDATAh x cVdoEDATAhbVFREEDATA@SDATA@PbVFREEDATA@HbV| DATAМbV DATA`0SDATA`hS DATA`؛S*DATA8 8SODATA8SDATA8PGT DATA0-DATAXSDATAXȟaVDATAXPSDATA0@SHr.WDATA0xSK DATAx0@SAnksDATA xSDATA P @SDATAP   HSDATA  P paVDATA (  Т(aVtrDATA( p  ПS])) DATAp  ( h S DATA  p `V beDATA H  pS"1]))DATAH   XȠS fDATA  H SframDATA   Ȥ8Salc(DATA h  S'0 DATAh   pS7#DATA  h إXS(eDATA @  8`VoDATA@   S diDATA  @ ئ(DATA  (DATA` xР#DATA`Ч(DATA`xDATA8`ȡDATA8oRTDATA8 3{DATApXpDATAX[DATAX8(@PoinDATAXetPoDATA0FREEDATA0x80odifDATAx0)<>rDATAxؤ DATAP0(FREEDATAPh`eDATAP DATA(P`V ?DATA(p(`V DATAp(p_V DATApإDATAH(  DATAHHx_VDATAHh$ DATA ȮNDATA h! DATAh `| DATAhP DATA@VIDATA@PDATA@H6DATAN0DATA`HN DATA`HVDATA`бXX)BDATA80X DATA8pXBDATA8pX)DATAHX)ODATAX0X DATAX8HFREEDATAX8X-extDATA0pWexEDATA0xXDATAx00ȍW DATAxp8XDATAPxX%DATAPX DATAP@X3DATA(XDATA(pX$DATAp(HWDATAp8X2DATAHXDATAHHX/DATAHXDATA @XDATA hXDATAh PX)DATAh X)DATA@XDATA@`XDATA@ XDATA xX#DATA ` PXDATA`   PDATA  ` DATA 8! 8WKDATA8!! @llllDATA!!8!DATA!"!HDATA"X"!(hFREEDATAX"""pfDATA""X"DATA"0#"PDATA0#x#"@t.pyDATAx#0#UDATAT#!BPYDATA#.DATAD#""" Registration info for Blender menus: <- these words are ignoredDATAp$Name: 'Trajectory'EDATA TBlender: 240alcDATA$Group: 'Animation'EDATA,%Tip: 'See Trajectory of selected object'DATA`%"""DATA%osDATA%__author__ = '3R - R3gis'EEDATA &__version__ = '2.4'DATAh&__url__ = ["Script's site , http://blenderfrance.free.fr/python/Trajectory_en.htm","Author's site , http://cybercreator.free.fr", "French Blender support forum, http://www.zoo-logique.org/3D.Blender/newsportal/thread.php?group=3D.Blender"]DATA '__email__=["3R, r3gis@free.fr"]DATA'ierDATA(utDATAH(__bpydoc__ = """REEDATA(DATA(Usage:DATA)|?DATA48)* Launch with alt+P (or put it in .script folder)EEDATA)DATA<)Allow to see in real time trajectory of selected object.REEDATAH*DATA*On first run, it ask youREEDATAP*- If you want that actually selected object have they trajectory always shownDATA8P+- Futur and Past : it is the frame in past and futurha2DATA,+of the beggining and the end of the pathDATA0,- Width of line that represent the trajectoryDATAx,ythDATA<,Then the object's trajectory will be shown in all 3D areas.DATA@ -When trajectory is red, you can modifiy it by moving object.REEDATAT-When trajectory is blue and you want to be able to modify it, inser a Key (I-Key)EEDATA.Si DATA NNotes:
EDATAPP.It create one script link so make sure that 'Enable Script Link' toogle is onDATA.BleDATA/DATA@/"""DATAx/DATA/qqqDATAP/# --------------------------------------------------------------------------@DATA(h0# ***** BEGIN GPL LICENSE BLOCK *****llDATA0#enDATA,0# Copyright (C) 2004-2006: Regis MontoyaDATAX1# DATA@1# This program is free software; you can redistribute it and/orDATA@2# modify it under the terms of the GNU General Public LicensewsDATADp2# as published by the Free Software Foundation; either version 2REEDATA<2# of the License, or (at your option) any later version.winDATAX3#DATAD3# This program is distributed in the hope that it will be useful,DATAD4# but WITHOUT ANY WARRANTY; without even the implied warranty ofREEDATA@4# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theDATA04# GNU General Public License for more details.DATAP5#EEDATAD5# You should have received a copy of the GNU General Public LicenseDATAL6# along with this program; if not, write to the Free Software Foundation,EEDATAD6# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.DATA6# DATA$07# ***** END GPL LICENCE BLOCK *****DATAP7# --------------------------------------------------------------------------lDATA$8#################################DATA `8# Script pour convertir un #DATA$8# mouvement en trajectoire #)DATA$9#################################DATA`9# by 3R - 26/08/05DATA9# pour tout probleme :DATABU# r3gis@free.frDATA9# ou sur le newsgroup:"DATA(8:# http://zoo-logique.org/3D.Blender/lllDATA$:#################################DATA$:#-----------Utilisation---------#DATA@;# #EDATA;#Lancer avec Alt+P #EDATA;# #DATA$ <#Derive du script MovToPath : #REEDATA(x<#http://cybercreator2.free.fr/Pythons/#DATA$<#################################EEDATA(= 32DATA`=""DATA=DATA4Simport BlenderlDATA=.7DATA> 32DATA$@>scene=Blender.Scene.GetCurrent()REEDATA>lloDATA> 32DATA (R#EcritureDATA?def ecrire(name,script):REEDATAT global scenecrDATAX? lestext=Blender.Text.Get()DATA(? Ntext=[txt.name for txt in lestext]lEEDATA T ecrire=0EDATA@ if name not in Ntext:DATA ?U ecrire=1DATAHH@ elif lestext[Ntext.index(name)].asLines()[1] != "#"+str(__version__):EDATA T ecrire=2DATA T if ecrire==1:lDATA$@ scripting=Blender.Text.New(name)EDATAA scripting.write(script)t[DATA}N if ecrire==2:lDATA$hA scripting=Blender.Text.Get(name)EDATAA scripting.write(script)poDATAB 5.DATA h)R#Lier DATAHBdef lier(name,type):DATAPDS global scenecrDATAB try:##DATA<B leslies=[script for script in scene.getScriptLinks(type)]DATA8C except:leslies=[]DATAC if name not in leslies:youDATA$C scene.addScriptLink(name,type)([DATA(DDATA`D 32DATAD#Suppression d'un texteDATA,D# Delier : scene.clearScriptLinks([name])DATA@Edef supprtexte(name):DATA()R global scenecrDATAE try:DATA E Texte=Blender.Text.Get(name)DATAS Texte.clear()DATA$F scene.clearScriptLinks([name])REEDATA hF Blender.Text.unlink(Texte)DATALF except:print('---Initialisation of Trajectory_'+str(__version__)+'.py---')DATA8G 32DATA,pG#On regarde si le script est deja en routeEDATAGlestext=Blender.Text.Get()EDATA$ HNtext=[txt.name for txt in lestext]DATApxHif ('Trajectory' not in Ntext) or (lestext[Ntext.index('Trajectory')].asLines()[1] != "#"+str(__version__)):EEDATAH T ask_modif=0DATAIelse:DATA .S ask_modif=1extDATA$PI#Si oui on demande ce qu'on faitREEDATAIif ask_modif==1:REEDATApI ask_modif=Blender.Draw.PupMenu("Script already launch %t|Modify settings%x0|Keep settings%x1|Stop script%x2|")DATAJ 32DATAJ2DATAKselection_mode=0REEDATAHKfutur=0DATAKpast=0DATA Tepaisseur=1DATA,K#Dans le cas de la modification du scriptEEDATALif ask_modif==0:DATA`L handle_mode=Blender.Draw.PupMenu("Mode for linking? %t|Redraw (actived for each 3D View)%x1|Space Handler(you have to activate for each area by View>>SpaceHandler)%x2|")DATAl@M selection_mode=Blender.Draw.PupMenu("Always show path for currently selected objects? %t|Yes%x1|No%x2|"))DATA4M futur=Blender.Draw.PupIntInput('Futur',35,1,900)EEDATA0HN past=Blender.Draw.PupIntInput('Past',20,1,900)DATA@N epaisseur=Blender.Draw.PupIntInput('Trajectory width',2,1,7)bDATAO DeDATAPOif selection_mode==1:5DATADO objets_select=[obj.name for obj in Blender.Object.GetSelected()]EEDATAPelse:ecDATAHP objets_select=[]EEDATA$Hif futur==None:DATA P futur=35DATAPif past==None:EDATA Q past=20DATAPQif epaisseur==None:DATAQ epaisseur=2REEDATAQtry:REEDATAR if handle_mode==2:DATA,XR DrawPart="#SPACEHANDLER.VIEW3D.DRAW\n"DATAR else:EDATAR DrawPart="#!BPY\n"DATA 8Sexcept:DrawPart="#BadlyMade"REEDATASDATA,SDrawPart=DrawPart+"#"+str(__version__)+"""DATAp T#This script is a part of Trajectory.py and have to be linked to the scene in Redraw if not in HANDLER mode.REEDATA T#Author : 3R - Regis MontoyajecDATA(U#It's better to use the Trajectory.pyEEDATAhU#To find help : DATADU#You can modify the two following value to change the path settingsDATA(Vfutur="""+str(futur)+"""REEDATAxVpast="""+str(past)+"""DATA(Vobjets_nom="""+str(objets_select)+"""qqDATAW DATAPWDATAWimport Blender,mathDATA Wfrom Blender import BGL,DrawjecDATA Xfrom Blender.BGL import *EEDATApXfrom Blender.Draw import *EDATAXfrom math import *EDATAYodiDATA@Y ipDATAxY#Prise de la frame actuelleDATA YframeC=Blender.Get('curframe')lDATA@ZrenderingCont=Blender.Scene.getCurrent().getRenderingContext()oDATA@Zk=1.00*renderingCont.oldMapValue()/renderingCont.newMapValue()oDATAZif k<1:DATA0[ tr=-1*int(log(k*0.1,10))EEDATA[else:DATA[ tr=-1*int(log(k,10))DATAd\#Creation de la frame de comparaison, reelle et entiere (pour test rouge, place ipo, trace courbe)EDATA\frameCtr=round(frameC*k,tr)DATA\frameCr=frameC*kREEDATA 0]frameC=int(round(frameC*k,0))DATA] 32DATA]32DATA,]#Listage des objets demandes dans $objetsEEDATA4P^objets=[o for o in Blender.Object.GetSelected()]toDATA^for objn in objets_nom:DATA_ try:DATA,8_ if objn not in [o.name for o in objets]:EDATA,_ objets.append(Blender.Object.Get(objn)) DATA _ except:DATA,8` print "Warning : "+str(objn)+"not found"DATA`32DATA@`#Fonction de retour de la matrice des parent a une frame donneeDATA$@adef matrixForTraj(frame,PARENTS):EEDATALa DecMatC=Blender.Mathutils.Matrix([1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1])EDATAb) DATA Pb for i in range(len(PARENTS)):DATAb parent=PARENTS[i][0]DATA,b try:X=PARENTS[i][5].evaluate(frame)*pi/18DATAHc except:X=parent.RotXDATA,c try:Y=PARENTS[i][6].evaluate(frame)*pi/18DATAc except:Y=parent.RotYDATA,8d try:Z=PARENTS[i][7].evaluate(frame)*pi/18DATAd except:Z=parent.RotZlDATA(d try:LX=PARENTS[i][2].evaluate(frame)rDATA8e except:LX=parent.LocXDATA(e try:LY=PARENTS[i][3].evaluate(frame)EDATAe except:LY=parent.LocYDATA( f try:LZ=PARENTS[i][4].evaluate(frame)lDATAxf except:LZ=parent.LocZDATA(f try:SX=PARENTS[i][8].evaluate(frame)eDATAg except:SX=parent.SizeXREEDATA(hg try:SY=PARENTS[i][9].evaluate(frame)DATAg except:SY=parent.SizeYREEDATA(h try:SZ=PARENTS[i][10].evaluate(frame)DATAhh except:SZ=parent.SizeZREEDATAh DATAhEDATAT(i NMat=Blender.Mathutils.Matrix([cos(Y)*cos(Z)*SX,SX*cos(Y)*sin(Z),-SX*sin(Y),0],aDATAli [(-cos(X)*sin(Z)+sin(Y)*sin(X)*cos(Z))*SY,(sin(X)*sin(Y)*sin(Z)+cos(X)*cos(Z))*SY,sin(X)*cos(Y)*SY,0],l DATAhPj [(cos(X)*sin(Y)*cos(Z)+sin(X)*sin(Z))*SZ,(cos(X)*sin(Y)*sin(Z)-sin(X)*cos(Z))*SZ,SZ*cos(X)*cos(Y),0],DATAj [LX,LY,LZ,1])DATA((k DecMatC=DecMatC*PARENTS[i][1]*NMatameDATAk return DecMatCDATAkestDATAkestDATA 0lTestLIST=[]DATA4pl#On trace la trajectoire pour tout les objets listeDATAlfor obj in objets:EDATA m LocX=[]DATA `m LocY=[]DATA m LocZ=[]DATA4m #Liste contenant les points vertex de trajectoirelDATA Hn vertexX=[]DATAn try:DATA(n ipoLocX=obj.getIpo().getCurve('LocX')DATA(o ipoLocY=obj.getIpo().getCurve('LocY')DATA(po ipoLocZ=obj.getIpo().getCurve('LocZ')DATA o except:DATAp ipoLocX="none"REEDATAPp ipoLocY="none"REEDATAp ipoLocZ="none"REEDATAp DATA4q #Initialisation de la boucle de recuperage parentsDATAq parent=obj.getParent()DATAq saveObj=objverDATA r enfant=objDATA Hr PARENTS=[]DATAr  DATA(r #Boucle de get des info des parents :DATAXs #liste de [nom,matrice initiale au parentage, ipo en X,Y,Z,rotX,rotY,rotZ,sizeX,Y,Z]e(DATA0s while type(parent)==Blender.Types.ObjectType:DATADt Init_Mat=Blender.Mathutils.Matrix(enfant.getMatrix('worldspace'))DATAxt Init_Mat.invert()DATA4t Init_Mat=Init_Mat*enfant.getMatrix('localspace')DATA((u Init_Mat=parent.getMatrix()*Init_MatlDATAu Init_Mat.invert()DATAu DATAv try:DATA48v ipo_Parent_LocX=parent.getIpo().getCurve('LocX')DATA4v ipo_Parent_LocY=parent.getIpo().getCurve('LocY')DATA4w ipo_Parent_LocZ=parent.getIpo().getCurve('LocZ')DATA4pw ipo_Parent_RotX=parent.getIpo().getCurve('RotX')DATA4w ipo_Parent_RotY=parent.getIpo().getCurve('RotY')DATA4@x ipo_Parent_RotZ=parent.getIpo().getCurve('RotZ')DATA8x ipo_Parent_SizeX=parent.getIpo().getCurve('SizeX')DATA8y ipo_Parent_SizeY=parent.getIpo().getCurve('SizeY')DATA8xy ipo_Parent_SizeZ=parent.getIpo().getCurve('SizeZ')DATA y except:DATA z ipo_Parent_LocX="none"bjDATApz ipo_Parent_LocY="none"DATAz ipo_Parent_LocZ="none"DATA{ ipo_Parent_RotX="none"DATA`{ ipo_Parent_RotY="none"DATA{ ipo_Parent_RotZ="none"DATA| ipo_Parent_SizeX="none"DATAP| ipo_Parent_SizeY="none"DATA| ipo_Parent_SizeZ="none"DATA| PARENTS.append([parent,Init_Mat,ipo_Parent_LocX,ipo_Parent_LocY,ipo_Parent_LocZ,ipo_Parent_RotX,ipo_Parent_RotY,ipo_Parent_RotZ,ipo_Parent_SizeX,ipo_Parent_SizeY,ipo_Parent_SizeZ])lDATA} DATA~ enfant=parentDATAP~ parent=parent.getParent()DATA~ DATA~ nDATAD#Retour de la matrice de decalage du au parent a la frame couranteEDATA( DecMatC=matrixForTraj(frameC,PARENTS)lDATA obj=saveObj>LXDATA(DaDATA$` try:LXC=ipoLocX.evaluate(frameC)EEDATA except:LXC=obj.LocX.evDATA$ try:LYC=ipoLocY.evaluate(frameC)EEDATAX except:LYC=obj.LocY.DATA$ try:LZC=ipoLocZ.evaluate(frameC)DATA except:LZC=obj.LocZDATA@@ vect=Blender.Mathutils.Vector([obj.LocX,obj.LocY,obj.LocZ,1])eDATA color=[0,1] LYDATADATA$( #En cas de modif de la trajectoireDATA( if round(obj.LocX,5)<>round(LXC,5):REEDATA$؃ for bez in ipoLocX.bezierPoints:DATA00 if round(bez.getPoints()[0],tr)==frameCtr:EEDATA( bez.setPoints((frameCr,vect[0]))DATA ipoLocX.recalc()lDATA(0 if round(obj.LocY,5)<>round(LYC,5):e DATA$ for bez in ipoLocY.bezierPoints: DATA0 if round(bez.getPoints()[0],tr)==frameCtr:EEDATA(@ bez.setPoints((frameCr,vect[1]))REEDATA ipoLocY.recalc()lDATA( if round(obj.LocZ,5)<>round(LZC,5):.XDATA$8 for bez in ipoLocZ.bezierPoints:lDATA0 if round(bez.getPoints()[0],tr)==frameCtr:EEDATA( bez.setPoints((frameCr,vect[2]))DATAH ipoLocZ.recalc()DATA DATA,Ȉ #Changement de couleur de la trajectoireDATA( try:_DATA$` for bez in ipoLocX.bezierPoints:lDATAh vertexX.append(round(bez.getPoints()[0],tr))#Rajout des points vertex aux frames qu'on peut modifREEDATA0P if round(bez.getPoints()[0],tr)==frameCtr:DATA color=[1,color[1]-0.3]DATA except:pass]DATA@ try:~DATA$x for bez in ipoLocY.bezierPoints:DATA0Ћ if round(bez.getPoints()[0],tr)==frameCtr:lDATA0 color=[1,color[1]-0.3]DATA except:passlllDATA try:DATA$ for bez in ipoLocZ.bezierPoints:DATA0P if round(bez.getPoints()[0],tr)==frameCtr:lDATA color=[1,color[1]-0.3]DATA except:passlllDATA@ xBDATAx DATA DATA DATA0  for frame in range(frameC-past,frameC+futur):DATA( DecMat=matrixForTraj(frame,PARENTS)DATA؏ DATA$ try:LX=ipoLocX.evaluate(frame)DATAh except:LX=obj.LocX DATA$ try:LY=ipoLocY.evaluate(frame)REEDATA except:LY=obj.LocYDATA$P try:LZ=ipoLocZ.evaluate(frame)REEDATA except:LZ=obj.LocZDATA0 vect=Blender.Mathutils.Vector([LX,LY,LZ,1])wDATAP if frame==frameC:DATA( LXC,LYC,LZC=vect[0],vect[1],vect[2]mDATA DecMatC=DecMatEEDATA8 vect=vect*DecMat2DATA LocX.append(vect[0])DATAȓ LocY.append(vect[1])DATA LocZ.append(vect[2])DATAXfDATA 32DATA,Ȕ matview=Blender.Window.GetPerspMatrix()REEDATA( 32DATA` MatPreBuff=[]EDATA for i in range(4):DATA for j in range(4):REEDATA$0 MatPreBuff.append(matview[i][j])DATA llDATA 2DATA, MatBuff=BGL.Buffer(GL_FLOAT,16,MatPreBuff)DATAX DATA glLoadIdentity()DATA ؗ glMatrixMode(GL_PROJECTION)i][DATA( glLoadMatrixf(MatBuff)DATAp DATA( glLineWidth("""+str(epaisseur)+""")REEDATA EEDATA8 glBegin(GL_LINE_STRIP)DATA for i in range(len(LocX)):DATALЙ glColor3f((i+1)*1.00/len(LocX)*color[0],0,(i+1)*1.00/len(LocX)*color[1])DATA(P glVertex3f(LocX[i],LocY[i],LocZ[i])DATA llDATA  glEnd() DATA$  if not Blender.Window.EditMode():DATAx glPointSize(5)WinDATA glBegin(GL_POINTS)REEDATA glColor3f(1,0.7,0.2)DATAP TestPOINTS=[]DATA TestFRAME=[]EDATAМ for i in vertexX:DATA ix=int(i)-frameC+pastditDATA$h if ix>=0 and ixpt[0]-4 and SourCo[1]>pt[1]-4 and SourCo[1]0:EEDATA ` ev=Blender.Window.QRead()[0]DATA$ if ev not in [4,5,18,112,213]:`DATA SetKeyQualifiers(1)DATAP SetKeyQualifiers(0)DATA8 SetKeyQualifiers(Blender.Window.GetKeyQualifiers())EDATA QAdd(f,ev,1,0)DATAH QHandle(f).DATA Blender.Redraw()DATA,б if ev in [RIGHTMOUSE,LEFTMOUSE,ESCKEY]:DATA 0 done=1DATADpBlender.Set('curframe',\"\"\"+str(Blender.Get('curframe'))+\"\"\")DATA,Blender.Object.GetSelected()[0].select(0)DATA,Hfor OName in \"\"\"+str(objetNom)+\"\"\":DATA  obj=Blender.Object.Get(OName)DATA obj.select(1)EDATA08scripting=Blender.Text.Get('Edit_Trajectory')EDATAscripting.clear().TDATA Blender.Text.unlink(scripting)EDATA 0 \"\"\"DATAp DATA( scene=Blender.Scene.GetCurrent()DATA  try:DATA4@ scripting=Blender.Text.Get('Edit_Trajectory')DATA scripting.clear()DATA( Blender.Text.unlink(scripting)DATAH except:passDATA4 scripting=Blender.Text.New('Edit_Trajectory')DATA  scripting.write(script)DATA0H script=Blender.Text.Get('Edit_Trajectory')DATA DATA DATA DATA,P Blender.Set('curframe',TestFRAME[k])DATA, oldObjS=Blender.Object.GetSelected()DATA for oObj in oldObjS:DATA` oObj.select(0)DATA  TestLIST[j][0].select(1)DATA$ Blender.Run('Edit_Trajectory')DATAP """DATA!BPDATA raDATAif ask_modif==0:REEDATA@ supprtexte('Trajectory')EDATA  ecrire('Trajectory',DrawPart)EDATA if handle_mode==2:DATA( Blender.UpdateMenus()DATAp else:EDATA  lier('Trajectory','Redraw')EEDATAif ask_modif==2: 32DATA@ supprtexte('Trajectory')EDATAX print("---End of Trajectory_'+str(__version__)+'.py---\n--- Thanks for use ---")EETXdHTXTrajectoryp  5`YfDATA( UDATA(p XbqqqDATAp((!Xl0]+4DATAp!(VocYDATAH"8%k]EDATAHp"xFREEDATAH"XCFREEDATA 0#HFREEDATA hp#ȌFREEDATAh #ȍ FREEDATAh#XFREEDATA@ $Xt()DATA@X$xSFREEDATA@$0]DATA$В4].eDATA`@% FREEDATA`%pFREEDATA`%####DATA8& FREEDATA8H& nqnnDATA8&p ,10)DATA&8U>FREEDATAXX' >(SDATAX' DATAX(0 FREEDATA0P( FREEDATA0x( FREEDATAx0( bFREEDATAxh) k]YDATAP) ####DATAP*0 ll lDATAPP* ])TDATA(*  qqqDATA(p*)DATAp( +01)eDATAp+ ?DATAH+@0)DATAH,x*FREEDATAHh,*noneDATA ,FREEDATA h-8*FREEDATAh h-DATAh-?mDATA@.H!enfaDATA@h.hXJFREEDATA@.)EEDATA /FREEDATA`p/0qqneDATA`/+llllDATA`0FREEDATA8`00+FREEDATA80FREEDATA81+FREEDATAh1@om:DATAX1p&qqnqDATAX2r()DATAXP2 &TDATA02FREEDATA0x2&(DATAx0H30DATAx3&tXDATAP3##EEDATAP840 &REEDATAP4 tYEDATA(4 'FREEDATA(p85@ )IDATAp(5 ,DATAp5 DATAH5VQREEDATAH6 h@ DATAH 7 g@DATA 7@ FREEDATA h7 $DATAh P8 ort DATAh8( qqqqDATA@8` RDATA@9 ocZDATA@@93FREEDATA9 (RDATA`9ȊDATA`0:[hSDATA`p:FREEDATA8: 2qqnnDATA8;ȋ ameDATA8X; FREEDATA;' DATAX;x'DÕDATAX@<'FREEDATAX<FREEDATA0<8FREEDATA0x =FREEDATAx0h=FREEDATAx=V1)qDATAP=30)DATAPP>8VFREEDATAP>S FREEDATA(>Y FREEDATA(p? FREEDATAp(X?VFREEDATAp?V&FREEDATAH? VUFREEDATAHp@.']:DATAH@VCFREEDATA HA V']:DATA hA2 DATAh AhV&DATAhPBV']:DATA@BVFREEDATA@BHxDATA@CH3FREEDATApC3FREEDATA`Cx3DATA`@D3DATA`D3DATA8E@3DATA8xEHV5DATA8EV5.DEDATAHF(V5FREEDATAXF, FREEDATAXFVDATAX@GV):EDATA0G8VFEDATA0xGV0]DATAx00HVFREEDATAxH(VDATAPHxVajecDATAP IVDATAPpIVREEDATA(IpSFREEDATA(pJhVFREEDATAp(JVFREEDATAp KVluatDATAHpK8VFREEDATAHKpVDATAHKVBDATA XL V&DATA hLH[ FREEDATAh LVFREEDATAh(Mx!DATA@MVDATA@MXx!DATA@ NxDATAhNx!qqqqDATA`NPy)<>rDATA`Oy>FREEDATA`xOz DATA8OXzqDATA8Oz#DATA8HPz$FREEDATAP@{"qDATAXP-FREEDATAXXQ{$FREEDATAXQ{qbb DATA0Q@|$tYDATA0xPR|"ocXDATAx0Rp-FREEDATAxS|$om:DATAP`SP}FREEDATAPS}$FREEDATAPT}"DATA(XT-DATA(pTH~$DATAp(U~qDATApXU~DATAHU()qREEDATAHUREEDATAH(V"DATA VdqREEDATA hW-REEDATAh xWFREEDATAhWH FREEDATA@XFREEDATA@@XH"FREEDATA@X8-FREEDATAXDATA`HYZ FREEDATA`YFREEDATA`Y"FREEDATA8Z-FREEDATA8xZFREEDATA8Z[ FREEDATA[@FREEDATAX@[xbDATAXx[FREEDATAX[KDATA0[h.XDATA0xH\ %####DATAx0\DATAx\ XXDATAP0]FREEDATAPx]X qqllDATAP]qqllDATA(^ ,10)DATA(pp^P MonDATAp(^t-DATAp_8].eDATAH`_&infoDATAH_@tMatDATAH`qqqqDATA H`.bezDATA h` qqqDATAh `pluatDATAh aREEDATA@XaluatDATA@a0(FREEDATA@aq].eDATA(bFREEDATA`hbFREEDATA`bXFREEDATA`b#DATA8Pc])EDATA8c0DÕDATA8ch+useDATA d])DATAXXd])gDATAXdH la DATAXd(matDATA08eXCTFREEDATA0xpeGow.EDATAx0eHFREEDATAxe@HFREEDATAP0fHFREEDATAPfHJREEDATAPg`I%).eDATA(XgIFREEDATA(pg FREEDATAp(gI"FREEDATAp(hPJ(objDATAHphJFREEDATAHhJDATAHi0KDATA @ixKFREEDATA hiKDATAh iLqnqqDATAhjXL nderDATA@pjL*qqqqDATA@jMOGL_FDATA@PkMqqqqDATAkS dow.DATA`k t-FREEDATA`@lMFREEDATA`xl(NFREEDATA8lpN###DATA8lNH.evDATA8pm(OK2)qDATA mOA2)vDATA X hnqqqqDATAX   n PFREEDATA  X nHlectDATA 0  8opPFREEDATA0 x  oPFREEDATAx  0 oQ0]TDATA  x pPQXqDATA P  hpQeC=iDATAP   pQ"ocZDATA  P qxocYDATA (  @qDATA( p  xqr beDATAp  ( q8'DATA  p  r7FREEDATA H  r(FREEDATAH   rhFREEDATA  H 0s FREEDATA   soireDATA h s`FREEDATAh (t#FREEDATAhtFREEDATA@tXDATA@uDATA@Hu T])DATAuFREEDATA` vFREEDATA`Xv0[ i iDATA`v@h3DATA8`w@FREEDATA8wFREEDATA8wFREEDATA8xFREEDATAXx0FREEDATAXx DATAXy DATA0Hy bREEDATA0xyr o DATAx0y8FREEDATAxz DATAP`zFREEDATAPzH FREEDATAPzIP)DATA(8{`FREEDATA(pp{DATAp({!2)DATAp|8DATAHX| FREEDATAH|DATAH|)EEDATA @} 6FREEDATA h}t()DATAh } llEEDATAh0~ FREEDATA@x~h)FREEDATA@~ om:DATA@<FREEDATA8) DATA`#ocZDATA`@FREEDATA`HFREEDATA8Ѐ-FREEDATA80FREEDATA8x8FREEDATAȁFREEDATAXFREEDATAX@%DATAX DATA0؂3DATA0x@XFREEDATAx0$FREEDATAxFREEDATAP(P2FREEDATAPqqqlDATAPs/hXDATA(@curfDATA(pxocXDATAp(HZDATAp)FREEDATAHHx)DATAHame,DATAH(oLocDATA( @xFREEDATA( p #FREEDATAp ( DATA #!BPYEEDATA #2.4REEDATAp(!#This script is a part of Trajectory.py and have to be linked to the scene in Redraw if not in HANDLER mode.REEDATA !#Author : 3R - Regis MontoyaREEDATA("#It's better to use the Trajectory.pyEEDATAp"#To find help : DATAD"#You can modify the two following value to change the path settingsDATA 0#futur=35DATAp#past=20DATA#objets_nom=[]EEDATA# DATA $ DATAX$import Blender,mathDATA $from Blender import BGL,DrawEEDATA$from Blender.BGL import *EEDATA@%from Blender.Draw import *EDATA%from math import *DATA% DATA&lseDATAH&#Prise de la frame actuelleDATA &frameC=Blender.Get('curframe')EDATA@&renderingCont=Blender.Scene.getCurrent().getRenderingContext()EDATA@X'k=1.00*renderingCont.oldMapValue()/renderingCont.newMapValue()DATA'if k<1:DATA( tr=-1*int(log(k*0.1,10))]DATAP(else:EEDATA( tr=-1*int(log(k,10))EEDATAd(#Creation de la frame de comparaison, reelle et entiere (pour test rouge, place ipo, trace courbe)1DATAh)frameCtr=round(frameC*k,tr)DATA)frameCr=frameC*kDATA *frameC=int(round(frameC*k,0))EEDATAP* DATA*tryDATA,*#Listage des objets demandes dans $objetsDATA4 +objets=[o for o in Blender.Object.GetSelected()]3DATA+for objn in objets_nom:DATA+ try:EEDATA,, if objn not in [o.name for o in objets]:DATA,h, objets.append(Blender.Object.Get(objn))DATA , except:DATA,- print "Warning : "+str(objn)+"not found"BDATAh- DATA@-#Fonction de retour de la matrice des parent a une frame donneeDATA$.def matrixForTraj(frame,PARENTS):aDATALh. DecMatC=Blender.Mathutils.Matrix([1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1])DATA. DATA / for i in range(len(PARENTS)):EDATAp/ parent=PARENTS[i][0]tDATA,/ try:X=PARENTS[i][5].evaluate(frame)*pi/18DATA0 except:X=parent.RotXEDATA,`0 try:Y=PARENTS[i][6].evaluate(frame)*pi/18DATA0 except:Y=parent.RotYqDATA,1 try:Z=PARENTS[i][7].evaluate(frame)*pi/18DATAh1 except:Z=parent.RotZnDATA(1 try:LX=PARENTS[i][2].evaluate(frame)EDATA2 except:LX=parent.LocXDATA(P2 try:LY=PARENTS[i][3].evaluate(frame)EDATA2 except:LY=parent.LocYDATA(2 try:LZ=PARENTS[i][4].evaluate(frame)EDATAH3 except:LZ=parent.LocZDATA(3 try:SX=PARENTS[i][8].evaluate(frame)DATA3 except:SX=parent.SizeXREEDATA(84 try:SY=PARENTS[i][9].evaluate(frame)EDATA4 except:SY=parent.SizeYREEDATA(4 try:SZ=PARENTS[i][10].evaluate(frame)DATA85 except:SZ=parent.SizeZREEDATA5 DATA5bbDATAT5 NMat=Blender.Mathutils.Matrix([cos(Y)*cos(Z)*SX,SX*cos(Y)*sin(Z),-SX*sin(Y),0],DATAl6 [(-cos(X)*sin(Z)+sin(Y)*sin(X)*cos(Z))*SY,(sin(X)*sin(Y)*sin(Z)+cos(X)*cos(Z))*SY,sin(X)*cos(Y)*SY,0],q@DATAh 7 [(cos(X)*sin(Y)*cos(Z)+sin(X)*sin(Z))*SZ,(cos(X)*sin(Y)*sin(Z)-sin(X)*cos(Z))*SZ,SZ*cos(X)*cos(Y),0],DATA7 [LX,LY,LZ,1])DATA(7 DecMatC=DecMatC*PARENTS[i][1]*NMat')DATAP8 return DecMatCDATA8 _PDATA8tryDATA 9TestLIST=[]DATA4@9#On trace la trajectoire pour tout les objets listeDATA9for obj in objets:DATA 9 LocX=[]DATA 0: LocY=[]DATA p: LocZ=[]DATA4: #Liste contenant les points vertex de trajectoireDATA ; vertexX=[]DATAX; try:EEDATA(; ipoLocX=obj.getIpo().getCurve('LocX')DATA(; ipoLocY=obj.getIpo().getCurve('LocY')DATA(@< ipoLocZ=obj.getIpo().getCurve('LocZ')DATA < except:DATA< ipoLocX="none"DATA = ipoLocY="none"DATAh= ipoLocZ="none"DATA= geDATA4= #Initialisation de la boucle de recuperage parentsDATAP> parent=obj.getParent()DATA> saveObj=objREEDATA > enfant=objDATA ? PARENTS=[]DATAX? DATA(? #Boucle de get des info des parents :EDATAX? #liste de [nom,matrice initiale au parentage, ipo en X,Y,Z,rotX,rotY,rotZ,sizeX,Y,Z]EEDATA0p@ while type(parent)==Blender.Types.ObjectType:EDATAD@ Init_Mat=Blender.Mathutils.Matrix(enfant.getMatrix('worldspace'))DATAHA Init_Mat.invert()DATA4A Init_Mat=Init_Mat*enfant.getMatrix('localspace')qDATA(A Init_Mat=parent.getMatrix()*Init_MatEDATAPB Init_Mat.invert()DATAB trDATAB try:EDATA4C ipo_Parent_LocX=parent.getIpo().getCurve('LocX')DATA4pC ipo_Parent_LocY=parent.getIpo().getCurve('LocY')DATA4C ipo_Parent_LocZ=parent.getIpo().getCurve('LocZ')DATA4@D ipo_Parent_RotX=parent.getIpo().getCurve('RotX')DATA4D ipo_Parent_RotY=parent.getIpo().getCurve('RotY')DATA4E ipo_Parent_RotZ=parent.getIpo().getCurve('RotZ')DATA8xE ipo_Parent_SizeX=parent.getIpo().getCurve('SizeX')EEDATA8E ipo_Parent_SizeY=parent.getIpo().getCurve('SizeY')EEDATA8HF ipo_Parent_SizeZ=parent.getIpo().getCurve('SizeZ')EEDATA F except:DATAF ipo_Parent_LocX="none"EDATA@G ipo_Parent_LocY="none"EDATAG ipo_Parent_LocZ="none")DATAG ipo_Parent_RotX="none"EEDATA0H ipo_Parent_RotY="none"EEDATAH ipo_Parent_RotZ="none"]DATAH ipo_Parent_SizeX="none"EDATA I ipo_Parent_SizeY="none"EDATApI ipo_Parent_SizeZ="none"DATAI PARENTS.append([parent,Init_Mat,ipo_Parent_LocX,ipo_Parent_LocY,ipo_Parent_LocZ,ipo_Parent_RotX,ipo_Parent_RotY,ipo_Parent_RotZ,ipo_Parent_SizeX,ipo_Parent_SizeY,ipo_Parent_SizeZ])DATAJDATAJ enfant=parentDATA K parent=parent.getParent()DATApKREEDATAK qqDATADK#Retour de la matrice de decalage du au parent a la frame couranteDATA(XL DecMatC=matrixForTraj(frameC,PARENTS)EDATAL obj=saveObjREEDATAL EEDATA$(M try:LXC=ipoLocX.evaluate(frameC) DATAM except:LXC=obj.LocXDATA$M try:LYC=ipoLocY.evaluate(frameC)DATA N except:LYC=obj.LocYZ DATA$hN try:LZC=ipoLocZ.evaluate(frameC)DATAN except:LZC=obj.LocZDATA@O vect=Blender.Mathutils.Vector([obj.LocX,obj.LocY,obj.LocZ,1])EDATAxO color=[0,1] )DATAObbDATA$O #En cas de modif de la trajectoireDATA(HP if round(obj.LocX,5)<>round(LXC,5):REEDATA$P for bez in ipoLocX.bezierPoints:DATA0P if round(bez.getPoints()[0],tr)==frameCtr:EEDATA(XQ bez.setPoints((frameCr,vect[0]))REEDATAQ ipoLocX.recalc()DATA(Q if round(obj.LocY,5)<>round(LYC,5):REEDATA$PR for bez in ipoLocY.bezierPoints:DATA0R if round(bez.getPoints()[0],tr)==frameCtr:EEDATA(S bez.setPoints((frameCr,vect[1]))REEDATA`S ipoLocY.recalc()DATA(S if round(obj.LocZ,5)<>round(LZC,5):REEDATA$T for bez in ipoLocZ.bezierPoints:1DATA0XT if round(bez.getPoints()[0],tr)==frameCtr:EEDATA(T bez.setPoints((frameCr,vect[2]))REEDATAU ipoLocZ.recalc()DATAXU ryDATA,U #Changement de couleur de la trajectoiretrDATAU try:EEDATA$(V for bez in ipoLocX.bezierPoints:DATAhV vertexX.append(round(bez.getPoints()[0],tr))#Rajout des points vertex aux frames qu'on peut modifREEDATA0W if round(bez.getPoints()[0],tr)==frameCtr:EEDATAxW color=[1,color[1]-0.3]DATAW except:passREEDATAX try:EEDATA$@X for bez in ipoLocY.bezierPoints:DATA0X if round(bez.getPoints()[0],tr)==frameCtr:EEDATAX color=[1,color[1]-0.3]DATAHY except:passREEDATAY try:EEDATA$Y for bez in ipoLocZ.bezierPoints:(DATA0Z if round(bez.getPoints()[0],tr)==frameCtr:EEDATAxZ color=[1,color[1]-0.3]DATAZ except:passREEDATA[ BDATA@[ EDATAx[ DATA[ DATA0[ for frame in range(frameC-past,frameC+futur):EDATA(H\ DecMat=matrixForTraj(frame,PARENTS)EEDATA\ DATA$\ try:LX=ipoLocX.evaluate(frame)')DATA0] except:LX=obj.LocXqllDATA$x] try:LY=ipoLocY.evaluate(frame)GetDATA] except:LY=obj.LocYrt DATA$^ try:LZ=ipoLocZ.evaluate(frame)GetDATAp^ except:LZ=obj.LocZREEDATA0^ vect=Blender.Mathutils.Vector([LX,LY,LZ,1])EEDATA_ if frame==frameC:DATA(`_ LXC,LYC,LZC=vect[0],vect[1],vect[2]EDATA_ DecMatC=DecMatDATA` vect=vect*DecMatDATAH` LocX.append(vect[0])eDATA` LocY.append(vect[1])tDATA` LocZ.append(vect[2])tDATA aDATAXa DATA,a matview=Blender.Window.GetPerspMatrix()turDATAa bbDATA(b MatPreBuff=[]DATAhb for i in range(4):DATAb for j in range(4):REEDATA$b MatPreBuff.append(matview[i][j])DATAPc DATAc DATA,c MatBuff=BGL.Buffer(GL_FLOAT,16,MatPreBuff)DATA d bbDATAXd glLoadIdentity()DATA d glMatrixMode(GL_PROJECTION)REEDATAd glLoadMatrixf(MatBuff)DATA8e kDATApe glLineWidth(2)DATAe DATAe glBegin(GL_LINE_STRIP)DATA0f for i in range(len(LocX)):DATALf glColor3f((i+1)*1.00/len(LocX)*color[0],0,(i+1)*1.00/len(LocX)*color[1])tDATA(g glVertex3f(LocX[i],LocY[i],LocZ[i])EEDATAXg NDATA g glEnd() DATA$g if not Blender.Window.EditMode():tDATA(h glPointSize(5)DATAph glBegin(GL_POINTS)DATAh glColor3f(1,0.7,0.2)DATAi TestPOINTS=[]DATA@i TestFRAME=[]EDATAi for i in vertexX:DATAi ix=int(i)-frameC+pasti))DATA$j if ix>=0 and ixpt[0]-4 and SourCo[1]>pt[1]-4 and SourCo[1]0:DATA | ev=Blender.Window.QRead()[0]EDATA$X| if ev not in [4,5,18,112,213]: DATA| SetKeyQualifiers(1)@DATA| SetKeyQualifiers(0)EDATA8@} SetKeyQualifiers(Blender.Window.GetKeyQualifiers())EDATA} QAdd(f,ev,1,0)EEDATA} QHandle(f)DATA0~ Blender.Redraw()DATA,x~ if ev in [RIGHTMOUSE,LEFTMOUSE,ESCKEY]:DATA ~ done=1DATA@Blender.Set('curframe',"""+str(Blender.Get('curframe'))+""")REEDATA,Blender.Object.GetSelected()[0].select(0)llDATA$for OName in """+str(objetNom)+""":DATA @ obj=Blender.Object.Get(OName)EDATA obj.select(1)EDATA0Ѐscripting=Blender.Text.Get('Edit_Trajectory')EEDATA0scripting.clear()DATA xBlender.Text.unlink(scripting)EDATA ȁ """DATA EEDATA(@ scene=Blender.Scene.GetCurrent()DATA  try:DATA4؂ scripting=Blender.Text.Get('Edit_Trajectory')DATA@ scripting.clear()DATA( Blender.Text.unlink(scripting)REEDATA except:pass)qDATA4( scripting=Blender.Text.New('Edit_Trajectory')eDATA  scripting.write(script)REEDATA0 script=Blender.Text.Get('Edit_Trajectory')DATA@ EEDATAx EDATA EEDATA, Blender.Set('curframe',TestFRAME[k])lDATA,H oldObjS=Blender.Object.GetSelected()DATA for oObj in oldObjS:WiDATA oObj.select(0)1,0DATA @ TestLIST[j][0].select(1)EDATA$ Blender.Run('Edit_Trajectory')DATA BPOBPGxOBCameraamera.001 8g(QP@Z>@???*?91<9@??x|>81Op۾75e?b]>n^?3>P@Z>@??????T1в #?:[0N)S3?c3w^,iO4?OBdpA?)d??>)d????OBxGؒPOBCube.0010t)Ar*vA\5A?vވ?--m@c?c? ??1@LsN>e?c?)Ar*vA\5A????@L?Q jGǣv">rK>d2%>.n>vS@O\ij1@?DOBdpA? #=?>=?@???6 ,DATAOBؒGxOBCube.002?vވ?--mZ@E_@[3)?)?(?ʆ??b?xx>b?(??vވ?--m?X>_c?`cW>%?U?z?&e:r%>͈U?'m?>S@_v_@?DOBdpA? #=?>=?@???0 TOBG(ؒOBCube.003 Z@E_@[3LJ@ ?f;???^<??W>,tr,tr?W>?Z@E_@[3?q?O4>N4q??'f;0?ˊ>3t81>=95e?LZm׋6>M@+!V@?DOBdpA? #=?>=?@???pOB(GPOBEmptyxh) ?)Ar*vA\5A2?2?2?;f=JKtG???#>M@N^$>3H1>b>E>IRM@cAP [A?b3?6?6b3??5<6?ٻ >\tKv>L=r%;>O=@Cko??DOBdpA? #=?>=?@???OBPGx(OBEmpty.001PsA@WBo4P@Z>@???O??;sxQ?\i?rsD>.8195e?4>@>oF?:?Ȥ='?81.[L:=85e?͓d?U;>{NA7~@?DOBdpA? #=?>=?@???OBxGPOBCubeQp @Yy@K>סR@LDu>u>u>??u>u>u> @Yy@K>????Se?to@ 4?ҿ2?>?f?eg?^]4A?DOBdpA? #=?>=?@???S(VMA!MAMaterial???????????L????2 ???????@?=?==????MEp.MECubeR`0 3???DATA`3??II?I?I???III??II?I??IIDATA00 """"""""""""DATAx/ME.pMECube.001PP 3???DATADATA3??II?I?I???III??II?I??IIDATA0 """"""""""""DATAxP/ME. MECube.002+x 3???DATA3??II?I?I???III??II?I??IIDATA0 """"""""""""DATAxx/ME .MECube.0031 3???DATA3??II?I?I???III??II?I??IIDATA0 """"""""""""DATAx/GLOBr@(J SDNA1?@ A!BC7 "DEFGHIJKLMNO*P#$Q%R%STUVWXYZ[\]^!_`abcd&efgh'i(jklmnopqrstuvwxyz{|) }~  *stu+*,'i##FGTUE(44y*#)+,-2rstuvFG&*P.*/_rstu     ef+ +!"#$%&'()&**+,-./012345678P09:1 !_2223;<=>?@ABCDEFGHIJ4KL43; M N*/OPqQpRSTU5 VWXYZ[\]^6_WX[^777`^abcdefghij6k5lm8n`09o:63; p N'q'r's*;tu/O vQpRqwPxyz{cd49|}~0000988<'===6k5l  <> ? 3; *u/O@> ABCDE?F qQpRP@`BGXCGA`DstuEHHH"IH7  JH'i"KH'i"LHMHNHO HyPHE0'iQ H'i"RHSH'iTab06*uUUU"3FpV''_ ''*;t3;WX    N  /OQpRD      !"#P$P % & ' ( )*+,-./ 0 1 2Y3Z4[5V6V789:\;]<]=^^^'>"?@Y ABCDEFGHIJK__ZLM`NaOPQRSTUVWXYZE[\]^0__`,\abcdefghijklmnopqrs?t?u?vwxyb8rz{|}~*&Pcddd'ie  f  0ghbef]B      !"#$i%E0'jjj&'k ()*+,E-./010'l'2b3l4# 5d6m789:;<=>? @cA iBkChsgDP EnFGHIo #(jBJKLMNp5qqOPrQRSTUVWXYZ['2o\p]^_`abHcdefgo8hijklmnopqrs3t uvw0sxyz{|}~qqqOPrQRtqqOPrQRuqqOPrQR0s  *+lvqqOPrQRsl mNEw qqOPrQRsJ0xqqOPrQRyz {qqOPrQRs   |}qqOPrQRs#Jl~ qqOPrQRlsqqOPrQR 7l qqOPrQ07lqqOPrQsQqqOPrQ     0%   !"#$%&$'()*+,-./0123456789:;<=>?@ABCDEFGH"IJKLMNOPQRSTUVWX_-YZ[\]^_`abcdefghijklmnopqrst uvwxyz{|}~E0'   l @rrrOP     %RT 4 9 }~  & 4*l$Q      4)Z,Ny| "^   "     "E0"/""0"""E' !" #$%E0" &''( ")*+,-./ 01% 20'" &3456' W7"89:;cd< =>?@=AB 6'?C"DEl'2"' FGQRHIJK "ELM'NOPQRSTU "ELMm7VWXYZ['\!]E0"^_ 0 `" ' abcdefgh i!_!j k*Blmnopq7rstuvwxyz{|qqOPrQs=0]"}''*QpRD    ~' m   "Xp/   0"wE0  QpDtX * "cW qqOPrQRsW* c 'X0'cd'c'c' 'NW7' ' 'E0q   '*W78ENDB