BLENDER_v214REND 1SRdwkIRSRscreenXTddHcF\mKZu]-W +DATAXTdJ8cDATA8cJXtXTd+DATAXtJef8c +DATAefJ8)cXt DATA8)cJXeefDATAXeJ0uW8)c DATA0uWJdXeDATAdJXh~0uW DATAXh~JddDATAdJXh~DATAHcK(v8cXtDATA(vKsHcXTdefDATAsKgX(v8)cXTdDATAgXKcsXeefDATAcKugX8)cXeDATAuKuc0uW8cDATAuKHuudXtDATAHuKuu0uWdDATAuK WHu8)cXh~DATA WKkxuXeXh~DATAkxK[ W0uWdDATA[KH\kxddDATAH\K@C\[dXh~DATA@C\KF\H\dXeDATAF\K@C\0uW8)cDATAmLhXXTd8)cXeefd$C|(!!HUgHUgDATAHUgBDdCIzաDdCC(BDC?z?DATAhXLU\m0uW8cXtd  d|L LDATAU\LKZhX8)c0uWdXh~| m==o?bbbc)3d|C|XXggDATAg?????????| m==o?p=A?E=?&=oLIA:?SA?AxЄ>??SA B?=CxЄ=x` DATAHepB7_uDdCDv@CC(BDC?z?DATA<7_DHepLOAD TEXT FILE/home/olivier/Documents/text/Load_to_ipolendment.txt EDATAXWZL`L\W`6r4rx!W|!W d(d?Ӗ?AHM jId|C|XX6pzDATA6p?m?e?w?2??w?2??^A??Ӗ?Gŗ4w4Ӗ?7/A2Aj?ߊAY?Z^Bן@ןZ((@5?5@ B?=C@x`b%l DATAmAPc`6pzC AzC A #< #<`jFzD OBDATAPc`BzmDdCDv@CC(BDC?z?DATA<zDPc`3SAVE FILE/home/olivier/Documents/ametoipo1.blend/Ipo/gametoipo.blendlugs/tex/j`RSRd`bIRSRscreen.002u5r@7rPXxXdu]-W +DATAuJuDATAuJ 9ru+DATA 9rJh9ru +DATAh9rJag 9r DATAagJHagh9rDATAHagJuag DATAuJuHagDATAuJ3ru DATA3rJ3ru`DATA3rJ`5r3r `DATA`5rJ5r3r`DATA5rJ`5rDATA@7rK7r 9ruDATA7rK.r@7rh9ruDATA.rK/r7raguDATA/rK/r.rHagh9rDATA/rK0r/ragHagDATA0rK0r/ruuDATA0rK0r0r 9ruDATA0rKX0ruuDATAXK0X0rag3rDATA0XKؚXX3ruDATAؚXK X0X3ruDATA XKțXؚXHag3rDATAțXKX X3r3rDATAXKXțX3r`5rDATAXKXX3r`5rDATAXKXX5ruDATAXKPXX5ruDATAPXKX`5r5rDATAxXLXuagHagh9rd$C|(!! X XDATA XBDdCIzաDdCC(BDC?z?DATAXLXxXuu 9ru  d|L LDATAXL0uXag3r3rHag8=i>o?dPC|X#bxjDATAbCuczCAzCA A@FB= A DATAuc?xjb????????8=i>o?fffAD&@??fffA B? #<Cx`DATA<xjDucSAVE FILE/pics/blender/rt1.blendkDATA0uLdX`5r5ru3r8=H>o?UUUdPC|X#ЊdDATAЊCnzCAzCA1||1 A@FB= A DATAn?dЊ????????8=H>o?fffA*@??fffA B? #<Cx`>>DATA<dDnSAVE FILE/pics/blender/rt1.blendkDATAdL0u3ru5r`5r8=>o?OOOPdPC| HXDATAA^~B̽̌?B̽̌? #< #<`jFzD SQB̽̌?DATA^~?HX????????8=>o?fffA@??fffA B? #<Cx`zzDATA<HXD^~SAVE FILE/pics/blender/rt1.blendkSCu]=SC1x`XؒXX??dd??2dd??_@??///render/render///#DATAX;XO fDATAX;آXX'6cDATAآX;XX7 x`DATAX;aآXGbDATAa;(XXWcDATA(X;puagy]DATApu;`u(Xwhh$~DATA`u;08rpudDATA08r;:r`u8]DATA:r;ؒX08rY~DATAؒX;:rXt[OB f8dOBBalle(w[0pbf@nt????????bf@nt??????`1\2`j?j?bfn@t@?DOBd?? #=>=????DATA0pOBd8Y~ fOBBumper1b@\t,B?????? 9(h?ja>jaؾh?/7hjaؾ??2|i/wү? ˬ]1?43?? uh?iaؾd9ja>h?$1?%1?DOBd?? #=?=?@???DATAtOBY~88]dOBBumper2b@\0hX??F?????? 9(h?ja>jaؾh??h?z>??2|i/wү? ˬ]1?43??UUvh?jaؾd9ja>h?߂3?DOBd?? #=?=?@???DATA0hXOB8]8x`Y~OBBumper3b@\EY? ?????? 9(h?ja>jaؾh?h?PH>??2|i/wү? ˬ]1?43??Uxh?iaؾe9ia>h??MI?DOBd?? #=?=?@???DATAEYOBx`8c8]OBCamera Pd2??????w?w2??????e?w?2?OBd??)d??)d?????OBc8bx`OBEmpty@????????@?????????DOB@d?? #=?=?cc(c!b`W\(JZ@???DATA@c\framecDATAL(cg!bsensorckxDATAkx(JZ`W\DATA0c]BBDATAL!bg(csensor1P[DATAP[(JZDATAP`W\j(JZget names(I\DATA(I\i"fDATAP(JZj`W\contC\DATAC\ifOBb8$~cOBFlipperPtXF\gff@>???f>l???l9+h?ja>jaؾh???96c1?+?hff@̾??*ih?iaؾ9ja>h??DOBd?? #=?=?@???DATAXF\OB$~8cbOBLauncherbXOZ@eIZgff@8>??????i9/h?ja>jaؾh?if@a+??-,?]ˬ]1???Q.h?kaؾ}9la>h?jff@?DOBd?? #=?=?P'~P'~H(~H(~ c c@???DATAIZDATALP'~gsensor'~SZDATASZH(~DATAH'~`DATAPH(~jcontUZDATAUZ cDATA< cxact(~DATA0(~rOBc8y]$~OBLeftbRZkVZL>??? ??Ŵ]?oDX>VH?xl>jaؾh?b`J?????ô]?>WH?haؾnDXxl>h?&ѿg@L?DOBd??=?=?ccccccHDATAVZDATALcgsensorcL\DATAL\cDATAHc`DATAPcjcontXVDATAXVcDATA<cxactPX\DATA0PX\rOBy]8Xt[cOBRightbXZ0[v W?L>??? ???]?>e~X>0H?[>jaؾh??B?????]? >/H?laؾe~X>[>h?&?f@L?DOBd??=?=?h|]h|]`}]`}]}]}]HDATA WDATALh|]gsensor|]8|[DATA8|[`}]DATAH|]`DATAP`}]jcont4rDATA4r}]DATA<}]xactLZDATA0LZrOBXt[8y]OBVitreb84wL#V[O0433????E"9*$#???i9/h?ja>jaؾh?_dwi"???-,?]ˬ]1???1eh?iaؾ9ja>h?-Ptn1333?DOBd?? #=?=?@???ME(w[4@\MEballe0]6r5jhv*PW>А>А>DATA6rCgDATAH5j1*АQ>C\k%_v͆k%_v>lQ>C>\JCk=%_v>`#>9QC>b=9QC>>bJC=9k=%_v>>`#l>9͆>>{r=9А>_=2`vp6sh5DlD`v(RGDh55`v5?(RG>D?E=Pj>E!gW>=y'W>ys=*>Pj;KsА=*PjŴsWEsW=E'=*Pj>ŴgА>=*>Pj>;Kg(RG>D>XJCEPjE>[tJC_vD>JCEPj>E>[ތgJC(RG>>D>X?JCD>`v>JClh5<=i5`v>l_2`v>sl_=2`v>ɍ'lh5<=i>5`v>?lDATA,P  w w www@w w@w@w w @w! w"@w# w$@w %&w!&'w"'(w#()w$)%w )$u %)u $%@u(#u )(t #) q'"@u ('t"(@q&! u '&t!'q % @t &%p &q@u $@q $ t u # q# t@u"@q"@t u! q! t@u q @t t  p q@t@p q t@p@q t p q@t @p@quq tqp@t q@p t t@p @q p  p pDATAhv2@ME@\4Pt(w[MEbumper]1r``L>А>А>L>DATA1rCgDATAh1L>L>DFDFUА>gT_cUL>LDFUgԲАULLUАg1ULL>DFUnА>_cUL>L>>DFDFPА># ;4>_cPL>L>DFPА>PLL>PАI4>PLL>>DFP4А>>_cP>DATA ``," "" "" "" "" "" """" @ @     @ @  DATA2`MEPt4@e@\MEflipperP]u]Xj?>`@@>DATAuBoDATAXX1@@@=!+x@@c2 7{r@b2II@@BOK@@?aE@?II@@@?II@@?j*>0@@2JC?1"2??-F7!2lJC@L2=9{r@?.]I@@?@?Z@W2c2II@@B1٫P@@@?@@@bDN?0/&oLB2dN@@?z?V5M@@?KUT@@B2nL@B2ZL@?IIL@@?IIIL@@%!ZZDATA,],F @F    .@L@ D@  @u   @  t d 0DATAj2d_GTYY]]\gTTG`d\g'|-5$V*1Y]]-pr_YprKKpr-ll`K_K`_`GG``d_|-0]]Y10'eeeejhhj_ehe\g1V*wwww\g01wwww\gw]]0wwwwFREEME@e4kPtMElauncher]hElw)XxMZ3>?Q8>DATAhElCgDATA)X1>Q8II>Q8IQ84Q8I>Q8>III>Q8>IIQ8>IQ8>IIDATAHw,@ @ DATA`xMZ2MEk40[v@eMEleftp]@X(rVcZHfn=>>:C>q= >DATA@XCgDATAV1H:C>s= Wȏ?>s= -WJ4>s= #W:ٽ">s= 3Wz= p= >s= A W":=s= wM>W4<=s= VYW?=s= `[W@Cs= *]W?̏s= `[-W4Ns= V#W":ٽs= wM3Wq= x= s= AAW:ٽ"s= 3wMW84s= #VW?s= -`[W3:Cs= B]W:C>o= >V(?>o= >-<t4>o= >#<:ٽ">o= >3<}= j= >o= >A <":=o= >wM><4C=o= >VY<?ˏ=o= >`[<@C"/4o= >*]<?to= >`[-<4o= >V#<"r:ٽo= >wM3<= Z= o= >AA<:ٽ"o= >3wM<x4o= >#V<?o= >-`[<p:Co= >B]Vs= o= >p= ?/3s= d= ?o= >)Yh= ?>o= >)`p= ?/3o= >v?8>o= >1ty?=o= >&d%?=o= >ʧ,?!=o= >l2?X=o= >8ʿte7?6{Q=o= >#ݨ-:?ƕs5~;?Ro= >ΡX-:?ռo= >s|5e7?N{Qo= >#p/ݨ2?ao= >86@t,?'o= >l Ld%?o= >Sʧ?o= >Xr?8o= >1[yl= ?>s= )` [h?8>s= 1tX?=s= &iXd%?=s= 6X,?H=s= lW2?=s= 8ʿWe7?{Q=s= ##W-:?@'./$>='-.$=<',-$<;'+,$;:'*+$:9')*$98'()$87'&(G%6F F65E E54D D43C C32B B21A@A10@@@0/?@?/.>@>.-=@=-,<@<,+; ;+*: :*)9 9)(8 8(&7 @DATA`cZ2ME0[v484wkMEright]cWݦfHfn=>:C>q= >DATAcCgDATAݦ1H3:C>s= B]Vȏ=?>s= -`[<J=4>s= #V<:=">s= 3wM<z= >p= >s= AA<">:=s= wM3<4><=s= V#<?>=s= `[-<@C>s= *]<?>̏s= `[<4>Ns= VY<">:ٽs= wM><q= >x= s= A <:="s= 3<8=4s= #<=?s= -<:Cs= V5:C>o= >B]W(=?>o= >-`[Wt=4>o= >#VW:=">o= >3wMW}= >j= >o= >AAW">:=o= >wM3W4>C=o= >V#W?>ˏ=o= >`[-W@C>"/4o= >*]W?>to= >`[W4>o= >VYW">r:ٽo= >wM>W= >Z= o= >A W:="o= >3W=x4o= >#W=?o= >-Wp5:Co= >W3s= 3o= >p= /3s= d= o= >)` [h= >o= >)Y [p= /3o= >v8>o= >1[X=o= >XiXd%=o= >S6X,!=o= >l LW2X=o= >86@We76{Q=o= >#p/#W-:ƕs|V~;Ro= >ΡV-:ռo= >sVe7N{Qo= >##W2ao= >8ʿW,'o= >lWd%o= >6Xo= >&iXr8o= >1tXl= >s= )Yh8>s= 1[y=s= Xd%=s= Sʧ,H=s= l L2=s= 86@te7{Q=s= #p/ݨ-:@"'./"$>="'-."$=<"',-"$<;"'+,"$;:"'*+"$:9"')*"$98"'()"$87"'&("G%6F F65E E54D D43C C32B B21A@A10@@@0/?@?/.>@>.-=@=-,<@<,+; ;+*: :*)9 9)(8 8(&7 DATA`f2ME84w40[vMEvitre]@ehNZ@A?DATAPhNZ1@A@ADATA @e,MABo#CgMAbounceL?L?L?????????L??2 ???>MACg#BoMAbounce_a_lotL?L?L?????????L??2 ????CAlPdCACamera=B?A B?IPPXOZRZIPlaunchHPZHPZ`BW uaOBDATAPHPZ+HKd`ff?33AmOB8DATAHKd'`ff?1@i+i5i;Q@gۡ@8Am@KYCoA33A:AviiiIPPRZXZXOZIPleftTZTZ333?@gffiff@OBDATAPTZ+[~?@@@@@OB @DATAx[~':>@?@?@ +,g,"@@@@@@@k@@@:::IPPXZRZIPrightYZYZL?L@ffffff@OBDATAPYZ+-r?@@@@@OB @@DATAx-r':>@@?@@?@@ +::"@@@@@k@@,6, TXd"ffTXNames V(H\[Z[Z11fDATA$/home/olivier/Documents/text/NamesDATAV(fI\DATA(fZZV(!bDATAZZZZ(fJ\1variDATAZZ[ZZZ@B\variDATA[Z[ZZZ D\1vierDATA[Z\Z[ZxcDATA\Z\Z[ZE\SensDATA\ZX\Z2rheadDATAX@X\ZpV\)@DATA@X`O\XXDATA`O\O\@XK\'DATAO\ s`O\J\bDATA shsO\ XDATAhs@j] spN\ADATA@j]j]hsM\' DATAj]PP\@j]XDATAPP\P\j]uDATAP\@Q\PP\ȓX6'DATA@Q\Q\P\uDATAQ\0R\@Q\XDATA0R\xR\Q\XDATAxR\ S\0R\uDATA S\hS\xR\rk'DATAhS\T\ S\0LdDATAT\XT\hS\XDATAXT\F\T\)[ CDATAF\8G\XT\Xrk(aDATA8G\G\F\rkDATAG\(H\8G\K\DATA(H\G\`DATAI\import GameLogic[DATA(!bt4@DATA4J\### change this variable to a valid directory ###EEDATA@B\dir = "/home/olivier/text/"DATA4 D\#################################################EEDATAxccreDATAE\names_file = "names.txt"ar DATA2rDATA,pV\#########################################aDATAXDATA(K\cont = GameLogic.getCurrentController()DATAJ\owner = cont.getOwner()DATA XDATApN\#catch the near sensor !DATA M\sensorlist = cont.getSensors()NDATAXsensor1 = sensorlist[0]DATAuDATA8ȓXliste = sensor1.getHitObjectList() # get hit objectsDATAuDATAX#open the file for writingEDATA Xfile = open(dir+names_file,'w')DATAuDATA(rk#save name for each object of the sceneDATA0LdDATAXfor obj in liste:DATA)[ #write nameDATAXrk name = obj.getName()DATA rk file.write( name[2:] + '\n' )DATAK\DATA `file.close() # close the fileTXdf "X"fTXSave f2f(e LocRot ).DATA oDATA4P oOpen the "Load_to_ipo" text in the TextFile Editor.DATAtgDATAtg#### WARNING #####DATA,ugIt wille erase ALL previous ipo data !!!DATAxugDATAugPress alt+P.DATA0ugIt's done when you see "Importation succesful"DATAxfin the console...DATAfDATAfEnjoyDATA0fDATAhfOlivier BlinDATAfolivierblin@free.frDATA!ghttp://olivierblin.free.frTXd@%c "XTXLoad_to_ipo %cfaX#gX#g]DATA,%c/home/olivier/Documents/text/Load_to_ipowneDATAf8&c(c@.wDATA8&c&cfPaDATA&c&c8&carameDATA&c'c&ch~cessDATA'cX'c&c~CDATAX'c'c'c~headDATA'c'cX'c -@DATA'c0(c'c1DATA0(cx(c'cv2~O\DATAx(c8"g0(chv'DATA8"g"gx(c3lDATA"g"g8"gv1DATA"g#g"g(vFREEDATA#gX#g"g@z1DATAX#gho#gzDATAhooX#gzZDATAooho0zZDATAo@oozDATA@oooxvDATAoРo@o@tbDATAРo{notDATA{n{nРot/DATA{n@|n{ntDATA@|n|n{nPtDATA|n|n@|ntDATA|n}n|nsDATA}nPu|n@sDATAPuu}nsDATAuuPuȚsDATAu(uusDATA(upuuPsDATApuu(uCv"DATAuxgpuDv_to_DATAxgguPDv DATAggxgsDATAgPggDvDATAPgggDv,DATAggPgoDATAgngoDATAnPng0oDATAPnnnhopH7DATAnnPno,DATAn(nnEpDATA(npnn8Fpt4@DATApnDr(not/DATADrErpnFpDATAErHErDrFpDATAHErErEr Gp(DATAErErHErXGpDATAEr FrErho8_DATA Fr1pEroDATA1p2p Fro@DATA2pH2p1ppoBDATAH2p2p2pAvA`1nDATA2p2pH2pAvDATA2p 3p2p@Bv]CDATA 3pn2pBvDATAn(n 3pps^DATA(npnnspH7DATApnn(nHs_DATAnnpnحsDATAnHnnj`pH7DATAHnjn`jDATAjPjHnj&DATAPjjjjDATAjjPjHjD NEDATAj(jjoDATA(jpjjdDATApjVg(jHdDATAVgVgpjd aDATAVg(WgVgoDATA(WgpWgVgdDATApWgWg(Wgd:DATAWgXgpWgnDATAXg8eWgHnWZDATA8eeXgn#win DATAee8enDATAe ee@n#DATA eX eeiDATAX e e ei#DATA eHbX e8i6DATAHbb ei)TXLoDATAbbHbid_toDATAb bb]g)DATA bhbb`]gFREEDATAhbb b]g)qZDATAb phbdrZDATA p( pb^gJDATA( pp p pH^g&FREEDATAp p p( p o2JDATA p pp po2qWDATA pH p po0vDATAH pe p8o*qWDATAe eH poqWDATA eheePl(rDATAhee elqWDATAeehelDATAe@eel35qWDATA@eodel2DATAodod@eVtJy;DATAod8pdodVt$@j4@DATA8pdpdodWtDATApdpd8pdXWtt4@DATApdqdpdWtDATAqdepdWtDATAeeqdXYfDATAe eeYforldDATA eheeYf5DATAhee eXZf DATAeeheZf@DATAeie@vDATAiHiexvpH7DATAHiiiv/DATAiiHivDATAi iiHvDATA ihiivDATAhid i@a ete DATAd8dhia!DATA8ddda OK?DATAdd8d0a2DATAdddvDATAdXddaDATAXdmde6DATAm0mXd e DATA0mxmmp e2VDATAxmm0m eDATAmmxm e*FREEDATAmPmmeDATAPmvomeaCDATAvo@woPmPe"h9jDATA@wowovoeDATAwowo@woe DATAwoxowo0eDATAxo`xowofDDATA`xo txof36DATA tht`xoXfDATAhtt tfDDATAtthtfDATAt@ttl DATA@ttthl3DDATAti@tl@DATAi8itfDATA8iiil8@ DDATAiȌi8if3DATAȌiiiPfDATAiXiȌif2DATAXiGvifDATAGvGvXi(fDATAGv(HvGvxl DATA(HvpHvGvpfDATApHvHv(Hvpj,DATAHvIvpHvqj,DATAIv0cHv`qj,DATA0cxcIvqjDATAxcc0cqj+DATAccxcp#DATAcPccpp#DATAPcccpdar DATAcpgPcp4bDATApggcPp8DATAggpggDATAgHggg#DATAHggg@gDATAgطgHggDATAطg0agȩg FREEDATA0axaطggDATAxaa0aDATAaaxa`DATAaa$DATA(cimport BlenderDATAPafrom Blender import IpoDATAafrom math import *EDATAh~DATA~#set file to load dataDATA~#DATA0 #for example, if your file is named "ipotest"DATA4#it will load the file as ipotest1.txt at frame 1DATA4v#ipotest2.txt at frame 2 , ipotestn.txt at frame nEDATA(hv#notice that it adds the .txt extensionDATADATA4v### change this variable to a valid directory ###4@DATA(vdir = "/home/olivier/text/"DATA4@z#################################################4@DATAz###DATAzfile_to_open = "framedata"#DATA0znames_file = "names.txt"n tDATA zframe_file = "end_frame.txt"r 4DATAxv@DATA@tstart_frame = 1DATAtDATA0t###############################################DATAtsDATA Pt# function to get euler anglesDATAtp = 5DATAschDATA@sdef euler(rotmatrix):DATAs phi_list = []DATAȚs theta_list = []DATAs psi_list = [] DATAPsBDATA$Cv theta = - asin( rotmatrix[2][0] )DATADv theta_list.append( theta )DATA$PDv theta_list.append( pi - theta )DATAs EEDATADv for theta in theta_list:DATA0Dv psi = asin( rotmatrix[2][1] / cos(theta) )DATAo psi_list.append ( psi )DATA o psi_list.append ( pi - psi )DATA0oBDATAho for theta in theta_list:DATA0o phi = asin( rotmatrix[1][0] / cos(theta) )DATAEp phi_list.append( phi )DATA 8Fp phi_list.append( pi - phi )DATAo DATAFp # default value9_DATAFp angle_list = [0.,0.,0.]nDATA GpDATAXGp for theta in theta_list:DATAho for psi in psi_list:DATAo for phi in phi_list:DATADo if (round(rotmatrix[0][0],p)==round(cos(theta)*cos(phi),p)):DATApo # print "R11"DATADAv if (round(rotmatrix[2][2],p)==round(cos(psi)*cos(theta),p)):DATAAv # print "R33"DATA`@Bv if (round(rotmatrix[0][1],p)==round(sin(psi)*sin(theta)*cos(phi)-cos(psi)*sin(phi),p)):ZDATABv # print "R12"DATA`ps if (round(rotmatrix[0][2],p)==round(cos(psi)*sin(theta)*cos(phi)+sin(psi)*sin(phi),p)):DATAs # print "R13"ZDATA`Hs if (round(rotmatrix[1][1],p)==round(sin(psi)*sin(theta)*sin(phi)+cos(psi)*cos(phi),p)):DATAحs # print "R22"DATAdj if (round(rotmatrix[1][2],p)==round(cos(psi)*sin(theta)*sin(phi)-sin(psi)*cos(phi),p)):DATA`j # print "R23"DATA(j angle_list = [psi,theta,phi]DATAj return angle_list DATAHj&cDATAoDATAddef ipo_erase(obj):DATA Hd for courbe in obj.ipo.curves:eDATAd courbe.points =[]DATAoDATAdDATA<ddef ipo_insert(objet,frame,posx,posy,posz,rotx,roty,rotz):DATA n for courbe in obj.ipo.curves:DATAHn if courbe.name == "LocX":DATA$n add_ipo_point(courbe,frame,posx)DATAn if courbe.name == "LocY":DATA$@n add_ipo_point(courbe,frame,posy)DATAi if courbe.name == "LocZ":DATA$i add_ipo_point(courbe,frame,posz)DATA8i if courbe.name == "RotX":DATA,i add_ipo_point(courbe,frame,rotx*18/pi)nDATAi if courbe.name == "RotY":DATA,]g add_ipo_point(courbe,frame,roty*18/pi)EEDATA`]g if courbe.name == "RotZ":DATA,]g add_ipo_point(courbe,frame,rotz*18/pi)ZDATAdJDATA^gREEDATA(H^gdef add_ipo_point(courbe,frame,value):DATA4 o bez = Ipo.BezTriple() # create a BezTriple itemcDATA4o bez.h1t = "Auto" # set bezier curve mode to autoDATAo bez.h2t = "Auto"WDATA,8o # x position = frame , y position = valueDATAo point = bez.ptDATAPl point[0] = frameWDATAl point[1] = valueWDATAlDATA4l points = courbe.points # get points from the curveDATA4l points.append(bez) # add a point to the curveDATAVtDATA(Vt # re-assign the modified point listDATAWt courbe.points = pointsDATAXWtfDATAWtDATAWtdef next_line(fichier):DATAXYf temp = fichier.readline()DATAYf temp = temp[:-1]DATA8Yf # [:-1] is to remove the \n at the end of the string?DATAXZf return tempDATADZf #this function only returns the next line of the file "fichier"DATA@vADATAxv6DATA0v###############################################DATAvCDATAHvDATAv# find the last frameDATA$@afile = open(dir+frame_file,'r+')DATA$aend_frame = eval(file.readline())DATAafile.close()DATA40aprint "\n\nAnimation lasts",end_frame,"frame(s)\n"DATAvVDATAaDATA e# erase all previous ipo dataDATA$ efile = open(dir+names_file,'r+')DATA4p ename = next_line(file) # name of the first objectEDATA ewhile name <> "":DATA, e print "Erasing ipo data of object :",nameDATA e obj = Blender.Object.Get(name)DATAe ipo_erase(obj)DATA$Pe # get the name of the next objectDATAe name = next_line(file)DATAefile.close()DATA0eDATAfmy_frame = start_frameDATA4fprint "\nStarting to import GameBlender data ...\n"DATAXfDATA fwhile my_frame <= end_frame:ODATAfDATA$l # start the job with this frameDATA4hl print "Processing data about frame",my_frame,"..."DATAlDATA f # open the file for readingDATA<l file = open(dir+file_to_open+str(my_frame)+".txt",'r+')REEDATA4f name = next_line(file) # name of the first objectDATAPfDATA4f while name <> "": # "" means that we are at EOFDATAfREEDATA(f print "Object :",nameDATA$xl obj = Blender.Object.Get(name)0 0DATApfDATA0pj xpos = eval(next_line(file)) # x positionDATA0qj ypos = eval(next_line(file)) # y positionDATA0`qj zpos = eval(next_line(file)) # z position)CDATAqjREEDATA,qj # get the angles from the rotation matrixDATA$p rotlist = eval( next_line(file) )DATA$pp [xrot,yrot,zrot] = euler(rotlist)DATApDATAp # store info in an ipoDATA<Pp ipo_insert(obj,my_frame,xpos,ypos,zpos,xrot,yrot,zrot)bDATAg4\DATA$g # get the name of the next objectDATA@g name = next_line(file)CDATAgu4@DATAȩg file.close()fiDATA g # end the job with this frameNDATA my_frame = my_frame + 1DATA`DATA(print "\nImportation successful :o)": GLOB MRDNA1Bd9SDNANAME*next*prev*first*lasttag1len*name*nextnameleveltag2tag3padxyzwxminxmaxyminymax*newid*libname[24]usflagid*idblock*filedataname[160]totcurvecurblocktypeshowkeypostotelemtypert*data*refkeyelemstr[32]elemsizecurvalblock*ipo*fromtotkeyslurphactkey**scripts*flagactscripttotscript*lineblenflagsnlineslines*curl*sellcurcselc*undo_bufundo_posundo_len*compiledsizeseekdrawzoomholdclipstaclipendnetstanetendlensdrawsizehololenhololen1scriptlink*anim*ibuf*mipmap[10]oklastframelastqualitytpageflagtotbindxrepyreptwstatwendbindcode*repbind*packedfiletexcomaptomaptonegblendtype*object*texprojxprojyprojzmappingofs[3]size[3]texflagcolormodelrgbkdef_varcolfacnorfacvarfac*handle*pname*stnamesstypesvars*varstr*result*cfradata[32](*doit)()(*callback)()versionaipotypedata[16]*ima*cube[6]imat[4][4]stypenotlaycuberesnoisesizeturbulbrightcontrastrfacgfacbfacfiltersizenoisedepthnoisetypeimaflagcropxmincropymincropxmaxcropymaxxrepeatyrepeatextendframesoffsetsfrafie_ima*nor*plugin*coba*envfradur[4][2]modetotexenergydistspotsizespotblendhaintatt1att2bufsizesampshadspotsizebiassofttexactshadhalostep*mtex[8]layspecrspecgspecbmirrmirgmirbambrambbambgambemitangspectraalpharefspeczoffsaddkfacharseed1seed2mode2flarecstarclinecringchasizeflaresizesubsizeflareboostrgbselpr_typeseptexpr_backpr_lamppad1*renfrictionfhreflectfhdistxyfrictdynamodename[255]namenullscaleselcolexpxexpyexpzradrad2smaxrad2*mat*imat*bbelemsdisp**mattotcolloc[3]rot[3]wiresizerendersizethreshvec[3][3]alfas[3][2]h1h2f1f2f3hidevec[4]s[2]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bp*beztnurb*bevobj*textoncurve*path*keybev*orcopathlenbevresolwidthext1ext2spacemodespacinglinedistshearfsizexofyof*strfamily[24]*vfontmaxrcttotrctadrcodevartypetotvertipoextrapbitmaskv1v2v3v4punoedcodeuv[4][2]col[4]no[3]transptile*tpage*clutdef_nrweight*dwtotweightreserved1co[3]co[2]effect*mface*dface*tface*mvert*dvert*mcol*msticky*texcomesh*oc*sumohandletotfacesmoothreshsubdivcubemapsizertfpntswtypeutypevtypew*defmax**obname[32]partypepar1par2par3parsubstr[32]*parent*track*action*posenetworkdefbase*lifedloc[3]orig[3]dsize[3]drot[3]quat[4]dquat[4]obmat[4][4]parentinv[4][4]colbitstransflagipoflagtrackflagupflagipowinscaflagscavisflagboundtypedupondupoffdupstadupendsfctimemassdampinginertiardampingsizefacdtdtxactcolpropsensorscontrollersactuatorslbufportbbsize[3]dfrasactdefgameflaganisotropicFriction[3]constraintsmistypehorrhorghorbhorkzenrzengzenbzenkambkfastcolexposuregravityskytypemisimiststamistdistmisthistarrstargstarbstarkstarsizestarmindiststardiststarcolnoisedofstadofenddofmindofmaxhemiresmaxiterdrawtypesubshootpsubshootenodelimmaxsublamppamapamielmaelmimaxnodeconvergenceradfacgammasxsycfraefraimagesframaptoframelenblurfacedgeRedgeGedgeBmaximsizexschyschxaspyaspxpartsypartssafetyborderwinposplanesimtypebufflagqualityscemodealphamodedogammaosafrs_secedgeintpostmulpostgammapostaddpostigammabackbuf[160]pic[160]ftype[160]movie[160]*camera*world*setbase*basact*groupcursor[3]*fcam*ed*radiozoomblendximyim*rectspacetypeviewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]viewquat[4]perspviewlocalviewlayactscenelockaroundcamzoomgridnearfarmxmymxomyopr_xminpr_xmaxpr_yminpr_ymaxpr_sizexpr_sizeygridlinesviewbutpr_facxpr_facy*bgpic*localvdverthormaskmin[2]max[2]minzoommaxzoomscrollkeeptotkeepaspectkeepzoomrowbutv2d*editipoipokeytotipolockbutofschannelmenunrcursenscuractmainbmainbo*lockpointexnrtexfromshowgrouprectxrectycurymodeltypescriptblockpad2*filelisttotfiletitle[24]dir[160]file[80]ofssortmaxnamelencollums*libfiledataretvalmenuact(*returnfunc)()oopsvisiflag*imagepad3imanrcurtileleft*texttopviewlinesfont_idlheightpix_per_linetxtscrolltxtbar*py_draw*py_event*py_buttondupflagsavetimetempdir[64]fontdir[64]renderdir[64]textudir[64]plugtexdir[64]plugseqdir[64]pythondir[64]sounddir[64]versionsvertbaseedgebaseareabase*scenestartxendxstartyendysizexsizeyscenenrscreennrfullmainwinwinakt*newvvec*v1*v2*v3*v4*full*headqueue*hq*winqueue*wqwinmat[4][4]headrctwinrctheadwinwinheadertypebutspacetypewinxwinyhead_swaphead_equalwin_swapwin_equalheadbutlenheadbutofscursor(*headchange)()(*winchange)()(*headdraw)(void)(*windraw)(void)(*headqread)()(*winqread)()spacedatauiblocks*curscreendisplaymodefileflagsname[40]*se1*se2*se3nrdone*stripdatadir[80]orxoryname[80]*newseqstartstartofsendofsstartstillendstillmachinedepthstartdispenddispmulhandsize*strip*curelemfacf0facf1*seq1*seq2*seq3seqbase*seqbasepmetastackbuttypestaendlifetimetotpartseednormfacobfacrandfactexfacrandlifeforce[3]dampnablavectsizedefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstep*keysheightnarrowspeedminfactimeoffs*obpremat[4][4]postmat[4][4]vec[3]faclenoalphaoeff[2]iterlastfralimbbaseeff[3]effg[3]effn[3]memslowtotytotxxyconstrainttotdefdef_scrolllimb_scrolldxdy*idlinkfasesubfasemouse_move_redrawimafasedirslidirsli_linesdirsli_sxdirsli_eydirsli_exdirsli_himaslifileselmenuitemimasli_sximasli_eyimasli_eximasli_hdssxdssydsexdseydesxdesydeexdeeyfssxfssyfsexfseydsdhfsdhfesxfesyfeexfeeyinfsxinfsyinfexinfeydnsxdnsydnwdnhfnsxfnsyfnwfnhfole[128]dor[128]file[128]dir[128]*firstdir*firstfiletopdirtotaldirshilitetopfiletotalfilesimage_sliderslider_heightslider_spacetopimatotalimacurimaxcurimay*first_sel_ima*hilite_imatotal_selectedima_redraw*cmapotypedataold*poin*oldpoinresetdistlastval*makeyqualqual2targetName[32]toggleName[32]value[32]maxvalue[32]materialName[32]damptimeranglerangeaxisdelaypropname[32]matname[32]axisflag*sendobproptypemessage[32]pulsefreqtotlinks**linksinvertfreq2str[128]*mynewinputstotslinks**slinksvalvalopad5time*actreserved2reserved3reserved4sndnr*soundmakecopycopymadepad[1]*melinVelocity[3]localflagforceloc[3]forcerot[3]linearvelocity[3]angularvelocity[3]butstabutendminvisifacminloc[3]maxloc[3]minrot[3]maxrot[3]distributionint_arg_1int_arg_2float_arg_1float_arg_2*destobgoaccellerationmaxspeedmaxrotspeedmaxtiltspeedrotdamptiltdampspeeddamptotportactport*portals*campos*camframe*dynamesh*texmeshtotcamtotfra*sectoroldloc[3]speed[3]oldloc1[3]loc1[3]speed1[3]startloc[3]startrot[3]rotspeed[3]oldimat[4][4]frictrotfrictaxsizefrictfacaeropadf*sensors*contact*collision*floor*oldmeshtotsensactsenstimerdflagstate[4]colloc[3]floorloc[3]links*sample*snd_soundvolumepanningattenuationpitchmin_gainmax_gaindistancechannelspad[7]gaindopplerfactordopplervelocitynumsoundsblendernumsoundsgameengine*gkeyokeygobjectgkey*activechildbaserollhead[3]tail[3]parmat[4][4]defmat[4][4]bonebasechainbaseres1res2res3chanbase*achan*pchanactnr*tartartypetarstring[32]subtarget[32]zminzmaxTYPEcharucharshortushortintlongulongfloatdoublevoidLinkListBaseMemHeadMemTailvec2svec2ivec2fvec2dvec3ivec3fvec3dvec4ivec4fvec4drctirctfIDLibraryIpoKeyBlockKeyScriptLinkTextLineTextPackedFileCameraImageanimImBufMTexObjectTexPluginTexCBDataColorBandEnvMapLampWaveMaterialVFontVFontDataMetaElemMetaBallBoundBoxBezTripleBPointNurbCurvePathIpoCurveMFaceMFaceIntTFaceMDeformWeightBoneMDeformVertMVertMColMStickyMeshOcInfoLatticeLBufbDeformGroupbActionbPoseLifeWorldRadioBaseRenderDataSceneGroupFreeCameraBGpicView3DView2DSpaceIpoSpaceButsSpaceSeqSpaceFiledirentrySpaceOopsSpaceImageSpaceTextUserDefbScreenScrVertScrEdgeScrAreaFileGlobalStripElemStripPluginSeqSequenceEditingEffectBuildEffPartEffParticleWaveEffDeformLimbIkaOopsSpaceImaSelImaDirOneSelectableImabPropertybNearSensorbMouseSensorbTouchSensorbKeyboardSensorbPropertySensorbCollisionSensorbRadarSensorbRandomSensorbRaySensorbMessageSensorbSensorbControllerbExpressionContbPythonContbActuatorbAddObjectActuatorbActionActuatorbSoundActuatorbSoundbEditObjectActuatorbSceneActuatorbPropertyActuatorbObjectActuatorbIpoActuatorbCameraActuatorbConstraintActuatorbGroupActuatorbRandomActuatorbMessageActuatorSectorbSamplebSoundListenerSpaceSoundGroupKeyObjectKeyGroupObjectbArmaturebPoseChannelbActionChannelSpaceActionbConstraintbKinematicConstraintbTrackToConstraintbRotateLikeConstraintbFollowPathConstraintbRotationConstraintTLEN   0Ptdl PPx4@H<0P H  L ,@x(D($p<X d @l8(,@0,HhH,(lLP< 4@Lh0848L@0pP<8,,,STRC                                   !  "#$% & '()* +,-$./01234  56! 78 9 : ;<=>?@ A"BC7 &#$DEFGHIJKLM,N$%O&P&QRSTUVWXYZ[\"]'^_`a(b)cdefghijklmnopqrs* tuvwx yz{|} ~ +lmn",+- (b$$$FGRS)#$r,$*,-.$klmnoFG',N/,0:klmn^_',0 N1%2&"]333$   45 ,0ji6 7888$     769&5  ((,:0 ij9" !"#$%1&;;;76'( )*+,-%.*</01234=/01234> 56789 : ;?<=@&A?>?@BA7ClmnDBE5 C ,0 D E FBGAHCIDJEKFL M+NjiOPQRG STUV$ 7W,HX (YIIIZ &(J$[\]^_(`(a,:5JbKc & C d e0Lfghiijklmnopqrstuvwxyz{|}~N     MHH6 M)k,'NNOOO(bP+}BQ(MQ$ ORS N MPlNT $)c"#BU*UUJh(     TUV WWW V! " #,-$%&'! (%@XXX)*V!+(%, -./012345uYYYV!+6ZZZ [789:;$<=>?@ABC D\ \\ V! E%F% -]]] V!$G6HIJ"#%^^^K!LMN7(OPQRS T U V_ WXYZ[\]^_`a%` b c dQefghijklmn%opaaaaqrbbbasat c&ccasatauav`wxyz{|(}~%        d e&PeeeR f ff%e g  tux y{| } ~h hhh $fe,Qe%Oghhh i   % jjj$%kkk$%lll$. mnnn$fho ([\]^ p pp q[ ,(`\]^oWr rr$   sNss9      t!t"#$%&'()*+,-.u/u012 &3 Dv vvZ$456 7 8wZ9: x$ yZ0; z<=$>?@{$ ZAB|ZCD6}ZEFG~ZHZFIJK(L$M NIAB$4OPQ6Z &R(ST U!LV$WQ4X6HZ &RYZ[\] ( J^$Z@_`a bc$def ]$(EgZhi $ Qe($ZA(  jkgjlm $Zno(pXGqrstu $ZnoRvwxyzI({$ NI V$4|Z &(S ~}~ ($ H   ,EE%ilmnL- ~lmn 0((- EEE$H ,"] ,7  V!cb"#%6Z[ \]^(`(a,ghiijklmnpqrs|}( R  @@@@` Z=giijklm  @ZgiijklmK , @ZJ  %V!Jb@  &,$Z@_(@_`(@_`(@_`(ENDB