BLENDER_v245REND SceneGLOB  0o (,SRx SR1-Animationhp-p,8$P#(, DATA $DATA $(s' DATA(s' $ DATA[(s'DATA[DATA([DATA()DATA)(DATAH)DATAH$DATA$xHDATAx/$DATA/hxDATAh/DATAp-# $(s'DATA#"p-DATA"(# $DATA("((s'DATA`O((DATA`O)[DATA1`O(DATA1)DATAh1([DATAhHDATA8jh$[DATA8j$DATA(8jH$DATA(X0)xDATAX0(/DATAMX0/DATAMx/DATAp%MHhDATAp%Kh$DATAK(p%x[DATA(KxhDATAp,(HDATAp,h/DATA8$>H$Ou0DATALink and MaterialsEditing>DATAMeshEditingF>DATAAnim settingsObject>DATADrawObjectF>DATAConstraintsObject>DATAEffectsObjectDATAHooksObjectF>DATAParticle InteractionObject>DATAxSoftbodyObject>DATAx`OutputRender>DATA`HxRenderRenderF>DATAH0`AnimRender>DATA0HFormatRender>DATAuw333?V,@DhCDhCC(BDC?z?DATAhyu333?V,/9DATA> 8$ $(s'( !  DATA  >x/)G==o?ipDATATransform PropertiesView3d>DATA3D Viewport propertiesView3d>"DATAirp333?V<????????G==o? A*A?G==o??????*A+ B??=C ݢM@ݢM@ݢM@? DATAhpyi333?V</9DATA 8$ )([??PףH؂"DATATransform PropertiesIpo!>DATA(؂"v%333?V\zC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATA%z( ؂"333?V\CC|||??l|DATA( T#% 333?V\zCCHBC|||?CFC= ADATAxT#}X(  333?V\ =rttDATAX|hǴT# 333?V\?zDzDBCl||ll|zDzD=HB DATAhǴ(X 333?V\BCBCl|llFzD #<HB DATA(rhǴ333?V\??? ???? A???PA A!O?j?}GCHB? A+ B? #<C DATAhy(333?V\/9DATA8$P# hx[$ X PDATAPLink and MaterialsEditing>DATAPMeshEditingF>DATAX k333?VLzCB{ µCB ?BFB= ADATAk#X  333?VLzCCHBC$?CFC= ADATA#wk333?VL#DhC`DpJgChCC(BDC?z?DATAhy#333?VL/9DATAP#8$H/h} ?=o?.|.C)8 DATA8 Transform PropertiesView3d>DATA 83D Viewport propertiesView3d>"DATA|.z]1333?Y(U##DATA(>0(U#DATA0 '(>H#DATA '. 0!H#DATA. 1 '!DATA18$. HDATA8$"1(U#HDATA"H8$!HDATAH0"!DATA0HHDATA0(U#$DATAx$DATAx$DATAh 8$ȯH#?@PףWE)(`!DATAPreviewLamp>DATA LampLampF>DATA >SpotLamp>DATA>X7 Texture and InputLamp>DATAX7P>Map ToLamp>>DATAP8X7PreviewMaterial>DATA88]PMaterialMaterialF>DATA8] [8PreviewWorld>DATA [Z8]WorldWorldF>DATAZU [Mist Stars PhysicsWorld>DATAUTZTexture and InputWorld>DATAT`UMap ToWorld>UDATA`TOutputRender>DATA`RenderRenderF>DATAxAnimRender>DATAxFormatRender>DATAxLink and MaterialsEditing>DATAMeshEditingF>DATAإMesh ToolsEditing>DATAإMesh Tools 1Editing^>DATAإCameraEditingF>DATA ShadersMaterial>8DATA 8TextureMaterial>ЇDATA8! Anim settingsObject>DATA!!8DrawObjectF>DATA!!!ConstraintsObject>DATA!!ScriptlinksScript>DATAЇ!EffectsObject!DATAЇ#Map InputMaterial>DATA#ЇMap ToMaterial>ЇDATAH#AnimAnim>DATAH!SoundSound>DATA!И!HListenerSoundF>DATAИ!!!SequencerSound>DATA! И!ArmatureEditingF>DATA 8!RampsMaterialF>8DATA8P Mirror TranspMaterial>DATAPh8Mist / Stars / PhysicsWorld>hDATAhPAmb OccWorld>DATA0hShadow and SpotLamp>DATA0HModifiersEditing>DATAH`0ShapesEditing>0DATA`xHMultiresEditing>DATAx`Links and PipelineMaterial>DATAxxSSSMaterial>8DATAxPreviewTexture>DATAxTextureTextureF>DATA0ColorsTextureF>DATA0ImageTexture>DATA0Map ImageTexture>DATARender LayersRender>`DATABakeRender>DATAWwp0333?h x DHhC}D* hCC(BDC?z?(,mDATA$p0~@W333?h DATA@r p0333?h ??? ???? A??@PA Aj?c3>}GCHB? A+ B? #<C DATA zE)@333?h  M M M??DATAhE)y 333?h  SEARCH ROOT DIRC:\SGWeb\picking\HDATA8$ h #(U#yp>DATA X>#8$!$?*)@ JLSS ,P @)00DATATransform PropertiesView3d,>DATAView PropertiesView3dT>"DATA @)r.333? )=LU?'{?W>=v 5?J?L?)=7{? 5LV>?V?=J?B;@dNB?C9=7HeU?-ʻ>q ケF?nJJ2BLBW=H*f?%e3(蚾yW=Kb>5BnRƒY'BCBMcC @?*)@ JL)=LU?'{?W>=v 5?J?L?3?>*h"LBLB+ B??9;=C7?X<???? DATA(.vJ  @)333? zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAJ z.333?  1 12 1??2DATA J  333? ?zDzDBD22FzD #<HB DATA w333? DdC8CnD fCC(BDC?z?DATAhy 333? |SELECT IMAGE PICTURESC:\muray\Textures\extures\\Textures\r.app/Contents/Resources/Benedeti.jpgpgg  WDATAX>#  H#H!tH5=ȳ=o?   PC)  (@DATA(@Transform PropertiesView3d,>DATA@(View PropertiesView3dT>"DATAxPC)} 333?X>#; >e?VX>DATA$~2 PC)333?X>#DATA2 r 333?X>#????????tH5=ȳ=o?A$Ay?tH5=ȳ=o??????$A?+ B??8==C7?X<96@96@96@t {?? DATA( v2 333?X>#zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAzX 333?X># 1 12 1??2(L(G)DATA,(L(G)BOp=A+DATA,(G)(LCS@ff(,DATAX($# 333?X>#?zDzDBD22FzD #<HB DATA($#wX333?X>#DdC8CnD fCC(BDC?z?DATAhy($#333?X>#Save AsMAGEeICTURESC:\SGWeb\picking\\extures\lder/ender.app/Contents/Resources/phex.blendlendRed.jpgHDATA X>#H(U#$w=>o?UUop ,XpOPP DATA Transform PropertiesView3d,>DATA View PropertiesView3dT>"DATA{p333? @D@D ¿]!@$kZ?,Xd7>DATApr 333? ????????w=>o?{IA^@y?w=>o??????{IA+ B??==C7?X<z(5@z(5@z(5@y>o?? DATA( vp333? zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAzȿ 333?  1 12 1??2DATAȿh7# 333? ?zDzDBD22FzD #<HB DATAh7#wpOȿ333? DdC8CnD fCC(BDC?z?DATAhpOyh7#333? Save ImageT PICTURESC:\SGWeb\picking\data\r Foundation\..\der\..\tents/Resources/light.jpgaptitlededleditled01blend  TȞSRx(\Ȧ SR3-Materialodel SingpF`F0R# (, DATApDATAx#p DATAx#@# DATA@# x#DATA t1@#<DATAt1^ <DATA^t1DATA^DATA(,<DATA(pf,DATApf#(DATA#Fpf,DATAFF#DATAFFDATA`FFx#DATAF@E`F@#pDATA@EKF pDATAK@K@E@#t1DATA@KJK t1DATAJJ@K^DATAJhJJx#DATAhJ JJ^DATA JIhJt1DATAII J DATAIHIt1DATAHOI(DATAONH(DATANpNO pfDATApN(NNpf^DATA(NMpN(#DATAMM(N#DATAMPMMpf#DATAPMMMpfFDATAM0LPM#FDATA0LxRMF^DATAxR0R0L(FDATA0RxRFFDATA##p t1@#?@Pף;;! RHtP0sDATAPQOutputRender>DATAQrPRenderRenderF>DATAr0sQAnimRender>DATA0srFormatRender>DATA R333?V\~CA~CA!?AFA= ADATA# R 333?V\zCCHBC ?CFC= ADATA#w333?V\DhC?DhCC(BDC?z?mDATArP&#333?V\??? ???? A??@PA Aj?c3>}GCHB? A+ B? #<C DATAP&zHt333?V\@̌AR|B1@lA A@CC #<@DATAhHtyP&333?V\/9DATA#8$#^x# !  DATA8$@##(t1G@? JL-=-=W-X~ pDATApqOutputRender>DATAqrpRenderRender>DATArPkqAnimRender0>DATAPkhlrFormatRenderH>DATAhlmPkPreviewMaterial>DATAmhlMaterialMaterial>DATAmShadersMaterial0>DATATextureMaterialD>DATAXMap InputMaterial\>DATAXpMap ToMaterial`>DATApXRampsMaterial>mDATApMirror TranspMaterialH>DATA w&333?VChCCvgCC(BDC?z?DATA&r( 333?VJ>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?@?$$OA+ B?=Ch?j(4?t'>d DATA((v&333?VzC AzC A #< #<`jFzD OBDATAhy(333?V;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA@##8$ pf#U.=w=o?+=+=W+X,X( DATA( r2#333?W???h?j(4?t'>????hj(4t'?U.=w=o??OA+ B??=Ch?j(4?t'>dEh@Eh@Eh@? DATA2#w( 333?WDdC>9C,DeCC(BDC?z?DATA(v2#333?WzC AzC A #< #<`jFzD OBDATAhy333?W SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATA# @#FF(#e?B$?AHM+++US"DATA"r#333?W |ݕ/?U~'?3F:?>T8165e?2>Z& 4?ߕ/?7F:?81W~>85e?'?T2>ne@>M@?4z?'''䷄?K??T?v|@?l211A 4Atp>?@@FC>G ?4xB֟&BĭeA(@e?B$?AHMݕ/?U~'?3F:?>T8165e?2>Z& 4?H?N,Z#OA+ B??=Ch?j(4?t'>dA@A@A@? DATA#w@"333?W |DdC>9C,DeCC(BDC?z?DATA(@v#333?W |zC AzC A #< #<`jFzD OBDATAhy@333?W | SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATA #pf^FF&=+=o?US#DATAr#333?W ?3?3:-vk(4??3?3;@k(40v@?&=PU1n;+=ꉖø;ZO{:?JXA54U0AC;@j(40v@?&=+=o??3?3:-vk(4?5?5IXA+ B??=C:j(4?.vdٚ@ٚ@ٚ@? DATA#w!333?W DdC>9C,DeCC(BDC?z?DATA(!v##333?W zC AzC A #< #<`jFzD OBDATAh#y!333?W SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendSRxȦp(\SR4-SequenceXQ SX b #((, DATAXQQDATAQPXQ DATAPPQ DATAP8PPDATA8POPDATAOO8PDATAOUODATAUUODATAU`UUDATA`UUUDATAU@T`UTDATA@ThSUTDATAhS S@TDATA ShSDATAXHXPQDATAHXXXPXQDATAXWHX8PXQDATAWpWXOPDATApW(WWO8PDATA(WVpWOQDATAVV(WPUDATAV\VOUDATA\\VOUDATA\P\\`UUDATAP\\\`UUDATA\[P\UUDATA[Z\U`UDATAZZ[O@TDATAZ_Z@TUDATA_^Z@TUDATA^^_8PhSDATA^c^hSUDATAcb^ S`UDATAb bcO SDATA bb ShSDATA #p#XQ8POPP#(DATAOutputRender>DATARenderRenderF>DATAAnimRender>DATAFormatRender>DATAP#w(333?WDhCvDhCC(BDC?z?DATAh(yP#333?W/9DATAp# #OQPU !  DATA@j*p#8PhS SO8=i>o? DATA#333?W&~CB~CB ?BFB= ADATA#x8333?W&zCAzCA  A@FB= A DATA8r#333?W&????????8=i>o?fffAD&@??fffA+ B? #<C DATAhy8333?W&AVE TARGA/t1.blend9DATA@j*aU@TU`U8=H>o?UUU %pDATA%xPQ#333?W*zCAzCA1||1 A@FB= A DATAPQ#rp%333?W*????????8=H>o?fffA*@??fffA+ B? #<C DATAhpyPQ#333?W*AVE TARGA/t1.blend9DATAa(@j*UO@TU8=>o?SSSTHDATA(v(p333?W.B̽̌?B̽̌? #< #<`jFzD SQB̽̌?DATA(prH333?W.????????8=>o?fffA@??fffA+ B? #<C DATAhHy(p333?W.OAD FILE/9DATA(ahSU`U S8=i>o? jDATAjxm333?W1zCAzCA A@FB= A DATAmrj333?W1????????8=i>o?fffAD&@??fffA+ B? #<C DATAhym333?W1AVE TARGA/t1.blend9SRxpȦSR5-ScriptingHa{{(_,xp(, DATAHagDATAg(fHa DATA(fPeg DATAPexd(fDATAxd|PeDATA||xdDATA|`||DATA`|||DATA|{`|DATA{|DATA{@{(fgDATA@{z{g|DATAzz@{(f|DATAzhzz||DATAhz zzxd`|DATA zhhz||DATAh  z||DATA h|`|DATA xd|DATAHHaxdDATAHp~Ha{DATAp~(~HPe{DATA(~}p~{`|DATA}(_,(~{|DATA(_,}Pe|DATAx(|g(f| !  DATA(xxd||`|z==o?șxH`DATAH`Transform PropertiesView3d>DATA`H3D Viewport propertiesView3d>"DATAșrx333?Y.|????????z==o?&A*A?z==o??????*A+ B??=C ?@?@?@? DATAhxyș333?Y.|/9DATAp({||Pe??Pף LH((DATA(Transform PropertiesIpo!>DATAxH}i 333?Y/|> =DATAi{@H333?Y/|CCx??|?DATA(@vi333?Y/|zC̽̌?zC@;; #< #<`jFzD OBzC̽̌?DATAzȾ$@333?Y/|CC|||??l|BBDATA,BBOp=A+DATAȾ$ 333?Y/|zCCHBC|||?CFC= ADATA|xȾ$ 333?Y/|?zDzDBCl||ll|zDzD=HB DATAx& 333?Y/|BCBCl|llFzD #<HB DATA&rx333?Y/|??? ???? A???PA A!O?j?}GCHB? A+ B? #<C DATAhy&333?Y/|/9DATApHaxd`|{Oq5DATA56Link and MaterialsEditing>DATA6075MeshEditingF>DATA076Anim settingsObject>DATA07DrawObjectF>DATAConstraintsObject>DATA (EffectsObjectDATA (8(HooksObjectF>DATA8(P( (Particle InteractionObject>DATAP(x+8(SoftbodyObject>DATAx++P(OutputRender>DATA++x+RenderRenderF>DATA+++AnimRender>DATA++FormatRender>DATA+ScriptlinksScript>DATAqw333?Y0|ChC#DhCC(BDC?z?DATAhyq333?Y0|/9SC(,pSCScenetageain+8+$ B\B!*5IqIqIqIII=Pb1dd??< d XddZ! ??XX????//backbuf/tmp\//ftype@&#@^@&^#D DATAc8+DATAc+DATA(Pb1b,d'=A@DATALmL?B ?o: ?? #<=DATA@Xh1 RenderLayerIMt`+IMBenedeti.jpg//..\..\muray\Textures\Benedeti.jpgNN-IMtJ`+IMcolumn.jpgC:\muray\Scenes\column.jpgЂЂ-IMtJh<IMConcrete1.jpg//..\..\muray\Textures\Concrete1.jpg((-IMth<JIMhexes.jpgC:\muray\Scenes\hexes.jpg-IMt0h<IMlight.jpgC:\SGWeb\picking\data\light.jpgJCAxCACameraamera.001L>DB=B B@?LA*$LALamp.001 ????z?poB4B>??? B4B?@@???WO(8+aWOWorld???===??A@pA A?L=TXhTXprocessing_export.pyX!!J$Hv%X-DATAX!C:\processing_export.pyDATA!j8FREEDATAji!8! derDATAiXj@ (1)DATAXi`J$FREEDATAX$0)SDATAP+! 4-SDATAP(FREEDATAx$P0)DATAx$o)rDATAox$p0)DATA0oЭFREEDATA0J$0)SDATA0(FREEDATA0xt DATA00  DATA0h 0J$3FREEDATAh  0t%FREEDATA rh FREEDATArr ( &[DATArCrFREEDATAC8Cr@FREEDATA8CCXK$FREEDATA(8Chor:DATA(8@ry DATA8(K$FREEDATA8FREEDATA+FREEDATA+HFREEDATAH,+q% ()DATA,HhGFREEDATAm,K$(FREEDATAm8HL$(FREEDATA8( mLFREEDATA( 8?B%d1DATA( L$REEDATAHM$";EDATAHr.FREEDATApHi()EDATApM% s.FREEDATAM%дphs.REEDATAдM%P#DATA`-д@FREEDATA`-DEDATA 0`-0=FREEDATA 0&B=REEDATA&X 0 FREEDATAXp(&=REEDATAp(NX9FREEDATANp(:)EDATAO+N4!FREEDATAO+x%p putDATAx%#O+s.FREEDATA#x%s.FREEDATAd#@t.*DATAdXt.DATAX dt.FREEDATA Xu.FREEDATAhA& `u.FREEDATAhA&~u.FREEDATA~H~hA&u.FREEDATAH~y.~8v.FREEDATAy.y.H~v.FREEDATAy. y.v.1-MDATA ؎y.w.FREEDATA؎ y. y#FREEDATA y.hy.؎FREEDATAhy.R y.!d-ODATAR8hy.@FREEDATA8RX!FREEDATA 8HFREEDATA (!FREEDATA(8I& 5-ODATA8I&_,(8!FREEDATA_,}8I& FREEDATA}_, !DATA<&}DATA<&p'м!DATAp' <&8$DATA p'!DATA 9&DATApkADATAخPDATAخX$DATAخDATA($ oDATA($X$ DATA($ODATA%$DATAXkADATAXpRlAFREEDATApRh%X:FREEDATAh%pRHlA1FREEDATA)h%,FREEDATA)   FREEDATA )%FREEDATA  FREEDATAXoFREEDATAXoFREEDATA"XoX#DATA"lADATA`" DATA`p.)lADATAp.)`PdDATAp.)@mADATA HmADATA H`mADATA`Z HnADATAZ@``nADATA@8ZnADATA8@ DATA88 DATA80pnADATA0p0g8FDATA0g0p8oA,DATA.0gP1'DATA.OoADATAOe.(DATAeO`0DATA)!e*DATA)!d(0DATAdY)!(DATAYP>)d2DATAP>)YX)DATAhP>)-DATAh@(DATA@ȡ!hx/DATAȡ!&@)DATA&xȡ!8 -DATAx&gDATA/xODATA/h%DATAh@/[DATA@h hpe7DATAh ,@%HDATA,8h XYCDATA8,QDATA`z8e4DATA`zEDATAp`zoADATApb@kFREEDATAbpnFREEDATAbFREEDATAFFREEDATAHFFREEDATAH@s!@f*FREEDATA@s!(.&HRFREEDATA(.&0@s!VFREEDATA0B((.&FREEDATAB(0FREEDATAh:B(fFREEDATAh:( FREEDATA(h:hZFREEDATAH(f(FREEDATAH9 xpFREEDATA9 x$HFREEDATAx$ȟ9 P FREEDATAȟx$ZFREEDATAϴȟ(dFREEDATAϴ[HgFREEDATA[Xϴ8 'FREEDATAX[!^FREEDATA-X&bFREEDATA- aFREEDATA ,-$^FREEDATA, g0FREEDATAP, oFREEDATAP0FREEDATAxPFREEDATAxWbFREEDATAWxmFREEDATAhWPsFREEDATAhx gFREEDATAx RhwFREEDATAR@x @h/FREEDATA@H6!RFREEDATAH6!&@pFREEDATA&8!H6!h(FREEDATA8!&XRFREEDATA8!@FREEDATAjP%FREEDATAjXOiFREEDATAXO Ij80FREEDATA I+XOȇDATA+0+ IPFREEDATA0++@$FREEDATA00+Hi7FREEDATA0 ؀FREEDATA 8)$0hFREEDATA8)$ `}FREEDATAx8)$i0FREEDATAxجH`;FREEDATAجXt!xyFREEDATAXt!`جX|FREEDATA`Xt!gFREEDATA/`@ $FREEDATA/UC$,FREEDATAUX!/$FREEDATAX!1UgFREEDATA10X!HD$.ght(DATA0N1 $FREEDATANxK0D$FREEDATAxKx*Np9$DATAx*xKD$*DATA x*@dDATA 0a1DATA0h PE$.FREEDATAhs'0E$7FREEDATAs'8h`DATA8]s'P]w, GDATA] '8;DATA '2!]F$DATA2!, 'Yl.geDATA,X2!ent(DATAXa,`V(p, DATAaHgX`F$DATAHgaЩFREEDATAHgRorteDATAF$C DATAx`pOblenDATAx`: op.bDATAx``a1DATAhj == 1DATAhH! FREEDATA&h!oom.DATA&1p "FREEDATA1h1&KDATAh1, 1F$DATA, @- h1HDATA@- H, 8G$0DATAH8,@- 0t DATA8,$H &DATA$c8,G$DATAc$G$DATA1!cX"DATA1!@&mporDATA`1!oDATA`Ca1DATACȬ`0H$DATAȬF%CEDATAF%:ȬADATA:(ZF%xH$FREEDATA(Z0:IFREEDATA0(ZIDATA0>DATA+b1DATA+p$(J1DATAp$ + DATA +p$JDATA+Б pDATAБx+$ DATAxБ:DATAxpinFREEDATA*9FREEDATA*|(7FREEDATA|*JFREEDATAn|VDATAns`3EDATAs n KDATA s1 DATA  3 DATA h 80 DATAh  $  DATA@h KDATA@8@LDATA8@DATA 8`9DATA hL1DATAhH8 9FREEDATAH88hLFREEDATA88H8$DATA808dDATA0x8O0 FREEDATAx0( 謞DATAx-&oDATAPH:DATAP lphaDATAP8MDATA|WDATA88FFREEDATA80MFREEDATA0x8mFREEDATAx0FREEDATAh(x'FREEDATAh((`oFREEDATA((h(FREEDATA($(XFREEDATA$$(XNFREEDATA$8%$`WDATA8%,$FDATA,,8%1DATA, -,h^,DATA -h-,DATAh-- -DATA--h-DATA-(-x DATA(p-12DATAp(DATAp3DATAHحDATAH\8DATA؁H1DATA؁ `1/DATA h؁H0DATAh 1*DATAh,DATA@#DATA@X)DATAЃ@ 1DATAЃ "DATA`ЃDATA`h1DATA`pDATAXDATAXDATAX DATA0#DATA0xBADATAx0(eDATAx PDATAPw.DATAPh+DATAPpDATA(DATA(pDATAp(`DATAp1DATA(@/1DATA(@/p@/@11 DATAp@/@/(@/1 DATA@/A/p@/1 DATAA/HA/@/81DATAHA/A/A/1 DATAA/A/HA/@DATAA/ B/A/DATA B/hB/A/(09-ADATAhB/B/ B/p29-JDATAB/B/hB/DATAB/@C/B/29-JDATA@C/C/B/H02-ODATAC/C/@C/DATAC/D/C/!DATAD/`D/C/DATA`D/jD/YDATAjj`D/H DATAj kj6DATA khkj+K31-ODATAhkk k0&02-SDATAkkhkЏ#25-SDATAk@lk@12-NDATA@llk24-SDATAll@l29-JDATAlmlx06-SDATAm`ml29-JDATA`mmm+10-SDATAmm`mз129-JDATAm8nmp29-JDATA8nnm($!19-ODATAnn8n11-SDATAn>$n25-ODATA>$X>$n24-SDATAX>$>$>$`FREEDATA>$>$X>$FREEDATA>$0?$>$(DATA0?$x?$>$PDATAx?$?$0?$,e(0)DATA?$@$x?$Eome/DATA@$P@$?$(26-SDATAP@$@$@$P3DATA@$@$P@$,&@GDATA@$(A$@$1M;#DATA(A$pA$@$(|QDATApA$A$(A$1!FREEDATAA$B$pA$FREEDATAB$HB$A$8DATAHB$,!B$++DATA,!,!HB$FREEDATA,!8-!,!oFREEDATA8-!-!,!h(DATA-!-!8-!XStA@DATA-!.!-!`9DATA.!X.!-!H(DATAX.!.!.!HDATA.!.!X.!lFREEDATA.!0/!.!=DATA0/!x/!.!(1|bDATAx/!/!0/! *MDATA/!0!x/!P .bleDATA0!P0!/!X*DATAP0!0!0!s.blDATA0!0!P0!HDATA0!80!*FEDATA80!DATA8Hwe hDATA*DATAX+DATAXHDATAX- [#DATA02zersDATA0x8+].coDATAx0'['+DATAxH0$ DATAPp+FREEDATAPHFREEDATAP+DATA(+DATA(pDATAp(r(A8PileDATA(rprp,DATAprr(rDATArsprP,DATAsHsrؑDATAHsss DATAssHs, coDATAs ts(str(DATA thtsXmatrDATAhtt t,VDATAttht%2DATAt@ut$ DATA@uut@ ?DATAuu@uO0FREEDATAuvu DATAv`vu 23-SDATA`v@I$vDATA@I$I$`v`FREEDATAI$I$@I$hDATAI$J$I$7DATAJ$I$FREEDATA8import BlenderEDATA 8!import ospDATA@import structEEDATA`J$from Blender import *)DATA$from Blender import Lamp*yDATA$+!from Blender.Scene import RenderDATA(from Blender.Draw import *DATAfrom Blender.BGL import *#DATA from Blender import RegistryREEDATApfrom Blender import TextDATAЭu1DATAJ$from math import *nDATA( DATA xt#globalso oDATA DATA4J$#get the root directory that the current file is inDATA(t#we'll write the muray files there. EEDATA path = Blender.Get('filename')EDATA( &tokens = path.split('\\')DATAfileName = tokens.pop();+DATA@file = fileName.split('.')DATAXK$fileName = file[0] DATAhDATA @path =''lenDATAK$for i in tokens:s:DATA path = path + i + '\\' DATADATADATAq%def export():1DATAhG #open a file to export toDATA,K$ f = open(path + fileName + '.mra','wb')DATA,HL$ s = open(path + fileName + '.mrb','wb')DATAL DATA(?B f.write('muRay scene description\n')EEDATAL$ f.write(' ')EDATAM$ def writeln(out):"DATAr. f.write(out + '\n')EEDATAi DATA s. def fmt(input):dDATAhs. return '%5.5f' %inputDATAP#DATA@ def point_by_matrix(p, m):DATAHD return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0] + m[3][0],EEDATA@0 p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1] + m[3][1],EEDATA@B p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2] + m[3][2]]EEDATA  def vector_by_matrix(p, m):REEDATA@ return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0],EEDATA< p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1],enDATA< p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2]] mDATA4! DATA p  def contain(min, max, point):EDATAs. for v in point:n'DATAs. if v[0] < min[0]:REEDATA@t. min[0] = v[0]DATAt. if v[1] < min[1]:DATAt. min[1] = v[1]EEDATAu. if v[2] < min[2]:REEDATA`u. min[2] = v[2] DATAu. if v[0] > max[0]:REEDATAu. max[0] = v[0]d1DATA8v. if v[1] > max[1]:8-SDATAv. max[1] = v[1]1DATAv. if v[2] > max[2]:REEDATAw. max[2] = v[2] REEDATA$y def containSphere(min,max,sphere):DATA  radius = sphere.getSize()[0]EDATA$ if min[0] > sphere.LocX-radius:seDATA @ min[0] = sphere.LocX-radiusEDATA$X if min[1] > sphere.LocY-radius:EEDATA H min[1] = sphere.LocY-radiusEDATA$ if min[2] > sphere.LocZ-radius: DATA  min[2] = sphere.LocZ-radiusEDATA$8 if max[0] < sphere.LocX+radius:EEDATA  max[0] = sphere.LocX+radiusEDATA$  if max[1] < sphere.LocY+radius:EEDATA  max[1] = sphere.LocY+radiusEDATA$м if max[2] < sphere.LocZ+radius:EEDATA 8$ max[2] = sphere.LocZ+radiusEDATA! DATA9&DATApkA #Grab the sceneDATAP scn = Scene.GetCurrent()DATA(X context = scn.getRenderingContext()blDATA obj = Blender.Object.Get()DATA o DATAX$  #export general scene dataDATAODATA%$DATAkA #background colorDATAlA w=Blender.World.Get()EDATA:DATA4HlA scene = Blender.Scene.GetCurrent().getChildren()EEDATA,DATA  writeln(''))EDATA% DATA$ #create the baked textures listastDATA baked_maps=[]EDATA DATAX# #create a materials listDATAlA material_array =[]DATA  materials = Material.get()DATAlA for m in materials:DATAPd DATA@mA refFile = "NULL";DATAmA textureFile = "NULL";DATAmA alphaFile = "NULL";DATAnA normalFile = "NULL";DATA`nA emitFile = "NULL";DATAnA specFile = "NULL";DATA EEDATA  for mtex in m.getTextures():DATAnA if mtex: DATA F #check if there is an imageDATA08oA if mtex.tex.type == Texture.Types.IMAGE:)mDATA(P1 print mtex.tex.image.getFilename()DATAoA #map to colorDATA, if mtex.mapto == Texture.MapTo.COL:(0)DATA4` textureFile = mtex.tex.image.getFilename()REEDATA, if mtex.mapto == Texture.MapTo.ALPHA:DATA4( alphaFile = mtex.tex.image.getFilename() REEDATA, if mtex.mapto == Texture.MapTo.NOR:d1DATA4 normalFile = mtex.tex.image.getFilename() DATA,X if mtex.mapto == Texture.MapTo.EMIT:EDATA0 emitFile = mtex.tex.image.getFilename().DATA, if mtex.mapto == Texture.MapTo.REF:EEDATA0x refFile = mtex.tex.image.getFilename() DATA, if mtex.mapto == Texture.MapTo.SPEC:= DATA08  specFile = mtex.tex.image.getFilename()EEDATAg DATA O print m.getDiffuseShader()DATA( material_array.append(m.getName()) EEDATA\ writeln('shad=' + str(m.rgbCol) + '|' +str(m.getRayMirr()) + '|' + str(m.getHardness()) +DATA8pe '|' + str(m.getAlpha()) +'|'+ str(m.getIOR()) +'|'+DATAL% str(m.getSpec())+'|'+ str(m.getEmit())+'|' + str(m.getRef()) + '|' +leDATADXY str(m.getDiffuseShader()) +'|' + str(m.getSpecShader()) + '|' +DATA Q str(m.getSpecCol()) +'|' +DATA8e str(textureFile) + '|' + str(alphaFile) + '|' + REEDATAH str(normalFile) + '|' + str(emitFile)+'|' + str(refFile) + '|' + EEDATAoA str(specFile)DATA@kDATAn ) DATADATAH #while looping through the scene, we will need to collect the maximumDATAH #extents of the scene. These will be written to the head of the fileEDATA,@f #after all mesh objects have been measureDATAR min = [1e300,1e300,1e300];DATA V max = [-1e200,-1e300,-1e300];DATA numObjects = 0DATADATAf for obj in scene:DATA lk.DATA hZ if obj.getType() == 'Camera':DATA,f cam_mat = obj.getMatrix('worldspace')0 DATAxp print 'Exporting camera'DATAox.DATA$P height = context.imageSizeY() DATA Z width = context.imageSizeX()DATA (d lens = obj.getData().lens DATAHg fov = lens; 9 DATA(8  writeln('cam=' + str(camType.val) + DATA`! '['+str(cam_mat[0][0]) + ',' + str(cam_mat[0][1]) + ',' + str(cam_mat[0][2]) + ']' + '|' +EDATAd& '['+str(cam_mat[1][0]) + ',' + str(cam_mat[1][1]) + ',' + str(cam_mat[1][2]) + ']' + '|' + 0DATAd '['+str(-cam_mat[2][0]) + ',' + str(-cam_mat[2][1]) + ',' + str(-cam_mat[2][2]) + ']' + '|' +DATA`$ '['+str(cam_mat[3][0]) + ',' + str(cam_mat[3][1]) + ',' + str(cam_mat[3][2]) + ']' + '|' +DATA4g str(width) + ',' + str(height) + ']' + '|' +DATAp  str(fov) + ',' + str(fov) + ']' + str(obj.getData().getClipStart()) + '|' + str(camRadiusSlider.val) + '|' DATA0 )EEDATA DATA b elif obj.getType() == 'Lamp':DATAm print 'Exporting Lamp' DATA Ps l=Lamp.Get(obj.getName())\DATAg m = obj.getMatrix()EDATAw if l.getType() == 0: DATA0@h #lamp=location,color,size,energy for a lampDATA writeln('lamp=[' + str(obj.getLocation()) + ']|['+ str(3*l.getEnergy()*l.col[0]) +','+ str(3*l.getEnergy()*l.col[1]) + ','+str(3*l.getEnergy()*l.col[2]) )DATAp elif l.getType() == 1:DATA,h #sun=location,color,energy,direction 0DATA XR print 'Exporting the sun'DATA@ REEDATA(P vec = vector_by_matrix([0,0,1],m)[DATAi print str(vec)DATA80 writeln('sun=['+ str(vec) + ']|[' + str(3*l.getEnergy()*l.col[0]) +','+ str(3*l.getEnergy()*l.col[1]) + ','+str(3*l.getEnergy()*l.col[2]) )DATAȇ REEDATAPDATA @$ elif obj.getType() =='Surf':DATA8Hi material_index = material_array.index(obj.getName())DATA؀DATA h containSphere(min,max,obj)DATA`}DATA4i writeln('sphere=[' + str(obj.getLocation()) +REEDATA<H` ']|['+ str(obj.size[0]) + ']|['+ str(material_index))DATAy DATA X| elif obj.getType() == 'Mesh':DATAg DATA@ $ #get standard mesh dataDATA0C$ m = NMesh.GetRawFromObject(obj.getName())rEDATA( mat = obj.getMatrix('worldspace')qDATAg EDATA0HD$ #for every mesh, we dump a list of verticesEDATA $ numverts = len(m.verts)DATAD$ numTris = 0 DATA(p9 print 'verts ' + str(numverts) REEDATA,D$ writeln('numverts=' + str(numverts)) DATA@d EEDATA a1 for i in range(numverts): DATA0PE$ x,y,z = point_by_matrix(m.verts[i].co,mat)EDATA8E$ writeln('v=' + fmt(x) + '|' + fmt(y) +'|' + fmt(z))DATA` DATAP] DATA< #iterate through faces - then split faces into trianglesDATAF$ faces = m.faceseDATAY DATA  #last= -DATA`V DATA`F$ lastUVTexture = 0DATAЩ lastidx = 0;DATAR DATAF$ for fa in faces:DATApO REEDATA$: #each face may have an image DATA `a1 if str(fa.image) == 'None':DATAj idx = -10DATA H! else:s=DATA$ #is this image the last one? DATA$p  if lastUVTexture == fa.image: DATAK EDATAF$ idx = lastidxDATAH EEDATA48G$ #different texture, have we seen it before?REEDATA 0t try:()DATA(  idx = baked_maps.index(fa.image)EDATAG$ #create new entry DATAG$ except ValueError:DATA$X baked_maps.append(fa.image) EDATA(@ idx = baked_maps.index(fa.image)DATAo EEDATA a1 lastUVTexture = fa.imageDATA0H$ lastidx = idx;DATAE EDATAA REEDATAxH$ if len(fa.v) == 3: DATAI numTris += 1DATAI numObjects+=1DATA> EEDATA b1 #check for uv coordinatesDATA4(J #there has got to be a better way to do thisEEDATA  if len(fa.uv) == 0:DATAJ zers=[0,0];DATA p fa.uv = [zers,zers,zers];DATA $ DATA: REEDATAppi trans = [point_by_matrix(fa.v[0].co,mat),point_by_matrix(fa.v[1].co,mat),point_by_matrix(fa.v[2].co,mat)]DATA9 contain(min,max,trans)DATA(7 EEDATAJ writeln('t=' + DATAX str(fa.v[0].index) + '|' + str(fa.v[1].index) + '|' + str(fa.v[2].index) + '|' + EDATAH`3 str(material_array.index(m.materials[fa.mat].getName())) + '|' +EEDATA K fmt(fa.uv[0][0]) + '|' + fmt(1-fa.uv[0][1]) + '|' + fmt(fa.uv[1][0]) + '|' + fmt(1-fa.uv[1][1]) + '|' + fmt(fa.uv[2][0]) + '|' + fmt(1-fa.uv[2][1]) + '|' + )DATA1 str(idx)EEDATA3 )EDATA80 DATA $ else:DATAK numTris += 2DATA@L numObjects+=2DATA EDATA `9 #check for uv coordinatesDATA4L #there has got to be a better way to do this-SDATA9 if len(fa.uv) == 0:DATAL zers=[0,0];reDATA( fa.uv = [zers,zers,zers,zers];DATAd DATA O0 DATA ( try:DATAp-& trans = [point_by_matrix(fa.v[0].co,mat),point_by_matrix(fa.v[1].co,mat),point_by_matrix(fa.v[2].co,mat)]DATA H: contain(min,max,trans)onyDATA  DATA8M writeln('t=' + DATAX| str(fa.v[0].index) + '|' + str(fa.v[1].index) + '|' + str(fa.v[2].index) + '|' + DATAH8 str(material_array.index(m.materials[fa.mat].getName())) + '|' +EDATAM fmt(fa.uv[0][0]) + '|' + fmt(1-fa.uv[0][1]) + '|' + fmt(fa.uv[1][0]) + '|' + fmt(1-fa.uv[1][1]) + '|' + fmt(fa.uv[2][0]) + '|' + fmt(1-fa.uv[2][1]) + '|' + DATAm str(idx)EDATA )DATA' nRDATAp` trans = [point_by_matrix(fa.v[2].co,mat),point_by_matrix(fa.v[3].co,mat),point_by_matrix(fa.v[0].co,mat)]DATA  contain(min,max,trans)ealDATAX EDATAXN writeln('t=' + EEDATAX` str(fa.v[2].index) + '|' + str(fa.v[3].index) + '|' + str(fa.v[0].index) + '|' + DATAH str(material_array.index(m.materials[fa.mat].getName())) + '|' +EDATA1 fmt(fa.uv[2][0]) + '|' + fmt(1-fa.uv[2][1]) + '|' + fmt(fa.uv[3][0]) + '|' + fmt(1-fa.uv[3][1]) + '|' + fmt(fa.uv[0][0]) + '|' + fmt(1-fa.uv[0][1]) + '|' + DATAh^, str(idx)EDATA )DATA EDATA DATAx except:REEDATA41 print 'caught quad exception on ' + str(fa) EDATAREEDATA3 DATAح DATA<\ #if the background is set pass that in, else pass color.blDATA1 if Background.val:DATA0`1 writeln('bgimage=' + str(BackgroundText.val))DATAH0 else:EDATA,1 writeln('bgcolor=' + str(w[0].getHor()))1DATA, ryDATA # #write out the baked texturesoDATAX) DATA 1 for tex in baked_maps:DATA$  s.write('b=' + str(tex) + '\n') DATADATAh1 #done with the scene DATA p f.closed1DATA  s.closelenDATA DATAdef render():DATA # spawnPath = path + fileNamebsDATADB os.spawnl(os.P_NOWAIT,executable,'foo ' + path + ' ' + fileName)1DATAh( #os.spawnl(os.P_NOWAIT,"/home/sheemwaza/base/optimized/src/base","monkey","/home/sheemwaza/out.mra")DATAT  #retcode=Popen(["/home/sheemwaza/base/src/base","/home/sheemwaza/out.mra"]).pid'lDATAw. print 'no op'DATAh+H DATApmSampleSlider = Create(0)DATAcamRadiusSlider = Create(1)DATAimageSamples = Create(1)DATA`shadowSamples = Create(4)DATA1muonSlider = Create(0)DATA1Muon = Create(0)WDATA4@1BackgroundText = Create('using background color')EEDATA1Background = Create(0)DATA1numSample = Create(4) DATA81hemiToggle = Create(0)JDATA1camType = Create(1)DATA@iCacheToggle = Create(0)DATAsamplerWindow = Create(1)DATA(GIWindow = Create(0)0-ADATAppartOutput = Create(0)DATAbounce = Create(0) DATAfilterWidth = Create(0)DATAHjitter = Create(0) DATAsbackground = Create(1)DATA! DATAmaterialsDrop = Create(0)DATAY DATA Hdef draw():DATA8 global mSampleSlider, muonSlider, Muon,BackgroundTextEDATAL+ global Background, numSample, hemiToggle, bounce, ExitButton, iCacheToggleDATA(0 global Button2, camType, exportButton4DATA$Џ global imageSamples, shadowSamplesDATA@ global camRadiusSliderDATA  global samplerWindow, GIWindowDATA global partOutput DATAx global filterWidth, jitterDATA global sbackground 3-JDATA+ DATAз1DATApmvDATA$($ glClearColor(1.0, 1.0, 1.0, 0.0)8 DATA  glClear(GL_COLOR_BUFFER_BIT)09DATAATADATA leftMargin = 10;DATA` bottomMargin = 15;DATA columnWidth = 170;DATA, buttonWidth = columnWidth - leftMargin;v[2DATAP columnHeight = 35;DATA0 buttonHeight = columnHeight - bottomMargin; DATAE+DATA ( #always display these buttonsDATAt()DATAD,& Button('Exit', 3, leftMargin, 5, buttonWidth, buttonHeight, '')REEDATAP1 Button('Export', 1, leftMargin+columnWidth,5, buttonWidth, buttonHeight, '')EEDATAT(| Button('Render', 2, leftMargin+ 2*columnWidth, 5, buttonWidth, buttonHeight, '')DATA1! DATA camType = Menu('Camera Model%t|Perspective %x1|Spherical %x2|Architecture %x3|DOF %x4', 5, leftMargin, 5*columnHeight, buttonWidth, buttonHeight, camType.val, 'Select which type of camera to use.')dDATA8 imageSamples = Slider('Image', 11, leftMargin , 6*columnHeight, buttonWidth, buttonHeight, imageSamples.val, 1, 20, imageSamples.val,'')''DATA shadowSamples = Slider('Shadow', 12, leftMargin + columnWidth, 6*columnHeight, buttonWidth, buttonHeight, shadowSamples.val, 1, 20, 1,'') DATADATAo DATAh( #these are the GI settingsDATAxXS #Background = Toggle('Set Background', 7,leftMargin, 4*columnHeight, buttonWidth, buttonHeight, Background.val, '')DATA`9 yDATAH( EEDATAH sbackground = Menu('Background%t|Uniform %x1|CIE Clear Sky %x2|CIE Overcast %x3|Sky Model %x4', 102, leftMargin, 3*columnHeight, buttonWidth, buttonHeight,sbackground.val, 'Set Background')DATAl DATA DATA( numSample = Slider('Samples', 6, leftMargin + columnWidth, 2*columnHeight, buttonWidth, buttonHeight,numSample.val, 1, 64, 4, 'The number of hemisphere samples.')DATA *REEDATAP  bounce = Slider('Bounce', 0, leftMargin + 2 * columnWidth, 2*columnHeight, buttonWidth, buttonHeight, bounce.val, 1, 5, 0,'') DATAX* DATA if Background.val == 1:DATAH BackgroundText = String('', 6, leftMargin + columnWidth, 4*columnHeight, buttonWidth, buttonHeight, BackgroundText.val, 512, '')DATA* EEDATA if camType.val == 4:DATAH camRadiusSlider = Slider('Radius', 0, leftMargin + columnWidth, 5*columnHeight, buttonWidth, buttonHeight, camRadiusSlider.val, 1, 20, 1,'')EDATA*DATA+ +DATAHdef setBackground(fname):$DATA- print fnameREEDATA2 BackgroundText.val=fnameaxDATA8+DATAdef event(evt, val):2])DATA(H0 if (evt== QKEY and not val): Exit()atrDATAp+priDATAHdef bevent(evt):DATA+wriDATA+DATA  if evt == 7: #setBackgroundDATA<A Blender.Window.FileSelector(setBackground,'OPEN FILE')endDATA,DATA elif evt == 10:VDATAP, ghDATAؑ print 'Materials'DATA  Blender.Redraw()DATA, DATA( elif evt == 3: #ExitButtonDATA X Exit()bleDATA,eesDATA elif evt == 2: #Button2DATA $ export()DATA @ render())DATAO0REEDATA  elif evt == 1: #exportButtonDATA  export()lDATA REEDATA` else:DATAh Blender.Redraw()DATA7 DATA Register(draw, event, bevent)TXhTXTextxz%xz%xz%xz%DATAxz%EERFDATAOB +[8+OBCameraamera.001 xl,׿kvōAjT@jT@jT@?zL)d?????OB 8+[+OBCylinder8<SNALJ @(bI@bI@bI@>??@?=[@)21H@NALJ @(?????U>3e=J=I>deAU.=gz̫W@?DOBd?? #=?>=??@???/X"yDATASOB [8+OBLamp *'.A+AA2B????????'.A+AA2B??????#"DѼ~=K>mf?f>IKW ?DOBd8? #=?>=??@???MA &MAMaterial.001L?L?L???????????L?????2AA ????????@?=?==???????L?L?L?L==ff????DATAx??????????L>MA& MAMaterial.003L?L?L???????????L?????2AA ????????@?=?==???e????L?L?L?L==ff????DATAxe??????????L>TE"TETex.001>@???????@@????? @??<d`+TE"TETex.003>@???????@@????? @??<dJME8<2:MECylinder.006  jX*$u(h @' [?1?t@o@Z@DATA  DATA,(*$DATA*$8rI@Qٳbp@Q"&wE@Q"&Ma5A@QMarI@E@ٳIbr@F@"&IwD@F@"&MaI5A@E@MaIoR/Y@Bk,| G@Bk\XC,} @Bk{ ?Bk ԃ8?Bk D,@Bk4#oR/Y@^?JQ` G@^?=<>:`C,} @^?P` ?^?Q`8?^?`D,@^?q `C_@^?N۞?,|M i?\X>{X󎾤 ԃ#{ 'iLw?4#N۞?b?JQ`N i?b?=<>:`>b?P`X󎾸b?Q`#b?`'PLw?b?q `:0?b?Fx@˿,|k?˿\X [?˿{D$>˿ ԃ#s&>˿ l ?˿4#Fx@F->JQ`k?F->=<>:`[?E->P`C$>D->Q`"P&>C->`m x?D->q `D?E->5Wu@Z,|qYc@Z\XVe%@[{ð"T?[ ԃb: @[ H@[4#5Wu@K?JQ`qYc@L?=<>:`Ug%@K?P`#T?J?Q`a: @I?`H@J?q `WsA7@J?j\@,|Ϛ4}@\X A?@{@ ԃ%$@ :` C?@?P`@?Q`%$@?`{JQ`W@.}>=<>:`u}?+}>P`b ?(}>Q`cZs[?(}>`?+}>q `X?+}>\̒P@BkZZ ;ſ@Bk{?Bk !^|M ?Bk@^3@Bk^ !0J#a@Bkޢ{\̒P@^?@;@;`;ſ@^?PQ`?^?`zM ?^?`@^ 3@^?`0H#a@^?QP`?o Q#@^? b 1@ZZyQ?{ٺ~)? !^JF%?N%@^ !fB@ޢ{ b 1@b?@;@;`yQ?b?PQ`׺~*?b?`HF!?b?`I%@b?`fB@b?QP`ϔ@b?ڼ?˿ZZ: 2 ?˿{xN-H#