BLENDER_v248REND TSceneGLOB H 0KpeSRxoKSR1-AnimationR~\?WL 2Hmpe DATAR~r~DATAr~(R R~ DATA(R b r~ DATAb (R DATAe b DATAe ȍyDATAȍye DATApf~ȍyDATApf~PDATAPV~pf~DATAV~N PDATAN {V~DATA{\N DATA\{DATA?WsQ r~(R DATAsQ _?WR~b DATA_xg~sQ r~e DATAxg~lm_ȍy(R DATAlmtQ xg~ȍye DATAtQ X\lmDATAX\H~ytQ ȍypf~DATAH~y0yyX\pf~DATA0yySYH~yȍyDATASY= 0yyR~PDATA= T~SYV~DATAT~i = V~b DATAi P~T~V~PDATAP~`9 i N DATA`9 E P~{e DATAE A `9 {pf~DATAA N E {N DATAN I A \PDATAI D N \V~DATAD J I N DATAJ H D \N DATAH L J Pe DATAL H \{DATA2jR~PV~b OeZ(.DATAZ(ZLink and MaterialsEditing>DATA(Z@ZZMeshEditingF>DATA@ZH"(ZAnim settingsObject>DATAH"0!@ZDrawObjectF>DATA0!(8 H"ConstraintsObject>DATA(8 h0!EffectsObjectDATAh(8 HooksObjectF>H"DATA hParticle InteractionObject>0!DATA X0SoftbodyObject>0!DATAX0@/ OutputRender>DATA@/X0RenderRenderF>DATA(.@/AnimRender>DATA(.FormatRender>DATAe333?V,@DhCDhCC(BDC?z?DATAe333?V,/9DATAj~T2e r~(R ȍy !  DATA~T}TjN {pf~G==o?(h! DATATransform PropertiesView3d>DATA3D Viewport propertiesView3d>"DATA(h! 333?V<????????G==o? A*A?G==o??????*A0} B??=C ݢM@ݢM@ݢM@? DATAh! (333?V</9DATA}T8S~Tpf~ȍy??PףHp`P8Y8YDATA8YTransform PropertiesIpo!>DATAXp`_333?V\zC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATA_8p`333?V\CC|||??l|DATA8P_ 333?V\zCCHBC|||?CFC= ADATAPN 8 333?V\op =rttDATAN PP 333?V\?zDzDBCl||ll|zDzD=HB DATAP N 333?V\BzB@l|llFzD #<HB DATA PP333?V\??? ???? A???PA A!O?j?}GCHB? A0} B? #<C DATAP 333?V\/9DATA8SHm}T\N V~ *} YYDATA YYLink and MaterialsEditing>DATAY YMeshEditingF>DATA*}¾333?VLzCB{ µCB ?BFB= ADATA¾Y *} 333?VLzCCHBC$?CFC= ADATAY ¾333?VL#DhC`DpJgChCC(BDC?z?DATAY 333?VL/9DATAHm8SPe {\} ?=o?.ax P8DATAP8Transform PropertiesView3d>DATA8P3D Viewport propertiesView3d>"DATAaU333?YDATA@ ( LampLampF>DATA(  @ SpotLamp>DATA ( Texture and InputLamp>DATAx Map ToLamp> DATAx`PreviewMaterial>DATA`XxMaterialMaterialF>DATAX@`PreviewWorld>DATA@(XWorldWorldF>DATA(X@Mist Stars PhysicsWorld>DATAX@(Texture and InputWorld>DATA@(XMap ToWorld>XDATA(h@OutputRender>DATAh(RenderRenderF>DATAhhAnimRender>DATAhPFormatRender>DATAP8shLink and MaterialsEditing>DATA8s(8cPMeshEditingF>DATA(8cX68sMesh ToolsEditing^>DATAX6(8cMesh Tools 1Editing^>DATAwX6CameraEditingF>DATAwpd}ShadersMaterial>DATApd}Xc}wTextureMaterial^>DATAXc}xpd}Anim settingsObject>DATAxzXc}DrawObjectF>DATAz<xConstraintsObject>DATA<x;zScriptlinksScript>DATAx;`:<EffectsObjectzDATA`:`/x;Map InputMaterial^>pd}DATA`/(`:Map ToMaterial^>pd}DATA(w`/AnimAnim>DATAwX(SoundSound>DATAXrwListenerSoundF>DATArjXSequencerSound>DATAjlrArmatureEditingF>DATAlH^jRampsMaterialF>`DATAH^0]lMirror TranspMaterial>DATA0]\H^Mist / Stars / PhysicsWorld>\DATA\[0]Amb OccWorld>DATA[b\Shadow and SpotLamp>DATAbXX[ModifiersEditing>DATAXX bShapesEditing>bDATA XXMultiresEditing>DATAШ Links and PipelineMaterial>DATAШSSSMaterial>wDATAШRender LayersRender>(DATAHBakeRender>DATAHlStampRender>hDATAlLHMesh Tools MoreEditing>DATALKlUV CalculationEditing> DATAKJLSky/AtmosphereLamp>[DATAJIKPreviewTexture>DATAIHJTextureTextureF>DATAHFIColorsTextureF>IDATAF(HImageTexture>DATA(FMap ImageTexture>DATA|(MarbleTexture>DATA|Texture FaceEditing> DATAPZz333?8\EhC}E>4MCC(BDC?z?@9 mDATA$ZzxP333?DATAxhZz333???? ???? A??@PA Aj?c3>}GCHB? A0} B? #<C DATAh x333? Q Q Q??DATA h333?5Import a Wavefront OBJC:\muray\Meshes\lender Foundation\lender\\tree.obj_copy4.014)DATA(R>\6vJ0G~X~X~DATA>\B(R[PI(R5v??8@ JL) 7) #)$7 #p@ `yDATATransform PropertiesView3d,>DATAView PropertiesView3dT>"DATAp@ y333?>\Zui?=[ʾ/Ѿv;>T\&?Zui?0Ѿ&< =x;>r?[ʾU\: >2U b/@?ZX?ʢ>Wp>[> tZ&Z?]?T\?N<8/@: PAArU?Ϳ<2,x=Y=k>h39_HB?BtF"BBc@??8@ JLZui?=[ʾ/Ѿv;>T\&?DK? f> '>AZgA0}( B??$;=Czw=;7?X<ۀ@ۀ@ۀ@,>7l?? 8?~m>k>DATAXyQp@ 333?>\zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAQHy333?>\ 6 62 6??2DATAH4 Q 333?>\?zDzB@22FzD #<HB DATA4 `yH333?>\DdC8CnD fCC(BDC?z?DATA`y4 333?>\SELECT IMAGE PICTURESC:\SGWeb\Turbine\umpbug Folder/ender.app/Contents/Resources/ntitled.blend WX4DATABH7>\p]LPI[w=g>o?' 7' #'$7  (7hy~~ DATA Transform PropertiesView3d,>DATA View PropertiesView3dT>"DATA7Yz 333?Br[ ? DATA$Yzpy7333?BDATApy( lYz 333?BzCCHBC?CFC= ADATA( lpy333?B????????w=g>o?{IA@@y?w=g>o??????{IA0} B??Y!==C7?X<r=@r=@r=@? DATAX`( l333?BzC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATA`333?B 6 62 6??2DATA@]} ` 333?B?zDzB@22FzD #<HB DATA@]} hy333?BDdC8CnD fCC(BDC?z?DATAhy@]} 333?B>Open Text Fileont OBJC:\GWeb\urbine\\der Foundation\..\der\..\tents/Resources/processing_export.py '1DATAH7 )]BPI\~(R5=0i>o?)9)9S)T x#@z@  X\wDATA X\wTransform PropertiesView3d,>DATAX\w View PropertiesView3dT>"DATA@z333?H7???X@@??% ??%X??5o5=0i0i>o!>>c?{?AS&S S@yyX??5=0i>o????X@@??A?0} B???<=C@X@7?X<???,>7l?? f+?! >+l>DATAX@z333?H7zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATAx333?H7 6 62 6??2DATAx_ 333?H7?zDzB@22FzD #<HB DATA_@ x333?H7DdC8CnD fCC(BDC?z?DATA@ _333?H7Save AseNT PICTURESC:\SGWeb\Turbine\umpbug Folder/ender.app/Contents/Resources/turbinetompBot2.blendDATA )]H7L6v\PIЋ=~=o?'9'9S'T(x  h DATA h Transform PropertiesView3d,>DATAh  View PropertiesView3dT>"DATA X333? )]CC?p?(xd?DATAX  333? )]???4sL>@ko????4s?L>ko??Ћ=~=o\>;?DAAA4y4s?L>ko??Ћ=~=o????4sL>@ko??DAA?0} B??C3==C4sL>@ko7?X<.R@.R@.R@,>7l?? DATAX 8X333? )]zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATA87 333? )] 6 62 6??2pO DATA,pO BOp=A0}DATA,O pCS@ffpeDATA7_8 333? )]?zDzB@22FzD #<HB DATA_7333? )]DdC8CnD fCC(BDC?z?DATA_333? )]Save AseNT PICTURESC:\SGWeb\Turbine\umpbug Folder/ender.app/Contents/Resources/turbineBody2.blenddot2.blended.blendASRx k YKSR3-Materialodel SingwaXX~`Y~o~@ ][Tpe DATAwa(taDATA(tawawa DATAwa{a(ta DATA{a{awaDATA{aX{a<DATAX(Y{a<DATA(Y^XDATA^X_(YDATAX__^,<DATA_`iX_,DATA`i`_DATA`PW~`i,DATAPW~XX~`DATAXX~PW~DATA`Y~.~(tawaDATA.~hZ~`Y~wa{aDATAhZ~p[~.~wa{aDATAp[~x\~hZ~{aXDATAx\~_~p[~{aXDATA_~`~x\~(ta(YDATA`~a~_~wa^DATAa~]~`~(Y^DATA]~^~a~X^DATA^~b~]~{aX_DATAb~c~^~XX_DATAc~d~b~^_DATAd~e~c~_X_DATAe~f~d~{a`iDATAf~g~e~(Y`iDATAg~h~f~_`DATAh~i~g~X_`DATAi~j~h~``iDATAj~k~i~PW~`iDATAk~l~j~PW~`DATAl~n~k~XX~(YDATAn~o~l~XX~_DATAo~n~PW~XX~DATA@ ]ph[wa{aX{a?@Pף;;!0RXR}Y DATAXR}R OutputRender>DATAR  XR}RenderRenderF>DATA Y R AnimRender>DATAY  FormatRender>DATA0R8333?V\~CA~CA!?AFA= ADATA8`6Z0R 333?V\zCCHBC ?CFC= ADATA`6Z@<8333?V\DhC?DhCC(BDC?z?mDATA@<Q `6Z333?V\??? ???? A??@PA Aj?c3>}GCHB? A0} B? #<C DATAQ @<333?V\@̌AR|B1@lA A@CC #<@DATAQ 333?V\/9DATAph[`@ ](Y(tawa^ !  DATA`(ph[X__^XG@? JL-=-=W-X~ TDATAT]OutputRender>DATA]TRenderRender>DATA0]AnimRender0>DATA0PFormatRenderH>DATAP0PreviewMaterial>DATAQ PMaterialMaterial>DATAQ ЏShadersMaterial0>DATAЏdQ TextureMaterialD>DATAdX:WЏMap InputMaterial\>DATAX:WdMap ToMaterial`>DATAX:WRampsMaterial>DATAMirror TranspMaterialH>DATA pY333?VChCCvgCC(BDC?z?DATApY` 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?@?$$OA0} B?=Ch?j(4?t'>d DATAX`pY333?VzC AzC A #< #<`jFzD OBDATA`333?V;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA(YT`{a`i`X_U.=w=o?+=+=W+X,X,0QDATA,eQ 333?W???h?j(4?t'>????hj(4t'?U.=w=o??OA0} B??=Ch?j(4?t'>dEh@Eh@Eh@? DATAeQ (,333?WDdC>9C,DeCC(BDC?z?DATAX(0QeQ 333?WzC AzC A #< #<`jFzD OBDATA0Q(333?W SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATAYT[T(PW~XX~_`e?B$?AHM+++USh DATAh(T333?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#OA0} B??=Ch?j(4?t'>dA@A@A@? DATA(TH[h333?W |DdC>9C,DeCC(BDC?z?DATAXH[ (T333?W |zC AzC A #< #<`jFzD OBDATA H[333?W | SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATA[TYT`i(YXX~PW~&=+=o?US8$XDATA8$~333?W ?3?3:-vk(4??3?3;@k(40v@?&=PU1n;+=ꉖø;ZO{:?JXA54U0AC;@j(40v@?&=+=o??3?3:-vk(4?5?5IXA0} B??=C:j(4?.vdٚ@ٚ@ٚ@? DATA~8$333?W DdC>9C,DeCC(BDC?z?DATAXX~333?W zC AzC A #< #<`jFzD OBDATAX333?W SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendSRx Y>v kSR4-Sequencep~Haa=@pTP}pe DATAp~q~DATAq~ r~p~ DATA r~(s~q~ DATA(s~0t~ r~DATA0t~8u~(s~DATA8u~@v~0t~DATA@v~Hw~8u~DATAHw~Px~@v~DATAPx~Xy~Hw~DATAXy~`z~Px~DATA`z~@!Xy~TDATA@!a`z~TDATAaHa@!DATAHaaDATAa8aq~ r~DATA8aX}aap~(s~DATAX}a}a8ap~0t~DATA}a|aX}a(s~8u~DATA|a|a}a0t~8u~DATA|a8|a|aq~@v~DATA8|a |a r~Hw~DATA 8|a@v~Hw~DATA @v~Px~DATAobHw~Xy~DATAobxrPx~Xy~DATAxr0 YobPx~`z~DATA0 Y(axrXy~`z~DATA(a .0 Y@v~@!DATA .[u(aHw~@!DATA[u[ .`z~@!DATA[5[ua0t~DATA5&[aPx~DATA&@ X5HaXy~DATA@ X=&Ha8u~DATA=@ XaHaDATA@pTp~0t~8u~(s~y] PnDATAPno OutputRender>DATAo 0 PnRenderRenderF>DATA0 o AnimRender>DATA0 FormatRender>DATAy] 333?WDhCvDhCC(BDC?z?DATA y]333?W/9DATA@pT@v~q~ r~Hw~ !  DATA}0t~aHa8u~8=i>o? P DATAP8I333?W&~CB~CB ?BFB= ADATA8I P333?W&zCAzCA  A@FB= A ?DATA  8I333?W&????????8=i>o?fffAD&@??fffA0} B? #<C DATA  333?W&AVE TARGA/t1.blend9DATA}}`z~@!Hw~Xy~8=H>o?UUU 8 b8DATA8 b sG333?W*zCAzCA1||1 A@FB= A ?DATA sG88 b333?W*????????8=H>o?fffA*@??fffA0} B? #<C DATA8 sG333?W*AVE TARGA/t1.blend9DATA}P}}Px~@v~@!`z~8=>o?SSST8ypDATAX8yP333?W.B̽̌?B̽̌? #< #<`jFzD SQB̽̌?DATAPp8y333?W.????????8=>o?fffA@??fffA0} B? #<C DATApP333?W.OAD FILE/9DATAP}}aPx~Xy~Ha8=i>o? P2RDATAH\333?W1zCAzCA A@FB= A ?DATAH\P2R333?W1????????8=i>o?fffAD&@??fffA0} B? #<C DATAP2RH\333?W1AVE TARGA/t1.blend9SRx>v YSR5-Scripting8RVV }!Rpe DATA8RDATAx8R DATAx@ DATA@xDATA`@DATA`HWDATAHWW`DATAW0WHWDATA0WVWDATAV0WDATAVExDATAEV`DATAEHWxDATA`HWDATAxWDATAx0`0WDATA0oxHW0WDATAob0W0WDATAbHbo`DATAHbbb8RDATAbbHb8RVDATAbxPb@VDATAxP^bWVDATA^ xPV0WDATA ^@HWDATA} 2v`xHW !  DATA 2vDATA8R@jm3D Viewport propertiesView3d>"DATA`HmY333?Y.|????????z==o?&A*A?z==o??????*A0} B??=C ?@?@?@? DATAHmY`333?Y.|/9DATADATApZ} 333?Y/|op> =DATApZ}k333?Y/|CCx??|?DATAXkpZpZ}333?Y/|zC̽̌?zC@;; #< #<`jFzD OBzC̽̌?DATApZk333?Y/|CC|||??l|@إ @إ DATA,@إ BOp=A0}DATApZ 333?Y/|zCCHBC|||?CFC= ADATA  333?Y/|?zDzDBCl||ll|zDzD=HB DATA  { 333?Y/|BzB@l|llFzD #<HB DATA {v 333?Y/|??? ???? A???PA A!O?j?}GCHB? A0} B? #<C DATAv {333?Y/|/9DATA!RDATA( zMeshEditingF>DATAu( Anim settingsObject>DATAuXyDrawObjectF>DATAXy(0vuConstraintsObject>DATA(0vXyEffectsObjectDATA< (0vHooksObjectF>uDATA< @Particle InteractionObject>XyDATA@`< SoftbodyObject>XyDATA`k@OutputRender>DATAk `RenderRenderF>DATA kAnimRender>DATAz FormatRender>DATAzScriptlinksScript>DATAq]hk333?Y0|ChC#DhCC(BDC?z?DATAhkq]333?Y0|/9SC`peSCScenetageain0}Hpk'|8|*Ô?,>7l?,>7l?,>7l?=hvP pdd??< 2 Z! ??@4@4BB?????//backbuf/tmp\L?L?L??>??_?D DATApkz8~kp|DATA8~z8|pk. sDATA8|z'|8~Hu\DATA'|z'|8|{|DATA'|z'|.a0}DATA(hvy,d'=A@DATAP pL?B ?o: ??22 2d 22 22 22 22 22 > #<=2 #< #`fff?Ou<?DATAH@41 RenderLayerCAqCACameraamera.001L>DB=B B@?LAZ(LALamp.001 ????2,>VB4B>??0Q ? B4B?@@???o:??????@????? (|DATA0Q $????C?55?55? ??????DATA "??DATA (|WOdHxWOWorld???===??A@pA AB?L= ף;>_|DATA _|TXxr[opTXprocessing_export.pyֿ8^qqZHADATAֿC:\processing_export.pyDATA8Q VDATAQ 8= FREEDATA@Q { DATA@P^DATA8@`|DATA8HhU DATAHp8g|DATAp(HeDATA(paDATAh (^PzDATAh  {s.blDATA qh ^DATAqPq @O DATAPqqqܙDATAqpMPqxR DATApM%q^32] +DATA%(apMa%1] +DATA(aPu%S[1] DATAPu (a(29-JDATA RPuu29-JDATARp$ 09-ADATAp$RH_09-ADATAp$ 09-ADATAH@09-ADATAH(~09-ADATAH13-ADATA BQ13-ADATA BApR29-ADATAAA B 29-ADATAAI}AP 06-FDATAI}Ap~(06-FDATAВEI}о~(08-ODATAВE0E( 29-JDATA0EEВE*%03-NDATAEE0E(va11-SDATAEXEE0~09-JDATAXEP>\Ex~29-JDATAP>\>\XE 16-SDATA>\=\P>\~04-SDATA=\x=\>\~30-SDATAx=\h=\Q13-SDATAh x=\x12-JDATA th@WE11-SDATAt@ "=24-SDATA@^tX#=25-FDATA^8t@P12-ADATA8ts^#=29-JDATAss8t8$929-JDATAshTs$:25-SDATAhT Ts` 06-ADATA THhT0R20-JDATAH T29-JDATAHX29-JDATA 29-JDATA  16-FDATA = 005-FDATA=_ x07-NDATA_( =25-SDATA( =_27-SDATA==( x\29-JDATA=8==\11-SDATA8===\.uv[DATA=(`8=P\--- DATA(`@Y=\DATA@Yx(`PR#ton(DATAxp@YQ)DATApx8!11-SDATAph <DATA(|xu!29-JDATA(|HWo0 FREEDATAHWo(|`Fm!25-SDATAHWo(FREEDATA08 !18-ODATA0h}FREEDATAh} ~0!03-SDATA ~ h}]FREEDATA r ~!04-SDATAr~ aFREEDATA~}r 23-SDATA} J~!FREEDATA J ~}\11-MDATA ~(} JX29-JDATA(}Q ~ $FREEDATAQ H(}W19-DDATAH8Q !FREEDATA8lH_11-SDATAl`8!DATA`Xl!06-MDATAX= `(\DATA= (Xp\d3.jDATA(@1v= 0"n(miDATA@1vpy(w10DATApyw@1vh"DATAwpy  DATA@!w"DATA@!|@| DATA|xP@!WDATAxPPR|DATAPRXkmxPh_sDATAXkmȀPRwDATAȀH XkmtDATAH q ȀwDATAq hnH 8\DATAhnq xDATAhnXxDATAp;WxDATAp;WexDATAep;W0yDATAQ eDATAQ  R DATAhQ 8DATAhH@DATAHh}aADATA_H,DATA_UX'FREEDATAUY _DATAY  U0(DATA R Y 0DATAR ( *DATA(R ټ0DATA`(ټ(DATA`Xټ2DATAX%`Hڼ)DATA%Xڼ-DATA%ۼ(DATA(qa}/FREEDATA(qapsa(~)=' +DATApsaX9(qa~-FREEDATAX9x_psa0W= TeDATAx_X:ZX9FREEDATAX:ZxI}x_% == DATAxI}X:ZH[eNamDATAPQ xI}~7DATAPQ HWHDATAHp PQ PC theDATAp XX H@DATAXX H]p P4DATAH]@YXX EDATA@Yd H]DATAd p; @Ybh+@DATAp; دd X`DATAدػp; h+@DATAػ0Pدa~F;g>DATA0PkػFܡDATAk(c0P8$*;g>DATA(cxqYkܡDATAxqYg(c~a(DATAg/xqY֙oQ DATA/H/gdDATAH/z/$DATAzH/PEtonHDATAYzVbcolDATAYW$(DATAW8Y@%DATA8heWX DATAhe~8xE DATA~he%DATAHd~%0XDATAHdH}0&DATAH}pHd{'DATApPcH}]^ DATAPc`pحsb DATA` Pcta|DATA S`^DATASI Pf0DATAIhXuSx(|oDATAhXu> I^DATA> xhXu{DATAx > fMDATA C xgDATAC H6 XgDATAH6 G C gDATAG YH6 g DATAY8}G @h/] DATA8} }Yd DATA }8}DATAx }(DATAxpDATAxySDATAP` %DATAPDATA(P(`Q DATA(pȟDATAp(ص}DATAp DATAHX7quadDATAHP:Zure,DATAPHDATAP/mt(xDATA(0DATA(p`;mverDATAp r(poinDATA rH rpwe dDATAH r r rଌDATA r rH r h daDATA r r rp,.GetDATA r9 r(l$= 'CDATA9H9 r(P objDATAH999.()yDATA99H9Rne.GDATA9 :9HSory DATA :a9k$DATAaPa :S*DATAPaaaQ 2DATAaaPaSDATAa(ba@T.DATA(bO aT7DATAO HO (bHDATAHO O O %DATAO O HO xQ ;DATAO  O O UDATA O hO O J}DATAhO  O !2DATAPhO DATAPQ  DATAPh DATA(Oz DATA(p0Q  DATApZ(P DATAZZpe DATAZ ZZxQ ;g>DATA ZhZZx~ ܡDATAhZZ Zx ;g>DATAZZhZc!ܡDATAZzZa";g>DATAzzZcܡDATAzzzQ DATAzXzz}DATAXzzzQ 0;g>DATAzzXzR ի DATAzHzC&DATAHzxQ ffDATAؤHDATAؤ P?"DATA hؤh&DATAh dmeraDATAhDATAHDATA0d( DATA0x^DATAx0trinDATAxاADATA6 DATA6 7ODATA 7h76h4| 1DATAh77 7R1DATA77h7DATA7@87RDATA@8H7PRDATAH@8D DATAشHNDATAش I[nDATA hشRDATAh MDATA@ۻhRDATA@ۻۻVDATAۻۻ@ۻ`qEDATAۻܻۻDATAܻ`ܻۻ DATA`ܻܻܻ`MDATAܻ`ܻ(MDATAܻxQ DATA08RDATA0xRDATAx0KDATAxDATAW81DATAWXDATAXXXWDATAXXXXЏ$DATAXXXXJDATAX0XX DATA0XY X0  DATAY (Y 0X0yoDATA(Y pY Y 8DATApY Y (Y pJDATAY Y pY DATAY HY Y WDATAHY GY hFDATAG@HHY DATA@HHG^}DATAHH@HIDATAHIHDATAI`IHjoDATA`IIDATA`I=DATA8_DATA`*WDATA` FDATA`h\DATA DATA8 DATA8  ج DATA  8 8DATA   Pp| DATA X  _2DATAX  -_DATA(X DATA(p1uDATAp(_8DATApX`SlidDATAH`/DATAHmX1uDATAmmHa* idDATAm@mm 1uDATA@mmmDATAmm@m0uDATAm mmXDATA m zmxh"DATA z z m0uDATA z( z z@eDATA( zp z z ~xDATAp z z( zH ~ȐDATA z zp zx0upDATA z8W zHX DATA8WW zhDATAWW8W AxDATAWWWPe`DATAWXWWyPPDATAXWWWXDATAW=XW@0u(DATA=>W8PDATA>X>=̄DATAX>>>HDATA>>X>wׄDATA>0?>Pw@DATA0?h}>w8DATAh}}0?w1(_DATA}}h}HxDATA}@~}x DATA@~~}x@DATA~~@~xpDATA~Q ~DATAQ Q ~XDATAQ Q Q `DATAQ XQ Q xDATAXQ Q Q xDATAQ Q XQ 8xDATAQ X?R Q @xDATAX?R ?R Q UDATA?R ?R X?R 0upaDATA?R 0@R ?R H8DATA0@R x@R ?R H%@ DATAx@R @R 0@R ( DATA@R hx@R 6ght,DATAh@R WKDATAh h&DATA@xg#DATA@ BDATAЍ@HDATAЍ  DATAЍDATAHDATAH%DATAضH$DATAض X$ DATA EضXM!DATAEE `DATAEEE $DATAE`EEDATA`EEEADATAEE`E@DATAE}E(  DATA}(}EmtexDATA(}p}},DATAp}}(}#DATA}}p}0DATA}H}}"DATAH}}}`q~@DATA}H}fMDATAȗ}{QDATAȗ DATAXȗ(bDATAXEDATA蘊XsDATA蘊0hDATA0蘊SDATA08DATAHY|tDATAHpYDATA؞HYDATA؞ DATA h؞@]DATAh  x]DATA hh(DATAh ]DATAhjFREEDATA@^FREEDATA@FREEDATA@hSFREEDATA`FREEDATAywFREEDATAywXyw-DATAXywywyw0a";DATAywywXywaFREEDATAyw0zwyw DATA0zwxzwyw DATAxzwzw0zwpFREEDATAzw{wxzwcDATA{w@RzwDATA@RR{wa$DATARR@RcderDATARRRkbDATAR`RRe0)DATA`RRR@eFREEDATARR`R8lbREEDATAR8RRlb8FREEDATA8RNuRhfDATANuHNu8RlbREEDATAHNuNuNufDATANuNuHNu@mbputDATANu OuNumbDATA OuhOuNugDATAhOuOu OumbDATAOuOuhOuH9inerDATAOuHOugs %xDATAHOuFEDATAHm DATA H6 DATA h(iпDATAh hADATAhp DATA@hj8 GDATA@x]jDATAx]]@DATA]^x]xkDATA^]DATA Vimport BlenderDATA =import osicDATA{import structEEDATAP^from Blender import *mDATA`|from Blender import LampDATA$hUfrom Blender.Scene import RenderDATAg|from Blender.Draw import *DATAefrom Blender.BGL import *DATA afrom Blender import RegistryDATA^from Blender import TextDATA{ DoDATA^from math import *EDATA@O  inDATA ܙ#globalsrdDATAxR GGUDATA4^#get the root directory that the current file is inDATA(a#we'll write the muray files there. EDATA Spath = Blender.Get('filename')DATA(tokens = path.split('\\')DATAufileName = tokens.pop();DATAfile = fileName.split('.')DATAH_fileName = file[0] DATA GShDATA @path =''wsDATA(~for i in tokens:er DATA path = path + i + '\\' DATAQhadDATApRkyTDATAdef export():EEDATAP  #open a file to export toDATA,p~ f = open(path + fileName + '.mra','wb')DATA,о~ s = open(path + fileName + '.mrb','wb')x2DATA(  rfDATA(* f.write('muRay scene description\n')EDATA(va f.write(' ')DATA0~ def writeln(out): DATAx~ f.write(out + '\n')-ODATA  tdDATA~ def fmt(input):er DATA~ return '%5.5f' %inputDATAQrafDATAx def point_by_matrix(p, m):DATAH@W return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0] + m[3][0],EDATA@" p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1] + m[3][1],EEDATA@X# p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2] + m[3][2]]EDATA P def vector_by_matrix(p, m):DATA@# return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0],EEDATA<8$ p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1],amDATA<$ p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2]] nDATA`  eeDATA 0R def contain(min, max, point):DATA for v in point:r DATAX if v[0] < min[0]:0-SDATA min[0] = v[0]r DATA if v[1] < min[1]:6-FDATA0 min[1] = v[1]r DATAx if v[2] < min[2]:0-SDATA min[2] = v[2]r DATA if v[0] > max[0]:4-SDATAx\ max[0] = v[0]r DATA\ if v[1] > max[1]:umSDATA\ max[1] = v[1]- DATAP\ if v[2] > max[2]:DATA\ max[2] = v[2] DATA$PR def containSphere(min,max,sphere):DATA Q radius = sphere.getSize()[0]DATA$8 if min[0] > sphere.LocX-radius:awDATA h  min[0] = sphere.LocX-radiusDATA$xu if min[1] > sphere.LocY-radius:EEDATA 0  min[1] = sphere.LocY-radiusDATA$`Fm if min[2] > sphere.LocZ-radius:EEDATA ( min[2] = sphere.LocZ-radiusDATA$8  if max[0] < sphere.LocX+radius:EEDATA  max[0] = sphere.LocX+radiusDATA$ if max[1] < sphere.LocY+radius:EEDATA ] max[1] = sphere.LocY+radiusDATA$ if max[2] < sphere.LocZ+radius:seDATA a max[2] = sphere.LocZ+radiusDATA  lDATA!urbDATA\ #Grab the sceneDATAX scn = Scene.GetCurrent()DATA(  context = scn.getRenderingContext()DATAW obj = Blender.Object.Get()DATA! rlDATA_ #export general scene dataDATA!ortDATA!eb2DATA(\ #background colorDATAp\ w=Blender.World.Get():DATA0"rigDATA4w scene = Blender.Scene.GetCurrent().getChildren()doDATAh" DoDATA  writeln('')REEDATA" DATA$@| #create the baked textures listREEDATAW baked_maps=[]EDATA DATAh_s #create a materials listDATAw material_array =[]DATAt materials = Material.get()DATAw for m in materials:DATA8\ DATAx refFile = "NULL";DATAXx textureFile = "NULL";DATAx alphaFile = "NULL";DATAx normalFile = "NULL";EDATA0y emitFile = "NULL";DATA specFile = "NULL";REEDATA R  REEDATA 8 for mtex in m.getTextures():DATA@ if mtex: DATA }a #check if there is an imageDATA0 if mtex.tex.type == Texture.Types.IMAGE:DATA(X print mtex.tex.image.getFilename()DATA #map to colorDATA,0 if mtex.mapto == Texture.MapTo.COL:DATA4 textureFile = mtex.tex.image.getFilename()yTeDATA, if mtex.mapto == Texture.MapTo.ALPHA:DATA4ټ alphaFile = mtex.tex.image.getFilename() rfiDATA,ټ if mtex.mapto == Texture.MapTo.NOR:DATA4ټ normalFile = mtex.tex.image.getFilename() lDATA,Hڼ if mtex.mapto == Texture.MapTo.EMIT:DATA0ڼ emitFile = mtex.tex.image.getFilename()DATA,ۼ if mtex.mapto == Texture.MapTo.REF:DATA0} refFile = mtex.tex.image.getFilename() DATA,(~ if mtex.mapto == Texture.MapTo.SPEC:DATA0~ specFile = mtex.tex.image.getFilename()DATA0W DATA  print m.getDiffuseShader()DATA( material_array.append(m.getName()) )DATA\H writeln('shad=' + str(m.rgbCol) + '|' +str(m.getRayMirr()) + '|' + str(m.getHardness()) +DATA8~ '|' + str(m.getAlpha()) +'|'+ str(m.getIOR()) +'|'+DATALW str(m.getSpec())+'|'+ str(m.getEmit())+'|' + str(m.getRef()) + '|' + DATADP str(m.getDiffuseShader()) +'|' + str(m.getSpecShader()) + '|' +DATA @ str(m.getSpecCol()) +'|' +DATA8P str(textureFile) + '|' + str(alphaFile) + '|' + cEDATAH str(normalFile) + '|' + str(emitFile)+'|' + str(refFile) + '|' + EEDATA str(specFile)DATAbDATAX` ) DATADATAHa~ #while looping through the scene, we will need to collect the maximumEDATAH #extents of the scene. These will be written to the head of the fileEDATA,8$ #after all mesh objects have been measureDATA min = [1e300,1e300,1e300];DATA ~a max = [-1e200,-1e300,-1e300];DATA֙ numObjects = 0DATADATA$ for obj in scene:oDATAPEDATA V if obj.getType() == 'Camera':DATA,$ cam_mat = obj.getMatrix('worldspace')DATA@% print 'Exporting camera'DATAX DATA$xE height = context.imageSizeY()REEDATA % width = context.imageSizeX()DATA % lens = obj.getData().lens DATA0& fov = lens; DATA({ writeln('cam=' + str(camType.val) + DATA`] '['+str(cam_mat[0][0]) + ',' + str(cam_mat[0][1]) + ',' + str(cam_mat[0][2]) + ']' + '|' +DATAdحs '['+str(cam_mat[1][0]) + ',' + str(cam_mat[1][1]) + ',' + str(cam_mat[1][2]) + ']' + '|' + DATAdt '['+str(-cam_mat[2][0]) + ',' + str(-cam_mat[2][1]) + ',' + str(-cam_mat[2][2]) + ']' + '|' +e DATA` '['+str(cam_mat[3][0]) + ',' + str(cam_mat[3][1]) + ',' + str(cam_mat[3][2]) + ']' + '|' +EDATA4Pf str(width) + ',' + str(height) + ']' + '|' +eeDATApx(| str(fov) + ',' + str(fov) + ']' + str(obj.getData().getClipStart()) + '|' + str(camRadiusSlider.val) + '|' DATA^ )EEDATA{ DATA f elif obj.getType() == 'Lamp':DATAg print 'Exporting Lamp' DATA Xg l=Lamp.Get(obj.getName())DATAg m = obj.getMatrix()DATAg if l.getType() == 0: DATA0@h #lamp=location,color,size,energy for a lampDATAd 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]) )EDATA elif l.getType() == 1:DATA, #sun=location,color,energy,directionDATA p print 'Exporting the sun'DATAyS DATA(`  vec = vector_by_matrix([0,0,1],m)EEDATA print str(vec)DATA(`Q  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ȟ REEDATAص}DATA  elif obj.getType() =='Surf':DATA8X material_index = material_array.index(obj.getName())DATA:ZDATA  containSphere(min,max,obj)DATA/DATA4 writeln('sphere=[' + str(obj.getLocation()) +rbiDATA<` ']|['+ str(obj.size[0]) + ']|['+ str(material_index))DATA DATA  elif obj.getType() == 'Mesh':DATAଌ DATA  #get standard mesh dataDATA0p m = NMesh.GetRawFromObject(obj.getName())DATA((l mat = obj.getMatrix('worldspace')EDATA(P EDATA0 #for every mesh, we dump a list of verticesDATAR numverts = len(m.verts)DATAHS numTris = 0 DATA(k print 'verts ' + str(numverts) EDATA,S writeln('numverts=' + str(numverts)) DATAQ  DATA S for i in range(numverts): DATA0@T x,y,z = point_by_matrix(m.verts[i].co,mat)DATA8T writeln('v=' + fmt(x) + '|' + fmt(y) +'|' + fmt(z))DATAH DATA% DATA<xQ  #iterate through faces - then split faces into trianglesDATAU faces = m.facesDATAJ} DATA ! #lastDATA DATAQ  lastUVTexture = 0 DATAh lastidx = 0;DATAOz DATA0Q  for fa in faces:DATAP DATA$e #each face may have an imageREEDATA xQ  if str(fa.image) == 'None':DATAx~ idx = -1EEDATA x else:pgDATA$c #is this image the last one?DATA$a if lastUVTexture == fa.image:)DATAc DATAQ  idx = lastidxDATA} EEDATA4Q  #different texture, have we seen it before?rteDATA R  try:pgDATA(C idx = baked_maps.index(fa.image)DATAxQ  #create new entry DATA except ValueError:DATA$P? baked_maps.append(fa.image) )DATA(h idx = baked_maps.index(fa.image)DATAd DATA  lastUVTexture = fa.imageDATAH lastidx = idx;DATAd DATA^ REEDATA if len(fa.v) == 3: DATAا numTris += 1EEDATA  numObjects+=1DATAO DATA h #check for uv coordinatesDATA4R #there has got to be a better way to do this20DATA if len(fa.uv) == 0:DATAR zers=[0,0];DATA PR fa.uv = [zers,zers,zers];DATA D gDATAN DATApI[ 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)]EDATAR contain(min,max,trans)DATAM EEDATAR writeln('t=' + DATAX str(fa.v[0].index) + '|' + str(fa.v[1].index) + '|' + str(fa.v[2].index) + '|' + DATAH`q str(material_array.index(m.materials[fa.mat].getName())) + '|' +EEDATA 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]) + '|' + DATA str(idx)EEDATA`M )DATA(M DATA xQ  else:pgDATA8R numTris += 2DATAR numObjects+=2DATAK EEDATA  #check for uv coordinatesDATA48 #there has got to be a better way to do thisghDATA if len(fa.uv) == 0:DATA zers=[0,0];DATA(Џ fa.uv = [zers,zers,zers,zers]; DATAJ DATA  DATA 0  try:pgDATAp0y 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 8 contain(min,max,trans)DATApJDATA writeln('t=' + DATAX str(fa.v[0].index) + '|' + str(fa.v[1].index) + '|' + str(fa.v[2].index) + '|' + DATAHh str(material_array.index(m.materials[fa.mat].getName())) + '|' +EDATA  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]) + '|' + DATA^} str(idx)EDATAI )DATA DATApj 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)DATA= DATA8_ writeln('t=' + DATAX* 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())) + '|' +EDATAh\ 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]) + '|' + DATA  str(idx)EDATA )DATAج DATA8 DATAPp| except:REEDATA4_ print 'caught quad exception on ' + str(fa) .DATA-_DATA DATA1u DATA<_ #if the background is set pass that in, else pass coloramDATAX` if Background.val:DATA0` writeln('bgimage=' + str(BackgroundText.val))DATAX1u else:EDATA,a writeln('bgcolor=' + str(w[0].getHor()))DATA 1u DATA  #write out the baked texturesDATA0uDATAX for tex in baked_maps:DATA$xh s.write('b=' + str(tex) + '\n') EDATA0uDATA #done with the scene DATA ~ f.closepgDATA H ~ s.closejpgDATAx0u DATAHXdef render():EEDATA  spawnPath = path + fileNameDATAD  os.spawnl(os.P_NOWAIT,executable,'foo ' + path + ' ' + fileName)DATAhP #os.spawnl(os.P_NOWAIT,"/home/sheemwaza/base/optimized/src/base","monkey","/home/sheemwaza/out.mra")EEDATATy #retcode=Popen(["/home/sheemwaza/base/src/base","/home/sheemwaza/out.mra"]).pid#DATA print 'no op'EDATA@0uDATA8mSampleSlider = Create(0)DATAcamRadiusSlider = Create(1)DATAimageSamples = Create(1)DATAwshadowSamples = Create(4)DATAPwmuonSlider = Create(0)DATAwMuon = Create(0)DATA4wBackgroundText = Create('using background color')m.DATAHxBackground = Create(0)DATAxnumSample = Create(4)DATAxhemiToggle = Create(0)DATAxcamType = Create(1)DATAiCacheToggle = Create(0)DATAsamplerWindow = Create(1)DATA`GIWindow = Create(0)WDATApartOutput = Create(0)DATAbounce = Create(0) DATA8filterWidth = Create(0)DATAjitter = Create(0)DATAsbackground = Create(1)DATA0uDATAHmaterialsDrop = Create(0)DATAH% DATA (def draw():DATA8 global mSampleSlider, muonSlider, Muon,BackgroundTextEDATALW global Background, numSample, hemiToggle, bounce, ExitButton, iCacheToggleDATA( h global Button2, camType, exportButtonEDATA$xg global imageSamples, shadowSamplesDATA global camRadiusSliderDATA H global samplerWindow, GIWindowDATA global partOutputDATA global filterWidth, jitterDATA global sbackground DATA% DATA$DATAX$DATA$XM glClearColor(1.0, 1.0, 1.0, 0.0)seDATA ` glClear(GL_COLOR_BUFFER_BIT)DATA $R DATA leftMargin = 10;DATA bottomMargin = 15;DATA@ columnWidth = 170;DATA, buttonWidth = columnWidth - leftMargin;DATA columnHeight = 35;DATA0 buttonHeight = columnHeight - bottomMargin;DATA#s DATA 0 #always display these buttonsDATA", DATAD`q~ Button('Exit', 3, leftMargin, 5, buttonWidth, buttonHeight, '')1DATAPf Button('Export', 1, leftMargin+columnWidth,5, buttonWidth, buttonHeight, '')EEDATAT{ Button('Render', 2, leftMargin+ 2*columnWidth, 5, buttonWidth, buttonHeight, '')#DATA  = DATA(b 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.')EDATAE imageSamples = Slider('Image', 11, leftMargin , 6*columnHeight, buttonWidth, buttonHeight, imageSamples.val, 1, 20, imageSamples.val,'')enDATAs shadowSamples = Slider('Shadow', 12, leftMargin + columnWidth, 6*columnHeight, buttonWidth, buttonHeight, shadowSamples.val, 1, 20, 1,'') DATAhDATAS DATA8 #these are the GI settingsDATAxY| #Background = Toggle('Set Background', 7,leftMargin, 4*columnHeight, buttonWidth, buttonHeight, Background.val, '')REEDATApY DATAY DATA 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')DATA@] |DATAx]dDATA( numSample = Slider('Samples', 6, leftMargin + columnWidth, 2*columnHeight, buttonWidth, buttonHeight,numSample.val, 1, 64, 4, 'The number of hemisphere samples.')DATA]bleDATAj bounce = Slider('Bounce', 0, leftMargin + 2 * columnWidth, 2*columnHeight, buttonWidth, buttonHeight, bounce.val, 1, 5, 0,'') DATA^ 1DATA if Background.val == 1:DATAhS BackgroundText = String('', 6, leftMargin + columnWidth, 4*columnHeight, buttonWidth, buttonHeight, BackgroundText.val, 512, '')DATA` eDATA if camType.val == 4:EEDATA- camRadiusSlider = Slider('Radius', 0, leftMargin + columnWidth, 5*columnHeight, buttonWidth, buttonHeight, camRadiusSlider.val, 1, 20, 1,'')DATA0a_maDATAa DATA def setBackground(fname):DATA print fnameREEDATAp BackgroundText.val=fnameDATAcralDATAdef event(evt, val):DATA(a if (evt== QKEY and not val): Exit()EDATAc = DATAkbdef bevent(evt):e(4DATAeounDATA@e2: DATA 8lb if evt == 7: #setBackgroundDATA<lb Blender.Window.FileSelector(setBackground,'OPEN FILE')aphDATAhfvalDATAlb elif evt == 10:+ DATAf 50DATA@mb print 'Materials'DATAmb Blender.Redraw()DATAg DATAmb elif evt == 3: #ExitButtonDATA H9 Exit()pgDATAgREEDATA elif evt == 2: #Button2DATA m export()DATA H6 render()DATA(i:DATA h elif evt == 1: #exportButtonDATA p export()DATAhj DATAj else:DATA Blender.Redraw() DATAxk blDATA Register(draw, event, bevent)TXxopTr[TXTextPPPPSDATAPPlEERFDATAPlTXxTxopTXmuxport.py|-{0VADATA|c:\muxport.pyEEDATApODATA(sm FREEDATA(Q ODATA(X-FREEDATA-FREEDATAX a FREEDATAX-FREEDATAX@.FREEDATA0.*n,DATA0x.DATAx50lDATA55x FREEDATA5065mFREEDATA06x65H{FREEDATAx6606nFREEDATA67x6@ 3R DATA7P76 G%R DATAP777 1R DATA7XP7 dR DATAX7H FREEDATAX FREEDATA0觺 FREEDATA0xnFREEDATAx07vFREEDATAx0 R DATAPWFREEDATAP@/ Hond DATA@/ / PEKFREEDATA/ / @/ O|RFREEDATA/ 0 / oFREEDATA0 `0 / XpFREEDATA`0 0 0 pFREEDATA0 0 `0 Q FREEDATA0 81 0 HWFREEDATA81 [Z0 W(FREEDATA[ZP[Z81 W(Q DATAP[Z[Z[Z0H%1Q DATA[Z[ZP[ZoFREEDATA[Z(\Z[ZXWFREEDATA(\Zp\Z[ZWFREEDATAp\Z\Z(\ZqFREEDATA\Z]Zp\ZWFREEDATA]ZC\ZEFREEDATACD]Z8W=FREEDATADPDC(Q =FREEDATAPDDDQ d DATADDPDQ =d1 DATAD(EDXQ 9FREEDATA(EpEDQ :FREEDATApEE(EqFREEDATAE/[pE8Q FREEDATA/[/[EQ FREEDATA/[0[/[`{FREEDATA0[X0[/[{FREEDATAX0[0[0[{FREEDATA0[0[X0[8|FREEDATA0[01[0[|nd DATA01[x1[0[|DATAx1[~01[}FREEDATA~~x1[X}FREEDATA~~~}FREEDATA~X~~ FREEDATAX~~~` FREEDATA~~X~ FREEDATA~0 ~~\#FREEDATA0 ~x ~~ FREEDATAx ~(t0 ~ ~!FREEDATA(tptx ~@ FREEDATAptt(tUu!FREEDATAttpt FREEDATAtHttZ!FREEDATAHttt FREEDATAttHt!FREEDATAt tt0 FREEDATA tht(!FREEDATAh tFREEDATAht!FREEDATA@0FREEDATA@@wFREEDATA@! FREEDATA FREEDATA`DATA`xZU|$FREEDATAxZZ`ЊFREEDATAZZxZFREEDATAZPZZ DATAPZZZ(6Z1DATAZZPZFREEDATAZ(ZZpFREEDATA(ZpZZFREEDATApZ z(Z FREEDATA z8 zpZ1FREEDATA8 z z z#|FREEDATA z z8 z FREEDATA z z z0_|FREEDATA zX z z{DATAX z z z8{dDATA z zX z{FREEDATA zgR z{DATAgR hR zx|FREEDATAhR HhR gR {FREEDATAHhR hR hR `{FREEDATAhR hR HhR {FREEDATAhR  iR hR {FREEDATA iR hiR hR 8{FREEDATAhiR iR iR PFREEDATAiR hiR 7v dDATA(iR FREEDATA(pFREEDATAp(0hDATAp,FREEDATAHh9'DATAHFREEDATAH(( DATA*0DATA*+Pc*DATA+P+*c0DATAP+++d(DATA++P+xd2DATA+(,+d)DATA(,p,+@e-DATAp,,(,e(DATA,(Wp,z/DATA(WpW,xz)DATApWW(Wz-DATAWWpW#|DATAWHWW8zDATAHWWWL%DATAWWHWU[DATAW WWz7DATA WW^HDATA( WT CDATA(pzFREEDATAp(@z4FREEDATApJEDATAHXzDATAHDATAHp|DATAHARX"FREEDATAHARAR@M!FREEDATAARARHAR~y%FREEDATAAR BRARz(DATA BRhBRARS^DATAhBRBR BR |DATABRBRhBR!|DATABR@CRBRzDATA@CRBR8B DATA@CR@JGDATA8FZDATA8$|FREEDATAȮ8Pz/DATAȮz DATAXȮz/FREEDATAX&|FREEDATAX`zghtDATA  FREEDATA h0"|ry DATAh JFFREEDATAhJFDATA@ *FREEDATA@zps:DATA@x e DATAH0)DATA xDATA hȁ FREEDATAh `'|FREEDATAh FREEDATA@` (FREEDATA@ FREEDATA@%|FREEDATAпi FREEDATA FREEDATA` extDATAPpFRDATAPпO 'FREEDATAP!^FREEDATA(bbFREEDATA(p.[a(1)DATAp(x ^FREEDATApFR0(0)DATAhVoFREEDATAhPh@|0)DATAPhhh|DATAhhPh GRFREEDATAh(ihpGR0)DATA(ipihGR DATApii(iHRFREEDATAijpiXHRFREEDATAjHjiHR/FREEDATAHj+~jcFREEDATA+~+~Hjd()EDATA+~,~+~8e(FREEDATA,~X,~+~eDATAX,~,~,~|;DATA,~,~X,~xk%REEDATA,~0-~,~eFREEDATA0-~x-~,~.FREEDATAx-~-~0-~`$|FREEDATA-~x-~'|DATA-~0fDATA(f7FREEDATA(pDEEDATAp(fFREEDATAp xREEDATAH8g0FREEDATAHW;lenDATA؟H_wFREEDATA؟PaW)DATAPaa؟P7S  DATAaaPaPWDATAa(aaW,)EEDATA(apaa$FREEDATApaa(a7S DATAaapaW.DATAaHaa`WDATAHaaaWDATAa=Ha@Q$DATA=P=a@ /DATAP=== DATA==P=Pm^cDATA=(>=WDATA(>p>= ~%DATAp>>(>`LDATA>?p> DATA?H?> .DATAH??'DATA8H?'DATA80Q 'DATAȉ8yDATAȉS DATAXȉ(PDATAXP ;DATAX DATA0 DATA09PDATA9X90P DATAX999 DATA99X9LDATA90:9QODATA0:x:9 MODATAx::0:pM1^ODATA:;x:MODATA;P;:(NODATAP;`;pNODATA`X`P;Q ODATAX```hrHODATA``X`JnODATA`0a`NWODATA0axa`PguODATAxaa0a !ODATAabxaO/ODATAbPba 9#ODATAPbbXMODATA୻Pb#ODATA୻(hyODATA(p୻ȊRODATAp(\ ?ODATAp ODATAHRODATAH8 DATAدHDATAد( DATA(pد 1DATAp(8 DATAp DATAH(f$DATAHcDATAؑHȮ DATAؑ ] DATA hؑJoDATAhf  DATAffh!"ventDATAf8gf~0xporDATA8ggfP~:und DATAgg8gjNonWiDATAghgpW#undTDATAhXhgh ght,DATAXhhhes',DATAhhXhoOverDATAhXuh~se aDATAXuuh`B"ht, DATAuuXu~0DATAu0vux~: DATA0vxvuHdNdDATAxvv0vR #d1DATAvwxvM|FREEDATAwPwvWFREEDATAPwww  FREEDATAwpvGPw~2FREEDATApvGvGwY FREEDATAvGwGpvGQ=FREEDATAwGHwGvGP~FREEDATAHwGwGwGxQ(FREEDATAwGwGHwGسQFREEDATAwG xGwG?%x,trDATA xGhxGwG Q ))DATAhxGxG xGpY ,maxDATAxG=hxG()) DATA=H=xGhQ8ShadDATAH===شQ8.blDATA==H= Q/DATA= >=  DATA >h>=X0*DATAh>> >Y DATA>>h>`Y DATA>@?>0;DATA@?8>_ DATA8@?v~EDATAȶ8o} DATAȶY DATAXȶQDATAXRDATAXAQ DATA0Y DATA0xHqb DATAxx0(1DATAxxplADATAxeDATAP;vPDATAP8^DATAPH DATA(x1DATA(p1DATAp(2DATArph2DATArr2DATArsr  DATAsXsr  1n.blDATAXsssp  DATAssXs  DATAs0ts DATA0txtsH DATAxtt0t DATAtеxt DATAеt0 DATA`е <DATA`h<DATA`<DATA8<DATA8@=DATAȷ8DATAȷ=DATA [ȷY DATA [ [8 DATA [![ [=6DATA![`![ [XKDATA`![![![&DATA![![`![@>#DATA![8"[![>DATA8"["[![8tzDATA"["[8"[tzDATA"[e"[tzDATAe0f"[ uzDATA0fxfeDATAxff0fP&DATAfgxfH%DATAgPgfhuz!DATAPggguzDATAggPgx{DATAg(hgvzDATA(hgXvzDATAо(hvzDATAоx(DATA`оإDATA` ,DATA`zGDATA8DATA8yGDATA8@DATA0@MDATA0xxQDATAx0>DATAx DATAPЦDATAPfQ DATAPxDATA(@DATA(pDATApER (7StDATAER ER ph/fDATAER FR ER DATAFR `FR ER xeDATA`FR FR FR JDATAFR FR `FR p~DATAFR 8GR FR P}DATA8GR GR FR 8DATAGR GR 8GR HDATAGR ({GR HDATA({p{GR DATAp{{({ |DATA{{p{IDATA{H{{fQ DATAH{{{gQ DATA{{H{GDATA{ {{W|DATA {h{{gQ DATAh{  {_ DATA hh{(hQ DATAh  X DATAhxhQ DATA@2$DATA@( DATA@83DATA`YDATA` DATA`(3DATA(p`38DATAp(0DATAp@4DATAH0DATAH4DATAH4DATA `i DATA h5DATAhF 0.DATAF Gh tDATA GhGFh aDATAhGG G8 DATAGGhGZ DATAG@HGXrDATA@HHG aDATAHH@Ho DATAHIHoDATAI,HbnDATA,,IaDATA,-,cDATA-,PaDATApimport BlenderEDATA smimport osucDATAQ import structEEDATAX-from Blender import *ODATA-from Blender import Lamp()[DATA$ afrom Blender.Scene import RenderREEDATA-from Blender.Draw import *tDATA@.from Blender.BGL import *):DATA .from Blender import RegistryREEDATA.from Blender import TextoDATAlDATA from math import *DATAmDATA H{#globalsendDATAnDATA4@ #get the root directory that the current file is inDATA( G#we'll write the muray files there. RDATA path = Blender.Get('filename')EDATA tokens = path.split('\\')DATAH fileName = tokens.pop();DATA file = fileName.split('.')DATA觺 fileName = file[0]DATAnDATA 7vpath =''DATA0 for i in tokens:DATAW path = path + i + '\\' meDATAHoDATALEexecutable = 'c:/Documents and Settings/Matt/Desktop/New Folder/muray.exe' DATATO|renderMonkeyPath = '/mnt/aqua/sheemwaza/public_html/matt/widgets/renderMonkey.png'DATAoDATAXpDATAp DATAQdef export():EEDATAHW #open a file to export to DATA,W f = open(path + fileName + '.mra','wb')me(DATA,W b = open(path + fileName + '.mrb','wb')DATA(0H f.write('muRay scene description\n')RDATAo f.write(' '))DATAXW def writeln(out):DATAW f.write(out + '\n')EEDATAqODATAW def point_by_matrix(p, m):DATAH return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0] + m[3][0],DATA@8W p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1] + m[3][1],EEDATA@(Q  p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2] + m[3][2]]EEDATA Q  def vector_by_matrix(p, m):DATA@Q  return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0],pDATA<XQ  p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1],DATA<Q  p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2]] DATAq ODATA 8Q  def contain(min, max, point):DATAQ  for v in point:DATA`{ if v[0] < min[0]:DATA{ min[0] = v[0]DATA{ if v[1] < min[1]:REEDATA8| min[1] = v[1]ndDATA| if v[2] < min[2]:d1DATA| min[2] = v[2]DATA} if v[0] > max[0]:REEDATAX} max[0] = v[0]DATA} if v[1] > max[1]:REEDATA  max[1] = v[1]EEDATA`  if v[2] > max[2]:DATA  max[2] = v[2] REEDATA$\ def containSphere(min,max,sphere):DATA  radius = sphere.getSize()[0]EDATA$ ~ if min[0] > sphere.LocX-radius: DATA @  min[0] = sphere.LocX-radiusEDATA$Uu if min[1] > sphere.LocY-radius:DATA  min[1] = sphere.LocY-radiusEDATA$Z if min[2] > sphere.LocZ-radius:DATA  min[2] = sphere.LocZ-radiusDATA$ if max[0] < sphere.LocX+radius:EEDATA 0  max[0] = sphere.LocX+radiusDATA$( if max[1] < sphere.LocY+radius:EEDATA  max[1] = sphere.LocY+radiusEDATA$t if max[2] < sphere.LocZ+radius:DATA 0 max[2] = sphere.LocZ+radiusDATA@w DATA! ODATA  #Grab the scenend1DATA scn = Scene.GetCurrent()DATA(U| context = scn.getRenderingContext()REEDATAЊ obj = Blender.Object.Get()DATA ODATA  #export general scene dataDATA(6ZDATADATAp #background colorDATA w=Blender.World.Get()EDATA DATA4 scene = Blender.Scene.GetCurrent().getChildren()DATA#|DATA writeln('')REEDATA0_| DoDATA{ #create a materials listDATA8{ material_array =[]DATA{ materials = Material.get()DATA{ for m in materials:DATAx| lDATA{ refFile = "NULL";DATA`{ textureFile = "NULL";DATA{ alphaFile = "NULL";EEDATA{ normalFile = "NULL";DATA8{ emitFile = "NULL";REEDATAP specFile = "NULL";REEDATA 7v REEDATA  for mtex in m.getTextures():EDATA if mtex: DATA 0 #check if there is an imageDATA0 if mtex.tex.type == Texture.Types.IMAGE: DATA(h9 print mtex.tex.image.getFilename()DATA #map to colorDATA,( if mtex.mapto == Texture.MapTo.COL:DATA4 textureFile = mtex.tex.image.getFilename() DATA,Pc if mtex.mapto == Texture.MapTo.ALPHA:(DATA4c alphaFile = mtex.tex.image.getFilename() DATA,d if mtex.mapto == Texture.MapTo.NOR:DATA4xd normalFile = mtex.tex.image.getFilename() DATA,d if mtex.mapto == Texture.MapTo.EMIT:DATA0@e emitFile = mtex.tex.image.getFilename()EEDATA,e if mtex.mapto == Texture.MapTo.REF:DATA0z refFile = mtex.tex.image.getFilename() DATA,xz if mtex.mapto == Texture.MapTo.SPEC:ODATA0z specFile = mtex.tex.image.getFilename()EEDATA#| uDATA 8z print m.getDiffuseShader()1EDATA(L material_array.append(m.getName()) EDATA\U writeln('shad=' + str(m.rgbCol) + '|' +str(m.getRayMirr()) + '|' + str(m.getHardness()) +DATA8z '|' + str(m.getAlpha()) +'|'+ str(m.getIOR()) +'|'+DATAL^ str(m.getSpec())+'|'+ str(m.getEmit())+'|' + str(m.getRef()) + '|' +' DATADT  str(m.getDiffuseShader()) +'|' + str(m.getSpecShader()) + '|' +DATA z str(m.getSpecCol()) +'|' +DATA8@z str(textureFile) + '|' + str(alphaFile) + '|' + REEDATAHJ str(normalFile) + '|' + str(emitFile)+'|' + str(refFile) + '|' + )DATAXz str(specFile)DATAuilDATAp| )dDATA$X #export binary material header rDATA$@M #b.write(struct.pack("B",0x59))rtDATA(~y #b.write(struct.pack("iiiiddddddf",EDATA,z # m.rgbcol[0],m.rgbcol[1],m.rgbcol[2],DATA`S # m.getRayMirr(),m.getHardness(),m.getAlpha(),m.getIOR(),m.getSpec(),m.getEmit(),m.getRef(),EDATA |istDATA!|rcDATA z #export the hemilight optionsDATA$8B b.write(struct.pack("=B",0x60))t()DATAH@J b.write(struct.pack("=iii",numSample.val,iCacheToggle.val,bounce.val))DATA\F writeln('hemi=|'+str(numSample.val) + '|' + str(iCacheToggle.val) +'|'+ str(bounce.val) )(DATA$| c.DATA0Pz #export whether to use the rendermonkey optionDATAz if partOutput.val == 1:DATA0z writeln('renderMonkey=' + renderMonkeyPath) DATA&| DoDATA `z #export the sampling optionspDATA  writeln('sample=|'+str(imageSamples.val ) + '|' + str(shadowSamples.val) + '|' + str(filterWidth.val) + '|' + str(jitter.val))DATA0"|UIDDATAHJ #while looping through the scene, we will need to collect the maximumEDATAHJ #extents of the scene. These will be written to the head of the fileDATA,  #after all mesh objects have been measureDATAz min = [1e300,1e300,1e300];DATA x  max = [-1e200,-1e300,-1e300];DATAH numObjects = 0DATAxrisDATAȁ  for obj in scene:DATA`'|eplDATA   if obj.getType() == 'Camera':DATA,`  cam_mat = obj.getMatrix('worldspace')DATA  print 'Exporting camera'DATA%|absDATA$пi height = context.imageSizeY()REEDATA   width = context.imageSizeX()DATA `  lens = obj.getData().lens DATApFR fov = lens; DATA(пO  writeln('cam=' + str(camType.val) + DATA`! '['+str(cam_mat[0][0]) + ',' + str(cam_mat[0][1]) + ',' + str(cam_mat[0][2]) + ']' + '|' +EDATAdb '['+str(cam_mat[1][0]) + ',' + str(cam_mat[1][1]) + ',' + str(cam_mat[1][2]) + ']' + '|' + "DATAd.[ '['+str(-cam_mat[2][0]) + ',' + str(-cam_mat[2][1]) + ',' + str(-cam_mat[2][2]) + ']' + '|' +rDATA`x  '['+str(cam_mat[3][0]) + ',' + str(cam_mat[3][1]) + ',' + str(cam_mat[3][2]) + ']' + '|' +DATA4FR str(width) + ',' + str(height) + ']' + '|' +DATApV str(fov) + ',' + str(fov) + ']' + str(obj.getData().getClipStart()) + '|' + str(camRadiusSlider.val) + '|' DATA@| )DATA| goDATA GR elif obj.getType() == 'Lamp':DATApGR print 'Exporting Lamp' DATA GR l=Lamp.Get(obj.getName())DATAHR m = obj.getMatrix()EDATAXHR if l.getType() == 0: DATA0HR #lamp=location,color,size,energy for a lampDATAc 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]) )DATAd elif l.getType() == 1:DATA,8e #sun=location,color,energy,directionDATA e print 'Exporting the sun'DATA| DATA(xk vec = vector_by_matrix([0,0,1],m)EDATAe print str(vec)DATA. 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`$| 5DATA'|oooDATA 0f elif obj.getType() =='Surf':DATA8f material_index = material_array.index(obj.getName())DATADuRaDATA f containSphere(min,max,obj)DATA xystDATA48g writeln('sphere=[' + str(obj.getLocation()) +DATA<W ']|['+ str(obj.size[0]) + ']|['+ str(material_index))DATA_w trDATA W elif obj.getType() == 'Mesh':DATAP7S  DATAPW #get standard mesh dataDATA0W m = NMesh.GetRawFromObject(obj.getName())DATA( mat = obj.getMatrix('worldspace')EDATA7S  eDATA0W #for every mesh, we dump a list of verticesDATA`W numverts = len(m.verts)DATAW numTris = 0 DATA(@Q print 'verts ' + str(numverts) EDATA0@  b.write(struct.pack(" global imageSamples, shadowSamplesDATA> global camRadiusSliderDATA 8tz global samplerWindow, GIWindowDATAtz global partOutputEDATAtz global filterWidth, jitterDATA uz global sbackground DATA DATAP&DATAH%DATA$huz glClearColor(1.0, 1.0, 1.0, 0.0)EEDATA uz glClear(GL_COLOR_BUFFER_BIT)DATAx{DATAvz leftMargin = 10;EEDATAXvz bottomMargin = 15;DATAvz columnWidth = 170;DATA,x buttonWidth = columnWidth - leftMargin;DATAإ columnHeight = 35;DATA0  buttonHeight = columnHeight - bottomMargin;DATAzGDATA  #always display these buttonsDATAyGDATAD Button('Exit', 3, leftMargin, 5, buttonWidth, buttonHeight, '')e2DATAP@ Button('Export', 1, leftMargin+columnWidth,5, buttonWidth, buttonHeight, '')EEDATATx Button('Render', 2, leftMargin+ 2*columnWidth, 5, buttonWidth, buttonHeight, '')DATA> 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.')DATAЦ imageSamples = Slider('Image', 11, leftMargin , 6*columnHeight, buttonWidth, buttonHeight, imageSamples.val, 1, 20, imageSamples.val,'')DATAfQ  shadowSamples = Slider('Shadow', 12, leftMargin + columnWidth, 6*columnHeight, buttonWidth, buttonHeight, shadowSamples.val, 1, 20, 1,'') DATAxDATA@ DATA #these are the GI settingsDATAx7S #Background = Toggle('Set Background', 7,leftMargin, 4*columnHeight, buttonWidth, buttonHeight, Background.val, '')DATAh/f DATA  DATAxe 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')DATAJ DATAp~DATAP} numSample = Slider('Samples', 6, leftMargin + columnWidth, 2*columnHeight, buttonWidth, buttonHeight,numSample.val, 1, 64, 4, 'The number of hemisphere samples.')DATA8DATAH bounce = Slider('Bounce', 0, leftMargin + 2 * columnWidth, 2*columnHeight, buttonWidth, buttonHeight, bounce.val, 1, 5, 0,'') DATAH DATA if Background.val == 1:DATA | BackgroundText = String('', 6, leftMargin + columnWidth, 4*columnHeight, buttonWidth, buttonHeight, BackgroundText.val, 512, '')DATAI DATAfQ  if camType.val == 4:DATAgQ  camRadiusSlider = Slider('Radius', 0, leftMargin + columnWidth, 5*columnHeight, buttonWidth, buttonHeight, camRadiusSlider.val, 1, 20, 1,'')EDATAGDATAW| DATAgQ def setBackground(fname):DATA_ print fnameREEDATA(hQ  BackgroundText.val=fnameDATA X DATAxhQ def event(evt, val):DATA(2 if (evt== QKEY and not val): Exit()EDATA( DATA83def bevent(evt):REEDATA`YDATA DATA 3 if evt == 7: #setBackgroundDATA<3 Blender.Window.FileSelector(setBackground,'OPEN FILE')OMDATA0DATA@4 elif evt == 10:REEDATA0 DATA4 print 'Materials'DATA4 Blender.Redraw()EDATA`i  DATA5 elif evt == 3: #ExitButtonDATA 0. Exit()gIDATA tDATAh a elif evt == 2: #Button2DATA 8 export()dDATA Z render()DATAXrDATA a elif evt == 1: #exportButtonDATA o export()eDATAo REEDATAbn else:DATAa Blender.Redraw()EDATAc DATA PaRegister(draw, event, bevent)TXxxTTXcameraSet.pyawaPh{h{ `DATA ac:\SGWeb\camFormat\cameraSet.pyDATAa8a[DATA8aaa]nDATAaa8aFREEDATAa{ax~?ODATA{H{aODATAH{{{1R `ODATA{{H{hoODATA{ {{dDATA {h{{(2R DATAh{{ {Po DATA{{h{qDATA{@ {{dDATA@ {` {p2R DATA`  @ {2R %DATA  ` ~DATA 8  0]DATA8   3R DATA  8 `3R DATA   3R DATA X  4R DATAX   P4R DATA  xQX @g}ventDATA xQhxQ ;mxporDATAhxQxQ xQR und DATAxQxQhxQhzonWiDATAxQ@yQxQzes',DATA@yQyQxQzOverDATAyQyQ@yQ 5DATAyQzQyQHz% DATAzQ`zQyQz!FREEDATA`zQR zQsFREEDATAR @R `zQzFREEDATA@R R R @zDATAR R @R zFREEDATAR R R z(DATAR `R R FREEDATA`R R R `,FREEDATAR R `R (0)DATAR 8R R ȺEFREEDATA8R ȀR ^q0)DATAȀ8R X}DATAXȀFREEDATAX0)DATA聼Xm)DATA聼040)DATA0x聼hPFREEDATAx0c0)DATAxHqke DATARiFREEDATARR~FREEDATAR8SRFREEDATA8SSRFREEDATASS8SFREEDATASTSp~FREEDATATXTS FREEDATAXTTTq~FREEDATATTXTX3: DATAT GTorFREEDATA GhGT`b~FREEDATAhGG G)DATAGGhG()DATAG@GG8FREEDATA@GGGFREEDATAGжG@GFREEDATAжGGGhc~";DATAG`GжGȊ;DATA`G8\GL";DATA8\8\`Gh}T FREEDATA8\9\8\`()DATA9\X9\8\FREEDATAX9\9\9\@5DATA9\9\X9\DATA9\0:\9\HFREEDATA0:\x:\9\DATAx:\:\0:\،FREEDATA:\x:\ZODATA`:\[ FREEDATA`(Z)ODATA`xZFREEDATA8ua FREEDATA8Z*n,DATAȱ8ZEERFDATAȱn DATAXȱXZDATAXTZDATATPTXtDATAPTTT!DATATTPTZFREEDATAT(TT)FREEDATA(TpTTxR FREEDATApTT(THZFREEDATATTpT@hbFREEDATATHTThbFREEDATAHT ThbFREEDATA hHT ibFREEDATAh pibFREEDATAhib jitDATA@jbw, GDATA@Pjb= 1:DATAа@jbShadDATAаhGocZ+DATA`аGort DATA`xGDATAx`PGDATAxGDATAPGDATAP0GDATAPR DATA(GDATA(pȲGDATAp(*DATAp8DATAXDATA0,DATA0xw~DATAx0 DATAxDATAPnDATAPP"DATA[import BlenderEDATA] llDATAfrom Blender import *DATAx~risDATAfrom Blender import Drawne%DATA1R from Blender.BGL import *e%DATAhoabsDATAdogoDATA(2R from math import *DATA Po DATAqixgDATAdurfDATA p2R scene = Scene.getCurrent(); DATA(2R context = scene.getRenderingContext()EEDATA~rafDATA0] b2DATA3R size = Draw.Create(800)DATA`3R aspect = Draw.Create(1.5)DATA3R camType = Draw.Create(0)DATA4R monType = Draw.Create(1)DATAP4R portrait = Draw.Create(0)DATA@g} DoDATA;mDATA Rdef draw():DATAhz global size, aspectndTDATAz global camType, monTypeDATAz global portraitDATA 5DATA(Hz BGL.glClearColor(1.0, 1.0, 1.0, 0.0)RDATA$z BGL.glClear(GL_COLOR_BUFFER_BIT)k(DATAsDATAz leftMargin = 10;DATA@z bottomMargin = 15;DATAz columnWidth = 170;DATA,z buttonWidth = columnWidth - leftMargin;DATA columnHeight = 35;DATA0` buttonHeight = columnHeight - bottomMargin;DATADATAHȺ Draw.Button('Exit', 2, leftMargin, 5, buttonWidth, buttonHeight, '')EEDATAt^ portrait = Draw.Toggle('Portrait', 7, leftMargin , 4*columnHeight, buttonWidth, buttonHeight, portrait.val, '')eDATAX}DATA size = Draw.Slider('Width: ', 3, leftMargin , 2*columnHeight, buttonWidth, buttonHeight, size.val, 1, 3500, 1,'Horizontal width of image in pixels') EDATA aspect = Draw.Slider('Aspect: ', 4, leftMargin + columnWidth , 2*columnHeight, buttonWidth, buttonHeight, aspect.val, 1, 5, 1,'Aspect ratio of camera') 'DATAmDATA4 cameraList = "Camera %t| 35mm (Still Camera) %x0| 35mm (Theatrical) %x1| IMAX %x2| Super16 %x3| Digital SLR %x4| Standard Monitor %x5| HDTV (16:9) %x6| CinemaScope %x7| 220 (Square) %x8|"DATAhP camType = Draw.Menu(cameraList, 5, leftMargin + columnWidth , 3*columnHeight, buttonWidth, buttonHeight , camType.val, 'Default camera types' ) DATAc DATAlHq monitorList = "Monitors %t| 640 %x0| 800 %x1| 1024 %x2| 1152 %x4| 1280 %x3| 1440 %x5| 1600 %x6| 1920 %x7|"DATAi monType = Draw.Menu(monitorList, 6, leftMargin , 3*columnHeight, buttonWidth, buttonHeight , monType.val, 'Default camera types' )REEDATA~DATAdef bevent(evt):l()DATADATA if evt == 2: #ExitButtonDATAp~ DATA Draw.Exit()EEDATAq~ DATAX elif evt == 5: #Button2DATAorDATA`b~ #35mmDATA if camType.val == 0:EDATA aspect.val = 1.5DATA8 #Theatrical widescreen DATA elif camType.val == 1:DATA aspect.val = 1.85DATAhc~ #IMAXDATAȊ elif camType.val == 2:DATA aspect.val = 1.43REEDATA h}T #Super 16DATA` elif camType.val == 3:DATA aspect.val = 1.66 DATA@5 #Digital SLREDATA elif camType.val == 4:DATAH aspect.val = 1.504DATA #Standard MonitorDATA، elif camType.val == 5:DATAZ aspect.val = 1.25REEDATA[ #WidescreenEEDATA(Z elif camType.val == 6:DATAxZ aspect.val = 1.78REEDATAua #WidescreenEEDATAZ elif camType.val == 7:DATAZ aspect.val = 2.35rDATA n #SquareblDATAXZ elif camType.val == 8:DATAZ aspect.val = 1.0 DATAt DATA! elif evt == 3:DATAZ size.val == size.val DATA) elif evt == 6:DATAxR  DATAHZ if monType.val == 0:EDATA@hb size.val = 640TDATAhb elif monType.val == 1:DATAhb size.val = 800 EEDATA ib elif monType.val == 2:DATApib size.val = 1024 REEDATAib elif monType.val == 3:DATAjb size.val = 1280tDATAPjb elif monType.val == 4:DATAjb size.val = 1152 xtuDATAhG elif monType.val == 5:DATAG size.val = 1440(DATAG elif monType.val == 6:DATAPG size.val = 1600DATAG elif monType.val == 7:DATAG size.val = 1920 DATA 0G #implement the camera changesDATAR  DATAG if portrait.val ==0:DATAȲG context.sizeX = size.valDATA, context.sizeY = int(size.val/aspect.val)DATA8 else:EDATAX context.sizeY = size.valDATA0 context.sizeX = int(size.val/aspect.val) DATAw~ DATA  DATA Blender.Redraw() DATAn DATA$PDraw.Register(draw, event, bevent)OBH0}pu\OBCameraamera.001 q%:Nl_A???&L?*<:>?Д*&}=>[2>{w?1#H9(>%:Nl_A??????{q1?βsh ?~A57S5˵??y1 2y1?Y2?^2?4FK?OBd??)d??>)d?u=?????OBHu\ps0}OBCube.002a,>7l?Gh=Gh=Zz?Gh=Gh=Zz?,>7l???????74Jh?Mצ?W4.%?;RA;,}P@PSD@|?}4MLj>#$pA?DOBd?? #=?>=??????@???XǚHDATA OBHsp|u\OBLamp Z>AA???P:? _? >4=az=?b^>6R?>AA??????31o?Vkݘ1? 4*3<?Ч>_@U>P)Q?Md`ښ=^v?DOBd8? #=?>=??????@???OBH|pp|sOBPlaneU y9?N(f>@-@f>@f>@-@f>@y9?N(????????r3(r?! >_дf- =<7>D󽓽Ľ@=?\3 ??DOBd?? #=?>=u=???@???ȾyDATAOBHp|p|OBPlane.001ph_X^%)=hY@?,/?????o'hKo0?'Z0F?/43?۾I>?=?}=>Yd>6#Л"w'Amz?DOBd8? #=?>=??????@???4DATAX^MAl}* MABaseaterial.001?????????????L?????2?? ף; ף;AA ????????@?=?==???8F????L?L?L?L==ff????DATA8F!Q ??????????L>DATA  P|DATAP|CsBsAr@q?q>p=o=op?q@qArBsGwFvEuDuDtCsBsArAr@r  @q@rArArBsCsDtDuEuFvLzKyJyIxHxHwGvFv"""$$$$$$$$$###!!! FvFvGvHwHxIxJyKyQ~P}O|N|M{M{Lz%%%***---///000000000...---***'''###KzLzM{M{N|O|P}VUTSR&&&---222666888999:::::::::999777555222...***$$$RRSTU[ZYX!!!000999>>>BBBDDDEEEEEEEEEDDDCCCBBB@@@>>><<<888444///)))"""000XXYZ`_^^(((999BBBIIINNNQQQRRRSSSSSSSSSQQQOOOMMMIIIGGGDDDAAA===888333,,,$$$(((111]^^_eed***>>>JJJRRRWWW\\\^^^___`````````^^^\\\YYYVVVQQQLLLHHHDDD@@@;;;555...000999EEEcdekj###AAAPPPZZZ```eeehhhkkklllllllllllljjjhhheeeaaa]]]WWWRRRLLLGGGBBB<<<555777@@@LLL]]]jjpp@@@SSS___gggmmmrrrtttvvvxxxxxxxxxwwwuuurrroookkkgggbbb\\\VVVOOOHHHCCC<<<>>>GGGQQQ```opv111SSScccmmmtttzzz~~~}}}yyyuuuqqqlllfff```YYYQQQIIICCCDDDLLLWWWeee~~~u|KKKdddqqqzzz{{{uuupppiiibbbZZZRRRHHHJJJRRR]]]kkk{]]]qqq}}}~~~yyyrrrkkkccc[[[QQQPPPWWWbbbpppkkk}}}{{{ssskkkcccYYYYYY]]]gggtttRRRxxx{{{sssjjjaaabbbeeelllzzz]]]zzzqqqhhhjjjmmmrrr~~~gggxxxooorrruuuzzzjjj~~~wwwyyy}}}~~~MAl *@9 }MAMaterial??????????????????? ף; ף;?AA ?????????@?=?==???????L?L?L?L==ff????DATA   DATA CsBsAr@q?q>p=o=op?q@qArBsGwFvEuDuDtCsBsArAr@r"""&&&))))))'''$$$ @q@rArArBsCsDtDuEuFvLzKyJyIxHxHwGvFv)))222777;;;<<<<<<<<<:::888444000***!!!FvFvGvHwHxIxJyKyQ~P}O|N|M{M{Lz---:::AAAEEEGGGHHHIIIIIIGGGFFFDDDAAA>>>999444---###KzLzM{M{N|O|P}VUTSR:::DDDJJJNNNPPPQQQRRRRRRQQQQQQOOONNNKKKHHHEEE@@@:::444***RRSTU[ZYXCCCRRRYYY\\\^^^___^^^]]][[[YYYXXXWWWUUUTTTQQQNNNJJJEEE@@@999...//////XXYZ`_^^PPP___eeeiiikkkllllllkkkjjjhhhfffccc```\\\ZZZXXXUUURRRNNNJJJCCC;;;>>>AAA]^^_eedVVViiippptttvvvxxxxxxwwwvvvuuusssqqqnnnkkkhhhccc^^^[[[XXXUUUQQQLLLEEEHHHOOOSSScdekjQQQnnnyyy~~~}}}{{{xxxuuurrrmmmiiiddd^^^ZZZWWWSSSMMMOOOXXX```aaajjpprrr~~~zzzvvvrrrmmmhhhaaa\\\XXXSSSVVV___iiisssopvddd~~~zzzvvvpppkkkddd]]]YYY\\\eeeppp|||u|}}}xxxsssmmmfff]]]aaajjjwww{{{{uuunnnffffffppp||||||vvvooopppuuu}}}vvvyyy~~~}}}MAl@9 *8 MAMEtaloodaterial.001>>>??????????L?????2?? ף; ף;AA ????????@?=?==???H????L?L?L?L==ff????DATA H (DATA(CsBsAr@q?q>p=o=op?q@qArBsGwFvEuDuDtCsBsArAr@r@q@rArArBsCsDtDuEuFvLzKyJyIxHxHwGvFv FvFvGvHwHxIxJyKyQ~P}O|N|M{M{Lz KzLzM{M{N|O|P}VUTSR  RRSTU[ZYX   XXYZ`_^^  ]^^_eed  cdekj jjppopv  !!!!!!""""""!!!!!!!!!  u|!!!"""###$$$$$$$$$$$$$$$$$$###""""""!!!!!!{ """$$$%%%&&&&&&''''''''''''&&&&&&%%%$$$###""" !!! ###%%%'''((()))))))))***)))))))))((('''&&&%%%$$$###!!!"""###&&&((()))***+++,,,,,,,,,,,,++++++***)))((('''&&&%%%###!!! ###---!!!%%%(((***,,,---..................---,,,+++***)))((('''%%%###!!! %%%---$$$(((+++---...///000000111111000000///...---,,,+++***)))'''%%%###!!!!!!&&&///&&&***---///000111222333333333333222111111///...---,,,***)))'''%%%###  !!!###'''222''',,,///111222333444555666777777666444333222000///---,,,***(((&&&$$$""" !!!"""###%%%)))777(((---000333444666777999;;;======<<<999666444222111///---,,,***(((%%%###"""###$$$%%%'''***)))...222444666888;;;???DDDIIIKKKHHHBBB<<<777444222000///---+++)))'''$$$$$$$$$&&&''')))---'''///333555888:::???HHHSSS]]]```[[[OOODDD;;;777444222000...,,,***(((%%%%%%&&&''')))+++000///333666999===EEETTTfffvvv{{{rrr```NNN@@@999555333111///---+++(((&&&'''((()))***---,,,333777:::>>>HHH\\\vvvnnnVVVEEE;;;777444222000...,,,)))(((((()))***+++///222777:::>>>HHH]]]zzzrrrXXXFFF<<<888555333111...,,,)))))))))***+++---666999===DDDWWWnnnjjjSSSDDD<<<888555333111///,,,)))******+++,,,000888;;;???IIIYYYhhhoooiiiZZZKKK@@@;;;888666333111...,,,*********+++,,,111999<<<@@@FFFOOOSSSQQQJJJCCC===:::777555333111...+++*********+++999;;;>>>@@@BBBAAA???===;;;999777555222///,,,)))))))))666:::;;;<<<<<<;;;:::999777555333111---***((('''444777888888777666444222000---)))$$$,,,//////---+++###MAl8*@9 MATopaterial.001>>B=B=??????????L?????2?? ף; ף;AA ????????@?=?==???????L?L?L?L==ff????DATA  rDATArCsBsAr@q?q>p=o=op?q@qArBsGwFvEuDuDtCsBsArAr@r   @q@rArArBsCsDtDuEuFvLzKyJyIxHxHwGvFv     FvFvGvHwHxIxJyKyQ~P}O|N|M{M{Lz   KzLzM{M{N|O|P}VUTSR    RRSTU[ZYX  XXYZ`_^^!" # # # # " " ]^^_eed# % ' ( ( ) ) ) ( ' & $ " cdekj" & ) + , - . . . . - , + ) ' % #  ' jjpp# ( , . 0 1 2 3 3 3 2 2 0 / - , ) ' $ !" ) opv# * . 1 3 567787765 3 2 0 . + ) & "  % + 5u| + 0 4 68:;<<<<;:9864 2 / - * & # # ' - 6{( 0 5 9;=?@@@@@?>=<:863 0 - * & " " % * / 7- 5 :=@BCDDEDDCBA?=;974 1 - * & & ' , 1 9# 3 :?BDFGHIIHHGFDCA?=:74 1 - ) ) + . 3 :K' 7>CFHJKLLLLKJIHFDB@=:74 0 , - . 0 5=K, ;BFJLNOPPPPONMKIHEC@=:73 / 0 2 4 7?M- ?EJMPRSTTTTSRPNMKHFC@=952 3 5 7:ARAHMQSUVWXYYWVTRPMKIFC?<8578:>C[BKPTVXZ\_aa_\XUSPNKHEB>:8:;=@FCMRVY\_ci$$n))o**l((e""_YVSPMJGD@<;<>@DJ@MTX\_en''y22<?ACGOMUZ^bk##z11DDTTYYPP??s--e \XUQNKGC@ABCEJIU[_do&&99SSiiooccLL|55i$$_ZVSPLHDBCDEHMS[`ep&&::VVoowwiiPP~66l%%a[XTQMIDCDEGJY_dl!!33KKaaii^^GGz11j##a\XUQMIDEEGHO\agq%%55DDLLEE77r((g`\YUQMHEEFGIQ^cho##w++|00y--r''j c_[XTPLFEFFG]behjigd`^ZWSOIDDDZ_bccb`^[XTPKEBAV[]][YWSOJD<INNKG:TEQ &TETex>@???????@@????? @??<d~DATA ~ME4 MECube.002h~`Zq0QP 1@%7???DATA h~@9 }8DATA,P'DATAx:%ܿX'BP?ܿX'BU>ܿͮLU>ܿLP???II?I?I???III??II?I??II?FAII?FAIFAFAI?FA?III?FA?IIFA?IFA?IIB˫BpxpUpU;*^AwBpxEJ;*8AXBpxJE;*5 B__B @mGA$BFP@>>P\:A BFP@\P\zCAfBFP@\P\~*BB֏@II~*B$nxB֏@I@nxB؏@@B؏@I~*BB<AIII~*B"nxB<AII@nxB=AI@B=AIIDATA,'0QDATA0Q77"""""""" " " " " "" " " " " """""" " """""""""""""""""""" " "!"""#"#$"!$"""!"#" $"DATA,1'VTex`ZUVTexqDATA`Z6         !$#"!""##$ ! $DATALqA"b?]:b?o?x\?\o?\?wK:u?;?o?GO2??]H2??;?q*?GO2?gj*?;?"?;?"?]H2?1>1S2??>;?J>;?v>`H2??]H2??;?F-?;?&?GO2?q>GO2?H?]H2?:O?;?>;?;ǣ>`H2?>;?2!>+;?U.>zk2?a =;?p:;?ͥ:`H2? =JO2?>`H2?>;?>;?>KO2?.=1S2?Đ=;?=;?B=`H2?!!?]H2?(!?;?+?;??GO2?S>`H2?`>;?>;?~>JO2?=`H2?=;?k=+;?=zk2?c?`@><(q?)>~q?U?c?!Z?Ճ>]H2? >є3?Q>7z?>Q?q?PR>c?}>c?]: 1?>]:[?x J;W>]:`> 1?>p;g1?p:J;{?VA>\<?}/>`?:1d?{?.:d?r?]:;v?;b:`u?1? r? 1?{?nY:>?]:H?f>{?l>z?.?&w?.?jw?]:°z?;ME 4h_MEPlane x~hyHڙx ޙ@@4???DATA DATA,Hڙ'DATA`:????DATA,x'hyDATA0hy7####DATA,ޙ'VTex UVTexx~DATA 6DATA,x~ATqH;?nH;7??7?<MEh_4({ MEPlane.003^]hH]H8י ~???DATA^ DATA,H'hDATA`h:??.;'?.3zj?.DATA,8י'H]DATA0H]7####DATA,~']DATA]6DNA1ة}SDNANAMEF *next*prev*data*first*lastxyzwxminxmaxyminymax*pointergroupvalval2name[32]typesubtypeflagsaveddatalentotallen*newid*libname[24]usicon_id*propertiesid*idblock*filedataname[240]filename[240]totpad*parentw[2]h[2]changed[2]pad0pad1*rect[2]*obblocktypeadrcodename[128]*bp*beztmaxrcttotrctvartypetotvertipoextraprtbitmaskslide_minslide_maxcurval*drivercurvecurshowkeymuteipoposrelativetotelempad2*weightsvgroup[32]sliderminslidermax*refkeyelemstr[32]elemsizeblock*ipo*fromtotkeyslurph**scripts*flagactscripttotscript*line*formatblenlinenostartendflagscolor[4]pad[4]*namenlineslines*curl*sellcurcselcmarkers*undo_bufundo_posundo_len*compiledmtimesizeseekpassepartalphaangleclipstaclipendlensortho_scaledrawsizeshiftxshiftyYF_dofdistYF_apertureYF_bkhtypeYF_bkhbiasYF_bkhrotscriptlink*dof_obframenrframesoffsetsfrafie_imacyclokmulti_indexlayerpassmenunribufs*gputexture*anim*rrsourcelastframetpageflagtotbindxrepyreptwstatwendbindcode*repbind*packedfile*previewlastupdatelastusedanimspeedgen_xgen_ygen_typeaspxaspy*vnodetexcomaptomaptonegblendtype*object*texuvname[32]projxprojyprojzmappingofs[3]size[3]texflagcolormodelpmaptopmaptonegnormapspacepad[3]rgbkdef_varcolfacnorfacvarfacdispfacwarpfacname[160]*handle*pname*stnamesstypesvars*varstr*result*cfradata[32](*doit)()(*instance_init)()(*callback)()versionaipotype*ima*cube[6]imat[4][4]obimat[3][3]stypeviewscalenotlaycuberesdepthrecalclastsizenoisesizeturbulbrightcontrastrfacgfacbfacfiltersizemg_Hmg_lacunaritymg_octavesmg_offsetmg_gaindist_amountns_outscalevn_w1vn_w2vn_w3vn_w4vn_mexpvn_distmvn_coltypenoisedepthnoisetypenoisebasisnoisebasis2imaflagcropxmincropymincropxmaxcropymaxxrepeatyrepeatextendcheckerdistnablaiuser*plugin*coba*envloc[3]rot[3]mat[4][4]min[3]max[3]pad3modetotexshdwrshdwgshdwbshdwpadenergydistspotsizespotblendhaintatt1att2*curfallofffalloff_typeshadspotsizebiassoftbufsizesampbuffersfiltertypebufflagbuftyperay_sampray_sampyray_sampzray_samp_typearea_shapearea_sizearea_sizeyarea_sizezadapt_threshray_samp_methodtexactshadhalostepsun_effect_typeskyblendtypehorizon_brightnessspreadsun_brightnesssun_sizebackscattered_lightsun_intensityatm_turbidityatm_inscattering_factoratm_extinction_factoratm_distance_factorskyblendfacsky_exposuresky_colorspacepad4YF_numphotonsYF_numsearchYF_phdepthYF_useqmcYF_bufsizeYF_padYF_causticblurYF_ltradiusYF_glowintYF_glowofsYF_glowtypeYF_pad2*mtex[18]specrspecgspecbmirrmirgmirbambrambbambgambemitangspectraray_mirroralpharefspeczoffsaddtranslucencyfresnel_mirfresnel_mir_ifresnel_trafresnel_tra_ifiltertx_limittx_falloffray_depthray_depth_traharseed1seed2gloss_mirgloss_trasamp_gloss_mirsamp_gloss_traadapt_thresh_miradapt_thresh_traaniso_gloss_mirdist_mirfadeto_mirshade_flagmode_lflarecstarclinecringchasizeflaresizesubsizeflarebooststrand_stastrand_endstrand_easestrand_surfnorstrand_minstrand_widthfadestrand_uvname[32]sbiaslbiasshad_alphaseptexrgbselpr_typeuse_nodespr_backpr_lampml_flagdiff_shaderspec_shaderroughnessrefracparam[4]rmsdarkness*ramp_col*ramp_specrampin_colrampin_specrampblend_colrampblend_specramp_showrampfac_colrampfac_spec*nodetree*groupfrictionfhreflectfhdistxyfrictdynamodesss_radius[3]sss_col[3]sss_errorsss_scalesss_iorsss_colfacsss_texfacsss_frontsss_backsss_flagsss_presetYF_arYF_agYF_abYF_dscaleYF_dpwrYF_dsmpYF_presetYF_djitgpumaterialname[256]scale*bbi1j1k1i2j2k2selcol1selcol2quat[4]expxexpyexpzradrad2s*mat*imatelemsdisp**mattotcolwiresizerendersizethreshvec[3][3]alfaweightradiush1h2f1f2f3hidevec[4]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsvtilt_interpradius_interpcharidxkernhnurb*bevobj*taperobj*textoncurve*path*keybevpathlenbevresolwidthext1ext2resolu_renresolv_renspacemodespacinglinedistshearfsizewordspaceulposulheightxofyoflinewidth*strfamily[24]*vfont*vfontb*vfonti*vfontbisepchartotboxactbox*tbselstartselend*strinfocurinfoeffect*mface*mtface*tface*mvert*medge*dvert*mcol*msticky*texcomesh*mselectvdataedatafdatatotedgetotfacetotselectact_facecubemapsizesmoothreshsubdivsubdivrsubsurftype*mr*pv*tpageuv[4][2]col[4]transptileunwrapv1v2v3v4edcodecreasebweightdef_nr*dwtotweightco[3]no[3]uv[2]co[2]indexfis[256]v[4]midpad[2]v[2]*faces*colfaces*edges*edge_boundary_states*vert_edge_map*vert_face_map*map_mem*vertslevelslevel_countcurrentnewlvledgelvlpinlvlrenderlvluse_col*edge_flags*edge_creases*vert_map*edge_map*old_faces*old_edges*errormodifiersubdivTyperenderLevels*emCache*mCachedefaxispad[6]lengthrandomizeseed*ob_arm*start_cap*end_cap*curve_ob*offset_oboffset[3]scale[3]merge_distfit_typeoffset_typecountaxistolerance*mirror_obsplit_anglevalueresval_flagslim_flagse_flagsbevel_angledefgrp_name[32]*texturestrengthdirectionmidleveltexmapping*map_objectuvlayer_name[32]uvlayer_tmp*projectors[10]*imagenum_projectorsaspectxaspectypercentfaceCountfacrepeat*objectcenterstartxstartyheightnarrowspeeddampfallofftimeoffslifetimedeformflagmulti*prevCosparentinv[4][4]cent[3]*indexartotindexforce*clothObject*sim_parms*coll_parms*point_cache*x*xnew*xold*current_xnew*current_x*current_v*mfacesnumvertsnumfacesabsorptiontime*bvhtreeoperationvertextotinfluencegridsizeneedbind*bindweights*bindcostotcagevert*dyngrid*dyninfluences*dynverts*pad2dyngridsizedyncellmin[3]dyncellwidthbindmat[4][4]*psys*dmtotdmverttotdmedgetotdmfacepsysrt[2]*facepavgroupprotect*fss*target*auxTargetvgroup_name[32]keepDistshrinkTypeshrinkOptsprojAxissubsurfLevels*originfactorlimit[2]originOptspntswopntsuopntsvopntswtypeutypevtypewfufvfwdudvdw*defvec[8][3]partypepar1par2par3parsubstr[32]*track*proxy*proxy_group*proxy_from*action*poselib*poseconstraintChannelsdefbasemodifiersdloc[3]orig[3]dsize[3]drot[3]obmat[4][4]constinv[4][4]laycolbitstransflagipoflagtrackflagupflagnlaflagprotectflagipowinscaflagscavisflagboundtypedupondupoffdupstadupendsfctimemassdampinginertiaformfactorrdampingsizefacmargindtdtxactcolempty_drawtypepad1[3]empty_drawsizedupfacescapropsensorscontrollersactuatorsbbsize[3]actdefgameflaggameflag2*bsoftsoftflaganisotropicFriction[3]constraintsnlastripshooksparticlesystem*pd*soft*dup_groupfluidsimFlagrestrictflagshapenrshapeflagrecalcobody_type*fluidsimSettings*derivedDeform*derivedFinallastDataMaskstateinit_stategpulampcurindexactivedeflectforcefieldpdef_damppdef_rdamppdef_permpdef_frictpdef_rfrictf_strengthf_powerf_distf_dampmaxdistmindistmaxradminradf_power_rpdef_sbdamppdef_sbiftpdef_sboftclump_facclump_powkink_freqkink_shapekink_ampfree_endtex_nablatex_modekinkkink_axisrt2*rngf_noisesimframestartframeendframeeditframelinStiffangStiffvolumeviterationspiterationsditerationsciterationskSRHR_CLkSKHR_CLkSSHR_CLkSR_SPLT_CLkSK_SPLT_CLkSS_SPLT_CLkVCFkDPkDGkLFkPRkVCkDFkMTkCHRkKHRkSHRkAHRcollisionflagsnumclusteriterations*particlestotpointtotspring*bpoint*bspringnodemassgravmediafrictrklimitphysics_speedgoalspringgoalfrictmingoalmaxgoaldefgoalvertgroupfuzzynessinspringinfrictefraintervallocalsolverflags**keystotpointkeysecondspringcolballballdampballstiffsbc_modeaeroedgeminloopsmaxloopschokesolver_IDplasticspringpreload*scratchshearstiffinpush*pointcacheshow_advancedoptionsresolutionxyzpreviewresxyzrealsizeguiDisplayModerenderDisplayModeviscosityValueviscosityModeviscosityExponentgravxgravygravzanimStartanimEndgstarmaxRefineiniVelxiniVelyiniVelz*orgMesh*meshSurface*meshBBsurfdataPath[240]bbStart[3]bbSize[3]typeFlagsdomainNovecgenvolumeInitTypepartSlipValuegenerateTracersgenerateParticlessurfaceSmoothingsurfaceSubdivsparticleInfSizeparticleInfAlphafarFieldSize*meshSurfNormalscpsTimeStartcpsTimeEndcpsQualityattractforceStrengthattractforceRadiusvelocityforceStrengthvelocityforceRadiuslastgoodframemistypehorrhorghorbhorkzenrzengzenbzenkambkfastcolexposureexprangelinfaclogfacgravityactivityBoxRadiusskytypephysicsEnginemisimiststamistdistmisthistarrstargstarbstarkstarsizestarmindiststardiststarcolnoisedofstadofenddofmindofmaxaodistaodistfacaoenergyaobiasaomodeaosampaomixaocolorao_adapt_threshao_adapt_speed_facao_approx_errorao_approx_correctionao_samp_methodao_gather_methodao_approx_passes*aosphere*aotableshemiresmaxiterdrawtypesubshootpsubshootenodelimmaxsublamppamapamielmaelmimaxnodeconvergenceradfacgammaselcolsxsy*lpFormat*lpParmscbFormatcbParmsfccTypefccHandlerdwKeyFrameEverydwQualitydwBytesPerSeconddwFlagsdwInterleaveEveryavicodecname[128]*cdParms*padcdSizeqtcodecname[128]codecaudio_codecvideo_bitrateaudio_bitrategop_sizerc_min_raterc_max_raterc_buffer_sizemux_packet_sizemux_ratemixratemain*mat_override*light_overridelay_zmasklayflagpassflagpass_xor*avicodecdata*qtcodecdataffcodecdatacfrapsfrapefraimagesframaptothreadsframelenblurfacedgeRedgeGedgeBfullscreenxplayyplayfreqplayattribrt1stereomodedimensionspresetmaximsizexschyschxpartsypartswinposplanesimtypesubimtypequalityrpadrpad1rpad2scemoderendererocresalphamodeosafrs_secedgeintsafetyborderdisprectlayersactlayxaspyaspfrs_sec_basegausspostmulpostgammaposthuepostsatdither_intensitybake_osabake_filterbake_modebake_flagbake_normal_spacebake_quad_splitbake_maxdistbake_biasdistbake_padGIqualityGIcacheGImethodGIphotonsGIdirectYF_AAYFexportxmlYF_nobumpYF_clamprgbyfpad1GIdepthGIcausdepthGIpixelspersampleGIphotoncountGImixphotonsGIphotonradiusYF_raydepthYF_AApassesYF_AAsamplesyfpad2GIshadowqualityGIrefinementGIpowerGIindirpowerYF_gammaYF_exposureYF_raybiasYF_AApixelsizeYF_AAthresholdbackbuf[160]pic[160]stampstamp_font_idstamp_udata[160]fg_stamp[4]bg_stamp[4]simplify_subsurfsimplify_shadowsamplessimplify_particlessimplify_aossscineonwhitecineonblackcineongammaparticle_percsubsurf_maxshadbufsample_maxao_errorcol[3]framename[64]*brushtoolstepinverttotrekeytotaddkeybrushtypebrush[7]emitterdistdraw_timedname[36]mat[3][3]cornertypeeditbutflagjointrilimitdegrturnextr_offsdoublimitsegmentsringsverticesunwrapperuvcalc_radiusuvcalc_cubesizeuvcalc_mapdiruvcalc_mapalignuvcalc_flagautoik_chainlenimapaintparticleselect_threshclean_threshretopo_moderetopo_paint_toolline_divellipse_divretopo_hotspotmultires_subdiv_typeskgen_resolutionskgen_threshold_internalskgen_threshold_externalskgen_length_ratioskgen_length_limitskgen_angle_limitskgen_correlation_limitskgen_symmetry_limitskgen_optionsskgen_postproskgen_postpro_passesskgen_subdivisions[3]edge_modepad3[4]dirview*session*cumapdrawbrushsmoothbrushpinchbrushinflatebrushgrabbrushlayerbrushflattenbrushpivot[3]brush_typetexnrtexrepttexfadetexsepaveragingtablet_sizetablet_strengthsymmrakeaxislock*camera*world*setbase*basactcursor[3]twcent[3]twmin[3]twmax[3]editbutsizeselectmodeproportionalprop_modeautomergepad5pad6autokey_mode*ed*radioframing*toolsettingsaudiotransform_spacesjumpframesnap_modesnap_flagsnap_target*theDagdagisvaliddagflagssculptdataframe_stepzoomblendximyimspacetypeblockscale*areablockhandler[8]viewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]winmat1[4][4]viewmat1[4][4]viewquat[4]zfaclay_usedpersp*ob_centre*bgpic*localvd*ri*retopo_view_data*depthsob_centre_bone[32]localviewlayactscenelockaroundcamzoompivot_lastgridgridviewpixsizenearfarcamdxcamdygridlinesviewbutgridflagmodeselecttwtypetwmodetwflagtwdrawflagtwmat[4][4]clip[4][4]*clipbbafterdrawzbufxrayflag2gridsubdivkeyflagsndofmodendoffilter*properties_storage*gpdlviewquat[4]lpersplviewlastview_setverthormaskmin[2]max[2]minzoommaxzoomscrollkeeptotkeepaspectkeepzoomoldwinxoldwinycursor[2]rowbutv2d*editipoipokeyactname[32]constname[32]bonename[32]totipopinbutofschannellockmedian[3]cursenscuractaligntabomainbmainbo*lockpointexfromshowgroupmodeltypescriptblockre_alignoldkeypresstab[7]chanshownzebra*filelisttotfiletitle[24]dir[240]file[80]ofssortmaxnamelencollumsf_fpfp_str[8]*libfiledataretvalmenuact(*returnfunc)()(*returnfunc_event)()(*returnfunc_args)()*arg1*arg2*menup*pupmenuoopsvisiflagtree*treestoresearch_string[32]search_tsesearch_flagsdo_outlinevisstoreflagdeps_flagsimanrcurtileimtypenrdt_uvstickydt_uvstretchpad[5]centxcentyautosnap*texttopviewlinesfont_idlheightleftshowlinenrstabnumbercurrtab_setshowsyntaxoverwritepix_per_linetxtscrolltxtbarwordwrapdoplugins*py_draw*py_event*py_button*py_browsercallback*py_globaldictlastspacescriptname[256]scriptarg[256]*script*but_refsredraws*idaspect*curfont*edittreetreetype*filesactive_filenumtilesxnumtilesyselstateviewrectbookmarkrectscrollposscrollheightscrollareaactive_bookmarkprv_wprv_h*imgoutline[4]neutral[4]action[4]setting[4]setting1[4]setting2[4]num[4]textfield[4]textfield_hi[4]popup[4]text[4]text_hi[4]menu_back[4]menu_item[4]menu_hilite[4]menu_text[4]menu_text_hi[4]but_drawtypeiconfile[80]back[4]header[4]panel[4]shade1[4]shade2[4]hilite[4]grid[4]wire[4]select[4]lamp[4]active[4]group[4]group_active[4]transform[4]vertex[4]vertex_select[4]edge[4]edge_select[4]edge_seam[4]edge_sharp[4]edge_facesel[4]face[4]face_select[4]face_dot[4]normal[4]bone_solid[4]bone_pose[4]strip[4]strip_select[4]cframe[4]vertex_sizefacedot_sizebpad[2]syntaxl[4]syntaxn[4]syntaxb[4]syntaxv[4]syntaxc[4]movie[4]image[4]scene[4]audio[4]effect[4]plugin[4]transition[4]meta[4]editmesh_active[4]handle_vertex[4]handle_vertex_select[4]handle_vertex_sizehpad[7]solid[4]tuitbutstv3dtfiletipotinfotsndtacttnlatseqtimatimaseltexttoopsttimetnodetarm[20]bpad[4]bpad1[4]spec[4]dupflagsavetimetempdir[160]fontdir[160]renderdir[160]textudir[160]plugtexdir[160]plugseqdir[160]pythondir[160]sounddir[160]yfexportdir[160]versionsvrmlflaggameflagswheellinescrolluiflaglanguageuserprefviewzoomconsole_bufferconsole_outmixbufsizefontsizeencodingtransoptsmenuthreshold1menuthreshold2fontname[256]themesundostepsundomemorygp_manhattendistgp_euclideandistgp_erasergp_settingstb_leftmousetb_rightmouselight[3]tw_hotspottw_flagtw_handlesizetw_sizetextimeouttexcollectratememcachelimitprefetchframesframeserverportpad_rot_angleobcenter_diarvisizervibrightrecent_filessmooth_viewtxglreslimitndof_panndof_rotatecurssizepad[8]versemaster[160]verseuser[160]glalphaclipautokey_flagcoba_weightvertbaseedgebaseareabase*sceneendxendysizexsizeyscenenrscreennrfullmainwinwinakthandler[8]*newvvec*v1*v2panelname[64]tabname[64]drawname[64]ofsxofsycontrolsnapold_ofsxold_ofsysortcounter*paneltab*v3*v4*fullwinmat[4][4]headrctwinrctheadwinwinheadertypebutspacetypewinxwinyhead_swaphead_equalwin_swapwin_equalheadbutlenheadbutofscursorspacedatauiblockspanelssubvstr[4]subversionpadsminversionminsubversiondisplaymode*curscreen*curscenefileflagsglobalfname[80]*ibuf*ibuf_comp*se1*se2*se3nrbottomrightxofsyofslift[3]gamma[3]gain[3]saturationdir[160]donestartstillendstill*stripdataorxory*crop*transform*color_balance*tstripdata*tstripdata_startstill*tstripdata_endstill*ibuf_startstill*ibuf_endstill*instance_private_data**current_private_data*tmpstartofsendofsmachinestartdispenddispmulhandsizeanim_preseek*stripfacf0facf1*seq1*seq2*seq3seqbase*sound*hdaudiolevelpancurposstrobe*effectdataanim_startofsanim_endofsblend_modeblend_opacity*oldbasep*parseq*seqbasepmetastackedgeWidthforwardwipetypefMinifClampfBoostdDistdQualitybNoCompScalexIniScaleyIniScalexFinScaleyFinxInixFinyIniyFinrotInirotFininterpolation*frameMapglobalSpeedlastValidFramebuttypeuserjitstatotpartnormfacobfacrandfactexfacrandlifeforce[3]vectsizemaxlendefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstepomattimetexspeedtexflag2negvertgroup_vvgroupname[32]vgroupname_v[32]*keysminfacusedusedelemdxdylinkotypeold*poin*oldpoinresetdistlastval*makeyqualqual2targetName[32]toggleName[32]value[32]maxvalue[32]delaydurationmaterialName[32]damptimerpropname[32]matname[32]axisflag*fromObjectsubject[32]body[32]pulsefreqtotlinks**linksjoyindexaxisfbuttonhathatfprecisionstr[128]*mynewinputstotslinks**slinksvalostate_mask*actframeProp[32]blendinpriorityend_resetstrideaxisstridelengthsndnrpad1[2]makecopycopymadepad2[1]track*melinVelocity[3]angVelocity[3]localflagdyn_operationforceloc[3]forcerot[3]linearvelocity[3]angularvelocity[3]butstabutendminmaxvisifacrotdampminloc[3]maxloc[3]minrot[3]maxrot[3]matprop[32]distributionint_arg_1int_arg_2float_arg_1float_arg_2toPropName[32]*toObjectbodyTypefilename[64]loadaniname[64]int_argfloat_arggoaccellerationmaxspeedmaxrotspeedmaxtiltspeedtiltdampspeeddamp*sample*stream*newpackedfile*snd_soundpanningattenuationpitchmin_gainmax_gaindistancestreamlenchannelshighpriopad[10]gaindopplerfactordopplervelocitynumsoundsblendernumsoundsgameengine*lamprengobjectdupli_ofs[3]childbaserollhead[3]tail[3]bone_mat[3][3]arm_head[3]arm_tail[3]arm_mat[4][4]xwidthzwidthease1ease2rad_headrad_tailbonebasechainbasepathflaglayer_protectedghostepghostsizeghosttypepathsizeghostsfghostefpathsfpathefpathbcpathacconstflagikflagselectflagagrp_index*bone*childiktree*b_bone_mats*dual_quat*b_bone_dual_quatschan_mat[4][4]pose_mat[4][4]pose_head[3]pose_tail[3]limitmin[3]limitmax[3]stiffness[3]ikstretch*customchanbaseproxy_layerstride_offset[3]cyclic_offset[3]agroupsactive_groupcustomColcs*grpreserved1groupsactive_markeractnractwidthtimeslidename[30]ownspacetarspaceenforceheadtail*tarsubtarget[32]matrix[4][4]space*proptarnumtargetsiterationsrootbonemax_rootbone*poletarpolesubtarget[32]poleangleorientweightgrabtarget[3]reserved2minmaxflagstuckcache[3]lockflagfollowflagvolmodeplaneorglengthbulgepivXpivYpivZaxXaxYaxZminLimit[6]maxLimit[6]extraFzinvmat[4][4]fromtomap[3]expofrom_min[3]from_max[3]to_min[3]to_max[3]zminzmaxchannel[32]no_rot_axisstride_axiscurmodactstartactendactoffsstridelenblendoutstridechannel[32]offs_bone[32]hasinputhasoutputdatatypesockettype*new_socknslimitstack_indexinternstack_index_extlocxlocyown_indexto_index*tosock*link*new_nodeusername[32]lastyoutputs*storageminiwidthcustom1custom2need_execexectotrbutrprvr*typeinfo*fromnode*tonode*fromsocknodeslinks*stack*threadstackinitstacksizecur_indexalltypes*owntype*selin*selout(*timecursor)()(*stats_draw)()(*test_break)()cyclicmoviesamplesminspeedpercentxpercentybokehcurvedimage_in_widthimage_in_heightcenter_xcenter_yspiniterwrapsigma_colorsigma_spacehuesatt1t2t3fstrengthfalphakey[4]x1x2y1y2colname[32]bktyperotationpreviewgamcono_zbuffstopmaxblurbthresh*dict*nodeangle_ofscolmodmixthresholdfademcjitprojfitshortymintablemaxtableext_in[2]ext_out[2]*curve*table*premultablecurrcliprcm[4]black[3]white[3]bwmul[3]sample[3]offset[2]innerradiusratergb[3]cloneactive_rnd*layerstotlayermaxlayertotsize*pooleditflagvel[3]rot[4]ave[3]numparentpa[4]w[4]fuv[4]foffsetrand[3]*stick_obprev_state*hairi_rot[4]r_rot[4]r_ave[3]r_ve[3]dietimebanksizemulnum_dmcachebpialiveloopdistrphystyperotmodeavemodereacteventdrawdraw_asdraw_sizechildtypedraw_stepren_stephair_stepkeys_stepadapt_angleadapt_pixrotfromintegratornbetweenboidneighboursbb_alignbb_uv_splitbb_animbb_split_offsetbb_tiltbb_rand_tiltbb_offset[2]simplify_flagsimplify_refsizesimplify_ratesimplify_transitionsimplify_viewporttimetweakjitfackeyed_timeeff_hairgrid_respartfactanfactanphasereactfacavefacphasefacrandrotfacrandphasefacrandsizereactshapeacc[3]dragfacbrownfacdampfacabslengthrandlengthchild_nbrren_child_nbrparentschildsizechildrandsizechildradchildflatchildspreadclumpfacclumppowrough1rough1_sizerough2rough2_sizerough2_thresrough_endrough_end_shapebranch_thresdraw_line[2]max_velmax_lat_accmax_tan_accaverage_velbankingmax_bankgroundzboidfac[8]boidrule[8]*eff_group*dup_ob*bb_ob*pd2*part*edit**pathcache**childcachepathcachebufschildcachebufs*target_ob*keyed_ob*latticeeffectorsreacteventstotchildtotcachedtotchildcachetarget_psyskeyed_psystotkeyedbakespacebb_uvname[3][32]vgroup[12]vg_negrt3*renderdata*cacheCdisCvi[3]structuralbendingmax_bendmax_structmax_shearavg_spring_lentimescaleeff_force_scaleeff_wind_scalesim_time_oldstepsPerFrameprerollmaxspringlensolver_typevgroup_bendvgroup_massvgroup_structpresets*collision_listepsilonself_frictionselfepsilonself_loop_countloop_countpressure*pointstotpointsthicknessstrokesframenum*actframegstepinfo[128]sbuffer_sizesbuffer_sflag*sbufferTYPE_charucharshortushortintlongulongfloatdoublevoidLinkLinkDataListBasevec2svec2ivec2fvec2dvec3ivec3fvec3dvec4ivec4fvec4drctirctfIDPropertyDataIDPropertyIDLibraryFileDataPreviewImageIpoDriverObjectIpoCurveBPointBezTripleIpoKeyBlockKeyScriptLinkTextLineTextMarkerTextPackedFileCameraImageUserImageGPUTextureanimRenderResultMTexTexPluginTexCBDataColorBandEnvMapImBufTexMappingLampCurveMappingWaveMaterialbNodeTreeGroupVFontVFontDataMetaElemBoundBoxMetaBallNurbCharInfoTextBoxCurvePathMeshMFaceMTFaceTFaceMVertMEdgeMDeformVertMColMStickyMSelectCustomDataMultiresPartialVisibilityMDeformWeightMTexPolyMLoopUVMLoopColMFloatPropertyMIntPropertyMStringPropertyOrigSpaceFaceMultiresColMultiresColFaceMultiresFaceMultiresEdgeMultiresLevelMultiresMapNodeModifierDataSubsurfModifierDataLatticeModifierDataCurveModifierDataBuildModifierDataMaskModifierDataArrayModifierDataMirrorModifierDataEdgeSplitModifierDataBevelModifierDataBMeshModifierDataDisplaceModifierDataUVProjectModifierDataDecimateModifierDataSmoothModifierDataCastModifierDataWaveModifierDataArmatureModifierDataHookModifierDataSoftbodyModifierDataClothModifierDataClothClothSimSettingsClothCollSettingsPointCacheCollisionModifierDataBVHTreeBooleanModifierDataMDefInfluenceMDefCellMeshDeformModifierDataParticleSystemModifierDataParticleSystemDerivedMeshParticleInstanceModifierDataExplodeModifierDataFluidsimModifierDataFluidsimSettingsShrinkwrapModifierDataSimpleDeformModifierDataLatticebDeformGroupbActionbPoseBulletSoftBodyPartDeflectSoftBodyObHookRNGSBVertexBodyPointBodySpringSBScratchWorldRadioBaseAviCodecDataQuicktimeCodecDataFFMpegCodecDataAudioDataSceneRenderLayerRenderDataRenderProfileGameFramingTimeMarkerImagePaintSettingsBrushParticleBrushDataParticleEditSettingsTransformOrientationToolSettingsBrushDataSculptDataSculptSessionSceneDagForestBGpicView3DSpaceLinkScrAreaRenderInfoRetopoViewDataViewDepthsbGPdataView2DSpaceInfoSpaceIpoSpaceButsSpaceSeqSpaceFiledirentryBlendHandleSpaceOopsTreeStoreTreeStoreElemSpaceImageSpaceNlaSpaceTextScriptSpaceScriptSpaceTimeSpaceNodeSpaceImaSelFileListThemeUIThemeSpaceThemeWireColorbThemeSolidLightUserDefbScreenScrVertScrEdgePanelFileGlobalStripElemTStripElemStripCropStripTransformStripColorBalanceStripProxyStripPluginSeqSequencebSoundhdaudioMetaStackEditingWipeVarsGlowVarsTransformVarsSolidColorVarsSpeedControlVarsEffectBuildEffPartEffParticleWaveEffOopsbPropertybNearSensorbMouseSensorbTouchSensorbKeyboardSensorbPropertySensorbActuatorSensorbDelaySensorbCollisionSensorbRadarSensorbRandomSensorbRaySensorbMessageSensorbSensorbControllerbJoystickSensorbExpressionContbPythonContbActuatorbAddObjectActuatorbActionActuatorbSoundActuatorbCDActuatorbEditObjectActuatorbSceneActuatorbPropertyActuatorbObjectActuatorbIpoActuatorbCameraActuatorbConstraintActuatorbGroupActuatorbRandomActuatorbMessageActuatorbGameActuatorbVisibilityActuatorbTwoDFilterActuatorbParentActuatorbStateActuatorFreeCamerabSamplebSoundListenerSpaceSoundGroupObjectBonebArmaturebPoseChannelbActionGroupbActionChannelSpaceActionbConstraintChannelbConstraintbConstraintTargetbPythonConstraintbKinematicConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbMinMaxConstraintbSizeLikeConstraintbActionConstraintbLockTrackConstraintbFollowPathConstraintbStretchToConstraintbRigidBodyJointConstraintbClampToConstraintbChildOfConstraintbTransformConstraintbLocLimitConstraintbRotLimitConstraintbSizeLimitConstraintbDistLimitConstraintbActionModifierbActionStripbNodeStackbNodeSocketbNodeLinkbNodebNodePreviewbNodeTypeNodeImageAnimNodeBlurDataNodeDBlurDataNodeBilateralBlurDataNodeHueSatNodeImageFileNodeChromaNodeTwoXYsNodeTwoFloatsNodeGeometryNodeVertexColNodeDefocusNodeScriptDictNodeGlareNodeTonemapNodeLensDistCurveMapPointCurveMapBrushCloneCustomDataLayerHairKeyParticleKeyChildParticleParticleDataParticleSettingsParticleEditParticleCacheKeyLinkNodebGPDspointbGPDstrokebGPDframebGPDlayerTLEN   L4( H\$8Tpx(x T8l|LDlh88,< L   @ 84DX`D`t@<l<<\hd4Dd@L@@@<lht(T8pd(4H8P HP`<$$X P$88 x P4 088,@0,Hh(H,(lDLP<< \PLhT`<8l (DtH@,@t<h4,,D,@,4` l\4<$x( (@   ,<8HSTRC6                     !"#$%&'()*+, -./0!!!"1#234./56789  :;<=>$ ?@.AB%%%%C=/DEF GHIJ& %KLM= N$OPQR'STUV%(((WXY) ))Z[\+]^_*`]a b(c(def ghij kl+mn]% ,opqrstuvwxyz{|$O'} ~- . " /01%++ 2 394   %5C@6$@57 .8qr35-$O.4679 -:P     ;Fqr !"#$%&'()*++,-./0123456789:;<=>?@ABCDEFGH2I$O'}<$O=JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs tuvwxyz{|}~+<662I>$O?F'} @%A+BBBCDC  $O=# "%EEE"1#2F%FGH9C     $OI&= FbC  @ @ @ @%GFFJ'C $O&=KLMNOPQRJ S!T"T#T$6%&'()%*+,-U.V/ M 0123 45K6789%:O67;<W=PW>?N@A<QX.03 45YBZ%RCSDL1.03 45[E\F]G^1_`_2aHIJbKIcccaL`MbNO P QdR6&%%NSU TNSUVWXYZ[T"T$\]V^_K`Oa&%6%eee bfecdTe] f ggec hec hiiec[jkljec mH k ec n o p qrsjtuv]wlecxy zmec{]n ec|}%]~oec%p ec3 %q ec .]%recsectec muec 3 %+vecF w ec xecyecz{|}~ecNNNNNNK%ec %ec %6ec9ec -ecec} ec  i ec  x%F%"$O&PC% m &    $OIC      =      '} ! " # $%D&2'()*+ , - . /01?23456*789:;<=>F ? &@A$BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_3`a%}bcdefghijklmnopqrstuvwxyz{|}~,%Q}0JJJ$ONB +PRQ  +  $O2I'}     !"#$%&'(%) * +,F- ./012]3456789 =:?;<=%>?x@ABCDEFGHIJKLMNOPQRS_TUmVWXYZ[\]^_`abc defghijkl mn%opqrstuvwxyz{|}~ +F+Fm*mJ2I;+]J+ .      > '} g <% .-m !"K#$%&'()*+,-./0  123456789:;<=+s>?@ABCDEFGHIJKLMNCO PQ3RSTUVW XYZ[\] $@^_`abcdefghijk;i#$%&#$%&#$%&lFm n o$OPpqrstuvA.wx$#$%4&yz{|m}t~  %+#$%&m}%Y!#$%&+F     #$%&m t9  #$%&m.-;  wtY #$%&wm#$%&*]      ] #$%]+ #$%m#$%&mP >>%Y*#$%&m b%+     86     _ !"#$%&'(%)*+,-./0123456789:;%2<B=>?@ABCDEFGHIJKLMNOPQRSTUVWX YZ[\]^_`abcdefghijklmnopqrstu%vwxyz6{ | } ~% k%A4#'}    [  88%988      -  [$O0  %    %9p    %  ]j99-\Ql% !"#$%S&'()*?+,E- ./ 0 12% 3 456%+F=7%89:;<%=>%?@%AB Fpxl?CD +E FGH1IJK+F L -% MxNOPQRS*TUK1VF LWXY% - Z\[\]^_` a\bcdea\fh  -Jghi%jk%  = -  1lmno  \[+@pq  -rsxt   u%vwxyz \@pq?l{|}~C G+FH\_*_ -` T1  - u% ++ $Oh]#$%m awF - %? & j  " ,&       % $O    g% #$%&m tw!!!$O" "" %$O# ## %$*  %  & ]%' ( ) +F* + [\rs%Z, - . /  %+F0 S1 % 2     3    S4    S5    S6  %7 77 -888 $OZ [\\ 9rs  !"::::#9$%&'(+)*+,:-;.<<<</01& U 2 3)*456789:;=><;;;<=<>:?:-> @ A9B CDEF G>H:I:J K LM?NO%@PQDRSTU%VWA XYpZ[\%B]^[%C_`D]^_.EabcdefFghijGHkIJ lmnoPpqrsK t uL _[pvmJwxyzM8E{|N}~%OP OOO; @PQ.X%  mX+%2IQRA_ TR% S@%T@UV T=TST*m%Q_Wp # ]^\9mjYWX   ?2?   $O0 %W VUX Y Y 1     Cl   9   *      }{"Z   ! " # $ % & ' ( ) * + , ]- . / 0 1 2 3 %F|Z4 5 6 7 ]8 9 [: \\\[; < = ]]] > ? ^ ^^ ]@ = A ^B  mC D E ENDB