BLENDER_v240REND StageSRtm8SRAnimation` `(pP~N~KDATA`nDATAn`KDATAn ~KDATA n`~DATA`n DATAn`~DATAn 1DATA n`~1DATA`n DATAn`1DATAn DATA n~DATA`oDATAo`` DATAo8`DATA8oDATAoȌ8 DATAȌo DATAoXȌ``DATAXo`DATAoXDATAo0 DATA0ox`DATAxo0 DATAox`DATAoP`DATAPo`DATAoP DATAo(  DATA(o DATApq`  ~~~xxhDATAhp8Link and MaterialsEditing>DATA8phMeshEditingF>DATApؓ8Anim settingsObject>DATAؓpDrawObjectF>DATApxؓConstraintsObject>DATAxpHEffectsObjectDATAHpxHooksObjectF>ؓDATApHParticle InteractionObject>DATApScriptlinksScript>DATApCameraEditingF>DATApXOutputRender>DATAXp(RenderRenderF>DATA(pXAnimRender>DATApȜ(FormatRender>DATAȜpAnimAnim>DATAphȜSoundSound>DATAhp8ListenerSoundF>DATA8phSequencerSound>DATApؠ8Curve and SurfaceEditingF>DATAؠpCurve ToolsEditing>DATApؠCurve Tools1Editing>DATAx^x333?X @DhCQDhCC(BDC?z?DATATx`x333?X /9DATAqp ~2K~2L~KKDATAqЮ``?2?AHM00-gPDATApTransform PropertiesView3d[>DATAp3D Viewport propertiesView3d>"DATAYh333?(X z"?ǾML*?yE?>| Mp]\?U?5n4?u"?yE?Ǿ>^\?JL*?| T?@(%o@? .2? *ML* W?D> ?| ?fS?U?j4ةAA?&4?Ĵsk>q?)Aڻ'ןAZ.A)@?2?AHMz"?ǾML*?yE?>| Mp]\?U?5n4?H?;澲XvfA B?=CY_@ DATA he333?(X DATAxd`h 333?(X $. ǁ@#%%DATA`aP333?(X }lA@zA‰B}K -B- A@CC #<@-DATATP``333?(X Open Text File/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.py DATAЮqP` ??Pף~0~~0-дȯȯDATAȯpTransform PropertiesIpo!>DATA(]333?/X yC̽̌?yC@-uu- #< #<`jFzD OByC̽̌?DATAYд333?/X ??? ???? A???PA A!O?j?}GCHB? A B? #<CDATATд`333?/X /9DATAPqЮ` ~~~ #HDATAHpLink and MaterialsEditing>DATApHMeshEditingF>DATA 333?5X zCCHBC#?CFC= ADATA^333?5X #DhC`DpJgChCC(BDC?z?DATAT`333?5X /9SRt8mh SRBlenderManؼؿ0~N~KDATAؼnDATAnXؼKDATAXn~KDATAnؽX~DATAؽn,DATAnXؽ~,DATAXn0DATAnؾX~0DATAؾn,DATAnXؾ0DATAXnDATAnXDATAؿo XDATA ohؿؼDATAho ؼؽDATAohDATAo@ؽDATA@oXDATAo@XDATAoXDATAo`DATA`oؽؾDATAo`ؾDATAo8XDATA8oDATAo8ؾDATAoؽXDATAoXXXDATAXoDATAoXؾDATAoXDATA0qؼؽ?@Pף~+~~+ ,h(DATA(pOutputRender>DATAp(RenderRenderF>DATApAnimRender>DATApFormatRender>DATAh8 333?,>zCCHBC,?CFC= ADATA8^8h333?,>DhC?DhCC(BDC?z?mDATA8Y8333?,>??? ???? A??@PA Aj?c3>}GCHB? A B? #<CDATAa8333?,>@̌AR|B1@lA A@CC #<@DATAT`333?,>/9DATAq0XX~1K~1K~KKDATAq@ؾG@? JL~-/~-G~H/xDATAxpHOutputRender>DATAHpxRenderRender>DATApHAnimRender0>DATApFormatRenderH>DATApPreviewMaterial>DATApXMaterialMaterial>DATAXp(ShadersMaterial0>DATA(pXTextureMaterialH>DATAp(Map InputMaterialD>DATApMap ToMaterial,>DATAphLink and MaterialsEditing>DATAhp8MeshEditing>DATA8phMesh ToolsEditing0>DATAp8Mesh Tools 1EditingH>DATApRampsMaterial>DATApxMirror TranspMaterial0>XDATAxpHPreviewLamp>DATAHpxLampLamp>DATApHShadow and SpotLamp0>DATApTexture and InputLampH>DATApMap ToLampH>DATApXPreviewTexture>DATAXp(TextureTexture>DATA(pXColorsTexture>XDATAp(CloudsTexture0>DATApAnim settingsObject>DATAphDrawObject>DATAhp8HooksObject>DATA8phConstraintsObject0>DATAp8EffectsObject08DATApParticle InteractionObject0>8DATApxPreviewWorld>DATAxpHWorldWorld>DATAHpxMist / Stars / PhysicsWorld0>DATApHAmb OccWorld0>HDATApTexture and InputWorldH>DATApMap ToWorldH>DATA^333?LChCCpb@\CC(BDC?z?DATAYh333?LJ>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'>dDATA(h]333?LzC AzC A #< #<`jFzD OBDATAT`h333?L;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA@qؽXؾʫ==o?--GH`w(88DATA8pTransform PropertiesView3di>"DATA eX333?DATAxXd 333? > B@DATAYX333????]־Z?????]>Z??ʫ==o=>n? ;?ɾ>A,A]>Z??ʫ==o????]־Z???ɾ>A  B?=C]־Z?lJ@B@?1?dDATAa333?@ffzAbB@jA A@CC #<@DATA^333?DdC>9C,DeCC(BDC?z?DATA(](333?zC AzC A #< #<`jFzD OBDATAT(`333? Open Text FileATH/home/jerome/soft/3D/blender/blenderman0.1beta9.0//../pts/../blenderman0.1beta9.0.py DATAq@XX?4@ JL//lgp DATApTransform PropertiesView3di>"DATApYP333?9I>jvz)vK@>*ĘҿAf9?`Ivz*<>)vRpo?jK@>>(D>*@?&\"|?j?j?m@-_@K@:<()@j(WRbGF6Af9AS8fve<1=N>RBj{N@AY@?4@ JL9I>jvz)vK@>*ĘҿAf9? ?O>r"?ɾ>A  B?=C]־Z?lJ@B@?1?dDATA Pep333?DATAxdHP 333? > B@DATAHa333?@ffzAbB@jA A@CC #<@88DATA,8SC@ffDATA^ H333?DdC>9C,DeCC(BDC?z?DATA( ] 333?zC AzC A #< #<`jFzD OBDATAT ` 333? Open Text FileATH/home/jerome/soft/3D/blender/blenderman0.1beta9.0//../pts/../blenderman0.1beta9.0.py SRth mV8SRModel 4-split HO^`DATA nH DATAH n  `DATA n H `DATA n DATAnH DATAHnDATAnHDDATAnDDATAnHLDATAHnLDDATAnHL DATAn DATAn DATAHoH  DATAoH  DATAo  DATA oh HDATAho HDATAohH DATAo@ DATA@oDATAo@DATAoHDATAo`HDATA`oHDATAo`DATAo8HDATA8oDATAo8HDATAoDATAoXDATAXoDATAoXDATAq3 H ?@Pף-p2,DATApPreviewLamp>DATApLampLamp@>DATApPSpotLamp>DATAPp Texture and InputLamp>DATA pPMap ToLamp>PDATAp PreviewMaterial>DATApMaterialMaterial@>DATAp`PreviewWorld>DATA`p0WorldWorld@>DATA0p`Mist Stars PhysicsWorld>DATAp0Texture and InputWorld>DATAp Map ToWorld>DATA pp!OutputRender>DATAp!p@" RenderRenderF>DATA@"p#p!AnimRender>DATA#p#@"FormatRender>DATA#p$#Link and MaterialsEditing>DATA$p%#MeshEditingF>DATA%pP&$Mesh ToolsEditing>DATAP&p '%Mesh Tools 1Editing>DATA 'p'P&CameraEditing@>DATA'p( 'ShadersMaterial>DATA(p)'TextureMaterial>DATA)p`*(Anim settingsObject>DATA`*p0+)DrawObjectF>DATA0+p,`*ConstraintsObject>DATA,p,0+ScriptlinksScript>DATA,p,EffectsObject0+DATA-^.333?DhC^e¸/DuOlCC(BDC?z?mDATA.Y1-333???? ???? A??@PA Aj?c3>}GCHB? A B? #<CDATA1ap2.333?@̌AR|B1@lA A@CC #<@DATATp2`1333?/9DATA3q4H  E`E_``DATA4q>3HX<*a=o?MMM4(6<55DATA5p3D Viewport propertiesView3d>"DATA6Y9333???DD$?N?D$?%N%D??%H ?oX< xI !*a=S!?& B'!k'_Ay@?X<*a=o???DD$?N?? B  B??==C DATA9^:6333?DdCSC/ugD4=CC(BDC?z?DATAx:d8;9 333?x x?OQ6RDATA(8;]<:333?zC AzC A #< #<`jFzD OBDATAT<`8;333?MSAVE FILE/home/intrr/blender/blend/jects/klo/untitled.blend7DATA>qF4QB=tn=o?KKKL(?E??DATA?pTransform PropertiesView3dx>"DATA?YB333? ?3?3??3?3?QB=(^1n;sn=?QBA=4Xg)AzC?QB=tn=o??3?3?5?5QBA B??を==C DATAB^C?333? DdC8CnD fCC(BDC?z?DATA(C]EB333? zC AzC A #< #<`jFzD OBDATATE`C333? "LOAD FILEPUT PICTURES/Users/ton/Desktop/render/d/../er/../B.blendDATAFqO>H?@ JLM!CM!!M!C4#CXHMGGDATAGpTransform PropertiesView3dj>"DATAXHY8K333?x"?ǾLL*?yE?>| ) 2\\?V?!?y"?yE?3Ǿ>]\?LL*?| V?vA]~LA?C.2?S]*LL*iW?e.? ?| ?52?VA!A?Z4?)P<]>VI>3q ܠBiȦBg}B@?@ JLx"?ǾLL*?yE?>| ) 2\\?V?!?H?;澲Xv!A  B??8zT;=C DATA8K^8LXH333?DdCaCnDCC(BDC?z?DATA(8L]M8K333?zC AzC A #< #<`jFzD OBDATATM`8L333? SELECT SEQ PLUGIN PATH/home/jerome/local/blender-2.30/plugins/sequence/ DDATAOqFH0,"=0أ=o?K!CK!!K!CL#CP@UDATAPYR333?????????0,"=0أ=o?kAGAy?0,"=0أ=o??????kA B??==C DATAR^SP333?DdCQ"CfDAӗCC(BDC?z?DATA(S]@UR333?zC AzC A #< #<`jFzD OBDATAT@U`S333?SELECT SCRIPT PATH/home/jerome/local/blender-2.30/scripts/ntitled.blend lSRtVmh SRModel Single`WYY]^(^` DATA`WnWDATAWnW`W`DATAWn XW`DATA Xn`XWDATA`XnX X0DATAXnX`X0DATAXn YXFDATA Yn`YXFDATA`YnY Y0DATAYn`YFDATAYo(ZWWDATA(ZopZY`W XDATApZoZ(Z`W`XDATAZo[pZ XXDATA[oH[Z`XXDATAH[o[[WXDATA[o[H[W YDATA[o \[X YDATA \oh\[X YDATAh\o\ \`X`YDATA\o\h\X`YDATA\o@]\XYDATA@]o]\ YYDATA]o]@]`YYDATA]o]`XXDATA^qpi`W`XX X?@Pף// 0Pbg_aDATA_p_OutputRender>DATA_p`_RenderRenderF>DATA`pa_AnimRender>DATAap`FormatRender>DATAPb c 333?^zCCHBC0?CFC= ADATA c^ dPb333?^DhC?DhCC(BDC?z?mDATA dYg c333?^??? ???? A??@PA Aj?c3>}GCHB? A B? #<CDATAgag d333?^@̌AR|B1@lA A@CC #<@DATATg`g333?^/9DATApiqhj^XWW YG`Ga``PkPkDATAhjq(pi`YY YXG@? JL1E1KLEwwpp`kDATA`kp0lOutputRender>DATA0lpm`kRenderRender>DATAmpm0lAnimRender0>DATAmpnmFormatRenderH>DATAnppomPreviewMaterial>DATApop@pnMaterialMaterial>DATA@ppqpoShadersMaterial0>DATAqpq@pTextureMaterialH>DATAqprqMap InputMaterialD>DATArpsqMap ToMaterial,>DATAspPtrLink and MaterialsEditing>DATAPtp usMeshEditing>DATA upuPtMesh ToolsEditing0>DATAupv uMesh Tools 1EditingH>DATAvpwuRampsMaterial>poDATAwp`xvMirror TranspMaterial0>@pDATA`xp0ywPreviewLamp>DATA0ypz`xLampLamp>DATAzpz0yShadow and SpotLamp0>DATAzp{zTexture and InputLampH>DATA{pp|zMap ToLampH>zDATAp|p@}{PreviewTexture>DATA@}p~p|TextureTexture>DATA~p~@}ColorsTexture>@}DATA~p~CloudsTexture0>DATAp~Anim settingsObject>DATApPDrawObject>DATAPp HooksObject>DATA pPConstraintsObject0>DATAp EffectsObject0 DATApParticle InteractionObject0> DATAp`PreviewWorld>DATA`p0WorldWorld>DATA0p`Mist / Stars / PhysicsWorld0>DATApЇ0Amb OccWorld0>0DATAЇpTexture and InputWorldH>DATAp{ЇMap ToWorldH>ЇDATA{p_Fields and DeflectionPhysics>%DATA_p{Particles Physics>%DATAp_Soft BodyPhysics0>%DATApFluid SimulationPhysics0>%DATAp^p333?hjChC>8C[@gCC(BDC?z? DATApYPp333?hjJ>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'>dDATA(P]p333?hjzC AzC A #< #<`jFzD OBDATAT`P333?hj;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA(qhj`XXY`Yש=^G=o?1E1KLE 4  DATA pTransform PropertiesView3d{>DATAYД333?(?3?3=\???3?&3]???ש=D1n;]G=;D?`A4XP?AzC]???ש=^G=o??3?3=\??5?5`A  B??==C=]lJ@B@?1?d????DATA Дe 333?(DATAx dȕД 333?( > B@DATAȕa 333?(@ffzAbB@jA A@CC #<@DATA^ȕ333?(DdC>9C,DeCC(BDC?z?DATA(]333?(zC AzC A #< #<`jFzD OBDATAT`333?(Save FileFileATH/home/jerome/blender/Fluid/nuls/derman0.1beta9.0//../pts/../ready.blendta9.0.py ! SRtmVSRSequence Edit00@@5DATA0npDATApn0DATAnpDATAn0DATA0npDATApn0DATAnpDATAn0DATA0np\DATApn0\DATAnp\DATAnDATA0oxpDATAxo00DATAox00DATAoPpDATAPo0pDATAoPpDATAo(DATA(opDATApo(00DATAop0DATAoHpDATAHoppDATAoءH0pDATAءo 0DATA ohءpDATAho DATAohDATAoDATA@q00pxx8DATA8pOutputRender>DATApإ8RenderRenderF>DATAإpAnimRender>DATApإFormatRender>DATAx^x333?ƼDhC&ԓDhCC(BDC?z?DATATx`x333?Ƽ/9DATAq@pDATAq00pp8=i>o?[  [P DATA_333?\zCAzCAPP A@FB= A DATAY333?\????????8=i>o?fffAD&@??fffA B? #<CDATAT`333?\AVE TARGA/t1.blend9DATAq@p8=H>o?]]]]S DATA_333?zCAzCA1||1 A@FB= A DATAY333?????????8=H>o?fffA*@??fffA B? #<CDATAT`333?AVE TARGA/t1.blend9DATA@q08=>o?]]wx88pDATA(8]333?|B̽̌?B̽̌?88 #< #<`jFzD SQB̽̌?DATAYp8333?|????????8=>o?fffA@??fffA B? #<CDATATp`333?|OAD FILE/9SCWSCStageain(:NҝZ??Z=@dd??< ddd??_@@????L?fff??@ A///tmp///@&#@^@&^#DDATAOX$ DATAXO DATAOXZ DATA(N,d'=A@DATA@VZ ?o: WO (MWOWorld>>>===??A@pA A?L=TXdx$TX=====LAYERS====0 DATAP*DATAPxNDATAPXGDATA(DATA(pMDATAp(reenDATAp_DATAHxQreenDATAH====DATAHDATA QDATA h@mDATAh  DATAhxQDATA@DATA@rDATA@QDATAV)DATA`` DATA`xQDATA`reenDATA8DATA8QDATA8vH@DATA`DATAXxQDATAXFREEDATAX ====DATA0 0QDATA0 x DATAx  0 `reenDATA  x NDATA P  h NEWDATAP   DATA  P QDATA (   DATA( p  HDATAp  ( XQ==LADATA  p vH@DATA H  eDATAH   QDATA  H DATA   DATA h  QFREEDATAh   HDATA  h İbDATA @ RDATA@ 0LRpDATA@hvH@DATAQDATA` NEWDATA`P NEWDATA`QDATA8DATA88reenDATA8hQreenDATAreenDATAX  NEWDATAXPQvH@DATAXDATA0 DATA08 QDATA* 32DATAPx============================================================================= DATAXG 1: DATA DATAP-----------------------------------------------------------------------------x DATA 2: DATA_rDATATx----------------------------------------------------------------------------- EEDATA 3: DATArDATAT----------------------------------------------------------------------------- EEDATA@m 4: DATA rDATATx----------------------------------------------------------------------------- --DATA 5: DATArDATAT============================================================================= EEDATAV 6: DATA` rDATATx----------------------------------------------------------------------------- 6 DATA 7: DATArDATAT----------------------------------------------------------------------------- DATA 8: DATA`rDATATx----------------------------------------------------------------------------- DATA 9: DATA rDATAT0----------------------------------------------------------------------------- EEDATA10: DATA`DATAP============================================================================= @DATAh11: DATAbDATAT----------------------------------------------------------------------------- EEDATA 12: DATAHoDATATX----------------------------------------------------------------------------- t DATA13: DATAebDATAT----------------------------------------------------------------------------- EEDATA14: DATAbDATAT----------------------------------------------------------------------------- DATAH15: DATAbDATAT============================================================================= EDATA016: DATAhjDATAT----------------------------------------------------------------------------- EEDATA17: DATAPjDATAT----------------------------------------------------------------------------- EEDATA18: DATA8jrDATATh----------------------------------------------------------------------------- EEDATA19: DATA jDATATP----------------------------------------------------------------------------- qDATA20: DATA ==DATAT8 ============================================================================= EETXd$ xTXblenderman0.1betax%% %% DATALx%/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.pyDATA%8&H htmlDATA8&&% )DATA&&8& DATA&'& FREEDATA'X'&8 DATAX'''x DATA''X' 6zDATA'0(' RW@DATA0(x('P DATAx((0( > 0 SDATA()x( $DATA)P)(H FREEDATAP))) 8e.icDATA))P) 2.X DATA)(*)X DATA(*p*) DATAp**(*ȅ DATA*+p* DATA+H+*@ 9DATAH+++x DATA++H+ DATA+ ,+ DATA ,h,+P culaDATAh,, , QDATA,,h, DATA,@-,( DATA@--,p DATA--@- ts@DATA-.- of@DATA.`.- $DATA`...` DATA..`. FDATA.8/. DATA8//.@ DATA//8/p 1DATA/0/Њ eo SDATA0X0/ r %xDATAX000h DATA00X0 "CDATA0010 !FREEDATA01x108 2e EdDATAx1101 ile DATA12x1Ȍ DATA2P21 *ytagDATAP222h &DATA22P2 (ageTDATA2(32 -|DATA(3p32x DATAp33(3 DATA34p3 `-DATA4H43( DATAH444p DATA44H4 DATA4 54  rDATA 5h54@ 72 .DATAh55 5 44 .DATA55h5А DATA5@65 artDATA@665` DATA66@6 #DATA676 DATA7`76H DATA`777 ip@DATA77`7 !DATA78878 "4 21DATA8887 # DATA8888ؓ %-W@DATA8980 !--- DATA9X98 # jerDATAX999Д "4 23DATA99X9 !@DATA90:9p !DATA0:x:9 #27-MDATAx::0: " DATA:;x:` RelaDATA;P;: DATAP;;; DATA;;P;0 DATA;(<;x LDATA(<p<; (DATAp<<(< DATA<=p<@ DATA=H=< DATAH=== DATA==H= 'DATA= >=P DATA >h>= DATAh>> > DATA>>h>0 DATA>@?>x 'DATA@??> DATA??@? DATA?@?P DATA@`@? ?DATA`@@@ 'DATA@@`@( DATA@8A@p DATA8AA@ DATAAA8A ?DATAABAP 'DATABXBA DATAXBBB DATABBXB DATAB0CBh DATA0CxCB cDATAxCC0C DATACDxCH DATADPDC DATAPDDD؟ DATADDPD LDATAD(EDp DATA(EpED DATApEE(E DATAEFpEP DATAFHFE DATAHFFF DATAFFHF@ DATAF GF DDATA GhGF DATAhGG G0 t FiDATAGGhGx DATAG@HG DATA@HHG -X DATAHH@HX  DATAHIH DATAI`IH 'DATA`IIIP DATAII`I /DDATAI8JI8V DATA8JJIV PDATAJJ8JV DATAJKJW DATAKXKJ`W pADATAXKKKW ʒDATAKKXKW FREEDATAK0LK8X (DATA0LxLKX DATAxLL0LX DATALMxLY DATAMPML`Y ?DATAPMMMY DATAMMPMY DATAM(NM@Z DATA(NpNMZ DATApNN(NZ DATANOpN 4 21DATAOHON[  jerDATAHOOO`[ 27-SDATAOOHO[ 21-FDATAO POx\ DATA PhPO\ DATAhPP P^ &DATAPPhPX^ DATAP@QP_ *DATA@QQP_ yk&DATAQQ@Q` DATAQRQa  Hz&DATAR`RQHa qDATA`RRRb r-- DATARR`R`b 23-ODATAR8SRb 07-FDATA8SSRc 4 22DATASS8Sc  DATASTSd DATATXTSd 4 21DATAXTTT(e 04-JDATATTXTpe (DATAT0UTe DATA0UxUTf DATAxUU0UPf DATAUVxUf ?DATAVPVUf DATAPVVV(g DATAVVPVpg DATAV(WVg DATA(WpWVh DATApWW(WHh  jerDATAWXpWh 08-ODATAXHXWh  jerDATAHXXXi =r-x DATAXXHXpi a96 .DATAX YXj _@DATA YhYXj Cr-x DATAhYY Yk A@DATAYYhYpk 148 .DATAY@ZYk > jerDATA@ZZY@l y DATAZZ@Zl 703-ADATAZ[ZPm DATA[`[Zm DATA`[[[m  DATA[[`[ n DATA[8\[hn 4DATA8\\[n DATA\\8\n DATA\]\(o $DATA]X]\o "DATAX]]]o ,DATA]]X]0p 08:3DATA]0^]pp DATA0^x^]p DATAx^^0^p 834DATA^_x^ q DATA_P_^`q DATAP___q DATA__P_q DATA_(`_r 1DATA(`p`_Xr \t{ADATAp``(`r .DATA`ap`r DATAaHa`0s @DATAHaaaxs ,4DATAaaHas DATAa bat /DATA bhbapt #DATAhbb bt 3DATAbbhb u /DATAb@cbu 8DATA@ccbu /DATAcc@cHv -DATAcdcv 28DATAd`dcw DATA`dddXw !DATAdd`dw $DATAd8edx ")ADATA8eedPx DATAee8ex DATAefex DATAfXfe y 3DATAXfffhy DATAffXfy DATAf0gfz "DATA0gxgfPz DATAxgg0gz %DATAghxgz 3 DATAhPhg8{ DATAPhhh{ DATAhhPh{ (DATAh(ih| DATA(ipih`| DATApii(i| DATAijpi| DATAjHji@} iDATAHjjj} DATAjjHj} DATAj kj~ DATA khkj`~ DATAhkk k~ DATAkkhk~ DATAk@lk PDATA@llk U?DATAll@l _DATAlml pDATAm`mlH aDATA`mmm؁ b8DATAmm`mh _DATAm8nm ZDATA8nnm gFREEDATAnn8n `DATAnon PDATAoXon( ^DATAXooo EUV/IDATAooXo0 ^DATAo0po ^DATA0pxpoP XbDATAxpp0p؇ =DATApqxpH DATAqPqpx 2DATAPqqq؈ DATAqqPq DATAq(rqX DATA(rprq DATAprr(rЉ DATArspr 4DATAsHsrx tor DATAHsssȊ (DATAssHs  DATAs tsh .DATA thtsȋ DATAhtt t (DATAtthth DATAt@ut DATA@uut &ADATAuu@u  )DATAuvux xDATAv`vu  sDATA`vvv ?DATAvv`vp DATAv8wv0 dDATA8wwvȐ DATAww8w dDATAwxw8 DATAxXxw DATAXxxxP DATAxxXx DATAx0yx LDATA0yxyxp N@2YDATAxyy0y 100%DATAyzxy DATAzPzy DATAPzzz yDATAzzPz` }DATAz({z DATA({p{z DATAp{{({ bDATA{|p{8 nDATA|H|{ؚ iDATAH|||p aDATA||H| DATA| }|H }DATA }h}| @DATAh}} } jeroDATA}}h} {*.&DATA}@~} 2 DATA@~~}` ay-0DATA~~@~ DATA~~X DATA`~ @`DATA`` wmeDATA` 4DATA8  DATA8 }12:4DATAȀ8 DATAȀx DATAXȀ }DATAXp DATAX0 tzEiADATA0ئ DATA0x jDATAx0  iDATAx IDATAP0 LvDATAP TDATAP8 TDATA( DATA(p DATAp(H SDATAp DATAHЫ DATAH DATA؅HX DATA؅  DATA h؅ -UDATAh ( DATAhp DATA@ 7DATA@  DATAЇ@` DATAЇ *DATA`Ї bDATA` DATA`د  DATA8  DATA8h DATAȉ8 DATAȉ DATAXȉH DATAX DATAXб t DATA0 tDATA0xh tDATAx0 }DATAx iDATAPX t|DATAP  | DATAPس dDATA( dDATA(ph tDATAp(@ WqDATAp YidDATAH o?DATAH 7}DATA؎H8 [*tDATA؎  qWDATA h؎ u|DATAh  tDATAh p|DATA@ }xDATA@H DATAА@ DATAА  DATA`А DATA` DATA`( DATA8 DATA8( s DATAȒ8Ⱦ 0meDATAȒ( yDATAXȒп meDATAX A{ADATAX { DATA0p v19:1DATA0x DATAx0h 832DATAx DATAP r--DATAPP DATAP DATA( @DATA(p F4DATAp( '7@DATAp DATAH DATAH bDATAؗH DATAؗ  DATA hؗ@ 4DATAh  "DATAhP c4DATA@ DATA@  ~DATAЙ@ DATAЙ DATA`Й DATA`  wDATA` DATA8 DATA8X aDATAț8 DATAț8 ]DATAXț @DATAX8 DATAX @DATA0 @DATA0x` KDATAx0 @DATAx( jF4DATAP kDATAPX jDATAP lCADATA( DATA(p fDATAp(x pDATAp ssuADATAH d+hDATAHP cDATAؠH M(WDATAؠ ` DATA hؠ q}@DATAh P bDATAh DATA@0 DATA@x DATAТ@ MdDATAТ@ i DATA`Т dDATA` OGHnDATA`X |DATA88 i"DATA8 OnDATAȤ8 S:iDATAȤ PjDATAXȤ =itDATAXx gDATAX `d*tDATA0 Dx&DATA0x [jDATAx0 |DATAx d,DATAP iDATAP` ed0|DATAP |DATA(@ 7nBDATA(p jDATAp( ].}DATAp@ d DATAH }DATAH $iDATAةH( }DATAة  tDATA hة@ VqPDATAh  O|DATAhH dLocDATA@ )DATA@ DATAЫ@8 !DATAЫ )DATA`Ы DATA`0 DATA`x "DATA8 CDATA8 XDATAȭ8 sDATAȭ( DATAXȭp IACDATAX ud5DATAX DATA0 DATA0x DATAx0 DATAx /DATAP |DATAP 1?DATAP y?DATA( DATA(p DATAp( a?DATAp0 aDATAH fDATAHX $hDATAزH x"' DATAز h ``DATA hز DATAh  DATAhH DATA@p $DATA@ 1DATAд@( DATAд IDATA`дX sDATA` -DATA`X 2DATA8 DDATA80 DATAȶ8x qDATAȶ BDATAXȶ` eFREEDATAX $DATAXP DATA0 ^'+|ADATA0x0 5SDATAx0 [DATAx [4DATAP ^ADATAP  ^QDATAP DDATA(( oDATA(p aDATAp(X dDATAp DATAH  DATAH` DATAػH ADATAػ  24-ODATA hػ0 !DATAh  DATAh .DATA@( meDATA@h A{ADATAн@ !bDATAн DATA`нH .T{ADATA` DATA` aDATA8 DATA8 3rw-DATAȿ8( @DATAȿp orwDATAXȿ  DATAXX  8DATAX  1DATA0  WDATA0x  DATAx0  ;DATAx@  bDATAP  2meDATAP  DATAP0  1DATA(  DATA(p  0r--DATAp(8  DATAp  SDATAH ʒDATAH0 /homDATAHx !DATA  DATA h )DATAh X DATAh DATA@ DATA@ oDATA@ &?DATA 52 .DATA`0 DATA` DATA` DATA8 2'+|ADATA8` DATA8 DATA DATAX( DATAXh DATAX DATA0 QDATA0xH ,DATAx0 DATAx *DATAP8 ADATAPp ,DATAP "DATA(  .DATA(p DATAp( DATAp ADATAHP $DATAH DATAH DATA ( DATA hx 1DATAh  A{ADATAh DATA@h 'DATA@ T{ADATA@ XQDATAP ,DATA` DATA` DATA`8 DATA8x DATA8 DATA8 DATAP ,DATAX DATAX DATAX8 DATA0x DATA0x DATAx0 DATAxP -DATAP DATAP DATAP8 DATA(x DATA(p DATAp(  DATApP  -DATAH  DATAH  DATAH8! DATA x! DATA h! DATAh " DATAhP" `DATA@" `DATA@" PPPDATA@ # PPPDATAh# PPPDATA`# DATA`# DATA`@$ DATA8$ DATA8$ DATA8% DATAX% DATAX% DATAX% DATAX0& DATA0p& DATA0x& DATAx0' DATAxH' DATAP' DATAP' DATAP ( DATA(`( DATA(p( `DATAp(( DATAp8) DATAH) DATAH) PPPDATAH* DATA P* DATA h* DATAh * DATAh(+ DATA@p+ DATA@+ DATA@, 'DATAX, ]˾DATA`, DATA`- 1DATA`- DATA8. DATA8/ DATA8@/ )µDATA/ DATAX/ DATAX 0 DATAXh0 'ķDATA00 DATA0x1 DATAx0P1 ,DATAx1 <ǺDATAP 2 'DATAPx2 :DATAP2 DATA((3 ɼDATA(ph3 DATAp(3 DATAp3 DATAH04 DATAHp4 (DATAH4 DATA 5 DATA hX5 DATAh 5 DATAh5 DATA@06 MDATA@6 "DATA@7 DATAP7 'DATA`7 (DATA`8 9DATA`h8 DATA88 &DATA89 DATA8`9 'DATA9 :DATAX : DATAXp: +PPPDATAX: DATA0; DATA0xP; &DATAx0; $FREEDATAx< DATAP@< DATAP< DATAP< ,DATA(8= @2YDATA(p= -DATAp(= 4DATApH> DATAH> DATAH> Th DATAH(? nce DATA x? 3DATA h? DATAh @ (kCDATAh@ :H DATA@XA 'DATA@A DATA@A DATA@B !DATA`B DATA`B DATA`C DATA8hC DATA8C 5DATA8D 9PoinDATAxD (QDATAXD 8DATAXE SDATAXXE UDATA0E FREEDATA0xE DATAx00F DATAxxF DATAPF 8DATAPG IΒDATAPxG HlYDATA(G &FREEDATA(pHH (UIDATAp(H 'DATApH )DATAHPI 'DATAHI "9DATAHI .]DATA XJ EZDATA hJ UIDATAh K BFREEDATAhK >8DATA@K .DATA@XL RDATA@L 0DATA8M NDATA`M D8aDATA`0N UIDATA`xN >FREEDATA8N _FREEDATA8xO `UIDATA8P bDATAPP lgDATAXQ ΒDATAXQ 8DATAX(R UIDATA0 R 8DATA0 x S "lDATAx  0 T JRW@DATA  x xT DATA P U lDATAP   W (DATA  P `W FREEDATA (  W DATA( p  W qXnDATAp  ( X +pDATA  p X -8DATA H  8Y &DATAH   Y (HrDATA  H Y 09DATA    HZ -FREEDATA  h  Z 0LvDATAh   [ ,UIDATA  h h[ 0sDATA @  [ *8DATA@   \ 9DATA  @ \ _DATA   ] &ΒDATA `  p] FREEDATA`   ] UIDATA  ` ^ %DATA 8  `^ &(zDATA8   ^ FREEDATA  8 ^ pyDATA   H_ & = DATA X  _ zDATAX   _ DATA  X 0` DATA 0  p` DATA0 x  ` DATAx  0 a DATA  x Ha DATA P a )1DATAP   a ZQk;DATA  P b DATA ( hb No SDATA( p b DATAp  ( b DATA  p Hc DATA H c DATAH  c @BDATA  H d DATA  `d DATA h d DATAh  d DATA  h 8e DATA @ e LDATA@  e DATA  @ f DATA   Pf DATA `  f DATA`   f DATA  ` g pUW@DATA 8  hg UIDATA8   g FREEDATA  8 g = DATA   8h = DATA X  h 9DATAX   h = DATA  X i 4= DATA 0  Pi FREEDATA0 x  i = DATAx  0 i = DATA  x (j FREEDATA P  hj = DATAP   j *D= DATA  P k &ΒDATA (  hk FREEDATA( p  k DATAp  ( k +t= DATA  p Pl != DATA H  l &FREEDATAH   l "DATA  H Hm &8DATA    m 'L= DATA  h  m DATAh   @n UIDATA  h n DATA @  n *= DATA@   0o 19DATA  @ o FREEDATA   o  DATA `  p &GDATA`   xp DATA  ` p DATA 8  q DATA8   Pq DATA  8 q *DATA   q 1DATA X  Xr 7DATAX   r DATA  X s DATA 0  Xs DATA0 x  s DATAx  0 s DATA  x t ?DATA P  t DATAP   t ,%t|BDATA  P (u n EdDATA (  `u er PDATA( p  u FREEDATAp  ( u #Add DATA  p 8v DATA H  v %DATAH   v DATA  H 0w ,DATA    hw To ODATA  h  w &DATAh   x DATA  h Xx DATA @  x &xDATA@   y DATA  @ 8y DATA ! hy $DATA! `! y ADATA`! ! ! z ~FREEDATA! ! `! z DATA! 8" ! h{ QDATA8" " ! { ,DATA" " 8" (| (DATA" # " | ,DATA# X# " | DATAX# # # }  CDATA# # X# h} FREEDATA# 0$ # } DATA0$ x$ # } "DATAx$ $ 0$ 0~ DATA$ % x$ x~ iDATA% P% $  wDATAP% % %  oDATA% % P% X gDATA% (& %  "DATA(& p& % @ *DATAp& & (&  DATA& ' p&  DATA' H' &  DATAH' ' ' ` xDATA' ' H'  tDATA'  ( '  oDATA ( h( ' P vDATAh( ( (  oDATA( ( h(  rDATA( @) ( 8 rDATA@) ) ( ؆ zDATA) ) @)  2DATA) * )  DATA* `* )  DATA`* * * ` DATA* * `*  #DATA* 8+ *  DATA8+ + * @ DATA+ + 8+  DATA+ , + Љ DATA, X, +  DATAX, , , P DATA, , X,  DATA, 0- ,  DATA0- x- ,  DATAx- - 0- @ DATA- . x- x DATA. P. -  DATAP. . .  DATA. . P. 0 DATA. (/ . h DATA(/ p/ .  +DATAp/ / (/  DATA/ 0 p/ H DATA0 H0 /  DATAH0 0 0  DATA0 0 H0 ( (DATA0  1 0  DATA 1 h1 0 Ў *DATAh1 1 1 ( DATA1 1 h1 x (DATA1 @2 1 Џ DATA@2 2 1  DATA2 2 @2 H DATA2 3 2  "DATA3 `3 2  $DATA`3 3 3 8 $DATA3 3 `3  %DATA3 84 3  &DATA84 4 3 @ "DATA4 4 84  %DATA4 5 4  %DATA5 X5 4 @ #DATAX5 5 5  "DATA5 5 X5  DATA5 06 5 0 #DATA06 x6 5  #DATAx6 6 06 Д !DATA6 7 x6  $DATA7 P7 6 x DATAP7 7 7 ȕ DATA7 7 P7  (DATA7 (8 7 p #DATA(8 p8 7  DATAp8 8 (8  !DATA8 9 p8 X 'DATA9 H9 8  DATAH9 9 9  "DATA9 9 H9 P DATA9  : 9  $DATA : h: 9  "DATAh: : : @ &DATA: : h:  (DATA: @; :  -DATA@; ; : P !DATA; ; @;  DATA; < ;  $DATA< `< ; H DATA`< < <  DATA< < `<  !DATA< 8= < 8 !DATA8= = <  DATA= = 8= ؜ !DATA= > = ( DATA> X> = x 'sDATAX> > > Н 'DATA> > X> ( DATA> 0? > x #DATA0? x? > Ȟ "DATAx? ? 0?  "DATA? @ x? h DATA@ P@ ?  #DATAP@ @ @  DATA@ @ P@ P DATA@ (A @  DATA(A pA @  !DATApA A (A 8 DATAA B pA  DATAB HB A ء DATAHB B B ( DATAB B HB x DATAB  C B Ȣ DATA C hC B  DATAhC C C h DATAC C hC  DATAC @D C  DATA@D D C X DATAD D @D  DATAD E D  !`DATAE `E D H $`DATA`E E E  `DATAE H`E  #DATAHE @ 'DATA؋H PPPDATA؋  PPPDATA h؋8 PPPDATAh  !PPPDATAhا DATA@( !DATA@x #DATAЍ@Ȩ DATAЍ DATA`Ѝh "аDATA` !DATA` DATA8X DATA8 DATAȏ8 ˾DATAȏH DATAXȏ #DATAX !DATAX8 #DATA0 DATA0xج DATAx0( DATAxx !DATAPȭ $fffDATAP  #fffDATAPp &µDATA(Ȯ "DATA(p $DATAp(p %DATApȯ $mmmDATAH  #mmmDATAHp &ķDATAؔHȰ "DATAؔ  $DATA hؔp $uuuDATAh ȱ "uuuDATAh 'ǺDATA@p #DATA@ 'DATAЖ@ $DATAЖp #}}}DATA`Ж (}}}DATA` !DATA`h DATA8 DATA8ش DATAȘ8 vDATAȘ DATAXȘ DATAXH DATAX DATA0ж DATA0x DATAx0H DATAx DATAP DATAP DATAP( DATA(p DATA(p DATAp( DATAp  DATAHX DATAH DATA؝H DATA؝  DATA h؝X DATAh  DATAhغ DATA@  DATA@` DATAП@ DATAП DATA`П DATA`P DATA` DATA8ȼ PPPDATA8 9PPPDATAȡ8p 6PPPDATAȡؽ DATAXȡ( DATAXp FREEDATAX DATA0 0DATA0x@ DATAx0x DATAx DATAP DATAP8 DATAPx DATA( DATA(p DATAp(8 DATAph DATAH _DATAH8 dDATAئH DATAئ  DATA hئ` DATAh  .DATAh DATA@H 2DATA@ .DATAШ@ 8DATAШp .DATA`Ш ,DATA`0 DATA` DATA8 մDATA8  "մDATAȪ8p մDATAȪ մDATAXȪ DATAX8 DATAX PPPDATA0 "PPPDATA0x( PPPDATAx0p PPPDATAx DATAP DATAPX DATAP DATA( DATA(p( DATAp(` ɼDATAp *DATAH XDATAHp DATAدH (DATAد  #DATA hدh #˾DATAh  DATAh +DATA@` DATA@ +DATAб@ DATAб@ DATA`б DATA` oDATA` #DATA8 "hhhDATA8  :PPPDATAȳ8 nDATAȳ( ?DATAXȳ GDATAX ApppDATAX ŸDATA0 9DATA0x  DATAx0X DATAx DATAP xxxDATAP  PDATAP ;DATA( 0DATA(ph ?DATAp( FDATApP TDATAH MDATAHX KDATAظH IDATAظ H DATA hظ ̿DATAh  -DATAh@ FDATA@ /DATA@ CDATAк@ KDATAк ,DATA к` *DATA h  MDATAh  8 ,DATA  h  DATA @  NDATA@  ` DATA Ч @  ?DATAЧ   DATA ` Ч H DATA`   x %DATA  `  DATA 8  DATA8  X DATA ȩ 8  DATAȩ   #DATA X ȩ 0 DATAX   h DATA  X  )PPPDATA 0  DATA0 x P 9DATAx  0  DATA  x  DATA P H DATAP    DATA  P  DATA (  DATA( p h DATAp  (  DATA  p  DATA H @ DATAH   DATA خ H  DATAخ   DATA h خ ` DATAh   DATA  h  DATA @ 8 DATA@  h DATA а @  DATAа   DATA ` а P 'DATA`    FDATA  `  DATA 8 X DATA8   DATA Ȳ 8 P DATAȲ   DATA X Ȳ  DATAX    %DATA  X x DATA 0  #DATA0 x  DATAx  0 P DATA  x  DATA P  DATAP   ( DATA  P p DATA (  %DATA( p  DATAp  ( ` DATA  p  $DATA H  #DATAH  8 %DATA ط H  !DATAط   %DATA h ط 8 DATAh   #DATA  h  DATA @  DATA@  ` DATA й @  DATAй   DATA ` й @ DATA`    DATA  `  *DATA 8 0 DATA8  h DATA Ȼ 8  FDATAȻ  ( %DATA X Ȼ  3DATAX    DATA  X  DATA 0  NDATA0 x ` %DATAx  0  &DATA  x  3DATA P p xDATAP    DATA  P ` DATA (  DATA( p  DATAp  ( 0 DATA  p  DATA H  DATAH   DATA  H P LDATA   *DATA h ( 2DATAh   BDATA  h  DATA @ @ 0DATA@   DATA  @  0DATA  8 5DATA `  'DATA`    9DATA  ` ` ZDATA 8  DATA8  0 (DATA  8  DATA   (DATA X  %DATAX   p DATA  X  7DATA 0  #DATA0 x h |DATAx  0  !DATA  x h DATA P  'DATAP    DATA  P 8 #DATA (  0DATA( p  0DATAp  ( H 0DATA  p  0DATA H  3DATAH  h 3DATA  H  3DATA  ( ,DATA h  DATAh   DATA  h  DATA @ @ DATA@   DATA  @  DATA   DATA ` ` .DATA`    'DATA  `   %DATA 8 p  KDATA8   +DATA  8 @  DATA   DATA X  DATAX    -DATA  X X  DATA 0  EDATA0 x  DATAx  0 X  ;DATA  x  DATA P   DATAP   P  /DATA  P  PPPDATA (  DATA( p ( #DATAp  ( x 6DATA  p  DATA H ( DATAH  p DATA  H  DATA   DATA h H GDATAh   DATA  h  DATA @ @ DATA@   DATA  @  3DATA   +DATA ` p DATA`    DATA  `  <DATA 8 X DATA8  x DATA  8  lDATA  ( DATA X P DATAX   ` qDATA  X  DATA 0 ( DATA0 x 8 DATAx  0 p DATA  x  DATA P  `DATAP    PPPDATA  P 0 vPPPDATA (  PPPDATA( p  DATAp  (   PPPDATA  p `  @DATA H ! DATAH  " BDATA  H # DATA  # #DATA h $ vDATAh  $ DATA  h % JDATA @ 0& DATA@  ' DATA  @ X' DATA  ' ,DATA ` ) DATA`   X) DATA  ` 8+ 6DATA 8 + DATA8  + DDATA  8 `, DATA  - DATA X - DATAX   . DATA  X (/ DATA 0 p/ #DATA0 x / DATAx  0 / PPPDATA  x @0 DATA P 0 DATAP   0 )DATA  P (1 "DATA ( x1 8DATA( p 1 DATAp  ( 02 DATA  p 2 DATA H 2 DATAH  3 DATA  H p3 DATA  3 DATA h 4 DATAh  `4 DATA  h 4 DATA @ 4 DATA@  5 DATA  @ X5 DATA  5 DATA ` 5 DATA`   6 DATA  ` X6 DATA 8 6 DATA8  6 DATA  8 07 DATA  x7 "DATA X 7 DATAX   8 DATA  X H8 DATA 0 8 DATA0 x 8 DATAx  0 9 DATA  x H9 DATA P 9 DATAP   9 DATA  P : DATA ( P: DATA( p : DATAp  ( : DATA  p ; DATA H h; DATAH  ; DATA  H ; DATA  < DATA h `< DATAh  < DATA  h < DATA @ 8= DATA@  = DATA  @ = DATA  > DATA ` X> DATA`   > DATA  ` > DATA 8 8? DATA8  x? DATA  8 ? DATA  @ DATA X P@ DATAX   @ DATA  X @ DATA 0 (A DATA0 x pA DATAx  0 A DATA  x B DATA P HB DATAP   B DATA  P B DATA ( C DATA( p hC &DATAp  ( C *DATA  p D DATA H XD DATAH  D DATA  H D DATA  E .DATA h pE DATAh  E DATA  h F DATA @ PF DATA@  F DATA  @ F (DATA  G -DATA ` G DATA`   G +DATA  ` H DATA 8 pH DATA8  H DATA  8 I SDATA  I eDATA X J 4DATAX   J !DATA  X J DATA 0 (K DATA0 x hK DATAx  0 K \DATA  x 8L TDATA P L %DATAP   M DATA  P PM "DATA ( M 'DATA( p M #DATAp  ( HN 'DATA  p N DATA H N DATAH  (O DATA  H `O `DATA   O DATA  h 8P DATAh   HQ DATA  h Q DATA @  Q ODATA@   8R DATA  @ R ,DATA   R +DATA `  8S DATA`   S DATA  ` S DATA 8  T DATA8   pT 1DATA  8 T -DATA   0U FDATA X  U >DATAX   V DATA  X `V EDATA 0  V DATA0 x  W DDATAx  0 W DATA  x W GDATA P  XX DATAP   X BDATA  P Y DATA (  XY EDATA( p  Y DATAp  ( Z EDATA  p Z DATA H  Z DATAH   [ !DATA  H `[ -DATA    [ DATA  h   [ :DATAh     `\ DATA    h  \ FREEDATA  @   \ DATA@     ] ?zDDATA    @  ] DATA     ] DATA  `   ^ DATA`      8^ \DATA    `  ^ ePE DATA  8   `_ (}DATA8     _ MDATA    8  0` DATA     ` 'DATA  X   ` 7DATAX      @a /DATA    X  a DATA  0  pb 9DATA0 x  b /DATAx  0 8c 7DATA  x c 8DATA P  d <DATAP   xd >DATA  P d BDATA (  Xe <DATA( p  e DATAp  ( f DATA  p g DATA H  `g DATAH   @h DATA  H xh DATA    h DATA  h  i 9DATAh   j /DATA  h hj 8DATA @  j >DATA@   @k DATA  @ k ]DATA   l DATA `  `l NDATA`   l DATA  ` m DATA 8  Xm DATA8   0n 9DATA  8 n /DATA   n pDATA X  o +DATAX   o ,DATA  X Pp 9DATA 0  p /DATA0 x  q pDATAx  0 q DATA  x r DATA P  Pr DATAP   r DATA  P r DATA (  s "DATA( p  ps DATAp  ( s DATA  p t DATA H  Pt DATAH   t DATA  H t DATA    u SDATA  h  u DATAh   u RDATA  h hv DATA @  v UDATA@   @w DATA  @ w PDATA   x DATA `  `x SDATA`   x DATA  ` 0y SDATA 8  y DATA8   z DATA  8 @z DATA   z DATA X  H{ DATAX   `| -DATA  X | -DATA 0   } DATA0  x   `} DATAx    0  } DATA  ! x  } :DATA! P!  8~ #DATAP! ! ! ~ DATA! ! P! @ DATA! (" ! x ,DATA(" p" !  DATAp" " ("  -DATA" # p"  DATA# H# "  DATAH# # #  ;DATA# # H# h QDATA#  $ #  DATA $ h$ # ( DATAh$ $ $ x +DATA$ $ h$ Ђ JDATA$ @% $ H DATA@% % $  <DATA% % @%  -DATA% & % ` DATA& `& %  :DATA`& & &  DATA& & `& H DATA& 8' & P DATA8' ' &  DATA' ' 8' h DATA' ( '  wDATA( X( ' H DATAX( ( ( x 5DATA( ( X(  QDATA( 0) ( ` DATA0) x) (  DATAx) ) 0)  DATA) * x)  DATA* P* ) ` %DATAP* * *  DATA* * P*  DATA* (+ * 8 BDATA(+ p+ *  DATAp+ + (+  DATA+ , p+  %DATA, H, + p DATAH, , ,  DATA, , H,  DATA,  - , 0 DATA - h- ,  DATAh- - -  .DATA- - h-  DATA- @. - X DATA@. . -  DATA. . @.  DATA. / .  DATA/ `/ . ` 4DATA`/ / / ȏ DATA/ / `/  %DATA/ 80 / h !DATA80 0 /  DATA0 0 80  DATA0 1 0 P DATA1 X1 0  DATAX1 1 1  'DATA1 1 X1 8 /DATA1 02 1  ?DATA02 x2 1  DATAx2 2 02 P /DATA2 3 x2  DATA3 P3 2  &DATAP3 3 3 X DATA3 3 P3  DATA3 (4 3 Д DATA(4 p4 3  DATAp4 4 (4 P =DATA4 5 p4  SDATA5 H5 4 @ aDATAH5 5 5 Ж DATA5 5 H5  DATA5  6 5 H DATA 6 h6 5  DATAh6 6 6  DATA6 6 h6  *DATA6 @7 6 ` $DATA@7 7 6  DATA7 7 @7  9DATA7 8 7 p DATA8 `8 7  "DATA`8 8 8  $DATA8 8 `8 h DATA8 89 8  DATA89 9 8  (DATA9 9 89 H DATA9 : 9  ?DATA: X: 9  DATAX: : : P DATA: : X:  DATA: 0; :  !DATA0; x; : 0 DATAx; ; 0;  DATA; < x;  DATA< P< ;  DATAP< < < P DATA< < P<  0DATA< (= <  DATA(= p= < @ DATAp= = (= x DATA= > p=  DATA> H> =  0DATAH> > > h DATA> > H>  DATA>  ? >  DATA ? h? > ( /DATAh? ? ?  QDATA? ? h?  1DATA? @@ ? h NDATA@@ @ ?  DATA@ @ @@ 8 DATA@ A @  GDATAA `A @  DATA`A A A H GDATAA A `A  DATAA 8B A  0DATA8B B A h DATAB B 8B  DATAB C B  DATAC XC B 0 DATAXC C C p DATAC C XC  *DATAC 0D C  DATA0D xD C ` FDATAxD D 0D ا 6DATAD E xD @ DATAE PE D H XDATAPE E E Щ DATAE E PE  DATAE (F E X +DATA(F pF E  DATApF F (F  GDATAF G pF p 7DATAG HG F ث DATAHG G G ج YDATAG G HG ` DATAG  H G  DATA H hH G  DATAhH H H ( DATAH H hH p HDATAH @I H  8DATA@I I H P DATAI I @I P ZDATAI J I ذ DATAJ `J I  &DATA`J J J h DATAJ J `J  DATAJ 8K J  GDATA8K K J x 7DATAK K 8K  ,DATAK L K @ DATAL XL K H ZDATAXL L L д ;DATAL L XL 8 DATAL 0M L  0DATA0M xM L  DATAxM M 0M 0 LDATAM N xM  7DATAN PN M  DATAPN N N  _DATAN N PN  $DATAN (O N  &DATA(O pO N ` DATApO O (O  DATAO P pO  IDATAP HP O @ %DATAHP P P  DATAP P HP  )DATAP  Q P @ DATA Q hQ P p %ADATAhQ Q Q Ȼ DATAQ Q hQ  #qJDATAQ @R Q ` DATA@R R Q  y@DATAR R @R ؼ i`DATAR S R  ` DATAS `S R X .^DATA`S S S  $ԏ`DATAS S `S  ,@DATAS 8T S @ 5ihDATA8T T S  `V@DATAT T 8T  *ZDATAT U T 8 -DATAU XU T  DATAXU U U  DATAU U XU ( `;@DATAU 0V U ` DATA0V xV U  DATAxV V 0V  D`DATAV W xV H ,DATAW PW V  DATAPW W W  DATAW W PW H `Z@DATAW (X W  8g`DATA(X pX W  :DATApX X (X 0 DATAX Y pX x q@DATAY HY X  7tDATAHY Y Y  X΂@DATAY Y HY H ł@DATAY  Z Y  9vDATA Z hZ Y  @DATAhZ Z Z  `DATAZ Z hZ  #DATAZ @[ Z X }^DATA@[ [ Z  g`DATA[ [ @[ Ж DATA[ \ [  `DATA\ `\ [ P 첂@DATA`\ \ \  `DATA\ \ `\ ȗ DATA\ 8] \  LĈDATA8] ] \ X DATA] ] 8]  6DATA] ^ ]  DATA^ X^ ] X DATAX^ ^ ^  +`DATA^ ^ X^  kpJDATA^ 0_ ^ @ ztDATA0_ x_ ^ x "DATAx_ _ 0_ Ț n@DATA_ ` x_  .;DATA` P` _ h ̎`DATAP` ` `  8apJDATA` ` P`  '9@DATA` (a ` H (@DATA(a pa `  "u DATApa a (a  sfDATAa b pa 0 x`DATAb Hb a p @^@DATAHb b b  \`DATAb b Hb  DATAb  c b @ $aDATA c hc b  DATAhc c c  (*ZDATAc c hc 8 X@DATAc @d c p 6qJDATA@d d c  #DATAd d @d  DATAd e d H DATAe `e d  ,`DATA`e e e ؠ @DATAe e `e H x`DATAe 8f e  @DATA8f f e С DATAf f 8f  ^@DATAf g f ` ADATAg Xg f Т "@DATAXg g g  !DATAg g Xg ` $}t^DATAg 0h g  DATA0h xh g  tpJDATAxh h 0h H ܒ`DATAh i xh  DATAi Pi h ؤ ! @DATAPi i i ( /L@DATAi i Pi  @@DATAi (j i Х ADATA(j pj i @ В`DATApj j (j  DATAj k pj Ȧ DATAk Hk j  Ȯ@DATAHk k k X DATAk k Hk  DATAk  l k  DATA l hl k 8 "DATAhl l l  CADATAl l hl  `DATAl @m l 8 DATA@m m l p )^DATAm m @m ȩ DATAm n m  DATAn `n m P $`4qJDATA`n n n  f`DATAn n `n  `!@DATAn 8o n 0 h`DATA8o o n  DATAo o 8o  `DATAo p o  DATAp Xp o ` @DATAXp p p  DATAp p Xp  T`DATAp 0q p ( |.DATA0q xq p h |@DATAxq q 0q  DATAq r xq ح .DATAr Pr q 8 DATAPr r r  DATAr r Pr  U@DATAr (s r  @_@DATA(s ps r 0 DATAps s (s p DATAs t ps  DATAt Ht s  xf`DATAHt t t @ jDATAt t Ht  !DATAt  u t ذ Q@DATA u hu t  ,CBTDATAhu u u p :t#qJDATAu u hu ر 3~pJDATAu @v u 8 SDATA@v v u  %tDATAv v @v  DATAv w v ( ߭QjDATAw `w v x @DATA`w w w  @DATAw w `w  DATAw 8x w 0 DATA8x x w p pJDATAx x 8x  DATAx y x  DATAy Xy x ( 4DATAXy y y  =V;WDATAy y Xy ȵ 'DATAy 0z y  c^DATA0z xz y h DATAxz z 0z  $`DATAz { xz  (DATA{ P{ z X #8@DATAP{ { {  pڂ@DATA{ { P{ ط ;`DATA{ (| { @ `DATA(| p| { x DATAp| | (|  ̻@DATA| } p|  DATA} H} | 0 `DATAH} } } x yDATA} } H}   pJDATA}  ~ }  &DATA ~ h~ } X .`X@DATAh~ ~ ~  7DATA~ ~ h~  DATA~ @ ~ H DATA@  ~  i`DATA  @ Ȼ &X@DATA    . %@DATA `   DATA`   ȼ @DATA  `  7DATA 8  ` !@DATA8    H @DATA ȁ 8  ?~DATAȁ   @ <`DATA X ȁ x 2DATAX   ؾ `pJDATA  X  DATA 0  P DATA0 x   DATAx  0  'ZDATA  x  h`DATA P  H =@DATAP    `DATA  P  pJDATA (   2t*pDATA( p   teleDATAp  (  agaDATA  p  0edsDATA H  ` epyDATAH    "jxpDATA ؆ H  arsDATA؆    8 resDATA  h ؆  2gainDATAh    cropDATA  h ( stsDATA @  h areaDATA@    ltraDATA Ј @  ransDATAЈ   @ 3rinDATA ` Ј  olrDATA`    e[25DATA  ` ( 1t[3]DATA 8   v*bDATA8    spacDATA Ȋ 8  [4]DATAȊ   @ *etoDATA X Ȋ  wtyDATAX    rsubDATA  X ( quaDATA 0  h ondDATA0 x   actDATAx  0  ft*DATA  x 0 bkfDATA P   izeDATAP    hysiDATA  P  asxDATA (  @ rleaDATA( p   gesDATAp  (  %yscDATA  p  geinDATA H  ` FexpDATAH    lesDATA ؏ H  !160]DATA؏    0 blocDATA  h ؏ x 0]peDATAh    askDATA  h  schDATA @  ` ckrDATA@    menDATA Б @  ightDATAБ    ove_DATA ` Б ` +i_hDATA`    hfoDATA  `  r_spDATA 8  H 2ctioDATA8    ]buDATA ȓ 8  4]vDATAȓ   0 facDATA X ȓ x fontDATAX    ggaDATA  X  3menuDATA 0  h ndyDATA0 x   neltDATAx  0  swapDATA E x  gloDATAE 8F  h tartDATA8F F E  pmeDATAF F 8F  :endDATAF G F ` 4eighDATAG XG F  xycoDATAXG G G  l2tDATAG G XG P *froDATAG 0H G  actDATA0H xH G  locaDATAxH H 0H 0 nlocDATAH I xH x %filDATAI PI H  AsounDATAPI I I @ meenDATAI I PI  DclasDATAI (J I  ]caDATA(J pJ I H utDATApJ J (J  4ivDATAJ K pJ  xPlDATAK HK J ( rveDATAHK K K p bConDATAK K HK  GrouDATAK  L K  "ceImDATA L hL K X GcrEdDATAhL L L  ybNDATAL L hL  !MessDATAL @M L h $tActDATA@M M L  ageADATAM M @M  eChaDATAM N M X ionCDATAN `N M  onStDATA`N N N  ! DATAN N `N 8 /8DATAN 8O N   DATA8O O N  EDATAO O 8O X DATAO P O  1DATAP XP O  GDATAXP P P  ]DATAP P XP ` }DATAP 0Q P  DATA0Q xQ P  DDATAxQ Q 0Q p >DATAQ R xQ  DATAR PR Q  DATAPR R R ` ,DATAR R PR  74DATAR (S R ( DFDATA(S pS R  SaDATApS S (S  %?|DATAS T pS x >DATAT HT S  ^DATAHT T T x VDATAT T HT  'MDATAT  U T X (DATA U hU T  +(DATAhU U U  -6DATAU U hU h -RDATAU @V U  HtDATA@V V U @ = DATAV V @V  gDATAV W V H 3\DATAW `W V  % DATA`W W W  #DATAW W `W P %hDATAW 8X W  0DATA8X X W  DATAX X 8X X O5DATAX Y X  W`DATAY XY X ` qDATAXY Y Y  EDATAY Y XY  OwDATAY 0Z Y  2DATA0Z xZ Y  wDATAxZ Z 0Z 8 &DATAZ [ xZ  WDATA[ P[ Z  'DATAP[ [ [ p ,2DATA[ [ P[  4DATA[ (\ [ 8 $ DATA(\ p\ [  DATAp\ \ (\  DATA\ ] p\  DATA] H] \ P DATAH] ] ]  2tDATA] ] H]  DATA]  ^ ] @ 1DATA ^ h^ ]  ]DATAh^ ^ ^  45DATA^ ^ h^ P DATA^ @_ ^  /DATA@_ _ ^  DATA_ _ @_ @ 2'DATA_ ` _  DATA` `` _  2Ȇm DATA`` ` ` H \m DATA` ` ``  m DATA` 8a `  4Тm DATA8a a ` @ Ĩm DATAa a 8a  3DATAa b a  DATAb Xb a 0 6DATAXb b b  DATAb b Xb  1DATAb 0c b @ DATA0c xc b  4DATAxc c 0c  DATAc d xc 8 4DATAd Pd c  DATAPd d d  DATAd d Pd  DATAd (e d X DATA(e pe d  DATApe e (e  DATAe f pe  DATAf Hf e h (DATAHf f f  DATAf f Hf  %DATAf  g f X DATA g hg f  4DATAhg g g  DATAg g hg @ DATAg @h g  DATA@h h g  DATAh h @h  DATAh i h P "sssDATAi `i h  sssDATA`i i i  !sssDATAi i `i @ 5sssDATAi 8j i  !sssDATA8j j i  +DATAj j 8j P 'DATAj k j  DATAk Xk j  DATAXk k k 0 'DATAk k Xk  "DATAk 0l k  #DATA0l xl k ( 8DATAxl l 0l  #DATAl m xl  "DATAm Pm l 0 DATAPm m m  DATAm m Pm  #DATAm (n m  DATA(n pn m P DATApn n (n  DATAn o pn  DATAo Ho n  DATAHo o o h DATAo o Ho  DATAo  p o  DATA p hp o 8 DATAhp p p  iDATAp p hp  DATAp @q p ` bDATA@q q p  DATAq q @q 8 ;DATAq r q  DATAr `r q  DATA`r r r @ >DATAr r `r  .DATAr 8s r  BDATA8s s r  DATAs s 8s  ?DATAs t s 8  ;DATAt Xt s  DATAXt t t  DATAt t Xt  hDATAt 0u t  DATA0u xu t  gDATAxu u 0u  DATAu v xu  DATAv Pv u  DATAPv v v h  DATAv v Pv  DATAv (w v  DATA(w pw v @  DATApw w (w  'DATAw x pw  BDATAx Hx w P cDATAHx x x  3DATAx x Hx @ %DATAx  y x  LDATA y hy x  DATAhy y y h DATAy y hy  DATAy @z y  DATA@z z y H DATAz z @z x 0DATAz { z  TDATA{ `{ z ` 4DATA`{ { {  "DATA{ { `{  7DATA{ 8| {  DATA8| | {  0DATA| | 8|  CDATA| } |  0DATA} X} |  DATAX} } }  DATA} } X}  BDATA} 0~ } X `DATA0~ x~ }  DATAx~ ~ 0~ 0 DATA~  x~ x +DATA P ~  ,DATAP   0 DATA  P x 7DATA (   DATA( p   'DATAp  ( x FDATA  p  3`DATA  P 3`DATAH #!BPY tDATA 6 dDATA """ y-0DATA Name: 'RenderMan (.rib)...' DATA8 Blender: 233DATAx Group: 'Export'DATA8 Tooltip: 'Save/Render a Scene to RenderMan Renderers' DATA """DATAP RW@DATA@ # RenderMan export script by Christoffer Green and Goran KocovDATA( # Pixie Extension by Joseph MontanezDATAH # version 0.1 Beta9.0bDATA< # the script needs Blender 2.33 and Python 2.3 installedDATA4 # to run the script press alt+p in the text windowDATAX DATA import BlenderDATAȅ import string-gDATA  import osDATA @ import sysDATAx from os import P_NOWAITDATA from Blender.Draw import *DATA from Blender.BGL import *DATAP from Blender import SceneDATA$ from Blender.Scene import RenderDATA from math import piDATA( from math import atanDATAp from math import powDATA DATA try:DATA  import totiffDATA` except:DATAH  print "Did not find the totiff module, will use ImageMagic instead\n"DATA DATA@ DATA4p # MAKE SURE YOU CHANGE THIS TO YOUR PYTHON FOLDER|ADATAЊ if (os.name != "posix"):encDATA   sys.path = ['c:\\python23']DATAh DATA$ scene = Blender.Scene.GetCurrent()DATA$ camobj = scene.getCurrentCamera()DATA48 camera = Blender.Camera.Get(camobj.getData().name)ODATA REEDATAȌ # The bevent constantsDATA, exportevent = 1 # export button pressed DATA(h exitevent = 2 # exit button pressedDATA, updateguievent = 3 # update the pressedu7 DATA0 filetoggleevent = 999 # file button pressed7 DATAx DATA # GUI variablesDATA fs = Create('')DATA( menuval = Create(4)DATAp dof = Create(0)DATA samples = Create(2)DATA stop = Create(2.0)0DATA@ lenght = Create(1.0)DATA distance = Create(5.0)neDATAА srate = Create(3)DATA file = Create(0)DATA` buffer = Create(1)DATA$ filename = Create("default.rib")DATA image = Create("default")DATA H dirw = Create("default")DATA$ pixierenderer = Create("rndr")-x DATA$ prmanrenderer = Create("prman")12DATA$8 dlrenderer = Create("renderdl").DATA$ bmrtrenderer = Create("rendrib")DATA(ؓ entropyrenderer = Create("entropy")x DATA$0 aqsisrenderer = Create("aqsis")erDATA$ pixietexmaker = Create("texmake")DATA$Д prmantexmaker = Create("txmake")DATA$ dltexmaker = Create("tdlmake")erDATA$p bmrttexmaker = Create("mkmip")-JDATA$ entropytexmaker = Create("mkmip")DATA$ aqsistexmaker = Create("teqser")aDATA` radiosity = Create(0)DATA radnum = Create(50)DATA gi = Create(0)DATA0 gisteps = Create(100)DATAx #PixieDATA indirect = Create(0)DATA occlusion = Create(0)DATA@ ambiSamples = Create(6)DATA #End PixieDATA geom = Create(1)DATA meshexport = Create(1)DATAP pointwidth = Create(1.0)DATA anim = Create(0)DATA maxpixeldist = Create(20)DATA0 maxerror = Create(0.25)DATAx rshadow = Create(1)DATA smooth = Create(0.00)DATA areasamples = Create(20)DATAP buff256 = Create(0)DATA buff512 = Create(1)DATA buff1024 = Create(0)DATA( buff2048 = Create(0)DATAp motionblur = Create(0)DATA motionblurframe = Create(1)DATA rendert = Create(1)DATAP caustics = Create(0)DATA photon = Create(4000)DATA uv = Create(0)DATA recurs = Create(4)DATAh debug = Create(0)DATA hiddenlayer = Create(0)DATA globalsettings = Create(1)DATAH scenesettings = Create(0)DATA shadereditor = Create(0)DATA؟ surfaceshader = Create(3)DATA$ surfaceshadername = Create("")serDATAp about = Create(0)DATA shadermenu = Create(1)DATA ambientshader = Create(1.00)ADATA P diffuseshader = Create(0.50) DATA specularshader = Create(0.50)DATA$ roughnessshader = Create(0.10)DATA @ coefshader = Create(1.50)DATA reflblurshader = Create(0.00)DATA refrblurshader = Create(0.00)DATA0 objecteditor = Create(0)DATAx convertbm = Create(1)DATA objectshadermenu = Create(0)DATA arealightMESH = Create(0)DATA X recievecaustics = Create(0)DATA transmittcaustics = Create(0)DATA( transmittcausticsslider = Create(1.40)DATAP reflsamples = Create(0)DATA refrsamples = Create(0)DATA8V kr = Create(1.0)DATAV rendershadow = Create(0)DATAV autogs = Create(0)DATA W reflectcaustics = Create(0)DATA`W progress = Create(1)DATAW gain = Create(1.0)DATAW gamma = Create(1.0)DATA8X lightx = Create(1.0)DATAX bias = Create(0.25)DATA X raytraceshadow = Create(1)DATAY projection = Create(0)DATA `Y textureblurm = Create(0.0)DATAY norm = Create(0.01)DATAY converttex = Create(1)DATA@Z gisphere = Create(1)DATAZ rvisibility = Create(0)DATAZ finalgather = Create(0)DATA rgba = Create(1)DATA[ castshadow = Create(1)3-DDATA`[ reconvert = Create(0)DATA[ texturem = Create(' ')DATAx\ texturem.val = ''DATA\ textshader = Create('Surface "plastic" ')DATA(^ textshader.val = 'Surface "plastic"'DATAX^ textshaderd = Create('Displacement "bumpy" ')DATA,_ textshaderd.val = 'Displacement "bumpy"'DATA_ hdritex = Create(' ')DATA` hdritex.val = ''DATAa hdri = Create(0)DATAHa preworldrafile = Create(' ')DATAb preworldrafile.val = ''jerDATA`b preworldra = Create(0)9-MDATAb postworldrafile = Create(' ') DATAc postworldrafile.val = '' DATAc postworldra = Create(0) .DATAd objectrafile = Create(' ')2DATAd objectrafile.val = ''0DATA(e objectra = Create(0)DATApe textnor = Create(0)DATA e illuminationmenu = Create(0)DATAf areagi = Create(0)DATAPf indirectgi = Create(1)DATAf eblur = Create(0.00)DATAf esamples = Create(1)DATA(g gianim = Create(1)DATApg amesh = Create(0)DATAg patchsize = Create(4.0)DATAh elemsize = Create(2.0)DATAHh minsize = Create(1.0)8-FDATAh  DATAh # Other variablesDATA@i renderer = "PRMan |BMRT |Entropy |3Delight |AQSIS |Pixie "ngDATAdpi shader = "Plastic (All)|Glass (BMRT, Entropy)|Shiny (BMRT, Entropy) |Custom (All) |BMS (All) "W@DATA`j pixelsamples = "1 Preview|2 Good|3 Recomended|4|5 To High|6|7 For DoF|8|9|10 Best and Crazy"DATADj ambiSamplesindex = "7 Preview|8|9|10|11 Good|12|13|14 Perfection"DATADk shadingrate = "0.25 Best|0.5|1 Good|2|4 Preview|6|8|12|16 Bad" .DATA4pk sratelist = [0.25, 0.5, 1, 2, 4, 6, 8, 12, 16]erDATA@k meshex = "PointsPolygons |Polygons |SubdivSurface |Points "nDATA|@l illumination = "Plastic |Matte |RoughMetal |ThinPlastic |ShinyPlastic |ShinyMetal |Clay |BrushedMetal |Ceramic |Glass "-ODATA8l projectionm = "Plane |Cylinder |Sphere |UV-Map |Auto"DATAPm sshader = "ADD NEW" DATAm sshader2 = ""DATAm shadernametemp = ""DATA n selectedname = "" DATAhn selectedtype = "Type: "DATA n tmp = ""DATAn imagelist = ""DATA((o imagelistmenu = "No images loaded"DATA$o rgbatext = "rgb |rgba |rgbz |z "DATA0o castshadowtext = "Os |opaque |shader |none"DATA0p txdone = []DATApp w-DATAp # Global variablesDATAp increment = 0DATA q xbar = 111 DATA `q i = 0DATAq meshobjects = 0-MDATAq maxblur = 10.0DATAr meshnum = 0DATAXr --DATA0r # Create the BlenderMan directories on startup@DATAr if (os.name != "posix"):DATA0s  rootdir = '/BlenderMan/'DATA0xs  partitionname = Blender.sys.progname[0:2]26DATAs else:DATA0t  rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$pt pdir = rootdir + dirw.val + '/'DATA4t globalpropertiesdir = pdir + '/GlobalProperties/'DATA0 u surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<u displacementshadersdir = pdir + '/DisplacementShaders/'DATA0u objectsettingsdir = pdir + '/ObjectSettings/'DATA0Hv lightsettingsdir = pdir + '/LightSettings/'DATA4v meshesdir = os.path.normpath(pdir + '/Meshes/')DATA$w imagesdir = pdir + '/images/'DATA$Xw shadowdir = pdir + '/shadows/'DATA(w texturesdir = pdir + '/textures/'dDATA$x shadersdir = pdir + '/shaders/'DATAPx try: os.mkdir(rootdir)DATAx except OSError: passDATAx try: os.mkdir(pdir)DATA y except OSError: passDATA$hy try: os.mkdir(surfaceshadersdir)DATAy except OSError: passDATA$z try: os.mkdir(globalpropertiesdir)DATAPz except OSError: passDATA(z try: os.mkdir(displacementshadersdir)DATAz except OSError: passDATA8{ try: os.mkdir(meshesdir)DATA{ except OSError: passDATA${ try: os.mkdir(objectsettingsdir)DATA| except OSError: passDATA `| try: os.mkdir(lightsettingsdir)DATA| except OSError: pass|DATA| try: os.mkdir(shadowdir)dDATA@} except OSError: passSSDATA} try: os.mkdir(texturesdir)DATA} except OSError: passDATA~ try: os.mkdir(imagesdir)DATA`~ except OSError: passDATA~ DATA ~ def gui():DATAT  global menuval, dof, samples, stop, lenght, distance, srate, file, buffer, dirwDATAX  global filename, image, radiosity, radnum, gi, gisteps, geom, meshexport, pointwidthDATA`  global anim, maxpixeldist, maxerror, smooth, areasamples, buff256, buff512, buff1024, buff2048DATAt  global motionblur, motionblurframe, rendert, caustics, photon, uv, recurs, debug, globalsettings, scenesettingsDATAdH  global shadereditor, sshader, surfaceshader, surfaceshadername, about, shadermenu, ambientshaderEEDATAd؁  global diffuseshader, specularshader, roughnessshader, coefshader, reflblurshader, refrblurshaderDATA`h  global objecteditor, selectedname, convertbm, objectshadermenu, arealightMESH, recievecausticsDATA\  global transmittcaustics, transmittcausticsslider, reflsamples, refrsamples, rendershadowDATAh  global xbar, autogs, kr, progress, indirectgi, areagi, eblur, esamples, gianim, amesh, reflectcausticsDATAd  global patchsize, elemsize, minsize, textshader, raytraceshadow, bias, textshaderd, gain, gammaDATAT  global lightx, textureblurm, texturem, norm, planarm, converttex, imagelistmenu.CDATA`(  global textnor, illuminationmenu, projection, hiddenlayer, gisphere, rvisibility, finalgathereDATAH  global hdritex, hdri, rgba, castshadow, reconvert, maxblur, sshader2DATA`0  global prmanrenderer, dlrenderer, bmrtrenderer, entropyrenderer, aqsisrenderer, pixierendererDATA`  global prmantexmaker, dltexmaker, bmrttexmaker, entropytexmaker, aqsistexmaker, pixietexmakerDATA\P  global preworldra, preworldrafile, postworldra, postworldrafile, objectra, objectrafileDATA@؇  global ambiSamples, occlusion, indirect #Pixie Ambient stuffDATAH REEDATA4x  if (autogs.val == 1): #automaticly select objects?DATA ؈  Redraw(1)DATA  getSelectedObject()DATAX  saveload(0,0,'object')DATA DATAЉ  # GUI settingsDATA8  glClearColor(0.4,0.48,0.57, 0.0) # blue backgroundL DATA x  glClear(GL_COLOR_BUFFER_BIT)DATA,Ȋ  glColor3f(0, 0, 0) # main black backDATA   glRectf(2, 2, 630, 340)DATA0h  glColor3f(0.4, 0.48, 0.57) # main blue backDATAȋ  glRectf(4, 4, 628, 300)dDATA,  glColor3f(0.27, 0.3, 0.35) # blue topDATAh  glRectf(4, 302, 628, 338)DATA  glColor3f(1,1,1)DATA ?DATA,   # Buttons for the main BlenderMan panelsDATA|x  globalsettings = Toggle("Global Settings", 12, 75, 310, 100, 20, globalsettings.val, "Global project settings")DATAt   scenesettings = Toggle("Scene Settings", 557, 175, 310, 100, 20, scenesettings.val, "Global scene settings")DATA  shadereditor = Toggle("Shader Editor", 13, 275, 310, 100, 20, shadereditor.val, "Surface and diplacement shader settings")DATAp  objecteditor = Toggle("Object Editor", 33, 375, 310, 100, 20, objecteditor.val, "Edit object settings that Blender doesn't support")DATAh0  about = Toggle("About", 16, 475, 310, 100, 20, about.val, "Information about this script")#CDATAȐ DATA  # Global SettingsDATA 8  if (globalsettings.val == 1):DATA  debug = Slider("Debug Level ", updateguievent, 440, 270, 180, 20, debug.val, 0, 3, 0, "How much debug information the renderer should output")DATAP  hiddenlayer = Number("Hidden Layer:", 0, 10, 270, 120, 20, hiddenlayer.val, 0, 20, "Objects that are present on this layer won't be exported")DATA  progress = Toggle("Progressbar", updateguievent, 520, 30, 100, 20, progress.val, "Hint: It takes slightly less time to export a scene with the progressbar off")DATAP  gain = Slider("Gain ", 0, 225, 270, 180, 20, gain.val, 0.0, 5.0, 0)DATAPp  gamma = Slider("Gamma ", 0, 225, 248, 180, 20, gamma.val, 0.0, 5.0, 0)DATA  lightx = Slider("Light* ", 0, 225, 226, 180, 20, lightx.val, 0.0, 15.0, 0, "Light intensity multiplier for lamps (pointlights) and spotlights")DATA  if (menuval.val != 5):DATA  recurs = Slider("RaySteps ", 0, 440, 248, 180, 20, recurs.val, 0, 15, 0, "Maximum number of steps for the raytracing recursion")DATA|  reconvert = Toggle("Reconvert Textures", updateguievent, 440, 226, 180, 20, reconvert.val, "Reconvert UV textures")DATA`  rgba = Menu(rgbatext, updateguievent, 370, 150, 90, 20, rgba.val, "What channels to export (A = Alpha. Z = Depth)")DATA  menuval = Menu(renderer, updateguievent, 370, 125, 90, 20, menuval.val, "Which renderer should be taken into account when exporting the scene and displaying the GUI")DATA  samples = Menu(pixelsamples, updateguievent, 370, 75, 90, 20, samples.val, "Silhouette, motion blur and depth of field quality")DATAd  srate = Menu(shadingrate, updateguievent, 370, 100, 90, 20, srate.val, "Shading quality")DATAp8  filename = String("Filename: ", 0, 150, 75, 140, 19, filename.val, 200, "Name of the master RIB file")DATAlؚ  image = String("Image: ", 0, 150, 100, 140, 19, image.val, 200, "Name of the rendered image(s)")DATAdp  dirw = String("Project: ", 500, 150, 125, 140, 19, dirw.val, 200, "Name of the project")ADATA  if menuval.val == 1:DATAH  prmanrenderer = String("Renderer: ", 0, 480, 125, 140, 19, prmanrenderer.val, 200, "Name of the renderer executable")DATA  prmantexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, prmantexmaker.val, 200, "Name of the mipmap texture making executable")DATA  elif menuval.val == 2:vDATA|  bmrtrenderer = String("Renderer: ", 0, 480, 125, 140, 19, bmrtrenderer.val, 200, "Name of the renderer executable")DATA  bmrttexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, bmrttexmaker.val, 200, "Name of the mipmap texture making executable")DATA`  elif menuval.val == 3:DATA  entropyrenderer = String("Renderer: ", 0, 480, 125, 140, 19, entropyrenderer.val, 200, "Name of the renderer executable")DATAX  entropytexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, entropytexmaker.val, 200, "Name of the mipmap texture making executable")DATA  elif menuval.val == 4:qDATAx`  dlrenderer = String("Renderer: ", 0, 480, 125, 140, 19, dlrenderer.val, 200, "Name of the renderer executable")DATA  dltexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, dltexmaker.val, 200, "Name of the mipmap texture making executable")5DATA  elif menuval.val == 5:)ADATA  aqsisrenderer = String("Renderer: ", 0, 480, 125, 140, 19, aqsisrenderer.val, 200, "Name of the renderer executable")-DATA  aqsistexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, aqsistexmaker.val, 200, "Name of the mipmap texture making executable")DATAx  elif menuval.val == 6:15 DATA  pixierenderer = String("Renderer: ", 0, 480, 125, 140, 19, pixierenderer.val, 200, "Name of the renderer executable")DATAp  pixietexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, pixietexmaker.val, 200, "Name of the mipmap texture making executable")DATAx0  anim = Toggle("Animation", updateguievent, 150, 30, 69, 19, anim.val, "Render single or multiple frames")DATAئ  rendert = Toggle("Render", updateguievent, 220, 30, 69, 19, rendert.val, "Start the renderer after the export is done")ADATAl  file = Toggle("File", filetoggleevent, 150, 50, 70, 20, file.val, "Render the image to a file")DATAl   buffer = Toggle("Buffer", 5, 220, 50, 70, 20, buffer.val, "Render the image to the framebuffer")DATAL  Button("Exit", exitevent, 385, 30, 75, 20, "Exit the script")DATAP0  Button("Export", exportevent, 310, 30, 74, 20, "Start the export")DATAX  Button("Load Sett", 30, 310, 51, 74, 20, "Load global and scene settings")DATAX8  Button("Save Sett", 31, 385, 51, 75, 20, "Save global and scene settings")DATA  glRasterPos2i(310, 80)DATA  Text("Samples")DATAH  glRasterPos2i(310, 105)DATA  Text("ShRate")DATAЫ  glRasterPos2i(310, 130)DATA  Text("Renderer")DATAX  glRasterPos2i(310, 155)|ADATA  Text("Channels")DATA  if (progress.val == 1):DATA(  # Progressbar textDATAp  glRasterPos2i(10, 25)DATA8  Text("Mesh: %s/%s"%(int(meshnum), int(meshobjects)))DATA  ## if anim.val:DATA` ## glRasterPos2i(10, 40)DATA, ## display = Blender.Scene.GetCurrent()DATAd ## Text("Frame: %s/%s"%(display.currentFrame(), display.endFrame() - display.startFrame() + 1))DATA  # Progressbar backplateDATAد  glColor3f(0, 0, 0)DATA   glRectf(9, 10, 620, 21)DATA h  glColor3f(0.78, 0.7, 0.8)DATA  glRectf(10, 9, 621, 20)DATA  glColor3f(0.4, 0.4, 0.4)DATAH  glRectf(10, 10, 620, 20)DATA  # Progressbar}DATAб  glColor3f(0, 0, 0)DATA$  glRectf(10, 10, xbar + 1, 20)iDATA h  glColor3f(0.78, 0.7, 0.8)}DATA   glRectf(10, 11, xbar, 20)}DATA   glColor3f(0.52, 0.25, 0.45)DATA X  glRectf(11, 11, xbar, 19)}DATA  DATAس  # Scene settingsDATA   if (scenesettings.val == 1):}DATAh  preworldra = Toggle("PreWorld ReadArchive", updateguievent, 10, 60, 180, 20, preworldra.val, "Add a ReadArchive to a user-defined file just before WorldBegin")DATA@  if (preworldra.val == 1):DATA\  preworldrafile = String("File: ", 0, 190, 60, 430, 20, preworldrafile.val, 100)DATA  postworldra = Toggle("PostWorld ReadArchive", updateguievent, 10, 40, 180, 20, postworldra.val, "Add a ReadArchive to a user-defined file just after WorldBegin")|DATA   if (postworldra.val == 1):qDATA\8  postworldrafile = String("File: ", 0, 190, 40, 430, 20, postworldrafile.val, 100)DATA  if (menuval.val != 2):iDATAx  dof = Toggle("Depth Of Field", updateguievent, 440, 270, 180, 20, dof.val, "Depth of field of the camera")|DATA  if (dof.val == 1):gDATAt  stop = Slider("Stop ", 0, 440, 250, 180, 20, stop.val, 0, 100, 0, "Focal Stop. The camera's aperture")dDATA  lenght = Slider("Lenght ", 0, 440, 230, 180, 20, lenght.val, 0, 10, 0, "Focal Lenght. Lenght of the camera's lens")DATAH  distance = Slider("Distance ", 0, 440, 210, 180, 20, distance.val, 0, 20, 0, "Focal Distance. Distance at which the camera is focused")DATA  motionblur = Toggle("Motion Blur", updateguievent, 225, 170, 180, 20, motionblur.val, "Apply blur to objects in motion")REEDATA   if (motionblur.val == 1):DATA  motionblurframe = Slider("Frames ", 0, 225, 150, 180, 20, motionblurframe.val, 1, 10, 0, "How much blur to apply based on how many frames to take into account")DATA  if (menuval.val == 3):DATA(  hdri = Toggle("HDRI", updateguievent, 225, 120, 180, 20, hdri.val, "Sets up a sphere that emits light filtered by a HDRI image")DATA  if (hdri.val == 1):DATAt(  hdritex = String("HDRI Texture: ", 0, 225, 100, 280, 20, hdritex.val, 100, "Flie name of the HDRI image")DATA4Ⱦ  if ((menuval.val == 2) or (menuval.val == 3)):DATA|(  gi = Toggle("Global Illumination", 6, 10, 270, 180, 20, gi.val, "Uses advanced algorithms for realstic lighting")^+DATAп  if (gi.val == 1):;< DATA  indirectgi = Toggle("Indirect", 475, 10, 250, 90, 20, indirectgi.val, "Calculate GI from light bouncing between objects")DATA|  areagi = Toggle("Area", 476, 100, 250, 90, 20, areagi.val, "Sets up a big sphere that generates skydome lighting")DATAxp  gisteps = Slider("Steps ", 0, 10, 230, 180, 20, gisteps.val, 0, 600, 0, "Controls the detail of the solution")DATA   if (indirectgi.val == 1):DATA h  if (finalgather.val == 0):DATA  maxerror = Slider("MaxError ", 0, 10, 210, 180, 20, maxerror.val, 0.01, 0.50, 0, "Smaller numbers cause recomputation to happen more often")DATA  maxpixeldist = Slider("MPixelDis ", 0, 10, 190, 180, 20, maxpixeldist.val, 0.00, 40.00, 0, "Smaller numbers cause recomputation to happen more often")roDATAP  gianim = Toggle("Animate GI", updateguievent, 10, 170, 180, 20, gianim.val, "Recompute GI for every frame in the animation")DATA  gisphere = Toggle("GI Sphere", 0, 10, 150, 180, 20, gisphere.val, "Sets up a big sphere that generates skydome lighting") DATA  if (menuval.val == 3):DATA  finalgather = Toggle("Final Gather", updateguievent, 10, 130, 180, 20, finalgather.val, "More precise, but slower form of GI") DATA  if (menuval.val == 2)::0DATA  radiosity = Toggle("Radiosity", 7, 225, 270, 180, 20, radiosity.val, "Calculate GI from light bouncing between objects")DATA   if (radiosity.val == 1):eDATA  radnum = Slider("Steps ", 0, 225, 250, 180, 20, radnum.val, 0, 1000, 0, "Number of stepes for the radiosity calculation")DATA  patchsize = Slider("Patchsize", 0, 225, 230, 180, 20, patchsize.val, 0.0, 10.0, 0, "Smaller numbers cause recomputation to happen more often")DATA  elemsize = Slider("Elemsize ", 0, 225, 210, 180, 20, elemsize.val, 0.0, 6.0, 0, "Smaller numbers cause recomputation to happen more often")DATA@  minsize = Slider("Minsize ", 0, 225, 190, 180, 20, minsize.val, 0.0, 3, 0, "Smaller numbers cause recomputation to happen more often")ODATA$  if (menuval.val == 6): #Pixie!!!DATAdP  gi = Toggle("Global Illumination", 6, 10, 270, 180, 20, gi.val, "Fast Global Illumination")DATA  if (gi.val):DATA   indirect = Toggle("Indirect", 475, 10, 250, 90, 20, indirect.val, "Calculate GI from light bouncing between objects")DATA  occlusion = Toggle("Occlusion", 476, 100, 250, 90, 20, occlusion.val, "Sets up a big sphere that generates skydome lighting")DATA  glRasterPos2i(30, 235)ADATA$  Text("Samples:", "normal")DATAx   ambiSamples = Menu(ambiSamplesindex, updateguievent, 90, 230, 100, 20, ambiSamples.val, "Smoothness of shading")DATA  # Shader editorDATA   if (shadereditor.val == 1):DATAdX  surfaceshader = Menu(sshader, 14, 10, 270, 20, 20, surfaceshader.val, "Choose shader")DATA   if (surfaceshader.val != 0):@DATA`8  surfaceshadername = String("SH: ", 17, 30, 270, 140, 20, surfaceshadername.val, 200)DATAD  Button("X", 15, 171, 270, 20, 20, "Delete shader")S_DATA8  if surfaceshadername.val:DATAD  Button("Test Render Shader", 19, 220, 230, 150, 20)DATAD  Button("Set default values", 340, 380, 230, 150, 20)DATAL`  shadermenu = Menu(shader, 32, 10, 230, 200, 20, shadermenu.val)DATA   if (shadermenu.val != 4):DATAl(  ambientshader = Slider("Ambient (Ka) ", 32, 10, 200, 300, 20, ambientshader.val, 0.00, 1.00, 0)DATAl  diffuseshader = Slider("Diffuse (Kd) ", 32, 10, 175, 300, 20, diffuseshader.val, 0.00, 1.00, 0)DATAlX  specularshader = Slider("Specular (Ks) ", 32, 10, 150, 300, 20, specularshader.val, 0.00, 1.00, 0)DATAp  roughnessshader = Slider("Roughness ", 32, 10, 125, 300, 20, roughnessshader.val, 0.00, 1.00, 0)DATA   if (shadermenu.val == 2):DATAh  coefshader = Slider("Coefficient (eta)", 32, 10, 100, 300, 20, coefshader.val, 0.00, 3.00, 0)DATAtx  reflblurshader = Slider("Reflect Blur (blur)", 32, 10, 75, 300, 20, reflblurshader.val, 0.00, 1.00, 0)DATAt  refrblurshader = Slider("Refract Blur (refrblur)", 32, 10, 50, 300, 20, refrblurshader.val, 0.00, 1.00, 0)DATAh  reflsamples = Slider("Reflect Samples ", 32, 315, 200, 300, 20, reflsamples.val, 0, 30, 0)}@DATAdP  refrsamples = Slider("Refract Samples ", 32, 315, 175, 300, 20, refrsamples.val, 0, 30, 0)DATAP  kr = Slider("Kr ", 32, 315, 150, 300, 20, kr.val, 0.0, 2.0, 0)DATA `  if (shadermenu.val == 3):DATAt  reflblurshader = Slider("Reflect Blur (blur)", 32, 10, 100, 300, 20, reflblurshader.val, 0.00, 1.00, 0)WDATAdP  reflsamples = Slider("Reflect Samples ", 32, 10, 75, 300, 20, reflsamples.val, 0, 30, 0)DATA   elif (shadermenu.val == 4):DATA0  glRasterPos2i(10, 200)DATAx  Text('Surface Shader')DATAP  textshader = String("", 32, 10, 175, 600, 20, textshader.val, 100)iDATA@  glRasterPos2i(10, 150)DATA   Text('Displacement Shader')DATAP  textshaderd = String("", 32, 10, 125, 600, 20, textshaderd.val, 100)DATAX  norm = Slider("Disp. Bound ", 32, 10, 90, 300, 20, norm.val, 0.0, 10.0, 0, "Sets the radius of a sphere bounding the object. Larger displacements need biger values")iDATA 8  elif (shadermenu.val == 5):DATAP  projection = Menu(projectionm, 32, 315, 200, 180, 20, projection.val)DATAT  texturem = String("Texture: ", 32, 315, 180, 280, 20, texturem.val, 100)DATAT  converttex = Menu(imagelistmenu, 368, 595, 180, 20, 20, converttex.val)&DATA@  Button("Convert and Reload", 367, 495, 200, 120, 20)jDATAhx  textureblurm = Slider("Texture Blur ", 32, 315, 160, 300, 20, textureblurm.val, 0.0, 1.0, 0)DATAd  norm = Slider("Bump Height ", 32, 315, 140, 300, 20, norm.val, 0.0, 10.0, 0)dDATAH  textnor = Toggle("Nor", 32, 315, 120, 60, 20, textnor.val)dDATA\  illuminationmenu = Menu(illumination, 32, 375, 120, 120, 20, illuminationmenu.val)DATA dDATA  # Object editoriDATA   if (objecteditor.val == 1):}DATAh`  autogs = Toggle("Auto getSelected (drains cpu)", updateguievent, 10, 10, 180, 20, autogs.val)dDATA  if (autogs.val == 0):DATA8@  Button("Get Selected", 34, 10, 30, 180, 20)DATA  glRasterPos2i(200, 35)}DATA   Text('Name: ' + selectedname)DATA@  glRasterPos2i(200, 15)|DATA  Text(selectedtype)dDATA(  if (selectedtype == 'Type: Mesh'):DATA(  objectra = Toggle("Object ReadArchive", 18, 10, 60, 180, 20, objectra.val, "Add a ReadArchive to a user-defined file just after object's AttributeBegin")iDATA  if (objectra.val == 1):DATAX@  objectrafile = String("File: ", 18, 190, 60, 430, 20, objectrafile.val, 100)iDATAP  convertbm = Toggle("Use Shader", 18, 10, 220, 180, 20, convertbm.val)DATAH  if (convertbm.val == 1):DATA,  namelist = string.split(sshader, "|")DATA   namelist.remove('ADD NEW')DATA$8  namelist = map(str, namelist)DATA,  sshader2 = string.join(namelist, "|")DATA   if (len(sshader2) == 0):DATA0  glRasterPos2i(10, 205)DATA$x  Text("No shaders available.")DATA   else:DATA\  objectshadermenu = Menu(sshader2, 18, 10, 200, 180, 20, objectshadermenu.val)DATAt  geom = Toggle("Export Geometry", 18, 230, 270, 180, 20, geom.val, "Output the mesh geometry to a RIB file")DATA(  if (geom.val == 1):DATALp  meshexport = Menu(meshex, 18, 230, 250, 180, 20, meshexport.val)DATAx  amesh = Toggle("Animated Mesh", 18, 230, 230, 120, 20, amesh.val, "Turn this on if the mesh deforms in time")DATA   if (meshexport.val != 4):DATA  uv = Toggle("ExportUV", 18, 350, 230, 60, 20, uv.val, "Exports and converts the UV map attached to the object (if there is one)")DATA   else:DATA  pointwidth = Slider("Width ", 18, 230, 180, 180, 20, pointwidth.val, 0.0, 10.0, 0, "Radius of the Points primitive")DATA0  if (menuval.val == 2) or (menuval.val == 3):DATA  rvisibility = Toggle("Hide Source", 18, 230, 200, 180, 20, rvisibility.val, "Hides the object from primary rays")DATA4  if ((menuval.val == 2) or (menuval.val == 3)):DATA|  arealightMESH = Toggle("AreaLight", 18, 10, 270, 180, 20, arealightMESH.val, "Use the object as an area light")DATA$  if (arealightMESH.val == 1):DATA  areasamples = Slider("AreaSamp ", 18, 10, 250, 180, 20, areasamples.val, 0, 400, 0, "Controls the graininess of the area light")DATAd  recievecaustics = Toggle("Recieve Caustics", 18, 440, 270, 180, 20, recievecaustics.val)DATAd0  reflectcaustics = Toggle("Reflect Caustics", 18, 440, 250, 180, 20, reflectcaustics.val)DATAh  transmittcaustics = Toggle("Transmitt Caustics", 18, 440, 230, 180, 20, transmittcaustics.val)DATA(X  if (transmittcaustics.val == 1):"' DATA  transmittcausticsslider = Slider("IOR ", 18, 440, 210, 180, 20, transmittcausticsslider.val, 0.00, 2.20, 0, "Index of refraction")`DATAh  if (menuval.val != 5):DATA  glRasterPos2i(10, 165)DATA   Text('Raytraced Shadows')DATAH  castshadow = Menu(castshadowtext, 18, 10, 140, 180, 20, castshadow.val, "Os uses the object's opacity value for the shadow opacity, shader uses the shader opacity calculations, opaque produces black shadows and none turns shadows off")DATA(p  if (selectedtype == 'Type: Lamp'):DATA4  if ((menuval.val == 2) or (menuval.val == 3)):DATA(  caustics = Toggle("Caustics", 18, 230, 270, 180, 20, caustics.val, "Turn on photon emission used for caustics calculations")DATAL  if ((caustics.val == 1) & ((menuval.val == 2) or (menuval.val == 3))):DATAtX  photon = Slider("Photons ", 18, 230, 250, 180, 20, photon.val, 4000, 80000, 0, "Number of photons emitted")DATA0  lampobj = Blender.Object.Get(selectedname)DATA4X  lamp = Blender.Lamp.Get(lampobj.getData().name)DATAH  if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATA0  if (menuval.val != 5):DATAtx  raytraceshadow = Toggle("Ray Shadow", 245, 100, 270, 90, 20, raytraceshadow.val, "Use raytraced shadows")DATA  if lamp.type == 2:DATAh`  rendershadow = Toggle("Ren Shadow", 244, 10, 270, 90, 20, rendershadow.val, "Use shadowmaps")xDATA(  prmanshadowbuttonsposition = 270@DATA P  if (rendershadow.val == 1):DATA`  bias = Slider("Bias ", 18, 10, 210, 180, 20, bias.val, 0.0, 1.0, 0, "Shadowmap bias")DATA 0  if (rendershadow.val == 1):DATA\  buff256 = Toggle("256", 8, 10, 190, 42, 20, buff256.val, "Shadowmap resolution")DATA\  buff512 = Toggle("512", 9, 52, 190, 42, 20, buff512.val, "Shadowmap resolution")DATA`  buff1024 = Toggle("1024", 10, 95, 190, 48, 20, buff1024.val, "Shadowmap resolution")DATA`   buff2048 = Toggle("2048", 11, 143, 190, 48, 20, buff2048.val, "Shadowmap resolution")DATAH  if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATAp(  if ((((menuval.val == 1) or (menuval.val == 3)) and (raytraceshadow.val == 1)) or (rendershadow.val == 1)):DATAd  eblur = Slider("Blur ", 18, 10, 250, 180, 20, eblur.val, 0.0, maxblur, 0, "Shadow blur")DATAhX  esamples = Slider("Samples ", 18, 10, 230, 180, 20, esamples.val, 0, 256, 0, "Blur quality")`DATA  DATA   # About dialogDATA`  if (about.val == 1):DATA  glColor3f(0,0,0)DATA  glRasterPos2i(10, 279)DATA$0  Text("BlenderMan 0.1 Beta 9.0")DATA  glRasterPos2i(10, 259)92DATA0  Text("by Christoffer Green and Goran Kocov")@DATA(  glColor3f(1,1,1)DATAh  glRasterPos2i(9, 280)DATA$  Text("BlenderMan 0.1 Beta 9.0")DATA  glRasterPos2i(9, 260)DATA0H  Text("by Christoffer Green and Goran Kocov")DATA  glRasterPos2i(10, 230) DATAd  Text("_______________________________________________________________________________________")0DATA  glRasterPos2i(10, 200)`DATA4  Text("Thanks to sgefant for the name suggestion")DATA(  glRasterPos2i(10, 180)7-JDATApp  Text("Thanks to Phillipe Crassous for helping me fix the spotlight rotation bug and other code improvements")DATA   glRasterPos2i(10, 160)37DATA<X   Text("Thanks to desaster and #python for syntax help")DATA   glRasterPos2i(10, 140)DATAX   Text("Thanks to K-Rich, Macke, Kib_Tph, sgefant and #Blender3d for pre-beta testing")DATA   glRasterPos2i(10, 120)b-0DATA<   Text("Thanks to Jan Walter for the basic exporting code")DATA@   glRasterPos2i(10, 100)DATA4   Text("Thanks to svo for the pointspolygon code")DATA   glRasterPos2i(10, 80)DATA40   Text("Thanks to nishin for alpha/beta-testing")-DATA   glRasterPos2i(10, 60)DATA4   Text("Thanks to eeshlo for the totiff module")sDATA8   glRasterPos2i(10, 40)DATAT   Text("Thanks to DetectiveThorn for the help with the light intensity conversion")DATA DATA0 def event(evt, val):DATA$x  if (evt == ESCKEY and not val): DATA   Exit()DATA,  if (evt == ACCENTGRAVEKEY and not val): DATA X  export()DATA DATA def bevent(evt):DATAp  global sshader, increment, pdir, maxblur, imagelist, imagelistmenu, imagelisttif, shadernametemp, selectednameDATA(  if (evt == 500): # Change projectDATA   newdirs()DATA 0  surfaceshadername.val = ""DATA  sshader = "ADD NEW"DATA  try: DATA4  f = open(surfaceshadersdir + 'ShaderNames','r')DATA`  saveShaderName(0)DATA   except:DATA  saveShaderName(1)DATA(  resetObject()DATAh  saveload(0, 0, 'object')DATA  saveload(0, 0, 'global')DATA   Register (gui, event, bevent)DATA0H  if (evt == exportevent): # Export buttonDATA   export()DATA,  if (evt == exitevent): # Exit buttonDATA 8  Exit()DATA0p  if (evt == updateguievent): # Update GUIDATA   Register (gui, event, bevent)DATA0   if (evt == filetoggleevent): # File toggleDATA  file.val = 1DATA  buffer.val = 0DATA   Register (gui, event, bevent)DATA(P  if (evt == 5): # Buffer toggleDATA  file.val = 0DATA  buffer.val = 1DATA (  Register (gui, event, bevent)DATA4x  if (evt == 6): # Global Illumination toggleDATA  radiosity.val = 0DATA   Register (gui, event, bevent)DATA(h  if (evt == 7): # Radiosity toggleDATA  gi.val = 0DATA   Register (gui, event, bevent)DATA0P  if (evt == 8): # Shadow buffer buttonsDATA  if (buff256.val == 1):DATA  buff512.val = 0DATA8  buff1024.val = 0DATAx  buff2048.val = 0DATA  saveload(1,0,'object')DATA   Register (gui, event, bevent)DATA0P  if (evt == 9): # Shadow buffer buttonsDATA  if (buff512.val == 1):DATA  buff256.val = 0ADATA8  buff1024.val = 0DATAx  buff2048.val = 0DATA  saveload(1,0,'object')e{ADATA   Register (gui, event, bevent)DATA0P  if (evt == 10): # Shadow buffer buttonsDATA  if (buff1024.val == 1):DATA  buff512.val = 0DATA8  buff256.val = 0DATAx  buff2048.val = 0DATA  saveload(1,0,'object')DATA   Register (gui, event, bevent)DATA0P   if (evt == 11): # Shadow buffer buttonsDATA   if (buff2048.val == 1):DATA   buff512.val = 0DATA8!  buff1024.val = 0DATAx!  buff256.val = 0DATA!  saveload(1,0,'object')DATA "  Register (gui, event, bevent)DATAP"  if (evt == 12):`DATA"  globalsettings.val = 1`DATA"  scenesettings.val = 0DATA #  shadereditor.val = 0DATAh#  objecteditor.val = 0DATA#  about.val = 0DATA #  Register (gui, event, bevent)DATA@$  if (evt == 557):DATA$  globalsettings.val = 0DATA$  scenesettings.val = 1DATA%  shadereditor.val = 0DATAX%  objecteditor.val = 0DATA%  about.val = 0DATA %  Register (gui, event, bevent)DATA0&  if (evt == 13):DATAp&  globalsettings.val = 0DATA&  scenesettings.val = 0DATA'  shadereditor.val = 1DATAH'  objecteditor.val = 0DATA'  about.val = 0DATA '  Register (gui, event, bevent)DATA (  if (evt == 16):DATA`(  globalsettings.val = 0`DATA(  scenesettings.val = 0DATA(  shadereditor.val = 0DATA8)  objecteditor.val = 0DATA)  about.val = 1DATA )  Register (gui, event, bevent)DATA*  if (evt == 33):DATAP*  globalsettings.val = 0DATA*  scenesettings.val = 0DATA*  shadereditor.val = 0DATA(+  objecteditor.val = 1DATAp+  about.val = 0DATA +  Register (gui, event, bevent)DATA(,  if (evt == 14): # Add shader menuDATA`X,  namelist = string.split(sshader, "|") # the names of the shaders gets hacked up into a listDATA,  surfaceshadername.val = namelist[surfaceshader.val - 1] # change the label of the shader in the shadereditor to the one selectedDATA4-  listlenght = len(namelist) # length of the listDATA-  if (surfaceshader.val == listlenght): # if the length of the list of shader names is the same as the surfaceshader menu add another item to the menuDATA.  increment = increment +1DATA /  name = 0DATA,@/  numbername = "%03d" % (int(increment))DATA/  while (name == 0):DATA/  name = 1DATA 0  for x in namelist[:]:DATA(h0  if ('Surface.%s'%numbername == x):DATA 0  increment = increment +1DATA1  name = 0DATA0P1  numbername = "%03d" % (int(increment))PPDATA@1  namelist.insert(listlenght - 1 , 'Surface.%s'%numbername)DATA( 2  sshader = string.join(namelist, "|")DATA<x2  surfaceshadername.val = namelist[surfaceshader.val - 1]DATA2  saveShaderName(1)DATA(3  resetShaderVal()DATAh3  shadermenu.val = 1DATA3  else:DATA3  saveload(0,0,'shader')DATA04  saveShaderName(1)DATA,p4  shadernametemp = surfaceshadername.valDATA 4  Register (gui, event, bevent)DATA5  if (evt == 340):DATAX5  resetShaderVal()DATA5  saveload(1,0,'shader')DATA 5  Register (gui, event, bevent)DATAP06  if ((evt == 15) & (surfaceshadername.val != "")): # Surface shader deletePDATA$6  deleteshader = surfaceshader.valDATA 7  tempselected = selectednameDATA(P7  namelist = string.split(sshader, "|")DATA,7  namelist.remove(surfaceshadername.val)DATA<8  surfaceshadername.val = namelist[surfaceshader.val - 1]DATA h8  namelist = map(str, namelist)DATA(8  sshader = string.join(namelist, "|")DATA 9  listlenght = len(namelist)DATA(`9  if (surfaceshader.val == listlenght):DATA<9  surfaceshadername.val = namelist[surfaceshader.val - 2]DATA :  surfaceshadername.val = ""DATA,p:  surfaceshader.val = surfaceshader.val - 1DATA:  saveShaderName(1)DATA;  saveload(0,0,'shader')DATA(P;  for objects in Blender.Object.Get():DATA(;  if (objects.getType() == "Mesh"):DATA<  resetObject()DATA @<  selectedname = objects.nameDATA<  saveload(0,0,'object')DATA0<  if deleteshader == objectshadermenu.val:DATA8=  convertbm.val = 0 DATA0=  elif deleteshader < objectshadermenu.val:DATA8=  objectshadermenu.val = objectshadermenu.val - 1DATAH>  saveload(1,0,'object')DATA >  selectedname = tempselectedDATA>  saveload(0,0,'object')matDATA (?  Register (gui, event, bevent)DATA4x?  if (evt == 17): # Surface shader name editDATA?  if (len(surfaceshadername.val) != 0): # this if thing fixes a bug that crashes the app when renaming a shader without a name. ("" = "")DATA,@  namelist = string.split(sshader, "|")2YDATA<@  namelist[surfaceshader.val - 1] = surfaceshadername.valDATA(XA  sshader = string.join(namelist, "|")DATAA  saveload(1,0,'shader')DATAA  saveShaderName(1)DATA$@B  Register (gui, event, bevent) EEDATAB  if (evt == 18):DATAB  saveload(1,0,'object')DATA C  Register (gui, event, bevent)DATAhC  if (evt == 19):DATA8C  testrender = open('%s/testrender.rib'%rootdir, 'w')DATA<D  testrender.write('Projection "perspective" "fov" 40\n')DATA,xD  testrender.write('Format 320 240 1\n')REEDATAD  if (rgba.val == 1):DATAE  channels = "rgb"DATAXE  elif (rgba.val == 2):DATAE  channels = "rgba"@DATAE  elif (rgba.val == 3):DATA0F  channels = "rgbz"DATAxF  elif (rgba.val == 4):DATAF  channels = "z"DATALG  testrender.write('Display "Test Render" "framebuffer" "%s"\n'%channels)DATALxG  testrender.write('Option "searchpath" "texture" ["%s"]\n'%texturesdir)E DATA(G  testrender.write('Exposure 1 1.2\n')DATA,HH  testrender.write('PixelSamples 1 1\n')DATA(H  testrender.write('Translate 0 0 5\n')DATA,H  testrender.write('Rotate -120 1 0 0\n')DATA(PI  testrender.write('Rotate 25 0 0 1\n')DATA$I  testrender.write('WorldBegin\n')DATA0I  if (menuval.val == 1) or (menuval.val == 4):DATAHXJ  testrender.write('\tAttribute "visibility" "integer trace" [1]\n')IDATAJ  if (menuval.val == 3):DATADK  testrender.write('\tAttribute "visibility" "reflection" [1]\n')EDATA@K  testrender.write('\tAttribute "visibility" "shadow" [1]\n')DATA0K  if (menuval.val == 1) or (menuval.val == 4):DATATXL  testrender.write('\tAttribute "visibility" "string transmission" ["shader"]\n')DATA4L  elif (menuval.val == 2) or (menuval.val == 3):REEDATAP8M  testrender.write('\tAttribute "render" "string casts_shadows" ["shade"]\n')DATAHM  if (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):IDATA0N  if (menuval.val != 5):DATA@xN  testrender.write('\tAttribute "light" "shadows" ["on"]\n')DATA`N  testrender.write('\tLightSource "spotlight" 1 "intensity" 20 "from" [0 3 4] "to" [0 0 0]\n')DATAdxO  testrender.write('\tLightSource "spotlight" 2 "intensity" 20 "from" [0 -3 4] "to" [0 0 0]\n')DATAP  elif (menuval.val == 3):DATAPP  testrender.write('\tLightSource "spotlight" 1 "intensity" 10 "from" [0 3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')dDATAQ  testrender.write('\tLightSource "spotlight" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')EEDATAQ  elif (menuval.val == 1):DATA(R  testrender.write('\tLightSource "shadowspot" 1 "intensity" 10 "from" [0 3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')DATAR  testrender.write('\tLightSource "shadowspot" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')REEDATA$S  elif (menuval.val == 6): #Pixie!DATALT  testrender.write('\tAttribute "visibility" "transmission" "opaque"\n') DATAxT  testrender.write('\tLightSource "shadowspot" 1 "float shadowbias" 0.25 "float blur" 0.0 "float samples" 1 "coneangle" 0.392699081699 "conedeltaangle" 0.0589048645955 "from" [0 -3 4] "to" [0 0 0] "intensity" 20.0 "lightcolor" [1.0 1.0 1.0] "string shadowname" ["raytrace"]\n')DATAU  testrender.write('\tLightSource "shadowspot" 1 "float shadowbias" 0.25 "float blur" 0.0 "float samples" 1 "coneangle" 0.392699081699 "conedeltaangle" 0.0589048645955 "from" [0 3 4] "to" [0 0 0] "intensity" 20.0 "lightcolor" [1.0 1.0 1.0] "string shadowname" ["raytrace"]\n')DATA,W  testrender.write('\tAttributeBegin\n')DATA`W  name = 'foobar'DATAW  meshobj = 10DATAtW  testrender.write('\t\tAttribute "displacementbound" "string coordinatesystem" ["object"] "float sphere" [1]\n')W@DATA,X  writeShader(testrender, name, meshobj, 0)DATA0X  testrender.write('\t\tSphere 1 -1 1 360\n')DATA(8Y  testrender.write('\tAttributeEnd\n')DATA,Y  testrender.write('\tAttributeBegin\n')REEDATA4Y  if ((menuval.val == 2) or (menuval.val == 3)):DATA0HZ  testrender.write('\tSurface "oakplank"\n')EEDATA4Z  elif (menuval.val == 4) or (menuval.val == 1):tDATA0[  testrender.write('\tSurface "rmarble"\n')sDATA4h[  elif (menuval.val == 5) or (menuval.val == 6):REEDATA,[  testrender.write('\tSurface "matte"\n')DATA< \  testrender.write('\tPointsPolygons [4 ] [0 3 2 1 ]\n')DATA`\  testrender.write('\"P" [10.0 10.0 -1.0 10.0 -10.0 -1.0 -10.0 -10.0 -1.0 -10.0 10.0 -1.0 ]\n')DATA(]  testrender.write('\tAttributeEnd\n')DATA$p]  testrender.write('WorldEnd\n')xDATA]  testrender.close()DATA(^  render('%s/testrender.rib'%rootdir)DATA(`^  if (evt == 20): # Load settingsDATA^  loadSettings()DATA ^  Register (gui, event, bevent)DATA(H_  if (evt == 21): # Save settings@DATA_  saveSettings()|DATA _  Register (gui, event, bevent)DATA0`  if (evt == 30):DATAp`  saveload(0, 0, 'global')DATA `  Register (gui, event, bevent)DATAa  if (evt == 31):DATAHa  saveload(1, 0, 'global')BDATA a  Register (gui, event, bevent)DATAa  if (evt == 32):DATA b  saveload(1,0,'shader')/DATA hb  Register (gui, event, bevent)DATAb  if (evt == 34):DATA b  worked = getSelectedObject()DATAHc  if (worked == 1):DATAc  resetObject()E DATA$c  Register (gui, event, bevent)upSDATAd  saveload(0,0,'object')DATA `d  Register (gui, event, bevent)DATAd  if (evt == 244):@ADATAd  rendershadow.val = 1DATA8e  raytraceshadow.val = 0RW@DATAe  saveload(1,0,'object')DATAe  if (eblur.val > 0.2):DATAf  eblur.val = 0.2DATAPf  maxblur = 0.2DATA f  Register (gui, event, bevent)DATAf  if (evt == 245):YDATA g  rendershadow.val = 0DATAhg  raytraceshadow.val = 1DATAg  saveload(1,0,'object')DATAg  maxblur = 10.0DATA 8h  Register (gui, event, bevent)DATAh  if (evt == 475):DATAh  indirectgi.val = 1REEDATAi  areagi.val = 0DATA Pi  Register (gui, event, bevent)DATAi  if (evt == 476):IDATAi  indirectgi.val = 0DATA(j  areagi.val = 1DATA hj  Register (gui, event, bevent)DATA,j  if (evt == 367): # Convert textures DATA(k  imagelist = os.listdir(texturesdir) DATAhk  if (imagelist != []):DATAk  for image in imagelist:DATA,k  rawimage = '%s/%s'%(texturesdir, image)DATA$Pl  totiff.SetOutDir(texturesdir)GDATA(l  ok = totiff.ConvertShort(rawimage)DATA$l  if not ok[0]: # error occurredEDATA(Hm  print ok[1] # print error messageEDATA(m  imagelist = os.listdir(texturesdir) DATAm  imagelisttif = []IDATA@n  for image in imagelist:DATA n  if (image[-3:] == 'tif'):= DATA,n  imagelisttif = imagelisttif + [image]EDATA40o  imagelistmenu = string.join(imagelisttif, "|")DATA o  Register (gui, event, bevent)DATAo  if (evt == 368):DATA( p  imagelist = os.listdir(texturesdir) DATAxp  if (imagelist != []):DATAp  imagelisttif = []DATAq  for image in imagelist:DATA Pq  if (image[-3:] == 'tif'):DATA,q  imagelisttif = imagelisttif + [image]DATA4q  imagelistmenu = string.join(imagelisttif, "|")DATA8Xr  texturem.val = str(imagelisttif[converttex.val - 1])DATAr  saveload(1,0,'shader')?DATA s  Register (gui, event, bevent)DATA Xs Register (gui, event, bevent)DATAs DATAs def getSelectedObject():DATA@ t  global selectedname, selectedtype, namelist, sshader2, sshaderDATAt  try:DATA0t  selected = Blender.Object.GetSelected()[0]REEDATA (u  except:o SDATA `u  return 0|DATA u  selectedname = selected.namensDATA$u  if (selected.getType() == "Mesh"):DATA 8v  selectedtype = 'Type: Mesh'DATA(v  elif (selected.getType() == "Lamp"):DATA v  selectedtype = 'Type: Lamp'DATA0w  else:cDATA hw  selectedtype = 'Type: Other'DATA(w  namelist = string.split(sshader, "|")DATAx  namelist.remove('ADD NEW')DATA Xx  namelist = map(str, namelist)DATA(x  sshader2 = string.join(namelist, "|")DATA y  return 1DATA8y  DATA(hy def saveload(save, exportS, module):DATAy  if (module == 'shader'):DATAz  Variables = [shadermenu.val, ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, coefshader.val, DATAz  reflblurshader.val, refrblurshader.val, reflsamples.val, refrsamples.val, kr.val, textshader.val, textshaderd.val, texturem.val,DATATh{  textureblurm.val, norm.val, textnor.val, illuminationmenu.val, projection.val]DATA{  if exportS:DATA,(|  namelist = string.split(sshader, "|")DATA0|  name = namelist[objectshadermenu.val - 1]DATA |  else: DATA }  name = surfaceshadername.valDATAh}  if (name == ''):DATA }  returnDATA$}  fname = surfaceshadersdir + nameDATA0~  if (module == 'object'):DATAlx~  Variables = [convertbm.val, objectshadermenu.val, geom.val, meshexport.val, uv.val, arealightMESH.val, DATAx  areasamples.val, recievecaustics.val, transmittcaustics.val, transmittcausticsslider.val, caustics.val, photon.val, DATAp  rendershadow.val, buff256.val, buff512.val, buff1024.val, buff2048.val, eblur.val, esamples.val, amesh.val, DATAhX  reflectcaustics.val, raytraceshadow.val, bias.val, rvisibility.val, castshadow.val, pointwidth.val, DATA$  objectra.val, objectrafile.val]DATA,@  fname = objectsettingsdir + selectednameDATA  if (selectedname == ''): DATA   returnDATA  if (module == 'global'):DATA|`  Variables = [gi.val, gisteps.val, radiosity.val, radnum.val, dirw.val, image.val, filename.val, file.val, buffer.val, DATAx  anim.val, rendert.val, menuval.val, samples.val, srate.val, debug.val, maxerror.val, maxpixeldist.val, geom.val, DATAp  motionblur.val, motionblurframe.val, dof.val, stop.val, lenght.val, distance.val, autogs.val, progress.val, DATAxP  indirectgi.val, areagi.val, gianim.val, patchsize.val, elemsize.val, minsize.val, recurs.val, gain.val, gamma.val, DATAp  lightx.val, hiddenlayer.val, gisphere.val, finalgather.val, hdri.val, hdritex.val, rgba.val, reconvert.val, DATAt  prmanrenderer.val, bmrtrenderer.val, entropyrenderer.val, dlrenderer.val, aqsisrenderer.val, pixierenderer.val,DATAt8  prmantexmaker.val, bmrttexmaker.val, entropytexmaker.val, dltexmaker.val, aqsistexmaker.val, pixietexmaker.val,DATA|؆  preworldra.val, preworldrafile.val, postworldra.val, postworldrafile.val, ambiSamples.val, occlusion.val, indirect.val]DATA4  fname = globalpropertiesdir + 'GlobalProperties'DATA  # Save variablesDATA   if (save == 1):DATA`  f = open(fname,'w')DATA$  writeln(f,'BlenderMan0.1Beta9.0')DATA  for i in Variables:DATA @  writeln(f,type(i).__name__)DATA  if (i == '\n'):DATAЉ  writeln(f,'')DATA  continueDATAP  writeln(f,i)DATA DATA  # Load variablesDATA  if (save == 0):DATA@  try:DATAx  f = open(fname,'r')DATA   except: DATA   returnDATA 0  index = 0DATA h  version = str(f.readline())DATA,  if (version != 'BlenderMan0.1Beta9.0\n'):DATA   returnDATAH  for i in Variables:DATA   varType = str(f.readline())DATA  if (varType == "str\n"):DATA,(  Variables[index] = str(f.readline())DATA   elif (varType == "float\n"):DATA,Ў  Variables[index] = float(f.readline())DATA (  elif (varType == "int\n"):DATA,x  Variables[index] = int(f.readline())DATAЏ  index += 1DATA   f.close()DATAH  if (module == 'shader'):DATA$  shadermenu.val = Variables[0]DATA(  ambientshader.val = Variables[1]DATA(8  diffuseshader.val = Variables[2]DATA(  specularshader.val = Variables[3]DATA(  roughnessshader.val = Variables[4]DATA$@  coefshader.val = Variables[5]DATA(  reflblurshader.val = Variables[6]DATA(  refrblurshader.val = Variables[7]DATA$@  reflsamples.val = Variables[8]DATA$  refrsamples.val = Variables[9]DATA   kr.val = Variables[10]DATA$0  textshader.val = Variables[11]DATA$  textshaderd.val = Variables[12]DATA$Д  texturem.val = Variables[13]DATA(   textureblurm.val = Variables[14]DATA x  norm.val = Variables[15]DATA$ȕ  textnor.val = Variables[16]DATA,  illuminationmenu.val = Variables[17]DATA$p  projection.val = Variables[18]DATA  elif (module == 'object'):DATA$  convertbm.val = Variables[0]DATA(X  objectshadermenu.val = Variables[1]DATA   geom.val = Variables[2]DATA$  meshexport.val = Variables[3]DATAP  uv.val = Variables[4]DATA(  arealightMESH.val = Variables[5]DATA$  areasamples.val = Variables[6]DATA(@  recievecaustics.val = Variables[7]DATA,  transmittcaustics.val = Variables[8]DATA0  transmittcausticsslider.val = Variables[9]DATA$P  caustics.val = Variables[10]DATA   photon.val = Variables[11]DATA(  rendershadow.val = Variables[12]DATA$H  buff256.val = Variables[13]DATA$  buff512.val = Variables[14]DATA$  buff1024.val = Variables[15]DATA$8  buff2048.val = Variables[16]DATA   eblur.val = Variables[17]DATA$؜  esamples.val = Variables[18]DATA (  amesh.val = Variables[19]DATA(x  reflectcaustics.val = Variables[20]DATA(Н  raytraceshadow.val = Variables[21]DATA (  bias.val = Variables[22]DATA$x  rvisibility.val = Variables[23]DATA$Ȟ  castshadow.val = Variables[24]DATA$  pointwidth.val = Variables[25]DATA$h  objectra.val = Variables[26]DATA$  objectrafile.val = Variables[27]DATA  elif (module == 'global'):DATAP  gi.val = Variables[0]DATA   gisteps.val = Variables[1]DATA$  radiosity.val = Variables[2]DATA 8  radnum.val = Variables[3]DATA   dirw.val = Variables[4]DATA ء  image.val = Variables[5]DATA$(  filename.val = Variables[6]DATA x  file.val = Variables[7]DATA Ȣ  buffer.val = Variables[8]DATA   anim.val = Variables[9]DATA$h  rendert.val = Variables[10]DATA$  menuval.val = Variables[11]DATA$  samples.val = Variables[12]DATA X  srate.val = Variables[13]DATA   debug.val = Variables[14]`DATA$  maxerror.val = Variables[15]`DATA(H  maxpixeldist.val = Variables[16]`DATA   geom.val = Variables[17]`DATA$  motionblur.val = Variables[18]DATA(@  motionblurframe.val = Variables[19]DATA   dof.val = Variables[20]PPDATA   stop.val = Variables[21]PDATA 8  lenght.val = Variables[22]DATA$  distance.val = Variables[23]DATA ا  autogs.val = Variables[24]DATA$(  progress.val = Variables[25]DATA$x  indirectgi.val = Variables[26]DATA Ȩ  areagi.val = Variables[27]DATA   gianim.val = Variables[28]DATA$h  patchsize.val = Variables[29]DATA$  elemsize.val = Variables[30]DATA$  minsize.val = Variables[31]DATA X  recurs.val = Variables[32]DATA   gain.val = Variables[33]DATA   gamma.val = Variables[34]DATA H  lightx.val = Variables[35]DATA$  hiddenlayer.val = Variables[36]DATA$  gisphere.val = Variables[37]DATA$8  finalgather.val = Variables[38]DATA   hdri.val = Variables[39]DATA ج  hdritex.val = Variables[40]DATA (  rgba.val = Variables[41]DATA$x  reconvert.val = Variables[42]DATA(ȭ  prmanrenderer.val = Variables[43]ffDATA$   bmrtrenderer.val = Variables[44]DATA(p  entropyrenderer.val = Variables[45]DATA$Ȯ  dlrenderer.val = Variables[46]DATA(  aqsisrenderer.val = Variables[47]DATA(p  pixierenderer.val = Variables[48]mDATA(ȯ  prmantexmaker.val = Variables[49]mmDATA$   bmrttexmaker.val = Variables[50]DATA(p  entropytexmaker.val = Variables[51]DATA$Ȱ  dltexmaker.val = Variables[52]DATA(  aqsistexmaker.val = Variables[53]DATA(p  pixietexmaker.val = Variables[54]uuDATA$ȱ  preworldra.val = Variables[55]DATA(  preworldrafile.val = Variables[56] DATA$p  postworldra.val = Variables[57]DATA(  postworldrafile.val = Variables[58] DATA(  ambiSamples.val = Variables[59] }}DATA$p  occlusion.val = Variables[60] DATA,  #ambiSamplesindex.val = Variables[61] ɼDATA$  indirect.val = Variables[61]DATAh  DATA def writeln(f,x):DATAش  try:DATAx  if (type(x).__name__ == 'string'): # this thing is to combat a bug that saves strings with a \n, (we dont want that)DATA   nn = string.find(x, '\n')DATA  if (nn > 0):DATAH  x = x[:nn] + x[nn + 1:]DATA  f.write(str(x))DATAж  f.write('\n')DATA   except:DATAH  passDATA DATA def readint(f):DATA  try:DATA(  return int(f.readline())DATA p  except:DATA  passDATA def readfloat(f):DATA   try:DATA X  return float(f.readline())DATA   except:DATA  passDATA def readstr(f):DATAX  try:DATA  s = (f.readline())DATAغ  nn = string.find(s, '\n')DATA   if (nn > 0):DATA`  s = s[:nn] + s[nn + 1:]DATA   return sDATA   except:DATA   print sDATAP DATA def saveShaderName(save):PDATAȼ  global sshaderDATA<  if save: f = open(surfaceshadersdir + 'ShaderNames','w')PDATA8p  else: f = open(surfaceshadersdir + 'ShaderNames','r')DATA ؽ  if save: writeln(f,sshader)DATA(  else: sshader = readstr(f)DATA p  f.close()DATA try: DATA4  f = open(surfaceshadersdir + 'ShaderNames','r')DATA@ except:DATAx  saveShaderName(1)DATA   Register (gui, event, bevent)DATA DATA8 saveShaderName(0)DATA x Register (gui, event, bevent)DATA sshader2 = sshaderDATA DATA8 DATAh def newdirs():DATA`  global pdir, globalpropertiesdir, surfaceshadersdir, displacementshadersdir, objectsettingsdirDATAh8  global lightsettingsdir, lightsettingsdir, meshesdir, imagesdir, shadowdir, texturesdir, shadersdirDATA  if (os.name != "posix"):DATA  rootdir = '/BlenderMan/'DATA`  else:DATA0  rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$  pdir = rootdir + dirw.val + '/'DATA4H  globalpropertiesdir = pdir + '/GlobalProperties/'DATA0  surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<  displacementshadersdir = pdir + '/DisplacementShaders/'DATA0p  objectsettingsdir = pdir + '/ObjectSettings/'DATA0  lightsettingsdir = pdir + '/LightSettings/'DATA 0  meshesdir = pdir + '/Meshes/'DATA   imagesdir = pdir + '/images/'DATA   shadowdir = pdir + '/shadows/'DATA$   texturesdir = pdir + '/textures/'DATA$p  shadersdir = pdir + '/shaders/'մDATA  try:DATA  os.mkdir(pdir)DATA 8  os.mkdir(globalpropertiesdir)DATA   os.mkdir(surfaceshadersdir)PDATA$  os.mkdir(displacementshadersdir)DATA(  os.mkdir(meshesdir)PDATA p  os.mkdir(objectsettingsdir)PDATA   os.mkdir(lightsettingsdir)DATA  os.mkdir(shadowdir)DATAX  os.mkdir(texturesdir)DATA  os.mkdir(imagesdir)DATA  except OSError: DATA(  passDATA` DATA, def writeHeader(ribfile, frames, frames2):DATA\  ribfile.write('Option "searchpath" "texture" ["%s"]\n'%(texturesdir + ":" + shadowdir))DATA p  display = Scene.GetCurrent()DATA,  context = display.getRenderingContext()DATA$  yResolution = context.imageSizeY()DATA$h  xResolution = context.imageSizeX()DATA   if xResolution >= yResolution:DATA,  factor = yResolution / float(xResolution)DATA`  else:DATA,  factor = xResolution / float(yResolution)DATA   if Blender.World.Get() != []:DATA$@  world = Blender.World.Get()[0]DATA   if world.hor != [0, 0, 0]:DATAp  ribfile.write('Imager "background" "color bgcolor" [%s %s %s]\n'%(world.hor[0], world.hor[1], world.hor[2]))DATA$  scene = Blender.Scene.GetCurrent()DATA$  camobj = scene.getCurrentCamera()DATA<   camera = Blender.Camera.Get(camobj.getData().name)DATAp  ribfile.write('Projection "perspective" "fov" [%s]\n'%(360.0 * atan(factor * 16.0 / camera.lens) /pi))DATA@(  ribfile.write('Format %s %s 1\n' % (xResolution, yResolution))DATAH  ribfile.write("Clipping %s %s\n" % (camera.clipStart, camera.clipEnd))DATAD  ribfile.write('PixelSamples %s %s\n'%(samples.val, samples.val))DATA  try:DATA<  ribfile.write('Exposure %s %s\n'%(gain.val, gamma.val))DATA   except: DATAX  passDATA  if (menuval.val != 2):DATA  if (dof.val == 1): xDATAT   ribfile.write('DepthOfField %s %s %s\n'%(stop.val, lenght.val, distance.val))ǺDATA<  ribfile.write('ShadingRate %s\n'%sratelist[srate.val - 1])DATA4  if ((radiosity.val == 1) & (menuval.val == 2)):DATA@h  ribfile.write('Option "radiosity" "steps" [%s]\n'%radnum.val)DATAH  ribfile.write('Attribute "indirect" "maxerror" [%s]\n'%maxerror.val)DATAXP  ribfile.write('Attribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)PPDATAP  ribfile.write('Attribute "radiosity" "float patchsize" [%s]'%patchsize.val)DATALX  ribfile.write('Attribute "radiosity" "float elemsize" [%s]'%elemsize.val)DATAL  ribfile.write('Attribute "radiosity" "float minsize" [%s]'%minsize.val)DATAH  if (motionblur.val == 1):DATA$  ribfile.write('Shutter 0 1\n')DATA0  if (menuval.val == 1) or (menuval.val == 4):DATAH@  ribfile.write('Option "trace" "integer maxdepth" [%s]\n'%recurs.val)DATA0  elif (menuval.val == 2) or (menuval.val == 3):DATAD  ribfile.write('Option "render" "max_raylevel" [%s]\n'%recurs.val)DATAL  ribfile.write('Option "statistics" "integer endofframe" [%s]\n'%debug.val)DATA0  if ((indirectgi.val == 1) & (gi.val == 1)):DATA,`  if ((gianim.val == 0) & (frames2 == 0)):DATAP  ribfile.write('Option "indirect" "string savefile" ["%s/irr.dat"]\n'%pdir)DATA08  elif ((frames2 > 0) or (gianim.val == 1)):DATA  if (anim.val == 1):DATAP  ribfile.write('Option "indirect" "string seedfile" ["%s/irr.dat"]\n'%pdir)DATA`  if (menuval.val == 3):DATA@  ribfile.write('Option "indirect" "integer maxbounce" [3]\n')DATA DATAH DATA(x def writeTransform(ribfile, lampobj):PDATA  global cframeDATA  Blender.Get('curframe')DATAX  Blender.Window.RedrawAll()DATA  if (lampobj == 0):DATA$  camobj = scene.getCurrentCamera()DATA0  else:DATAh  camobj = lampobjDATA,  caminvmatrix = camobj.getInverseMatrix()DATA   ribfile.write("Transform [" +DATA<P  "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATA  (caminvmatrix[0][0],DATA  caminvmatrix[0][1],DATAH  -caminvmatrix[0][2],DATA  caminvmatrix[0][3],DATA  caminvmatrix[1][0],DATA   caminvmatrix[1][1],DATAh  -caminvmatrix[1][2],DATA  caminvmatrix[1][3],IDATA  caminvmatrix[2][0],IDATA@  caminvmatrix[2][1],IDATA  -caminvmatrix[2][2],DATA  caminvmatrix[2][3],DATA  caminvmatrix[3][0],DATA`  caminvmatrix[3][1],DATA  -caminvmatrix[3][2],DATA  caminvmatrix[3][3]))DATA8 DATAh def ambientLight(ribfile):DATA   if Blender.World.Get() != []:DATA$  world = Blender.World.Get()[0]DATA(P  if (occlusion.val) or (indirect.val):DATAH  ribfile.write('\tAttribute "visibility" "transmission" "opaque"\n')DATA   else:DATAX  ribfile.write('\tLightSource "ambientlight" 998 "float intensity" [1] "color lightcolor" [%s %s %s]\n\n'%(world.amb[0], world.amb[1], world.amb[2]))DATA  DATAP def checkLamps(ribfile):DATA  global selectednameDATA  lampnum = 0DATA(   for objects in Blender.Object.Get():DATAx  name = objects.getName()DATA$  if (objects.getType() == "Lamp"):DATA  lampnum += 1DATAP  resetObject()DATA  selectedname = nameDATA$  Register (gui, event, bevent)DATA(  saveload(0,0,'object')DATA$p  Register (gui, event, bevent)DATA(  writeLamps(ribfile, name, lampnum)DATA  ribfile.write("\n")DATA` DATA( def renderShadows(ribfile, frames2):DATA$  global selectedname, partitionnameDATA(8  display = Blender.Scene.GetCurrent()DATA$  cframe = Blender.Get('curframe')DATA(  for objects in Blender.Object.Get():DATA8  name = objects.getName()DATA$  if (objects.getType() == "Lamp"):DATA  resetObject()DATA$  Register (gui, event, bevent)DATA`  selectedname = nameDATA  saveload(0,0,'object')DATA$  Register (gui, event, bevent)DATA @  if (rendershadow.val == 1):DATA  if (anim.val == 1):DATA,  shadowframe = Blender.Get('curframe')DATA 0  else:DATAh  shadowframe = ''DATAH  ribfiledir = os.path.normpath(shadowdir + name + str(shadowframe))DATA((  shadowrib = open(ribfiledir, 'w')DATA4  if ((menuval.val == 4) & (os.name != "posix")):DATA  ribfile.write('ReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + shadowdir + name + str(shadowframe))))))DATA   else:DATAP  ribfile.write('ReadArchive "%s"\n'%(shadowdir + name + str(shadowframe)))DATA(`  shadowrib.write('FrameBegin 0\n')DATA(  lampobj = Blender.Object.Get(name)DATA4  lamp = Blender.Lamp.Get(lampobj.getData().name)DATA|p  if ((lamp.getMode() & lamp.Modes['Shadows']) & (lamp.type == 2)): # if it is set to render shadow and is a spotlightDATA  if (buff256.val == 1):DATA`  buffer = 256DATA   elif (buff512.val == 1):DATA  buffer = 512DATA 0  elif (buff1024.val == 1):DATA  buffer = 1024DATA   elif (buff2048.val == 1):DATA  buffer = 2048DATAPP  shadowrib.write('Projection "perspective" "fov" %s\n' %(lamp.spotSize))DATA,  shadowrib.write('PixelSamples 1 1\n')DATA4(  if (menuval.val != 2) and (menuval.val != 3):DATAD  shadowrib.write('Hider "hidden" "depthfilter" "midpoint"\n')DATA  if (menuval.val == 3):DATA4@  shadowrib.write('PixelFilter "min" 1 1\n')DATA   else:DATA4  shadowrib.write('PixelFilter "box" 1 1\n')DATA88  shadowrib.write('Hider "hidden" "jitter" [0]\n')DATA(  writeTransform(shadowrib, lampobj)DATA<  shadowrib.write('Format %s %s 1\n'%(buffer, buffer))DATA\`  shadowrib.write('Display "%s/%s%s.pic" "zfile" "z"\n'%(shadowdir, name, shadowframe))DATA  if menuval.val == 5:DATA,0  shadowrib.write('ShadingRate 1\n')DATA   else:DATA,  shadowrib.write('ShadingRate 4\n')DATA(  shadowrib.write('WorldBegin \n')DATAp  shadows = 1DATA8  createObjects(shadowrib, cframe, shadows, frames2)DATA$  shadowrib.write('WorldEnd \n')DATAh  shadowrib.write('MakeShadow "%s/%s%s.pic" "%s/%s%s.tx"\n'%(shadowdir, name, shadowframe, shadowdir, name, shadowframe))DATA$  shadowrib.write('FrameEnd\n')DATAh DATA( def writeLamps(ribfile, name, lampnum):DATA  global selectednameDATA$8  lampobj = Blender.Object.Get(name)DATA4  lamp = Blender.Lamp.Get(lampobj.getData().name)DATA4  x = lampobj.matrix[3][0] / lampobj.matrix[3][3]DATA4H  y = lampobj.matrix[3][1] / lampobj.matrix[3][3]DATA4  z = lampobj.matrix[3][2] / lampobj.matrix[3][3]DATA4  tox = -lampobj.matrix[2][0] + lampobj.matrix[3][0]DATA4h  toy = -lampobj.matrix[2][1] + lampobj.matrix[3][1]DATA4  toz = -lampobj.matrix[2][2] + lampobj.matrix[3][2]DATA0(  if lamp.getMode() & lamp.Modes['Negative']:DATA  negative = -1DATA  else:DATA  negative = 1DATA@  selectedname = nameDATA   Register (gui, event, bevent)DATA  saveload(0,0,'object')DATA   if (caustics.val):DATA0`  ribfile.write('\tLightSource "caustic" 2\n')DATA(  ribfile.write('\tIlluminate 2 0\n\n')DATA(   ribfile.write('\tTransformBegin\n')DATALp   ribfile.write('\tAttribute "light" "integer nphotons" [%s]\n'%photon.val)DATA,   if lamp.getMode() & lamp.Modes['Shadows']:DATA@   shadow = 'on'DATA   else:DATA   shadow = 'off'DATA0   if (menuval.val == 2) or (menuval.val == 4):DATA X   if (raytraceshadow.val == 1):DATAH   ribfile.write('\tAttribute "light" "shadows" ["%s"]\n' % (shadow))DATA   else:DATA<X   ribfile.write('\tAttribute "light" "shadows" ["off"]\n')DATA   if (lamp.type == 2):DATA   if (anim.val == 1):DATA0P   shadowframe = '%s'%(Blender.Get('curframe'))DATA   else:DATA   shadowframe = ''DATA$(  energratio = lamp.dist * negativeDATA8x  if ((shadow == 'on') and (raytraceshadow.val == 1)):DATA  if (menuval.val == 3):DATA(  shadowname = 'shadow'DATAp  elif (menuval.val == 1):DATA  shadowname = 'raytrace'DATA  elif (menuval.val == 6):DATAHH  ribfile.write('\t(Attribute "visibility" "transmission" "opaque")')DATA  shadowname = 'raytrace'DATA   else:DATA@  shadowname = ''DATA  else:DATA4  if (shadow == 'on') and (rendershadow.val == 1):DATA,  shadowname = name + shadowframe + '.tx'DATA p  else:DATA  shadowname = ''DATA@  if (menuval.val == 6) and (shadow == 'off'): #Pixie RenderDATAX  ribfile.write('\tLightSource "spotlight" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATAx  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAp  elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 0): #Pixie Render with SpotShadowsDATA(  ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATAP  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAt`  elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 1): #Pixie Render with Ray Spot shadowsDATA  ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA(  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA8  else:DATAp  ribfile.write('\tLightSource "bml" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA  elif (lamp.type == 1):DATA  energratio = negativeDATAx0  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATA  ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA  else:DATA   if (menuval.val == 3):DATAD`   ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowsamples" [%s] "float shadowblur" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val))DATA!  elif (menuval.val == 1):DATAD"  ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["raytrace"] "float samples" [%s] "float width" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val * 100 + 1))DATA#  elif (lamp.type == 0):DATA$#  energratio = lamp.dist * negativeDATAx $  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATA$  ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B))DATAL%  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 6):DATA0&  ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B))DATA '  else:DATA X'  if (menuval.val == 3): DATA0'  ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float shadowblur" [%s] "float shadowsamples" [%s] "string shadowname" ["shadow"]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, eblur.val, esamples.val))DATA )  elif (menuval.val == 1): DATAX)  ribfile.write('\tLightSource "shadowpoint" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float width" [%s] "float samples" [%s] "string sfpx" ["raytrace"] "string sfnx" ["raytrace"] "string sfpy" ["raytrace"] "string sfny" ["raytrace"] "string sfpz" ["raytrace"] "string sfnz" ["raytrace"]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, eblur.val * 100 + 1, esamples.val))DATA88+  if (raytraceshadow.val == 1) and (menuval.val == 6):DATA+  print 'raytrace lamp'DATAH+  ribfile.write('Attribute "visibility" "transmission" "opaque"\n')DATA`,  ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "shadowname" "raytrace"\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA-  elif (lamp.type == 3):DATA-  energratio = negativeDATA.  ribfile.write('\tLightSource "hemilight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float falloff" [0]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA(/  if (caustics.val == 1):DATA$p/  ribfile.write('\tTransformEnd\n')DATA/ DATA / def writeMatrix(ribfile, name):DATA@0  Blender.Get('curframe')DATA0  Blender.Window.RedrawAll()DATA,0  matrix = Blender.Object.Get(name).matrixDATA$(1  ribfile.write("\t\tTransform [" +DATA<x1  "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATA 1  (matrix[0][0], matrix[0][1],DATA 02  matrix[0][2], matrix[0][3],DATA 2  matrix[1][0], matrix[1][1],DATA 2  matrix[1][2], matrix[1][3],PDATA 3  matrix[2][0], matrix[2][1],DATA p3  matrix[2][2], matrix[2][3],DATA 3  matrix[3][0], matrix[3][1],DATA 4  matrix[3][2], matrix[3][3]))DATA`4 DATA4 def resetObject():DATA4  convertbm.val = 0DATA5  objectshadermenu.val = 0DATAX5  geom.val = 1DATA5  meshexport.val = 1DATA5  pointwidth.val = 1.0DATA 6  uv.val = 0DATAX6  arealightMESH.val = 0DATA6  areasamples.val = 20DATA6  recievecaustics.val = 0DATA07  transmittcaustics.val = 0DATA$x7  transmittcausticsslider.val = 1.4DATA7  caustics.val = 0DATA8  photon.val = 4000DATAH8  buff256.val = 0DATA8  buff512.val = 1DATA8  buff1024.val = 0DATA9  buff2048.val = 0DATAH9  eblur.val = 0.00DATA9  esamples.val = 1DATA9  amesh.val = 0DATA:  reflectcaustics.val = 0DATAP:  raytraceshadow.val = 0DATA:  rendershadow.val = 0DATA:  bias.val = 0.25DATA ;  rvisibility.val = 0DATAh;  castshadow.val = 1DATA;  objectra.val = 0DATA; DATA< def resetShaderVal():DATA`<  if (shadermenu.val == 1):DATA<  ambientshader.val = 1DATA<  diffuseshader.val = 0.5DATA8=  specularshader.val = 0.5DATA=  roughnessshader.val = 0.1DATA=  if (shadermenu.val == 2):DATA>  ambientshader.val = 0.2DATAX>  diffuseshader.val = 0.0DATA>  specularshader.val = 0.5DATA >  roughnessshader.val = 0.05DATA8?  coefshader = 1.5DATAx?  reflblurshader = 0DATA?  refrblurshader.val = 0DATA@  reflsamples.val = 0DATAP@  refrsamples.val = 0DATA@  if (shadermenu.val == 3):DATA@  ambientshader.val = 1.0DATA(A  diffuseshader.val = 0.1DATApA  specularshader.val = 1.0DATAA  roughnessshader.val = 0.2DATAB  if (shadermenu.val == 5):DATAHB  ambientshader.val = 1DATAB  diffuseshader.val = 0.5DATAB  specularshader.val = 0.5DATA C  roughnessshader.val = 0.1DATA(hC  textshader.val = 'Surface "plastic"'DATA,C  textshaderd.val = 'Displacement "bumpy"'DATAD  texturem.val = ''DATAXD  textnor.val = 0DATAD  illuminationmenu.val = 0DATAD DATA0E def writeShader(ribfile, name, meshobj, anim):DATApE  global texturefile, txdoneDATA E  if (arealightMESH.val == 0):DATAF  MName = '"plastic"'DATAPF  else: DATAF  MName = ''DATA,F  if ((uv.val == 1) and (meshobj != 10)):DATA0 G  mesh = Blender.NMesh.GetRawFromObject(name)DATAG  if mesh.faces[0].image:DATA,G  imagename = mesh.faces[0].image.filenameDATA H  imagename = imagename[:-3]DATApH  imagename = imagenameDATA$H  imagename = imagename + 'tif'DATATI  imagename = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(imagename)[1])DATAhI  rawimage = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(mesh.faces[0].image.filename)[1])DATA8 J  infile = open(mesh.faces[0].image.filename, 'rb')DATA$J  outfile = open(rawimage, 'wb')DATA J  outfile.write(infile.read())DATA(K  outfile.close()DATAhK  infile.close()DATA`K  imagenameconv = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tif'DATAX8L  txname = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tx'DATA(L  if os.path.isfile(imagename) == 0:DATA M  try:DATA$PM  totiff.SetOutDir(texturesdir)DATA(M  ok = totiff.ConvertShort(rawimage)DATA$M  if not ok[0]: # error occurredDATA(HN  print ok[1] # print error messageDATA N  except:DATA N  if (os.name != "posix"):DATA (O  try:DATAd`O  os.system('/ImageMagick/convert.exe -depth 8 -compress none %s %s'%(rawimage, imagename))DATAO  except OSError:DATA8P  print "\nYou do not have ImageMagic installed in c:\ImageMagic so texture conversion will not be possible. You will havto do it manualy.\nYou can find the textures to convert in c:\BlenderMan\PROJECTNAME\textures\\n"DATA HQ  else:DATA Q  try:DATAPQ  os.system('convert -depth 8 -compress none %s %s'%(rawimage, imagename))DATA8R  except OSError:DATA0R  print "\nCould not find ImageMagic\n"DATA,R  imagename = mesh.faces[0].image.filenameDATA 8S  imagename = imagename[:-3]DATAS  imagename = imagenameDATA S  tdlname = imagename + 'tx'DATA$ T  imagename = imagename + 'tif'DATA4pT  imagename = '%s'%(os.path.split(imagename)[1])DATA0T  tdlname = '%s'%(os.path.split(tdlname)[1])DATAH0U  MName = '"bms" "string texname" ["%s"] "float maptype" 3'%(tdlname)DATA@U  if ((os.path.isfile(txname) == 0) or (reconvert.val == 1)):DATAV  if menuval.val == 1:DATAH`V  os.system('%s %s %s'%(prmantexmaker.val, imagenameconv, txname))DATAV  elif menuval.val == 2:DATAH W  os.system('%s %s %s'%(bmrttexmaker.val, imagenameconv, txname))DATAW  elif menuval.val == 3:DATAHW  os.system('%s %s %s'%(entropytexmaker.val, imagenameconv, txname))DATAXX  elif menuval.val == 4:DATADX  os.system('%s %s %s'%(dltexmaker.val, imagenameconv, txname))DATAY  elif menuval.val == 5:DATAHXY  os.system('%s %s %s'%(aqsistexmaker.val, imagenameconv, txname))DATAY  elif menuval.val == 6:DATAHZ  os.system('%s %s %s'%(pixietexmaker.val, imagenameconv, txname))DATAZ  else: DATAZ  MName = '"plastic"'DATA$[  if (transmittcaustics.val == 1):DATA0`[  mesh = Blender.NMesh.GetRawFromObject(name)DATA[  try:DATA<[  material = Blender.Material.Get(mesh.materials[0].name)DATA`\  mr = material.RDATA\  mg = material.GDATA\  mb = material.BDATA@ ]  except: # if the mesh doesnt have a material default to whiteDATA ]  mr = 1DATA ]  mg = 1DATA ^  mb = 1DATA`8^  ribfile.write('\t\tAttribute "caustic" "color refractioncolor" [%s %s %s]\n'%(mr, mg, mb))E DATAh^  ribfile.write('\t\tAttribute "caustic" "float refractionindex" [%s]\n'%transmittcausticsslider.val)DATA `_  if (reflectcaustics.val == 1):DATAP_  ribfile.write('\t\tAttribute "caustic" "color specularcolor" [.9 .9 .9]\n')DATA 0`  if (recievecaustics.val == 1):DATA(`  ribfile.write('\t\tIlluminate 2 1\n')DATA8`  if ((shadermenu.val == 1) & (arealightMESH.val != 1)):DATA0@a  if ((convertbm.val != 0) or (meshobj == 10)):DATAa  ribfile.write('\t\tSurface "plastic" "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val))DATA<pb  elif ((shadermenu.val == 2) & (arealightMESH.val != 1)):DATA0b  if ((convertbm.val != 0) or (meshobj == 10)):DATA88c  ribfile.write('\t\tDeclare "eta" "uniform float"\n')DATA<c  ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@d  ribfile.write('\t\tDeclare "refrblur" "uniform float"\n')DATA@xd  ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATADd  ribfile.write('\t\tDeclare "refrraysamples" "uniform float"\n')DATA@Xe  ribfile.write('\t\tDeclare "envname" "uniform string"\n')DATAe  if (menuval.val == 3):DATAf  evar = ('"float reflblur" [%s] "float refrblur" [%s] "string envname" ["reflection"] "string envspace" ["current"] "refrblur" %s "eta" %s'%(reflblurshader.val, refrsamples.val, refrblurshader.val, coefshader.val))DATAg  elif (menuval.val == 2):DATA`g  evar = '"blur" [%s] "raysamples" [%s] "refrraysamples" %s "refrblur" %s "eta" %s'%(reflblurshader.val, reflsamples.val, refrsamples.val, refrblurshader.val, coefshader.val)DATA @h  else:DATAxh  evar = ''DATAh  ribfile.write('\t\tSurface "glass" "Ka" %s "Kd" %s "Ks" %s "roughness" %s "Kr" %s %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, kr.val, evar))DATA<i  elif ((shadermenu.val == 3) & (arealightMESH.val != 1)):DATA0j  if ((convertbm.val != 0) or (meshobj == 10)):DATA<hj  ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@j  ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATA@k  if (menuval.val == 3):DATA`k  evar = '"string envname" ["reflection"] "string envspace" ["current"] "float twosided" 1'DATAl  elif (menuval.val == 2):DATAP`l  evar = ('"raysamples" %s "blur" %s'%(reflsamples.val, reflblurshader.val))DATA l  else:DATAm  evar = ''DATAXm  ribfile.write('\t\tSurface "shiny" "Ka" %s "Kd" %s "Ks" %s "roughness" %s %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, evar))DATA<0n  elif ((shadermenu.val == 4) & (arealightMESH.val != 1)):DATA0n  if ((convertbm.val != 0) or (meshobj == 10)):DATAtn  ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA,o  ribfile.write('\t\t%s\n'%textshader.val)DATA0o  ribfile.write('\t\t%s\n'%textshaderd.val)DATA<Pp  elif ((shadermenu.val == 5) & (arealightMESH.val != 1)):DATA0p  if ((convertbm.val != 0) or (meshobj == 10)):DATAtq  ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA q  txname = texturem.val[:-3]DATAr  txname = txname + 'tx'DATAPr  tdlname = txnameDATA$r  txname = texturesdir + txnameDATAr  converttex = 1DATA$ s  if os.path.isfile(txname) == 0:DATAps  for texture in txdone:DATA s  if (txname == texture):DATAt  converttex = 0DATA Pt  breakDATAt  if (converttex == 1):DATAt  if (menuval.val == 1):DATATu  os.system('%s %s %s'%(prmantexmaker.val, texturesdir + texturem.val, txname))DATA u  elif (menuval.val == 2):DATATu  os.system('%s %s %s'%(bmrttexmaker.val, texturesdir + texturem.val, txname))DATA hv  elif (menuval.val == 3):DATAXv  os.system('%s %s %s'%(entropytexmaker.val, texturesdir + texturem.val, txname))DATA @w  elif (menuval.val == 4):DATATw  os.system('%s %s %s'%(dltexmaker.val, texturesdir + texturem.val, txname))DATA x  elif (menuval.val == 5):DATAT`x  os.system('%s %s %s'%(aqsistexmaker.val, texturesdir + texturem.val, txname))DATA x  elif (menuval.val == 6):DATAT0y  os.system('%s %s %s'%(pixietexmaker.val, texturesdir + texturem.val, txname))DATA y  txdone = txdone + [txname]DATAz  txname = tdlnameDATA@z  if (textnor.val == 1):DATAz  ribfile.write('\t\tDisplacement "bmd" "string texname" ["%s"] "float maptype" %s "float Km" %s\n'%(txname, projection.val - 1, norm.val))DATAH{  ribfile.write('\t\tSurface "bms" "Ka" %s "Kd" %s "Ks" %s "roughness" %s "string texname" ["%s"] "float maptype" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, txname, projection.val - 1))DATA0`|  if ((convertbm.val == 0) & (meshobj != 10)):DATA0|  mesh = Blender.NMesh.GetRawFromObject(name)DATA }  if (MName == ''):DATA `}  returnDATA}  try:DATA<}  material = Blender.Material.Get(mesh.materials[0].name)DATA$8~  hard = 1-(material.hard*0.00392)DATA~  ribfile.write('\t\tSurface %s "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(MName, material.amb, material.ref, material.spec, hard))DATA @  except:DATA0x  ribfile.write('\t\tSurface %s\n'%(MName))DATA  if (meshobj != 10):DATA0   mesh = Blender.NMesh.GetRawFromObject(name)DATA  try:DATA  if mesh.materials:DATA<  material = Blender.Material.Get(mesh.materials[0].name)DATATh  ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA  except: passDATA (  if (arealightMESH.val == 1):DATA,x  ribfile.write('\t\tSurface "constant"\n')DATALЂ  ribfile.write('\t\tAttribute "light" "nsamples" [%s]\n'%areasamples.val)DATAH  if (menuval.val == 2):DATA@  ribfile.write('\t\tAttribute "light" "shadows" ["on"]\n')DATA0  mesh = Blender.NMesh.GetRawFromObject(name)DATA`  try:DATA<  material = Blender.Material.Get(mesh.materials[0].name)DATA  if (menuval.val == 3):DATAH  ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowbias" [0.15]\n'%(material.emit * 100, material.R, material.G, material.B))DATAP  elif (menuval.val == 2):DATA  ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(material.emit * 100, material.R, material.G, material.B))DATA h  except:DATAx  ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(0.7 * 100, 1, 1, 1))DATAH DATA8x def createObjects(ribfile, cframe, shadows, frames2):DATAT  global sshader, selectedname, thisone, meshobjects, xbar, meshnum, partitionnameDATA`  meshobjects = 0.0DATA  thisone = 0DATA  meshnum = 0DATA   objecttime = ''DATA(`  for objects in Blender.Object.Get():DATA  name = objects.getName()DATA  try:DATAD8  if (objects.getType() == "Mesh"): meshobjects = meshobjects + 1DATA   except: DATA  passDATA(  for objects in Blender.Object.Get():DATAp  name = objects.getName()DATA  resetObject()DATA   area = 0DATA$0  obj = Blender.Object.Get(name)DATA  i = 0DATA0  while (obj.Layer>>i): # convert layer numberDATA  i = i + 1DATA X  if (i == hiddenlayer.val):DATA  layer = 1DATA  else:DATA   layer = 0DATA8`  if ((objects.getType() == "Mesh") & (layer == 0)):DATAȏ  meshnum = meshnum + 1DATA(  meshobj = Blender.Object.Get(name)DATA$h  obj = Blender.Object.Get(name)DATA  selectedname = nameDATA$  Register (gui, event, bevent)DATAP  saveload(0,0,'object')DATA  if (shadows == 0):DATA(  ribfile.write('\tAttributeBegin\n')DATA08  if ((shadows == 0) and (objectra.val == 1)):DATA@  ribfile.write('\t\tReadArchive "%s"\n' %(objectrafile.val))DATA  if (shadows != 1):DATA0P  mesh = Blender.NMesh.GetRawFromObject(name)DATA   if (len(mesh.faces) == 0):DATA(  ribfile.write('\tAttributeEnd\n')DATAX  del(mesh)DATA   returnDATAД  if (mesh.materials):DATA   try:DATA@P  material = Blender.Material.Get(mesh.materials[0].name)DATAT  ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATAd@  ribfile.write("\t\tOpacity [%s %s %s]\n" %(material.alpha, material.alpha, material.alpha))DATAЖ  except:DATA   passDATAH  del(mesh)DATA DATA   if (motionblur.val == 1):DATA,  ribfile.write('\tMotionBegin [0 1]\n')DATA(`  Blender.Set('curframe', cframe) DATA   writeMatrix(ribfile, name)DATA<  Blender.Set('curframe', cframe + motionblurframe.val)DATA p  writeMatrix(ribfile, name)DATA$  ribfile.write('\tMotionEnd\n')DATA(  Blender.Set('curframe', cframe) DATA h  else:DATA   writeMatrix(ribfile, name)DATA,  namelist = string.split(sshader, "|")DATAH  if len(namelist) > 1: DATA@  surfaceshadername.val = namelist[objectshadermenu.val - 1] DATA$  Register (gui, event, bevent)DATAP  if (convertbm.val == 1):DATA  saveload(0,1,'shader')DATA$  Register (gui, event, bevent)DATA 0  if (castshadow.val == 1):DATA  op = "Os"DATA   elif (castshadow.val == 2):DATA  op = "opaque"DATA P  elif (castshadow.val == 3):DATA4  if (menuval.val == 1) or (menuval.val == 4):DATA  op = "shader"DATA @  else:DATAx  op = "shade"DATA   elif (castshadow.val == 4):DATA4  if (menuval.val == 1) or (menuval.val == 4):DATAh  op = "transparent"DATA   else:DATA  op = "none"DATA0(  if (menuval.val == 1) or (menuval.val == 4):DATAT  ribfile.write('\t\tAttribute "visibility" "string transmission" ["%s"]\n'%op)DATA4  elif (menuval.val == 2) or (menuval.val == 3):DATAPh  ribfile.write('\t\tAttribute "render" "string casts_shadows" ["%s"]\n'%op)DATA   if (rvisibility.val == 1):DATA8  if (menuval.val == 3):DATAH  ribfile.write('\t\tAttribute "visibility" "integer camera" [0]\n')DATA   elif (menuval.val == 2):DATAHH  ribfile.write('\t\tAttribute "render" "integer visibility" [2]\n')DATA  if (shadows == 0):DATA4  writeShader(ribfile, name, meshobj, frames2)DATAh  if (amesh.val == 1):DATA  objecttime = frames2DATA   else:DATA0  objecttime = ''DATA p  if (motionblur.val != 1):DATA,  if ((frames2 == 0) or amesh.val == 1):DATA  if (geom.val == 1):DATAH`  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8ا  check(name, meshfile, meshobj, meshnum, shadows)DATA@  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA\H  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA Щ  else:DATA   if (meshexport.val == 2):DATA,X  if ((frames2 == 0) or amesh.val == 1):DATA  if (geom.val == 1):DATAH  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8p  check(name, meshfile, meshobj, meshnum, shadows)DATAث  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + objecttime + ".rib")))))DATA\ج  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA `  else:DATA  if (amesh.val != 1):DATA  if (frames2 == 0):DATA(  if (geom.val == 1):DATALp  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA<  check(name, meshfile, meshobj, meshnum, shadows)DATAP  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + objecttime + ".rib")))))DATA\P  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA ذ  else:DATA(  Blender.Set('curframe', cframe) DATA$h  Blender.Window.RedrawAll()DATA  if (geom.val == 1):DATAH  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8x  check(name, meshfile, meshobj, meshnum, shadows)DATA0  ribfile.write('\tMotionBegin [0 1]\n')DATA@  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA\H  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA<д  Blender.Set('curframe', cframe + motionblurframe.val)DATA$8  Blender.Window.RedrawAll()DATA4  objecttime = frames2 + motionblurframe.valDATA  if (geom.val == 1):DATAP0  meshfile = open('%s/%s%s.rib'%(meshesdir,name, str(objecttime)), 'w')DATA8  check(name, meshfile, meshobj, meshnum, shadows)DATA  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA`   else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, str(objecttime)))DATA(  ribfile.write('\tMotionEnd\n')DATA(  Blender.Set('curframe', cframe) DATA$`  Blender.Window.RedrawAll()DATA  objecttime = frames2DATA  if (shadows == 0):DATA(@  ribfile.write('\tAttributeEnd\n')DATA   if (arealightMESH.val == 1):DATA,  ribfile.write('\tIlluminate 999 1\n')DATA@ DATA(p def drawBar(meshnum, qwerty, pixels):DATAȻ  if (progress.val == 1):DATA$  global thisone, meshobjects, xbarDATA `  xbar = 0DATA  xbar = qwertyDATAؼ  if (xbar < 10): xbar = 11DATA   Draw()&{@DATA0X  elif ((progress.val == 0) & (anim.val == 1)):DATA(  testtime = Blender.Get('curframe')DATA DATA8@ def check(name, meshfile, meshobj, meshnum, shadows):DATA  if (shadows != 1):DATA   print 'Exporting: %s'%nameDATA08  mesh = Blender.NMesh.GetRawFromObject(name)DATA   if (len(mesh.faces) == 0):DATA  del(mesh)@DATA (  returnDATA`  if (meshexport.val == 1):DATA$  pointspolygon(meshfile, mesh)@DATA   elif (meshexport.val == 2):DATA0H  polygon(mesh, meshfile, meshobj, meshnum)DATA   elif (meshexport.val == 3):yDATA   subdivmesh(meshfile, mesh)EJDATA H  elif (meshexport.val == 4):`DATA  points(meshfile, mesh)@DATA   elif (meshexport.val == 5):pJDATA0  general(meshfile, mesh)@DATA x  elif (meshexport.val == 6):UDATA  bilinear(meshfile, mesh)DATA   del(mesh)DATAH  meshfile.close()`DATA yDATA  def pointspolygon(file, mesh): DATA  global meshnumDATA$  testtime = Blender.Get('curframe')DATA X  update = 5DATA  colorif = 0@DATAЖ  perso = 0.0z^DATA  pixels = 0.0@DATAP  update = 100DATA   index = 0DATAȗ  facenum = len(mesh.faces)JDATA  if menuval.val != 2:DATAX  if mesh.hasFaceUV() == 1:DATA8  file.write('Declare "st" "facevarying float[2]"\n')DATA$  file.write("PointsPolygons [");DATAX  for face in mesh.faces:@DATA,  if len(face.v) == 4 and menuval.val == 2:DATA  file.write('3 3 ')DATA@  else:DATA$x  file.write('%s '%(len(face.v)))DATAȚ  index = index + 1DATA0  if ((index == update) or (index == facenum)):DATAh  update = update + 100DATA  pixels = 619@DATA(  perso = float(index) / float(facenum)DATA,H  qwerty = float(pixels) * float(perso) @DATA$  drawBar(meshnum, qwerty, pixels)DATA  file.write("] ")DATA0  file.write("[ ")DATAp  for face in mesh.faces:DATA  num = len(face.v)DATA  if num == 3 or num == 4:JDATA(@  if num == 4 and menuval.val == 2:DATA  for i in (0,1,2,0,2,3):DATA,  file.write('%s ' % face.v[i].index)DATA 8  else:pJDATAp  for vert in face.v:DATA$  file.write('%s ' % vert.index)DATA  file.write("]")`DATAH  file.write('\n"P" [')DATA  for vert in mesh.verts:DATADؠ  file.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATAH  file.write('] ')urDATA  if mesh.faces[0].smooth:DATAС  file.write(' "N" [')@DATA  for vert in mesh.verts:@DATAD`  file.write("%s %s %s " % (vert.no[0], vert.no[1], vert.no[2]))Y+DATAТ  file.write(']')`DATA$  if mesh.hasVertexColours() == 1:aDATA(`  vertexcol = range(len(mesh.verts))DATA  file.write('\n"Cs" [')˴DATA  for face in mesh.faces:@DATAH  num = len(face.v)͂@DATA  if num == 3 or num == 4:DATA$ؤ  for vi in range(len(face.v)):DATA0(  vertexcol[face.v[vi].index] = face.col[vi]DATA  for vc in vertexcol: DATADХ  file.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))@DATA@  file.write(']')`DATA  if (menuval.val != 2):DATAȦ  if mesh.hasFaceUV() == 1:DATA  file.write('\n"st" [')@DATAX  for face in mesh.faces:DATA  num = len(face.v)`DATA   if num == 3 or num == 4:DATA$8  for vi in range(len(face.v)):@DATAD  file.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA  file.write(']')DATA8  else:JDATA,p  if (len(mesh.faces[0].uv) != 0):DATAȩ  file.write('\n"st" [ ')DATA  vtuv = [] `DATA(P  for i in range(len(mesh.verts)): aDATA  vtuv.append(0) DATA  for f in mesh.faces: DATA 0  for i in range(len(f.uv)): DATA  uv = f.uv[i]DATA   uv = uv[0], 1.0 - uv[1]DATA   vtuv[f.v[i].index] = uv^@DATA`  for c in vtuv:DATA  for d in c: DATA  file.write('%s '%d)@DATA(  file.write(']')DATAh  file.write('\n')}DATA DATA0ح def polygon(mesh, meshfile, meshobj, meshnum):@DATA8  global meshobjects, iDATA  i = 0DATA   update = 5DATA  colorif = 0@DATA0  perso = 0.0DATAp  pixels = 0.0DATA  facenum = len(mesh.faces)@DATA  for face in mesh.faces:R@DATA@  if mesh.materials:DATA$  matname=mesh.materials[0].nameDATAذ  try:DATA0  material = Blender.Material.Get(matname)~@DATA<p  if (colorif != material.R + material.G + material.B):@DATA4ر  colorif = material.R + material.G + material.BDATAT8  meshfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA   except:DATA   passDATA (  if len(mesh.faces[i].v) == 3:DATAx  vertar = 3DATA  else:DATA  vertar = 4DATA0  if face.smooth:DATAp  smooth = 1DATA  else:DATA  smooth = 0DATA8(  writePoly(mesh,face, meshfile, i, vertar, smooth);DATA   i = i + 1DATA(ȵ  if ((i == update) or (i == facenum)):DATA   update = update + 5DATAh  pixels = 619DATA(  perso = float(i) / float(facenum)`DATA,  qwerty = float(pixels) * float(perso)DATA$X  drawBar(meshnum, qwerty, pixels)DATA DATA<ط def textureUV(i, mesh, va, vb, vc, meshfile, face, number):DATA@  try:DATAx  etest = face.uv[0][0]DATA   except:pJDATA   returnDATA0  meshfile.write('"st" [ ')DATAx  if (number == 1):DATA  for x in [0, 1, 2]:@DATA(  meshfile.write("%s "%face.uv[x][0])@DATA0X  meshfile.write("%s "%(1.0 - face.uv[x][1]))DATA  if (number == 2):JDATA$  if len(mesh.faces[i].v) == 3: ς@DATA H  return@DATA  for x in [0, 2, 3]:DATA(Ȼ  meshfile.write("%s "%face.uv[x][0])JDATA0   meshfile.write("%s "%(1.0 - face.uv[x][1]))DATA  meshfile.write(']\n')DATAȼ `DATA8 def writePoly(mesh, face, meshfile, i, vertar, smooth):DATA$`  meshfile.write('Polygon "P" [ ')DATA  for x in [0, 1, 2]:DATA  for y in range(3):DATA@  try:DATA4x  meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATAؾ  except Error:v@DATA   print iDATA P  print xDATA   print yDATA  meshfile.write(']\n')JDATA  if (smooth == 1):DATAH  meshfile.write('"N" [')DATA  for x in [0, 1, 2]:pJDATA  for y in range(3):`DATA4   meshfile.write('%s '%mesh.faces[i].v[x].no[y])dDATA  meshfile.write(']\n')DATA   number = 1DATA4  textureUV(i,mesh,0,1,2, meshfile, face, number)*ibDATA`  if (vertar == 4):eDATA$  meshfile.write('Polygon "P" [ ')fDATA  for x in [0, 2, 3]:poDATA8  for y in range(3):faDATA4  meshfile.write('%s '%mesh.faces[i].v[x].co[y])pDATA  meshfile.write(']\n')DATA(  if (smooth == 1):DATAh  meshfile.write('"N" [')rDATA  for x in [0, 2, 3]:mDATA  for y in range(3):tDATA4@  meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATA  meshfile.write(']\n')mpfDATA  number = 2radDATA4(  textureUV(i,mesh,0,1,2, meshfile, face, number)uDATA patDATA  def general(meshfile, mesh):codDATA   index = 0mDATA,@  meshfile.write('PointsGeneralPolygons [')oDATA  for face in mesh.faces:ef_DATA  meshfile.write('1 ')CDATA(  index = index + 1DATAh  meshfile.write(']\n[')DATA   index = 0aDATA  for face in mesh.faces:actDATA 0  meshfile.write(str(nr) + ' ')DATA  index = index + 1DATA  meshfile.write(']\n[')DATA   index = 0lDATA@  for f in mesh.faces:xrDATA  for v in f.v:DATA(  meshfile.write(str(v.index) + ' ')deDATA   index = index + 1DATA`  meshfile.write(']\n"P" [')DATA   index = 0rDATA$  for x in range(len(mesh.verts)):eDATA0  for y in range(3):4][DATA4x  meshfile.write(str(mesh.verts[x].co[y]) + '')ogDATA  index = index + 1DATA  meshfile.write(']\n')iDATA` r[1DATA  def bilinear(meshfile, mesh):efDATA  f = 0eDATA  for face in mesh.faces:li_DATA,`  meshfile.write('Patch "bilinear" "P" [ ')DATA  for x in [3, 2, 0, 1]:dirDATA  for y in range(3):alDATA4H  meshfile.write('%s '%mesh.faces[f].v[x].co[y])cDATA  meshfile.write(']\n')DATA  if face.smooth:elDATA0  meshfile.write('"N" [ ')DATAx  for x in [3, 2, 0, 1]:pyDATA  for y in range(3):uDATA4  meshfile.write('%s '%mesh.faces[f].v[x].no[y])DATAh  meshfile.write(']\n')nelDATA   f = f + 1DATA datDATA  def subdivmesh(meshfile, mesh):DATAh  if menuval.val != 2:*sDATA  if mesh.hasFaceUV() == 1:DATA<  meshfile.write('Declare "st" "facevarying float[2]"\n')[DATA8`  meshfile.write('SubdivisionMesh "catmull-clark" [')lasDATA  for face in mesh.faces:typDATA  num = len(face.v)DATA P  meshfile.write('%s '%(num))12DATA  meshfile.write(']\n[')DATA  for face in mesh.faces:dedDATA0  for vert in face.v:fDATA(x  meshfile.write('%s ' % vert.index)mpDATAD  meshfile.write(']\n["interpolateboundary"] [0 0] [] []\n"P" [') aiDATA@  for vert in mesh.verts:[3]DATAH  meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))3]DATA  meshfile.write(']')aneDATAH  if (menuval.val != 2):DATA  if mesh.hasFaceUV() == 1:DATA   meshfile.write('\n"st" [')mDATA(  for face in mesh.faces:gDATAp  num = len(face.v)QuDATA   if num == 3 or num == 4:eSeDATA$  for vi in range(len(face.v)):hDATAHX  meshfile.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA  meshfile.write(']')DATA$  if mesh.hasVertexColours() == 1:AcDATA(h  vertexcol = range(len(mesh.verts))orDATA   meshfile.write('\n"Cs" [')erDATA  for face in mesh.faces:kTDATAX  num = len(face.v)itCDATA  if num == 3 or num == 4:DATA$  for vi in range(len(face.v)): DATA08  vertexcol[face.v[vi].index] = face.col[vi]DATA  for vc in vertexcol:DATAH  meshfile.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATAX  meshfile.write(']')(DATA  meshfile.write('\n')DATA DATA def points(meshfile, mesh):DATA `  meshfile.write('Points "P" [')DATA  for vert in mesh.verts:DATAH  meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))lDATA@p  meshfile.write('] "constantwidth" [%s]\n' % (pointwidth.val))DATA DATA  def createGI(ribfile, frames):DATA0`  if (areagi.val == 1) and (menuval.val !=6):&DATA8  ribfile.write('\tDeclare "casts_shadows" "string"\n')DATAH(  ribfile.write('\tAttribute "render" "casts_shadows" ["opaque"]\n')YDATAT  ribfile.write('\tLightSource "ambientlight" 998 "lightcolor" [0.02 0.02 0.02]\n')DATA(   ribfile.write('\tAttributeBegin\n')\DATA@x  ribfile.write('\t\tAttribute "identifier" "name" ["sky"]\n')DATA`  ribfile.write('\t\tConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 -1573.14 307.099 -988.299 1]\n')DATAXx  ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(  ribfile.write('\t\tAttributeBegin\n')DATA,X  ribfile.write('\t\t\tColor [1 1 1]\n') DATA,  ribfile.write('\t\t\tOrientation "rh"\n')DATA0  ribfile.write('\t\t\tReverseOrientation\n')FDATA0h  ribfile.write('\t\t\tSurface "constant"\n')fDATAL  ribfile.write('\t\t\tAttribute "light" "nsamples" [%s]\n'%gisteps.val)uDATA@@  ribfile.write('\t\t\tAttribute "light" "shadows" ["on"]\n')DATAh  ribfile.write('\t\t\tAreaLightSource "arealight" 1 "lightcolor" [1 1 1] "intensity" [10000000000]\n')DATA4H  ribfile.write('\t\t\tSphere 50000 0 50000 360\n')DATA(  ribfile.write('\t\tAttributeEnd\n')DATA$  ribfile.write('\tAttributeEnd\n')DATA(P  ribfile.write('\tIlluminate 1 1\n')DATA4  if (indirectgi.val == 1) and (menuval.val !=6):DATA   if (finalgather.val == 0):&DATAPX  ribfile.write('\tAttribute "indirect" "float maxerror" [%s]\n'%maxerror.val)DATAX  ribfile.write('\tAttribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATA`  else:DATAH  ribfile.write('\tAttribute "indirect" "float maxpixeldist" [0]\n')DATAP  ribfile.write('\tAttribute "indirect" "integer nsamples" [%s]\n'%gisteps.val)DATA4  ribfile.write('\tLightSource "indirect" 42\n\n')DATA  if (gisphere.val == 1):DATA(8  ribfile.write('\tAttributeBegin\n')DATAX  ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(  ribfile.write('\t\tColor [1 1 1]\n')DATA0p  ribfile.write('\t\tSurface "constant"\n')DATA8  ribfile.write('\t\tSphere 2000 -2000 2000 360\n')DATA(8  ribfile.write('\tAttributeEnd\n')%DATA DATA def render(ribfile):DATA  if (os.name != "posix"):DATAP  if (menuval.val == 1):DATA4  os.system('%s %s'%(prmanrenderer.val, ribfile))DATA  elif (menuval.val == 2):DATA4@  os.system('%s %s'%(bmrtrenderer.val, ribfile))DATA  elif (menuval.val == 3):DATA8  os.system('%s %s'%(entropyrenderer.val, ribfile))DATAP  elif (menuval.val == 4):DATA0  os.system('%s %s'%(dlrenderer.val, ribfile))DATA  elif (menuval.val == 5):DATA4@  os.system('%s %s'%(aqsisrenderer.val, ribfile))DATA  elif (menuval.val == 6):DATA4  os.system('%s %s'%(pixierenderer.val, ribfile)) DATAH  elif (os.name == "posix"):DATA  if (menuval.val == 1):m DATA8  os.system('%s %s &'%(prmanrenderer.val, ribfile))m DATA@  elif (menuval.val == 2):@DATA4  os.system('%s %s &'%(bmrtrenderer.val, ribfile))DATA  elif (menuval.val == 3):DATA80  os.system('%s %s &'%(entropyrenderer.val, ribfile))DATA  elif (menuval.val == 4):DATA4  os.system('%s %s &'%(dlrenderer.val, ribfile))DATA@  elif (menuval.val == 5):DATA8  os.system('%s %s &'%(aqsisrenderer.val, ribfile))DATA  elif (menuval.val == 6):DATA88  os.system('%s %s &'%(pixierenderer.val, ribfile))DATA DATA def closeFile(ribfile):DATA  ribfile.close()DATAX DATA def writeFrame(ribfile):DATA  global sshader, cframeDATA   display = Scene.GetCurrent()DATA,h  context = display.getRenderingContext()DATA  frames2 = 0DATA(  display = Blender.Scene.GetCurrent()DATAX  if (anim.val == 1):DATA8  frames = context.endFrame() - context.startFrame()DATA  else:DATA@  frames = 0DATA  if (anim.val == 1):DATA   cframe = context.startFrame()DATA  else:DATA$P  cframe = Blender.Get('curframe')DATA   for x in range(frames + 1):ssDATA$  Blender.Set('curframe', cframe)sDATA8@  print 'Exporting Frame: %s'%Blender.Get('curframe')sDATA$  renderShadows(ribfile, frames2)DATA,  ribfile.write('\nFrameBegin %s\n'%cframe)DATA(P  writeHeader(ribfile, frames, frames2)DATA  lampobj = 0DATA  if (motionblur.val == 1):DATA(0  ribfile.write('MotionBegin [0 1]\n')DATA$  Blender.Set('curframe', cframe)DATA$  writeTransform(ribfile, lampobj)DATA<(  Blender.Set('curframe', cframe + motionblurframe.val)DATA$  writeTransform(ribfile, lampobj)DATA$  Blender.Set('curframe', cframe)DATA 0  ribfile.write('MotionEnd\n')DATA  else:DATA$  writeTransform(ribfile, lampobj)DATA  if (rgba.val == 1):DATAP  channels = "rgb"DATA  elif (rgba.val == 2):DATA  channels = "rgba"DATA   elif (rgba.val == 3):DATAh  channels = "rgbz"DATA  elif (rgba.val == 4):DATA  channels = "z"DATA8  if (buffer.val == 1):DATAl  ribfile.write('Display "%s/%s%05d.tif" "framebuffer" "%s"\n'%(imagesdir, image.val, cframe, channels))DATA  if (file.val == 1):DATAd`  ribfile.write('Display "%s/%s%05d.tif" "file" "%s"\n'%(imagesdir, image.val, cframe, channels))DATA  if (preworldra.val == 1):DATA<8  ribfile.write('ReadArchive "%s"\n'%(preworldrafile.val))DATA$  ribfile.write('WorldBegin \n')DATA   if (postworldra.val == 1):DATA@@  ribfile.write('\tReadArchive "%s"\n'%(postworldrafile.val))DATA0  if (menuval.val == 1) or (menuval.val == 4):DATAD  ribfile.write('\tAttribute "visibility" "integer trace" [1]\n')DATA  if (menuval.val == 3):DATA@  ribfile.write('\tAttribute "visibility" "reflection" [1]\n')DATA<8   ribfile.write('\tAttribute "visibility" "shadow" [1]\n')DATA   #PixieDATA   if (occlusion.val == 1):DATAl   ribfile.write('\tLightSource "ambientocclusion" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATA   if (indirect.val == 1):DATAh   ribfile.write('\tLightSource "ambientindirect" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATA   #End PixieDATA   ambientLight(ribfile)DATA   checkLamps(ribfile)DATAh   if (gi.val == 1):DATA   createGI(ribfile, frames)DATA   if (hdri.val == 1):DATA@   if (menuval.val == 3):DATA(   ribfile.write('\tAttributeBegin\n')DATAD   ribfile.write('\t\tAttribute "visibility" "reflection" [1]\n')DATAdP  ribfile.write('\t\tSurface "envsurf" "string envname" ["%s"] "float blur" [0]\n'%(hdritex.val))DATA4  ribfile.write('\t\tSphere 50000 0 50000 360\n')DATA(@  ribfile.write('\tAttributeEnd\n')DATAP  createObjects(ribfile, cframe, 0, frames2) # 0 is for the shadows variableDATA   ribfile.write('WorldEnd \n')DATA h  ribfile.write('FrameEnd\n')DATA  cframe = cframe + 1DATA  frames2 = frames2 + 1DATAH DATA4x def export(): # start the export stuff from hereDATAX  global selectedtype, selectedname, xbar, texturefile, shadernametemp, partitionnameDATA8`  newdirs() # make sure all the directories are thereDATA$  xbar = 10 # reset the progressbarDATA8  selectedtype = 'Type:' # reset the object editor stuffDATA  selectedname = ''DATA4  filedir = os.path.normpath(pdir + filename.val)DATAD   ribfile = open(filedir, 'w') # open the main ribfile (default.rib)DATA4  if ((menuval.val == 4) & (os.name != "posix")):DATA  ribfile.write('ReadArchive "%s%s"\n'% os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + pdir + "/texturefile.rib") ) ) )DATA  else:DATAD  ribfile.write('ReadArchive "%s"\n'% (pdir + "/texturefile.rib"))DATAdX  texturefile = open(os.path.normpath(pdir + 'texturefile.rib'), 'w') # open the texture rib fileDATA  if (menuval.val == 5):DATA0  texturefile.write('#\n')DATA,x  writeFrame(ribfile) # write all the framesDATA0  closeFile(ribfile) # close the main ribfileDATA0  texturefile.close()DATA8x  selectedtype = 'Type:' # reset the object editor stuffDATA  selectedname = ''DATA(   surfaceshadername.val = shadernametempDATAHx  Register (gui, event, bevent) # make sure all gui values are in place`DATA4  if (rendert.val == 1): # if the renderbutton is onDATA4P  render(pdir + filename.val) # render the rib fileTXd  $TXKEYLIST.intrrp  T   `} DATA,p /home/intrr/tuhopuu/blender/KEYLIST.intrrDATA   T DATA  X   U DATAX      PU DATA    X  U ODATA  0!  xE DATA0! x!  E %DATAx! ! 0! F CDATA! " x! HF DATA" P" ! F "DATAP" " " F %DATA" " P" @G %DATA" (# " G DATA(# p# " G DATAp# # (# H ,FREEDATA# $ p# pH ,DATA$ H$ # H $oDATAH$ $ $ (I DDATA$ $ H$ I %DATA$  % $ I D0BDATA % h% $ pJ DATAh% % % J +DATA% % h% K !DATA% @& % `K DATA@& & % K DATA& & @& K DATA& ' & 8L t: DATA' `' & L 48 tDATA`' ' ' L me/iDATA' ' `' M .xDATA' 8( ' pM FREEDATA8( ( ' M 4pDATA( ( 8( N win DATA( ) ( HN DDATA) X) ( N DATAX) ) ) N W#?DATA) ) X) O win DATA) 0* ) XO 0?DATA0* x* ) O $DATAx* * 0* P 4headDATA* + x* xP DATA+ P+ * P win DATAP+ + + P DDATA+ + P+ 8Q DATA+ (, + Q ?DATA(, p, + Q FREEDATAp, , (, Q DATA, - p, @R !FREEDATA- H- , R DATAH- - - R @BDATA- - H- S FREEDATA-  . - `S tDATA . h. - S 4pDATAh. . . T tpDATA. . h. hT FREEDATA. @/ . T 1DATA@/ / . U DATA/ / @/ HU DATA/ 0 / U DATA0 `0 / U DATA`0 0 0 V DATA0 0 `0 @V (DATA0 81 0 V DATA81 1 0 V ,ADATA1 1 81 8W YDATA1 2 1 W BDATA2 X2 1 W 2DATAX2 2 2 PX DATA2 2 X2 X cDDATA2 03 2 X %DATA03 x3 2 Y / DATAx3 3 03 Y $DATA3 4 x3 Y DATA4 P4 3 Z DATAP4 4 4 HZ DATA4 4 P4 xZ DATA4 (5 4 Z sDATA(5 p5 4 [ sDATAp5 5 (5 `[ sDATA5 6 p5 [ "sDATA6 H6 5 [ 'DATAH6 6 6 P\ (' DATA6 6 H6 \ DATA6  7 6 \ DATA 7 h7 6 ] !DATAh7 7 7 `] /CDATA7 7 h7 ] &DATA7 @8 7 ^ DATA@8 8 7 `^ ADATA8 8 @8 ^ !PBDATA8 9 8 ^ DATA9 `9 8 0_ DATA`9 9 9 x_ -DATA9 9 `9 _ "DATA9 8: 9 (` !DATA8: : 9 x` DATA: : 8: ` DATA: ; : ` DATA; X; : a /DATAX; ; ; xa &DATA; ; X; a DATA; 0< ; b DATA0< x< ; hb !DATAx< < 0< b TimDATA< = x< b 'pDATA= P= < @c !DATAP= = = c nterDATA= = P= c $VDATA= (> = 0d 2ibDATA(> p> = d )DATAp> > (> d DATA> ? p> e DATA? H? > `e ;DATAH? ? ? e 'DATA? ? H? f DATA?  @ ? hf DATA @ h@ ? f DATAh@ @ @ f #DATA@ @ h@ 0g <DATA@ @A @ g DATA@A A @ g &DATAA A @A (h .DATAA B A h /DATAB `B A h 'DATA`B B B @i )DATAB B `B i DATAB 8C B i 2DATA8C C B (j DATAC C 8C pj *DATAC D C j DDATAD XD C @k DATAXD D D pk DATAD D XD k /DATAD 0E D l !DATA0E xE D hl 5DATAxE E 0E l IDATAE F xE Hm @DATAF PF E m /homDATAPF F F m DATAF F PF n ,?DATAF (G F n T FIDATA(G pG F n *DATApG G (G o ?DATAG H pG ho *DATAH HH G o DATAHH H H p *DATAH H HH `p DATAH  I H p DATA I hI H p DATAhI I I (q DATAI I hI `q DATAI @J I q DATA@J J I q =DATAJ J @J `r DATAJ K J r DATAK `K J r DATA`K K K @s DATAK K `K ps 0DATAK 8L K s W#?DATA8L L K t DATAL L 8L ht DATAL M L t ?DATAM XM L u 1ecDATAXM M M `u #DATAM M XM u DATAM 0N M u DATA0N xN M (v DATAxN N 0N pv ADATAN O xN v 3DATAO PO N @w #DATAPO O O w +DATAO O PO w hcDATAO (P O x DATA(P pP O hx DATApP P (P x :endDATAP Q pP y 4DATAQ HQ P y xxH@DATAHQ Q Q y dummDATAQ Q HQ z wH@DATAQ  R Q Pz  DATA R hR Q z )DATAhR R R z 3DATAR R hR H{ DATAR @S R x{ 0xH@DATA@S S R { *wH@DATAS S @S | throDATAS T S @| 65DATAT `T S | 29-ADATA`T T T | %DATAT `T 0} DATAT DATA U DATAPU Key FunctionDATAPU -------------------------------------------------------------------------------DATAxE ~ Display all layersDATA(E Shift-~ Display all/previous layersDATAF REEDATA HF 1..2..0-= Show layer 1..2..12DATA$F ALT-1..2..0 Show layer 11..12..20DATA(F SHIFT-1..2..0-= Toggle layer 1..2..12DATA(@G SHIFT-ALT-... Toggle layer 11..12..20DATAG DATAG Numpad DEL Zoom on objectDATA0H Numpad / Local view on object (hide others)DATA0pH Numpad * Rotate view to object's local axesDATA(H Numpad + Zoom in (works everywhere)DATAH(I Numpad + Proportional vertex edit mode: Increase range of influenceDATA(I Numpad - Zoom out (works everywhere)DATAHI Numpad - Proportional vertex edit mode: Decrease range of influenceoDATApJ Numpad INS Set Camera viewDATA,J CTRL-Numpad INS Set active object as cameraDATA$K ALT-Numbad INS Restore old cameraDATA`K Numpad 1 Front viewDATAK CTRL-Numpad 1 Back viewDATAK Numpad 3 Right-Side viewDATA 8L CTRL-Numpad 3 Left-Side view aDATAL Numpad 7 Top viewDATAL CTRL-Numpad 7 Bottom view EDATA0M Numpad 5 Toggle orthogonal / perspective viewNDATApM Numpad 9 Redraw viewEEDATAM Numpad 2 Rotate view leftDATAN Numpad 6 Rotate view rightDATAHN Numpad 8 Rotate view upDATAN Numpad 2 Rotate view downDATAN REEDATA$O PgUp IPO: Select next keyframeDATA4XO CTRL-PgUp IPO: Select and jump to next keyframeDATA(O PgDn IPO: Select previous keyframe_DATA8P CTRL-PgDn IPO: Select and jump to previous keyframeDATAxP REEDATAP LEFT One frame backwardsDATAP RIGHT One frame forwardsDATA8Q DOWN 10 frames backwardsDATAQ UP 10 frames forwardsDATAQ DATAQ TAB Enter/exit edit modeDATA$@R TAB Sequencer: Edit meta stripDATA R CTRL-TAB Enter/exit pose modeDATAR DATA S A Select all / Deselect allDATA `S ALT-A Animate current windowDATA8S CTRL-A Apply object's size/rotation to object dataDATA T SHIFT-A Sequencer: ADD menuDATA$hT SHIFT-ALT-A Animate all windowsDATA4T SHIFT-CTRL-A Apply lattice / Make dupliverts realDATAU DATAHU B Border selectDATAU BB Circle selectDATAU SHIFT-B Set render borderDATAV DATA@V C Center view on cursorDATA V C Sequencer: Change imagesDATA0V C IPO: Snap current frame to selected keyDATA8W ALT-C Convert menu@fDATADW CTRL-C Copy menu (Copy properties of active to selected objects)DATA4W SHIFT-C Center and zoom view on selected objectsDATAPX DATAX D Set 3d draw modeDATA(X ALT-D Create new instance of objectCDATA0 Y CTRL-D Display alpha of image texture as wireDATA(Y SHIFT-D Create full copy of objectDATAY DATAZ E ExtrudeDATAHZ sDATA xZ F Edit mode: Make edge/faceDATA Z F Sequencer: Set Filter YsDATA[ F Faceselect modeDATA`[ ALT-F Beautify fillsDATA$[ CTRL-F Sort faces in Z directionDATA([ CTRL-F Edit mode: Flip triangle edgesDATA,P\ SHIFT-F Edit mode: Fill with trianglesDATA\ DATA\ G Grab (move)DATA] ALT-G Clear locationDATA0`] SHIFT-ALT-G Remove selected objects from groupDATA(] CTRL-G Add selected objects to groupDATA^ SHIFT-G Group menuDATA`^ DATA$^ H Hide selected vertices/facesDATA ^ H Curves: Set handle typeDATA0_ ALT-H Reveal verticesDATA0x_ CTRL-H Curves: Automatic handle calculationEEDATA$_ SHIFT-H Hide deselected verticesDATA$(` SHIFT-H Curves: Set handle typeDATAx` DATA` I Keyframe menuDATA` DATA0a J Mesh: Join all adjacent triangles to quadsDATA(xa J Swap render page of render windowDATA a CTRL-J Join selected objectsDATA b CTRL-J Nurbs: Add segmentDATA$hb CTRL-J IPO: Join keyframes menu DATAb wH@DATA(b K 3d window: Show keyframe positionsDATA$@c K IPO: Show keyframe positionsDATAc K Nurbs: Print knotsDATA(c CTRL-K Make skeleton from armatureDATA40d SHIFT-K Show and select all keyframes for objectDATA,d SHIFT-K Faceselect: Clear vertexcoloursDATAd DATAe L Make local menuDATA<`e L Edit mode: Select linked vertices (near mouse pointer)DATA(e L OOPS window: Select linked objectsDATA f CTRL-L Make links menuDATAhf SHIFT-L Select links menuDATAf DATA$f M Move object to different layerDATA@0g M Sequencer: Make meta strip (group) from selected stripsDATAg DATA(g N Numeric input menu (Size/Rot/Loc)DATA0(h N OOPS window: Rename object/linked objectsDATA0h CTRL-N Armature: Recalculate bone roll anglesDATA(h CTRL-N Recalculate normals to outsideDATA,@i CTRL-ALT-N Recalculate normals to insideDATAi DATA4i O Edit mode: Toggle proportional vertex editingDATA(j ALT-O Clear object originDATA,pj CTRL-O Revert current file to last savedDATAHj SHIFT-O Proportional vertex edit mode: Toggle smooth/steep falloffDATA@k DATApk P Start realtime engineDATA0k P Edit mode: Seperate vertices to new objectDATA$l ALT-P Clear parent relationshipDATA8hl CTRL-P Make active object parent of selected objectDATALl CTRL-SHIFT-P Make active object parent of selected object without inverseDATADHm CTRL-P Edit mode: Make active vertex parent of selected objectDATAm DATA m R RotateDATA0 n R IPO: Record mouse movement as IPO curveXcDATAn RX Rotate around X axisDATA,n RXX Rotate around object's local X axisDATA o RY Rotate around Y axisEDATA,ho RYY Rotate around object's local Y axisDATAo RZ Rotate around Z axisDATA,p RZZ Rotate around object's local Z axisEDATA `p ALT-R Clear object rotationDATAp SHIFT-R Nurbs: Select rowDATAp DATA (q S ScaleDATA`q SX Flip around X axisDATAq SY Flip around Y axisDATA@q ALT-S Edit mode: Shrink/fatten (Scale along vertex normals)cDATA`r ALT-S Clear object sizeDATAr CTRL-S Edit mode: ShearDATA r SHIFT-S Cursor/Grid snap menuDATA@s DATA4ps T Sequencer: Touch and print selected moviesDATAs T Adjust texture spaceEEDATA t T Edit mode: Flip 3d curveDATAht T IPO: Change IPO typeDATA$t ALT-T Clear tracking of objectDATA4u CTRL-T Make selected object track active objectDATA$`u CTRL-T Mesh: Convert to trianglesDATAu CTRL-ALT-T BlenchmarkDATAu DATA(v U Make single user menuDATADpv U Edit mode: Reload object data from before entering edit modeBDATA4v U Faceselect mode: Automatic UV calculation menuDATA$@w U Vertex-/Weightpaint mode: UndoDATA,w CTRL-U Save current state as user defaultDATAw DATA$x V Curves/Nurbs: Vector handleDATAhx V Vertexpaint modeonDATA<x ALT-V Scale object to match image texture's aspect ratioDATA8y SHIFT-V Edit mode: Align view to selected verticesDATAy ausDATA y W Boolean operations menuwH@DATA z W Edit mode: Specials menuDATAPz CTRL-W Save current fileDATA$z CTRL-W Nurbs: Switch directionDATA4z SHIFT-W Warp/bend selected vertices around cursorDATAH{ tonDATAx{ X Delete menuDATA,{ CTRL-X Restore default state (Erase all)DATA| rtrDATA8@| Y Mesh: Split selected vertices/faces from the restDATA| sDATA(| Z Switch 3d draw type (see also D)-ADATA0} Q>TXd  TXblenderman0.1beta9.0.       DATAL  /home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.pyDATA   DATA (  ( DATA( p  X DATAp  (  w xDATA  p  DATA H   DATAH   ` 6DATA ؄ H  DATA؄     DATA  h ؄ ( >DATAh   $DATA  h DATA @  8 8RDATA@    2DATA І @  DATAІ   0 DATA ` І p DATA`    DATA  `  DATA 8   DATA8   h DATA Ȉ 8  DATAȈ    DATA X Ȉ @ DATAX    DATA  X  BDATA 0   DDATA0 x  ` CDATAx  0  DATA  x  'DATA P   DATAP   @ FDATA  P  DATA (   DATA( p   1DATAp  ( x DATA  p  DATA H   DATAH   @ "DATA ؍ H  !DATA؍     2DATA  h ؍ @ DATAh   p DATA  h *DATA @   &FREEDATA@   h (14.zDATA Џ @ -~DATAЏ   romeDATA ` Џ P DATA`   DATA  ` DATA 8   DATA8   X DATA ȑ 8 DATAȑ   DATA X ȑ 0 DATAX   x DATA  X DATA 0   DATA0 x  P #DATAx  0  DATA  x  DATA P  @ `-W@DATAP    !DATA  P  "DATA (  0 #RW@DATA( p   %FileDATAp  (  !DATA  p ( #DATA H  x "DATAH    !DATA ؖ H  !DATAؖ    h #DATA  h ؖ  "DATAh    DATA  h P DATA @   DATA@    DATA И @  DATAИ   X ?DATA ` И  ܦDATA`    DATA  ` 0 DATA 8  h DATA8    DATA Ț 8  DATAȚ   @ DATA X Ț  DATAX    DATA  X  DATA 0  h DATA0 x   DATAx  0  DATA  x @ DATA P   DATAP    DATA  P  DATA (  ` DATA( p   DATAp  (  DATA  p @ DATA H   DATAH    DATA ؟ H  DATA؟    X DATA  h ؟  DATAh    DATA  h 8 DATA @   DATA@    h@DATA С @  /kDATAС   ` DATA ` С  DATA`    DATA  ` H DATA 8   DATA8    DATA ȣ 8 8 DATAȣ    DATA X ȣ  DATAX    DATA  X h DATA 0  DATA0 x  ! DATAx  0 P! DATA  x ! 'DATA P  ! DATAP   @" DATA  P " DATA (  " DATA( p  # DATAp  ( `# DATA  p # DATA H  # DATAH   @$ DATA ب H $ DATAب    $ DATA  h ب % DATAh   h% DATA  h % DATA @  &  DATA@   H& DATA Ъ @ & DATAЪ   &  DATA ` Ъ ' DATA`   h' DATA  ` ' DATA 8  ' DATA8   8( DATA Ȭ 8 ) DATAȬ   H) DATA X Ȭ * &DATAX   * 176DATA  X 0, *208DATA 0  , Հ/&DATA0 x  X- DATAx  0 - Y%DATA  x - ADATA P  . "DATAP   . DATA  P 8/ 19-SDATA (  0 DATA( p  X0 DATAp  ( 0 1 DATA  p p1 DATA H  1 rwxDATAH   2 DATA ر H H2 DATAر    2 rwxDATA  h ر 2 DATAh   (3 DATA  h p3 rwxDATA @  3 DATA@   4 DATA г @ H4 859 DATAг   4 DATA ` г 4 DATA`   5 r--DATA  ` P5 DATA 8  5 =DATA8   6 aDATA ȵ 8 6 _18-MDATAȵ   7 Ceb-0DATA X ȵ 7 ADATAX   8 1rwxDATA  X `8 >@DATA 0  8 y]DATA0 x  x9 7DATAx  0 9 DATA  x (: DATA P  h: 077DATAP   : DATA  P : DATA (  @; DATA( p  x; DATAp  ( ; $DATA  p < "DATA H  `< ,DATAH   < DATA غ H = DATAغ    0= DATA  h غ p= DATAh   = DATA  h = DATA @  (> DATA@   h> DATA м @ > DATAм   > DATA ` м ? .DATA`   x? DATA  ` ? DATA 8  @ ,DATA8   h@ DATA Ⱦ 8 @ /DATAȾ   A #pDATA X Ⱦ PA 3DATAX   A /DATA  X B 8DATA 0  xB /DATA0 x  B -DATAx  0 8C 2DATA  x C DATA P  C !DATAP   8D $DATA  P D "pp`DATA (  D DATA( p  (E DATAp  ( pE DATA  p E pDATA H  E DATAH   HF DATA  H F "DATA    F DATA  h  (G %DATAh   G DATA  h G DATA @  H DATA@   XH DATA  @ H DATA   H DATA `  @I DATA`   I DATA  ` I DATA 8  J DATA8   `J DATA  8 J DATA   J DATA X  8K DATAX   hK DATA  X K PDATA 0  L UDATA0 x  L _DATAx  0 8M pDATA  x M aDATA P  hN bDATAP   N _DATA  P O ZDATA (  P gDATA( p  P `DATAp  ( 8Q PDATA  p Q ^DATA H  HR EDATAH   R ^DATA  H PS ^DATA    S X24 .DATA  h  hT =@DATAh   T DATA  h U 204-ODATA @  hU 39 .DATA@   U 4 21DATA  @ U RW@DATA   0V @DATA `  `V 81 .DATA`   V 4 DATA  ` W r-- DATA 8  XW (r-- DATA8   W 24-ODATA  8 W .23-ODATA   XX 59 .DATA X  X (.docDATAX   X  jerDATA  X @Y 23-ADATA 0  Y jerDATA0 x  Y )@DATAx  0 Z x23-ADATA  x Z ssavDATA P  P[ DATAP   \ DATA  P \ dDATA (  X] DATA( p  ] DATAp  ( ] DATA  p ^ H2YDATA H  ^ FDATAH   _ pDATA  H ` LDATA    a NDATA  h  a ~KDATAh   Hb WDATA  h b DATA @  Hc y0DATA@   c }XDATA  @ d DATA   e 8DATA `  8f bZDATA`   f nTPDATA  ` hg iDATA 8  h aDATA8   h `DATA  8 h }TSDATA   i YDATA X  Hj PDATAX   j {DATA  X 8k DATA 0  k DATA0 x  8l DATAx  0 l DATA  x m DATA P  m wDATAP   n DATA  P Po DATA (  o }FREEDATA( p  Hp FREEDATAp  ( q DATA  p Pq }DATA H  r DATAH   r tDATA  H hs DATA    t jDATA  h  t iDATAh   Hu IDATA  h u LDATA @  @v TfDATA@   v TFREEDATA  @ Pw DATA   w DATA `  w DATA`   x DATA  ` `x DATA 8  x DATA8   x qDATA  8 0y DATA   py DATA X  y DATAX   z DATA  X Hz 7DATA 0  z DATA0 x  z ctsDATAx  0 8{ *DATA  x { bDATA P  | DATAP   h| DATA  P | DATA (  | DATA( p  H} DATAp  ( } 1@DATA  p } FREEDATA H  ~ /DATAH   `~ DATA  H ~ DATA    ~ DATA  h  H DATAh    DATA  h  DATA @  8 DATA@   h 4zDATA  @ D$DATA   'DATA `  Ё DATA`    YDATA  ` DATA 8  x  DATA8   ȃ [DATA  8 P der/DATA   uDATA X  @ DATAX   ptDATA  X ( }DATA 0  ؆ DATA0 x  DATAx  0 H 333?DATA  x DATA P  p  DATAP   DATADATA  P p B.blDATA (  sDATA( p  X 0DATAp  ( y3dDATA  p ` >DATA H  rDATAH   X {DATA  H vDATA    333?DATA  h   DATAh   H DATADATA  h  DATA @  DATA@   DATA  @ P DATA   DATA `  P DATA`   DATA  ` H DATA 8  DATA8   H DATA  8  0DATA   Ж XDATA X  "~(DATAX   cDATADATA  X p 1DATA 0  ~8DATA0 x  ` TDATAx  0  `DATA  x ` DATADATA P  wFREEDATAP   X DATA  P DATA (  a`DATA( p  x DATAp  ( Ȝ ]FREEDATA  p X @DATA H  ȝ erDATAH    @DATADATA  H @DATA    KDATA  h  h DATAh   jDATA  h P kDATA @  jDATA@   lDATA  @ DATA   p fDATA `   pDATA`   sDATA  ` H dDATA 8  c۷zADATA8   p MDATA  8 jzADATA   @ qDATA X  bDATAX   p (DATA  X DATA 0   DATA0 x  P Mg.DATAx  0 Ш DATA  x  DATA P  h ODATAP   DATA  P Ȫ DATA (   ODATA( p  SDATAp  (  PDATA  p =DATA H   gDATAH   `DATA  H 0 DDATA    [DATA  h  0 DATAh   ` DATA  h DATA @  eDATA@   DATA  @ а 7DATA   8 p~DATA `  DATA`   б @DATA  `  eDATA 8  ` $DATA8   DATA  8 DATA   г VDATA X  X ODATAX   ش DATA  X )DATA 0  x DATA0 x  ȵ !DATAx  0  )DATA   x p DATA  P   DATAP       "DATA    P  X DATA  (   XDATA(  p    sDATAp    (  DATA    p  IDATA  H   x uDATAH     DATA    H  p DATA     ( DATA  h   ` DATAh      /DATA    h  p |DATA  @   1DATA@     yDATA    @  ( DATA    x DATA `  0 aDATA`   aDATA  ` P fDATA 8  $DATA8   @ DATA  8 DATA   @ DATA X  DATAX   DATA  X $DATA 0  X 1DATA0 x  DATAx  0 p IDATA  x sDATA P  -DATAP   2DATA  P H DDATA (  DATA( p   qDATAp  ( DATA  p eDATA H  $DATAH   DATA  H 0 ^DATA    DATA  h   [DATAh   [DATA  h ^DATA @  ^DATA@   @ DDATA  @ oDATA   X aDATA `  dDATA`   DATA  ` DATA 8  DATA8   8 DATA  8 x DATA   !DATA X   DATAX   X .DATA  X DATA 0  DATA0 x  @ !DATAx  0 DATA  x .DATA P  8 DATAP   aDATA  P  DATA (  X 3DATA( p  DATAp  ( oDATA  p DATA H  8DATAH   P DATA  H WDATA    DATA  h  h ;DATAh   DATA  h  2DATA @  x DATA@   1DATA  @ DATA    h 0DATA  `   DATA`       SDATA    `  DATA  8!  DATA8! !   !DATA! ! 8! X DATA! " ! )DATA" X" ! DATAX" " " DATA" " X" P DATA" 0# " oDATA0# x# " 0 &DATAx# # 0# DATA# $ x# DATA$ P$ #  DATAP$ $ $ X DATA$ $ P$ 2DATA$ (% $ DATA(% p% $ 8 DATAp% % (% p DATA% & p% DATA& H& % DATAH& & & @ DATA& & H& DATA&  ' & ,DATA ' h' & 8 DATAh' ' ' p *DATA' ' h' DATA' @( ' ,DATA@( ( ' ` DATA( ( @( .DATA( ) (  DATA) `) ( P DATA`) ) ) DATA) ) `) $DATA) 8* ) 8 DATA8* * ) x DATA* * 8* DATA* + *  1DATA+ X+ * h DATAX+ + + DATA+ + X+ 'DATA+ 0, + P DATA0, x, + DATAx, , 0, ,DATA, - x, @ DATA- P- , DATAP- - - DATA- - P-  DATA- (. - H DATA(. p. - DATAp. . (. ,DATA. / p. @ DATA/ H/ . DATAH/ / / DATA/ / H/  DATA/  0 / H DATA 0 h0 / DATAh0 0 0 -DATA0 0 h0 @ DATA0 @1 0 DATA@1 1 0 DATA1 1 @1  DATA1 2 1 H DATA2 `2 1 DATA`2 2 2 -DATA2 2 `2 @ DATA2 83 2 DATA83 3 2 DATA3 3 83  DATA3 4 3 H DATA4 X4 3 DATAX4 4 4 DATA4 4 X4 DATA4 05 4 h DATA05 x5 4 DATAx5 5 05 DATA5 6 x5 @ DATA6 P6 5 DATAP6 6 6 DATA6 6 P6  DATA6 (7 6 X DATA(7 p7 6 DATAp7 7 (7 DATA7 8 p7 0 DATA8 H8 7 p DATAH8 8 8 DATA8 8 H8 DATA8  9 8 H DATA 9 h9 8 DATAh9 9 9 DATA9 9 h9 DATA9 @: 9 ` DATA@: : 9 DATA: : @: DATA: ; : 8 DATA; `; : DATA`; ; ; DATA; ; `;  DATA; 8< ; P DATA8< < ; DATA< < 8< DATA< = < ( DATA= X= < p DATAX= = = DATA= = X= DATA= 0> = @ DATA0> x> = 'DATAx> > 0> ]DATA> ? x> x DATA? P? > ( 1DATAP? ? ? DATA? ? P? P DATA? (@ ? DATA(@ p@ ? )DATAp@ @ (@ ( DATA@ A p@ p DATAA HA @ DATAHA A A 'DATAA A HA P DATAA  B A DATA B hB A ,DATAhB B B @ <DATAB B hB 'DATAB @C B  :DATA@C C B p DATAC C @C DATAC D C DATAD `D C @ DATA`D D D x DATAD D `D DATAD 8E D  (DATA8E E D X DATAE E 8E  DATAE F E  DATAF XF E ( DATAXF F F p DATAF F XF  MDATAF 0G F @ "DATA0G xG F  DATAxG G 0G  'DATAG H xG 8 (DATAH PH G  9DATAPH H H  DATAH H PH H &DATAH (I H  DATA(I pI H  'DATApI I (I H :DATAI J pI  DATAJ HJ I  +DATAHJ J J X DATAJ J HJ  DATAJ  K J  &DATA K hK J 8 $DATAhK K K  DATAK K hK  DATAK @L K DATA@L L K h ,DATAL L @L DATAL M L  -DATAM `M L p 4DATA`M M M DATAM M `M DATAM 8N M p DATA8N N M DATAN N 8N  3DATAN O N h DATAO XO N ( (DATAXO O O :DATAO O XO 'DATAO 0P O @ DATA0P xP O  DATAxP P 0P  !DATAP Q xP  DATAQ PQ P ` DATAPQ Q Q  DATAQ Q PQ  DATAQ (R Q 8 5DATA(R pR Q  9DATApR R (R  (DATAR S pR ` DATAS HS R  DATAHS S S  DATAS S HS 0 DATAS  T S x DATA T hT S  DATAhT T T  DATAT T hT P DATAT @U T  IDATA@U U T  HDATAU U @U  &DATAU V U  (DATAV `V U 0 'DATA`V V V  )DATAV V `V  'DATAV 8W V 8 "DATA8W W V  .DATAW W 8W  EDATAW X W ` DATAX XX W  BDATAXX X X  >DATAX X XX  .DATAX 0Y X  RDATA0Y xY X h 0DATAxY Y 0Y  NDATAY Z xY H DDATAZ PZ Y  DATAPZ Z Z  >DATAZ Z PZ x _DATAZ ([ Z  `DATA([ p[ Z  DATAp[ [ ([  DATA[ \ p[  DATA\ H\ [ p DATAH\ \ \  DATA\ \ H\ x DATA\  ] \ @ "DATA ] h] \ JDATAh] ] ] ! DATA] ] h] P" DATA] @^ ] # (DATA@^ ^ ] # DATA^ ^ @^ 0$ DATA^ _ ^ p$ qDATA_ `_ ^ % +DATA`_ _ _ h% -DATA_ _ `_ % &DATA_ 8` _ & (DATA8` ` _ x& 0DATA` ` 8` & -DATA` a ` 8' 0DATAa Xa ` ' ,DATAXa a a ' 0DATAa a Xa X( *DATAa 0b a ( 9DATA0b xb a ) _DATAxb b 0b ) &DATAb c xb * DATAc Pc b P* DATAPc c c * %DATAc c Pc * &DATAc (d c H+ DATA(d pd c + DATApd d (d + &DATAd e pd 0, DATAe He d p, DATAHe e e , DATAe e He - DATAe  f e H- DATA f hf e - DATAhf f f - DATAf f hf . DATAf @g f p. DATA@g g f . DATAg g @g . DATAg h g H/ DATAh `h g / DATA`h h h / DATAh h `h 0 DATAh 8i h X0 DATA8i i h 0 DATAi i 8i 0 DATAi j i @1 DATAj Xj i 1 DATAXj j j 1 DATAj j Xj 2 DATAj 0k j X2 DATA0k xk j 2 DATAxk k 0k 2 DATAk l xk 3 DATAl Pl k p3 DATAPl l l 3 DATAl l Pl 3 DATAl (m l @4 DATA(m pm l 4 DATApm m (m 4 DATAm n pm 5 DATAn Hn m X5 DATAHn n n 5 DATAn n Hn 5 DATAn  o n 06 DATA o ho n p6 DATAho o o 6 DATAo o ho 6 DATAo @p o H7 *DATA@p p o 7 &DATAp p @p 7 DATAp q p @8 DATAq `q p 8 +DATA`q q q 8 !DATAq q `q 09 &DATAq 8r q 9 "DATA8r r q 9 &DATAr r 8r 0: 'DATAr s r : DATAs Xs r : DATAXs s s ; DATAs s Xs h; *DATAs 0t s ; 1DATA0t xt s < DATAxt t 0t p< DATAt u xt < &DATAu Pu t = DATAPu u u P= DATAu u Pu = DATAu (v u = DATA(v pv u 0> *DATApv v (v > 1DATAv w pv > 7DATAw Hw v P? DATAHw w w ? DATAw w Hw ? DATAw  x w 8@ DATA x hx w h@ DATAhx x x @ ?DATAx x hx A DATAx @y x XA ,DATA@y y x A DATAy y @y A DATAy z y (B DATAz `z y xB #DATA`z z z B DATAz z `z C %DATAz 8{ z pC DATA8{ { z C DATA{ { 8{ C DATA{ | { HD &DATA| X| { D DATAX| | | D DATA| | X| 8E &DATA| 0} | E DATA0} x} | E DATAx} } 0} E $DATA} ~ x} PF DATA~ P~ } F ~DATAP~ ~ ~ HG DATA~ ~ P~ G QDATA~ ( ~ xH DATA( p ~ H (DATAp  ( I ,DATA  p pI DATA H  I DATAH   I DATA ؀ H 8J DATA؀    pJ "DATA  h ؀ J DATAh   K iDATA  h K wDATA @  HL oDATA@   L gDATA Ђ @ M "DATAЂ   M *DATA ` Ђ (N DATA`   pN DATA  ` N DATA 8  N xDATA8   O tDATA Ȅ 8 @P oDATAȄ   P vDATA X Ȅ Q oDATAX   (R rDATA  X R rDATA 0  hS zDATA0 x  T 2DATAx  0 pT DATA  x T DATA P  T DATAP   8U #DATA  P U DATA (  U DATA( p  V DATAp  ( `V DATA  p V DATA H  V DATAH   W DATA ؉ H PW DATA؉    W DATA  h ؉ W DATAh   X DATA  h PX DATA @  X DATA@   X DATA Ћ @ X DATAЋ   HY +DATA ` Ћ Y DATA`   Y DATA  ` Z DATA 8  pZ DATA8   Z (DATA ȍ 8 [ DATAȍ   `[ *DATA X ȍ [ DATAX   \ (DATA  X `\ DATA 0  \ DATA0 x  \ DATAx  0 ] "DATA  x p] $DATA P  ] $DATAP   ^ %DATA  P x^ &DATA (  ^ "DATA( p  _ %DATAp  ( x_ %DATA  p _ #DATA H  ` "DATAH   p` DATA ؒ H ` #DATAؒ    a #DATA  h ؒ `a !DATAh   a $DATA  h b DATA @  Xb DATA@   b (DATA Д @ c #DATAД   Pc DATA ` Д c !DATA`   c 'DATA  ` @d DATA 8  d "DATA8   d DATA Ȗ 8 (e $DATAȖ   e "DATA X Ȗ e &DATAX   (f (DATA  X f -DATA 0  f !DATA0 x  0g DATAx  0 g $DATA  x g DATA P  (h DATAP   xh !DATA  P h !DATA (  i DATA( p  hi !DATAp  ( i DATA  p j 'DATA H  `j 'DATAH   j DATA ؛ H k #DATA؛    Xk "DATA  h ؛ k "DATAh   k DATA  h Hl #DATA @  l DATA@   l DATA Н @ (m DATAН   xm !DATA ` Н m DATA`   n DATA  ` hn DATA 8  n DATA8   o DATA ȟ 8 Xo DATAȟ   o DATA X ȟ o DATAX   Hp DATA  X p DATA 0  p DATA0 x  8q DATAx  0 q !DATA  x q $DATA P  0r DATAP   r #DATA  P r 'DATA (  (s DATA( p  xs DATAp  ( s DATA  p t !DATA H  ht DATAH   t !DATA ؤ H u #DATAؤ    Xu DATA  h ؤ u DATAh   u "DATA  h Hv !DATA @  v DATA@   v DATA Ц @ 8w DATAЦ   w DATA ` Ц w DATA`   (x #DATA  ` xx !DATA 8  x #DATA8   y DATA Ȩ 8 hy DATAȨ   y DATA X Ȩ z !DATAX   Xz $DATA  X z #DATA 0  { &DATA0 x  X{ "DATAx  0 { $DATA  x | %DATA P  X| $DATAP   | #DATA  P } &DATA (  X} "DATA( p  } $DATAp  ( ~ $DATA  p X~ "DATA H  ~ 'DATAH    #DATA ح H P 'DATAح     $DATA  h ح #DATAh   P (DATA  h !DATA @  DATA@   ( DATA Я @ h DATAЯ   vDATA ` Я H DATA`   DATA  ` ؂ DATA 8  DATA8   ` DATA ȱ 8 DATAȱ   ؃ DATA X ȱ  DATAX   @ DATA  X DATA 0  DATA0 x  DATAx  0 8 DATA  x p DATA P  DATAP   DATA  P 8 DATA (  p DATA( p  DATAp  ( DATA  p DATA H  h DATAH   DATA ض H DATAض    8 DATA  h ض p DATAh   DATA  h DATA @   DATA@   X DATA и @ 9DATAи   6DATA ` и h DATA`   DATA  ` DATA 8  8 DATA8   p 0DATA Ⱥ 8 Ћ DATAȺ    DATA X Ⱥ H DATAX   DATA  X Ȍ DATA 0   DATA0 x  X DATAx  0 DATA  x ȍ DATA P  DATAP   8 _DATA  P Ȏ dDATA (  ` DATA( p  DATAp  ( DATA  p ( .DATA H  DATAH   ؐ 2DATA ؿ H 8 .DATAؿ    8DATA  h ؿ .DATAh   ` ,DATA  h DATA @   DATA@   ` DATA  @ "DATA   DATA `  P DATA`   DATA  ` Ȕ DATA 8   DATA8   h "DATA  8 DATA   DATA X  P DATAX   DATA  X DATA 0  0 DATA0 x  x DATAx  0 DATA  x DATA P  *DATAP   x XDATA  P DATA (  P (DATA( p  #DATAp  ( #DATA  p H DATA H  +DATAH   DATA  H ( +DATA    DATA  h  Л DATAh   DATA  h p oDATA @   #DATA@   ` "DATA  @ :DATA    nDATA `  ?DATA`   ( GDATA  ` ADATA 8   DATA8   H 9DATA  8 DATA   DATA X  DATAX   h DATA  X PDATA 0  0 ;DATA0 x  0DATAx  0 ?DATA  x h FDATA P  TDATAP   h MDATA  P KDATA (  ` IDATA( p  إ DATAp  ( DATA  p p -DATA H  Ц FDATAH   H /DATA  H CDATA     KDATA  h  ,DATAh   *DATA  h H MDATA @  ȩ ,DATA@   ( DATA  @ p NDATA   DATA `  8 ?DATA`   DATA  ` ث DATA 8   %DATA8   ` DATA  8 DATA   DATA X  0 DATAX   p #DATA  X DATA 0  DATA0 x  8 )DATAx  0 DATA  x 9DATA P  H DATAP   DATA  P د DATA (  DATA( p  h DATAp  ( DATA  p DATA H  @ DATAH   DATA  H б DATA     DATA  h  ` DATAh   DATA  h DATA @  8 DATA@   DATA  @ ȳ DATA   DATA `  @ DATA`   DATA  ` 'DATA 8  8 FDATA8   DATA  8 DATA   DATA X  DATAX   ( DATA  X p DATA 0  %DATA0 x   DATAx  0 P #DATA  x DATA P  DATAP   DATA  P h DATA (  DATA( p  DATAp  ( P %DATA  p DATA H  DATAH   $DATA  H x #DATA    Ȼ %DATA  h  !DATAh   p %DATA  h ȼ DATA @   #DATA@   ` DATA  @ DATA   DATA `  8 DATA`   DATA  ` о DATA 8  DATA8   h *DATA  8 DATA   DATA X  @ FDATAX   %DATA  X  3DATA 0  p DATA0 x  8 DATAx  0 p NDATA  x %DATA P  H &DATAP   3DATA  P xDATA (  DATA( p  DATAp  ( 0 DATA  p DATA H  DATAH    DATA  H P DATA    DATA  h  LDATAh   ` *DATA  h 2DATA @   BDATA@   DATA  @ 0DATA   0 DATA `  h 0DATA`   5DATA  ` 0 'DATA 8  9DATA8   ZDATA  8 x DATA   (DATA X   DATAX   P (DATA  X %DATA 0  DATA0 x  @ 7DATAx  0 #DATA  x |DATA P  !DATAP   DATA  P ( 'DATA (  DATA( p  #DATAp  (  0DATA  p x 0DATA H  0DATAH   8 0DATA  H 3DATA    3DATA  h  X 3DATAh   ,DATA  h  DATA @  X DATA@   DATA  @ DATA    DATA `  h DATA`   DATA  ` .DATA 8  P 'DATA8   %DATA  8 KDATA   x +DATA X  DATAX    DATA  X H DATA 0  -DATA0 x  DATAx  0 8 EDATA  x DATA P  ;DATAP   P DATA  P DATA (  /DATA( p  @ DATAp  ( x DATA  p #DATA H   6DATAH   p DATA  H DATA    DATA  h  H DATAh   DATA  h GDATA @  P DATA@   DATA  @ DATA    DATA `  H 3DATA`   +DATA  ` DATA 8  8 DATA8   x <DATA  8 DATA    DATA X   lDATAX   DATA  X DATA 0  qDATA0 x  DATAx  0 DATA  x DATA P  DATAP   DATA  P 0 DATA (  x DATA( p  vDATAp  ( h DATA  p p DATA H  DATAH   @DATA  H ` DATA    BDATA  h   DATAh   ` #DATA  h vDATA @   X DATA@     H JDATA    @  DATA     DATA  `   DATA`      8 ,DATA    `  DATA  8   DATA8     6DATA    8  0 DATA     x DDATA  X   DATAX       DATA    X  X DATA  0   DATA0  x   DATAx    0  #DATA   x  P DATA P  DATAP   DATA  P  DATA (  ` )DATA( p  "DATAp  (  8DATA  p p DATA H  DATAH    DATA  H ` DATA    DATA  h  DATAh   P DATA  h DATA @  DATA@    DATA  @ ` DATA    DATA `   DATA`   ( DATA  ` h DATA 8   DATA8    DATA  8 0 DATA   x DATA X   DATAX    "DATA  X X DATA 0   DATA0 x   DATAx  0  DATA  x X DATA P   DATAP    DATA  P  DATA (  X DATA( p   DATAp  (  DATA  p ( DATA H  p DATAH    DATA  H  DATA    8 DATA  h  x DATAh    DATA  h  DATA @  8 DATA@   DATA  @ DATA    DATA `  X DATA`   DATA  ` DATA 8  0 DATA8   x DATA  8 DATA    DATA X  P DATAX   DATA  X DATA 0  ( DATA0 x  p DATAx  0 DATA   x  DATA  P   H DATAP       DATA    P   DATA  (!   DATA(! p!  h DATAp! ! (!  DATA! " p!  &DATA" H" ! P *DATAH" " "  DATA" " H"  DATA"  # " ( DATA # h# " p DATAh# # #  .DATA# # h#  DATA# @$ # H DATA@$ $ #  DATA$ $ @$  DATA$ % $  DATA% `% $ X (DATA`% % %  -DATA% % `%  DATA% 8& % X +DATA8& & %  DATA& & 8&  DATA& ' & H DATA' X' &  SDATAX' ' '  eDATA' ' X'  4DATA' 0( '  !DATA0( x( ' h DATAx( ( 0(  DATA( ) x(  DATA) P) ( 8 \DATAP) ) )  TDATA) ) P) P %DATA) (* )  DATA(* p* )  "DATAp* * (* 0 'DATA* + p*  #DATA+ H+ *  'DATAH+ + + 0 DATA+ + H+ h DATA+  , +  DATA , h, +  `DATAh, , ,  DATA, , h,  DATA, @- ,  DATA@- - ,  DATA- - @- H ODATA- . -  DATA. `. -  ,DATA`. . . p +DATA. . `.  DATA. 8/ .  DATA8/ / . ` DATA/ / 8/ DATA/ 0 / ! 1DATA0 X0 / `! -DATAX0 0 0 ! FDATA0 0 X0 8" >DATA0 01 0 " DATA01 x1 0 " EDATAx1 1 01 h# DATA1 2 x1 # DDATA2 P2 1 ($ DATAP2 2 2 p$ GDATA2 2 P2 $ DATA2 (3 2 0% BDATA(3 p3 2 % DATAp3 3 (3 % EDATA3 4 p3 `& DATA4 H4 3 & EDATAH4 4 4 ' DATA4 4 H4 X' DATA4  5 4 ' !DATA 5 h5 4 ' -DATAh5 5 5 P( DATA5 5 h5 ( :DATA5 @6 5 ( DATA@6 6 5 0) DATA6 6 @6 p) DATA6 7 6 ) ?DATA7 `7 6 * DATA`7 7 7 X* DATA7 7 `7 * DATA7 88 7 * \DATA88 8 7 X+ eDATA8 8 88 + DATA8 9 8 @, MDATA9 X9 8 , DATAX9 9 9 - 'DATA9 9 X9 h- 7DATA9 0: 9 - /DATA0: x: 9 0. DATAx: : 0: / 9DATA: ; x: h/ /DATA; P; : / 7DATAP; ; ; 00 8DATA; ; P; 0 <DATA; (< ; 1 >DATA(< p< ; x1 BDATAp< < (< 1 <DATA< = p< X2 DATA= H= < 2 DATAH= = = 3 DATA= = H= 3 DATA=  > = 4 DATA > h> = 5 DATAh> > > H5 DATA> > h> 06 9DATA> @? > 6 /DATA@? ? > 6 8DATA? ? @? `7 >DATA? @ ? 7 DATA@ `@ ? 8 ]DATA`@ @ @ 8 DATA@ @ `@ 8 NDATA@ 8A @ p9 DATA8A A @ 9 DATAA A 8A 9 DATAA B A : 9DATAB XB A (; /DATAXB B B ; pDATAB B XB (< +DATAB 0C B < ,DATA0C xC B < 9DATAxC C 0C H= /DATAC D xC = pDATAD PD C H> DATAPD D D > DATAD D PD > DATAD (E D ? DATA(E pE D p? DATApE E (E ? "DATAE F pE @ DATAF HF E H@ DATAHF F F @ DATAF F HF @ DATAF  G F A DATA G hG F `A DATAhG G G A SDATAG G hG (B DATAG @H G xB RDATA@H H G B DATAH H @H HC UDATAH I H C DATAI `I H D PDATA`I I I D DATAI I `I D SDATAI 8J I pE DATA8J J I E SDATAJ J 8J @F DATAJ K J F DATAK XK J F DATAXK K K G DATAK K XK G DATAK 0L K H -DATA0L xL K PI -DATAxL L 0L I DATAL M xL I DATAM PM L (J DATAPM M M `J :DATAM M PM J #DATAM (N M K DATA(N pN M K DATApN N (N L ,DATAN O pN hL DATAO HO N L -DATAHO O O M DATAO O HO HM DATAO  P O M ;DATA P hP O M QDATAhP P P xN DATAP P hP N DATAP @Q P O +DATA@Q Q P `O JDATAQ Q @Q O DATAQ R Q P <DATAR `R Q P -DATA`R R R P DATAR R `R (Q :DATAR 8S R Q DATA8S S R Q DATAS S 8S R DATAS T S (S DATAT XT S S DATAXT T T 0T wDATAT T XT T DATAT 0U T U 5DATA0U xU T pU QDATAxU U 0U U DATAU V xU 0V DATAV PV U pV DATAPV V V V DATAV V PV V %DATAV (W V HW DATA(W pW V W DATApW W (W W BDATAW X pW 8X DATAX HX W pX DATAHX X X X %DATAX X HX Y DATAX  Y X HY DATA Y hY X Y DATAhY Y Y Y DATAY Y hY Z DATAY @Z Y HZ .DATA@Z Z Y Z DATAZ Z @Z Z DATAZ [ Z 8[ DATA[ `[ Z x[ DATA`[ [ [ [ DATA[ [ `[ [ 4DATA[ 8\ [ X\ DATA8\ \ [ \ %DATA\ \ 8\ \ !DATA\ ] \ H] DATA] X] \ ] DATAX] ] ] ] DATA] ] X] (^ DATA] 0^ ] p^ 'DATA0^ x^ ] ^ /DATAx^ ^ 0^ (_ ?DATA^ _ x^ _ DATA_ P_ ^ _ /DATAP_ _ _ @` DATA_ _ P_ ` &DATA_ (` _ ` DATA(` p` _ (a DATAp` ` (` `a DATA` a p` a DATAa Ha ` a =DATAHa a a Pb SDATAa a Ha b aDATAa  b a `c DATA b hb a c DATAhb b b c DATAb b hb d DATAb @c b Hd DATA@c c b d *DATAc c @c d $DATAc d c He DATAd `d c e 9DATA`d d d f DATAd d `d Pf "DATAd 8e d f $DATA8e e d f DATAe e 8e 0g DATAe f e g (DATAf Xf e g DATAXf f f h ?DATAf f Xf h DATAf 0g f h DATA0g xg f (i DATAxg g 0g pi !DATAg h xg i DATAh Ph g j DATAPh h h Pj DATAh h Ph j DATAh (i h j DATA(i pi h 0k 0DATApi i (i k DATAi j pi k DATAj Hj i l DATAHj j j Hl DATAj j Hj l 0DATAj  k j l DATA k hk j @m DATAhk k k xm DATAk k hk m /DATAk @l k n QDATA@l l k n 1DATAl l @l n NDATAl m l xo DATAm `m l o DATA`m m m p GDATAm m `m p DATAm 8n m p GDATA8n n m Pq DATAn n 8n q 0DATAn o n q DATAo Xo n @r DATAXo o o r DATAo o Xo r DATAo 0p o s DATA0p xp o Ps *DATAxp p 0p s DATAp q xp s FDATAq Pq p ht 6DATAPq q q t DATAq q Pq u XDATAq (r q `v DATA(r pr q v DATApr r (r v +DATAr s pr @w DATAs Hs r w GDATAHs s s x 7DATAs s Hs hx DATAs  t s hy YDATA t ht s y DATAht t t (z DATAt t ht pz DATAt @u t z DATA@u u t { HDATAu u @u x{ 8DATAu v u { DATAv `v u | ZDATA`v v v h} DATAv v `v } &DATAv 8w v } DATA8w w v H~ DATAw w 8w ~ GDATAw x w  7DATAx Xx w p ,DATAXx x x  DATAx x Xx ؀ ZDATAx 0y x ` ;DATA0y xy x ȁ DATAxy y 0y  0DATAy z xy x DATAz Pz y LDATAPz z z @ 7DATAz z Pz DATAz ({ z _DATA({ p{ z @ $DATAp{ { ({ &DATA{ | p{ DATA| H| { @ DATAH| | | DATA| | H| І %DATA|  } | ( DATA } h} | x )DATAh} } } Ї DATA} } h} %DATA} @~ } X DATA@~ ~ } #DATA~ ~ @~ DATA~  ~ ( DATA ` ~ h DATA`   DATA  ` .DATA 8  H $DATA8   DATA Ȁ 8 Њ 5DATAȀ   8 DATA X Ȁ x DATAX   ȋ -DATA  X ( DATA 0  x DATA0 x  DATAx  0 DATA  x 8 DATA P  DATAP   ؍ ,DATA  P 8 DATA (  DATA( p  ؎ DATAp  ( ( DATA  p p DATA H  DATAH    DATA ؅ H X DATA؅    DATA  h ؅ ؐ DATAh    DATA  h H DATA @  DATA@   ؑ #DATA Ї @ ( DATAЇ   ` DATA ` Ї DATA`   DATA  ` DATA 8  ` DATA8   DATA ȉ 8 DATAȉ   ( DATA X ȉ p 6DATAX   ؔ DATA  X ( DATA 0  p +DATA0 x  ȕ DATAx  0  DATA  x H "DATA P  DATAP   ؖ .DATA  P 8 DATA (  DATA( p  'DATAp  (  (DATA  p p "DATA H  DATAH   DATA ؎ H @ DATA؎    DATA  h ؎ ș DATAh    $DATA  h h DATA @  (DATA@    DATA А @ @ DATAА   #DATA ` А ؛ DATA`    DATA  ` ` DATA 8  @DATA8    DATA Ȓ 8 X DATAȒ   DATA X Ȓ DATAX   0 ADATA  X DATA 0  !DATA0 x  0 $DATAx  0 DATA  x П DATA P   DATAP   ` DATA  P !DATA (  /DATA( p  X DATAp  ( ADATA  p  DATA H  P DATAH   DATA ؗ H DATAؗ    ( DATA  h ؗ p DATAh   DATA  h  "DATA @  X CDATA@   Ȥ DATA Й @  DATAЙ   @ )DATA ` Й DATA`   DATA  ` $DATA 8  x DATA8   DATA ț 8 DATAț   P DATA X ț DATAX   DATA  X 0 DATA 0  p DATA0 x  DATAx  0 DATA  x 8 DATA P  x DATAP   .DATA  P  DATA (  P DATA( p  DATAp  ( DATA  p DATA H  @ DATAH   DATA ؠ H ȫ DATAؠ     DATA  h ؠ X !DATAh   DATA  h ,DATA @  @ :DATA@   3DATA Т @  SDATAТ   DATA ` Т DATA`   DATA  ` H DATA 8  DATA8   DATA Ȥ 8 DATAȤ   @ DATA X Ȥ DATAX   DATA  X 4DATA 0  ` DATA0 x  'DATAx  0 DATA  x 8 DATA P  x $DATAP   в (DATA  P ( #DATA (  x DATA( p  ;DATAp  (  DATA  p H DATA H  DATAH   ȴ DATA ة H DATAة    H DATA  h ة DATAh   е &DATA  h ( .DATA @  DATA@   ȶ DATA Ы @  DATAЫ   P DATA ` Ы &DATA`   .DATA  ` P DATA 8  DATA8   ȸ 7DATA ȭ 8 0 !DATAȭ   DATA X ȭ ȹ DATAX    DATA  X H 2DATA 0  DATA0 x  DATAx  0 DATA  x X DATA P  DATAP   ػ DATA  P  DATA (  ` DATA( p  DATAp  ( 2DATA  p P DATA H  DATAH   н 0DATA ز H 0 DATAز    p "DATA  h ز DATAh    DATA  h P 2DATA @  DATA@   DATA д @ 8 DATAд   DATA ` д DATA`    3DATA  ` p DATA 8  DATA8   1DATA ȶ 8 X DATAȶ   DATA X ȶ DATAX    *DATA  X h DATA 0  DATA0 x  DATAx  0 8 DATA  x DATA P  DATAP   DATA  P P DATA (  DATA( p  DATAp  (  DATA  p X DATA H  %DATAH   DATA ػ H 0 DATAػ    x DATA  h ػ !DATAh   DATA  h H 0DATA @  DATA@   DATA н @ 0 DATAн   ` DATA ` н DATA`   DATA  ` 0 +DATA 8  DATA8   DATA ȿ 8  2DATAȿ   x DATA X ȿ DATAX   DATA  X H DATA 0  DATA0 x  3DATAx  0 8 DATA  x DATA P  DATAP   DATA  P 8 DATA (  DATA( p  :DATAp  ( 0 4DATA  p DATA H  DATAH   DATA  H p DATA    DATA  h  DATAh   H %DATA  h ADATA @   DATA@   X DDATA  @ DATA    DATA `  ` DATA`   DATA  ` DATA 8  @ DATA8   DATA  8 "DATA   ( GDATA X  DATAX   !DATA  X 8 $DATA 0  DATA0 x  DATAx  0 ( DATA  x p DATA P  !DATAP    /DATA  P h DATA (  EDATA( p  ( DATAp  ( p DATA  p DATA H  DATAH   0 DATA  H DATA    DDATA  h  @ >DATAh   DATA  h DATA @  0 ,DATA@   7DATA  @ DDATA   p SDATA `  %DATA`   H >DATA  ` ^DATA 8  H VDATA8   'DATA  8 ( (DATA   +DATA X  -DATAX   8 -DATA  X HDATA 0   =DATA0 x  gDATAx  0  3DATA  x x %DATA P  #DATAP   %DATA  P x 0DATA (  DATA( p  ( ODATAp  ( WDATA  p 0 DATA H  h EDATAH   ODATA  H ` 2DATA    DATA  h   &DATAh   ` WDATA  h 'DATA @  @ ,DATA@   4DATA  @  $DATA   ` DATA `  DATA`   DATA  ` DATA 8  h 2DATA8   DATA  8  1DATA   p DATA X  4DATAX   DATA  X h /DATA 0  DATA0 x   2DATAx  0 p DATA  x 2DATA P   DATAP   ` DATA  P 4DATA (   DATA( p  X 3DATAp  ( DATA  p 6DATA H  h DATAH   1DATA  H  DATA    X 4DATA  h  DATAh    4DATA  h p DATA @  DATA@   DATA  @ ( DATA   X DATA `  DATA`   DATA  ` 8 (DATA 8  DATA8   %DATA  8 ( DATA   p 4DATA X  DATAX    DATA  X P DATA 0  DATA0 x  DATAx  0 "DATA  x p DATA P  !DATAP    5DATA  P x !DATA (  +DATA( p  'DATAp  ( x DATA  p DATA H  'DATAH   X "DATA  H #DATA    8DATA  h  ` #DATAh   "DATA  h DATA @  P DATA@   #DATA  @ DATA   DATA `  ` DATA`   DATA  ` DATA 8  8 DATA8   DATA  8 DATA    DATA X  P iDATAX   DATA  X 0 bDATA 0   DATA0 x   ;DATAx  0 p DATA  x  DATA P   >DATAP    .DATA  P  BDATA (  P DATA( p   ?DATAp  (  ;DATA  p p DATA H   DATAH    hDATA  H  DATA     gDATA  h  h DATAh    DATA  h  DATA @  8 DATA@   x DATA  @  DATA    DATA `  X 'DATA`   BDATA  ` cDATA 8  3DATA8    %DATA  8 h LDATA   DATA X  8 DATAX   DATA  X DATA 0   DATA0 x  H 0DATAx  0 TDATA  x 0 4DATA P   "DATAP    7DATA  P P DATA (   0DATA( p   CDATAp  ( ` 0DATA  p  DATA H   DATAH    BDATA  H ( `DATA     DATA  h   DATAh   H +DATA  h  ,DATA @   DATA@   H 7DATA  @  DATA    'DATA `  H FDATA`    3DATA `  3DATA #!BPY DATA( o SDATAX """ x4DATA  Name: 'RenderMan (.rib)...' DATA Blender: 233DATA  Group: 'Export'DATA8` Tooltip: 'Save/Render a Scene to RenderMan Renderers' DATA """DATA DATA@( # RenderMan export script by Christoffer Green and Goran KocovDATA( # Pixie Extension by Joseph MontanezDATA # version 0.1 Beta9.0bDATA<8 # the script needs Blender 2.33 and Python 2.3 installedDATA4 # to run the script press alt+p in the text windowDATA DATA0 import BlenderDATAp import stringDATA  import osDATA  import sysDATA  from os import P_NOWAITDATAh from Blender.Draw import *DATA from Blender.BGL import *DATA from Blender import SceneDATA$@ from Blender.Scene import RenderDATA from math import piDATA from math import atanDATA from math import powDATA` ֑DATA try:DATA  import totiffDATA except:DATAH@  print "Did not find the totiff module, will use ImageMagic instead\n"DATA DATA DATA4 # MAKE SURE YOU CHANGE THIS TO YOUR PYTHON FOLDERDATAx if (os.name != "posix"):DATA   sys.path = ['c:\\python23']DATA DATA$@ scene = Blender.Scene.GetCurrent()?DATA$ camobj = scene.getCurrentCamera()ODATA4 camera = Blender.Camera.Get(camobj.getData().name)DATA@ DATAp # The bevent constantsDATA, exportevent = 1 # export button pressedDATA( exitevent = 2 # exit button pressedDATA,h updateguievent = 3 # update the pressedjerDATA0 filetoggleevent = 999 # file button pressedDATA DATAP # GUI variablesDATA fs = Create('')DATA menuval = Create(4)DATA dof = Create(0)DATAX samples = Create(2)DATA stop = Create(2.0)DATA lenght = Create(1.0)DATA0 distance = Create(5.0)DDATAx srate = Create(3)DATA file = Create(0)DATA buffer = Create(1)DATA$P filename = Create("default.rib")DATA  image = Create("default")@2DDATA  dirw = Create("default")DATA$@ pixierenderer = Create("rndr")JDATA$ prmanrenderer = Create("prman")DATA$ dlrenderer = Create("renderdl")1DATA$0 bmrtrenderer = Create("rendrib")DATA( entropyrenderer = Create("entropy")DATA$ aqsisrenderer = Create("aqsis")DATA$( pixietexmaker = Create("texmake")DATA$x prmantexmaker = Create("txmake")DATA$ dltexmaker = Create("tdlmake")DATA$ bmrttexmaker = Create("mkmip")DATA$h entropytexmaker = Create("mkmip")DATA$ aqsistexmaker = Create("teqser")DATA radiosity = Create(0)DATAP radnum = Create(50)DATA gi = Create(0)DATA gisteps = Create(100)DATA  #PixieDATAX indirect = Create(0)DATA occlusion = Create(0)DATA ambiSamples = Create(6)DATA 0 #End PixieDATAh geom = Create(1)DATA meshexport = Create(1)YDATA pointwidth = Create(1.0)DATA@ anim = Create(0)DATA  maxpixeldist = Create(20)DATA maxerror = Create(0.25)DATA  rshadow = Create(1)DATAh smooth = Create(0.00)DATA areasamples = Create(20)DATA buff256 = Create(0)@DATA@ buff512 = Create(1)DATA buff1024 = Create(0)DATA buff2048 = Create(0)DATA motionblur = Create(0)DATA ` motionblurframe = Create(1)DATA rendert = Create(1)m?DATA caustics = Create(0)DATA@ photon = Create(4000)DATA uv = Create(0)DATA recurs = Create(4)DATA debug = Create(0)DATAX hiddenlayer = Create(0)DATA  globalsettings = Create(1)DATA scenesettings = Create(0)DATA8 shadereditor = Create(0)DATA surfaceshader = Create(3)DATA$ surfaceshadername = Create("")DATA about = Create(0)DATA` shadermenu = Create(1)DATA  ambientshader = Create(1.00)DATA  diffuseshader = Create(0.50)DATA H specularshader = Create(0.50)DATA$ roughnessshader = Create(0.10)DATA  coefshader = Create(1.50)DATA 8 reflblurshader = Create(0.00)DATA  refrblurshader = Create(0.00)DATA objecteditor = Create(0)DATA convertbm = Create(1)DiADATA h objectshadermenu = Create(0)DATA arealightMESH = Create(0)DATA ! recievecaustics = Create(0)DATA P! transmittcaustics = Create(0)DATA(! transmittcausticsslider = Create(1.40)DATA! reflsamples = Create(0)DATA@" refrsamples = Create(0)DATA" kr = Create(1.0)DATA" rendershadow = Create(0)DATA# autogs = Create(0)DATA `# reflectcaustics = Create(0)DATA# progress = Create(1)DATA# gain = Create(1.0)DATA@$ gamma = Create(1.0)DATA$ lightx = Create(1.0)DATA$ bias = Create(0.25)DATA % raytraceshadow = Create(1)DATAh% projection = Create(0)DATA % textureblurm = Create(0.0)DATA& norm = Create(0.01)DATAH& converttex = Create(1)DATA& gisphere = Create(1)DATA& rvisibility = Create(0)uADATA ' finalgather = Create(0)CDATAh' rgba = Create(1)DATA' castshadow = Create(1)DATA' reconvert = Create(0)DATA8( texturem = Create(' ')DATA) texturem.val = '' DATAH) textshader = Create('Surface "plastic" ')DATA(* textshader.val = 'Surface "plastic"'DATA* textshaderd = Create('Displacement "bumpy" ')DATA,0, textshaderd.val = 'Displacement "bumpy"'DATA, hdritex = Create(' ')DATAX- hdritex.val = ''DATA- hdri = Create(0)DATA- preworldrafile = Create(' ')DATA. preworldrafile.val = ''DATA. preworldra = Create(0)DATA8/ postworldrafile = Create(' ')DATA0 postworldrafile.val = '' DATAX0 postworldra = Create(0)DATA0 objectrafile = Create(' ')DATAp1 objectrafile.val = ''DATA1 objectra = Create(0)DATA2 textnor = Create(0)DATA H2 illuminationmenu = Create(0)DATA2 areagi = Create(0)DATA2 indirectgi = Create(1)-DATA(3 eblur = Create(0.00)DATAp3 esamples = Create(1)DATA3 gianim = Create(1)-DATA4 amesh = Create(0)DATAH4 patchsize = Create(4.0)DATA4 elemsize = Create(2.0)-DATA4 minsize = Create(1.0)DATA 5 DATAP5 # Other variables DATA@5 renderer = "PRMan |BMRT |Entropy |3Delight |AQSIS |Pixie "@DATAd6 shader = "Plastic (All)|Glass (BMRT, Entropy)|Shiny (BMRT, Entropy) |Custom (All) |BMS (All) "DATA`6 pixelsamples = "1 Preview|2 Good|3 Recomended|4|5 To High|6|7 For DoF|8|9|10 Best and Crazy"DATAD 7 ambiSamplesindex = "7 Preview|8|9|10|11 Good|12|13|14 Perfection"DATAD7 shadingrate = "0.25 Best|0.5|1 Good|2|4 Preview|6|8|12|16 Bad"DATA48 sratelist = [0.25, 0.5, 1, 2, 4, 6, 8, 12, 16]DATA@`8 meshex = "PointsPolygons |Polygons |SubdivSurface |Points "DATA|8 illumination = "Plastic |Matte |RoughMetal |ThinPlastic |ShinyPlastic |ShinyMetal |Clay |BrushedMetal |Ceramic |Glass "DATA8x9 projectionm = "Plane |Cylinder |Sphere |UV-Map |Auto"DATA9 sshader = "ADD NEW"DATA(: sshader2 = ""DATAh: shadernametemp = ""DATA: selectedname = ""DATA: selectedtype = "Type: "DATA @; tmp = ""DATAx; imagelist = ""DATA(; imagelistmenu = "No images loaded"DATA$< rgbatext = "rgb |rgba |rgbz |z "DATA0`< castshadowtext = "Os |opaque |shader |none"DATA< txdone = []DATA= DATA0= # Global variablesDATAp= increment = 0DATA= xbar = 11DATA = i = 0DATA(> meshobjects = 0DATAh> maxblur = 10.0DATA> meshnum = 0DATA> DATA0? # Create the BlenderMan directories on startupDATAx? if (os.name != "posix"):DATA?  rootdir = '/BlenderMan/'DATA0@  partitionname = Blender.sys.progname[0:2]DATAh@ else:DATA0@  rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$A pdir = rootdir + dirw.val + '/'DATA4PA globalpropertiesdir = pdir + '/GlobalProperties/'DATA0A surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<B displacementshadersdir = pdir + '/DisplacementShaders/'DATA0xB objectsettingsdir = pdir + '/ObjectSettings/'DATA0B lightsettingsdir = pdir + '/LightSettings/'DATA48C meshesdir = os.path.normpath(pdir + '/Meshes/')DATA$C imagesdir = pdir + '/images/'DATA$C shadowdir = pdir + '/shadows/'DATA(8D texturesdir = pdir + '/textures/'DATA$D shadersdir = pdir + '/shaders/'DATAD try: os.mkdir(rootdir)DATA(E except OSError: passDATApE try: os.mkdir(pdir)DATAE except OSError: passDATA$E try: os.mkdir(surfaceshadersdir)DATAHF except OSError: passDATA$F try: os.mkdir(globalpropertiesdir)DATAF except OSError: passDATA((G try: os.mkdir(displacementshadersdir)DATAG except OSError: passDATAG try: os.mkdir(meshesdir)DATAH except OSError: passDATA$XH try: os.mkdir(objectsettingsdir)DATAH except OSError: passp`DATA H try: os.mkdir(lightsettingsdir)DATA@I except OSError: passDATAI try: os.mkdir(shadowdir)DATAI except OSError: passpDATAJ try: os.mkdir(texturesdir)DATA`J except OSError: passDATAJ try: os.mkdir(imagesdir)DATAJ except OSError: passDATA8K DATA hK def gui():DATATK  global menuval, dof, samples, stop, lenght, distance, srate, file, buffer, dirwDATAX L  global filename, image, radiosity, radnum, gi, gisteps, geom, meshexport, pointwidthDATA`L  global anim, maxpixeldist, maxerror, smooth, areasamples, buff256, buff512, buff1024, buff2048DATAt8M  global motionblur, motionblurframe, rendert, caustics, photon, uv, recurs, debug, globalsettings, scenesettingsDATAdM  global shadereditor, sshader, surfaceshader, surfaceshadername, about, shadermenu, ambientshaderDATAdhN  global diffuseshader, specularshader, roughnessshader, coefshader, reflblurshader, refrblurshaderDATA`N  global objecteditor, selectedname, convertbm, objectshadermenu, arealightMESH, recievecausticsDATA\O  global transmittcaustics, transmittcausticsslider, reflsamples, refrsamples, rendershadowDATAhP  global xbar, autogs, kr, progress, indirectgi, areagi, eblur, esamples, gianim, amesh, reflectcausticsDATAdP  global patchsize, elemsize, minsize, textshader, raytraceshadow, bias, textshaderd, gain, gammaDATAT8Q  global lightx, textureblurm, texturem, norm, planarm, converttex, imagelistmenuDATA`Q  global textnor, illuminationmenu, projection, hiddenlayer, gisphere, rvisibility, finalgatherDATAHHR  global hdritex, hdri, rgba, castshadow, reconvert, maxblur, sshader2DATA`R  global prmanrenderer, dlrenderer, bmrtrenderer, entropyrenderer, aqsisrenderer, pixierendererDATA`PS  global prmantexmaker, dltexmaker, bmrttexmaker, entropytexmaker, aqsistexmaker, pixietexmakeraDATA\S  global preworldra, preworldrafile, postworldra, postworldrafile, objectra, objectrafileDATA@hT  global ambiSamples, occlusion, indirect #Pixie Ambient stuff DATAT 3-JDATA4U  if (autogs.val == 1): #automaticly select objectshDATA hU  Redraw(1)DATAU  getSelectedObject()-0DATAU  saveload(0,0,'object')DATA0V 8 .DATA`V  # GUI settingsDATA8V  glClearColor(0.4,0.48,0.57, 0.0) # blue background-x DATA W  glClear(GL_COLOR_BUFFER_BIT)- DATA,XW  glColor3f(0, 0, 0) # main black back 18DATAW  glRectf(2, 2, 630, 340)1-JDATA0W  glColor3f(0.4, 0.48, 0.57) # main blue backgDATAXX  glRectf(4, 4, 628, 300)~@DATA,X  glColor3f(0.27, 0.3, 0.35) # blue topjerDATAX  glRectf(4, 302, 628, 338)ADATA@Y  glColor3f(1,1,1)erDATAY DATA,Y  # Buttons for the main BlenderMan panels-JDATA|Z  globalsettings = Toggle("Global Settings", 12, 75, 310, 100, 20, globalsettings.val, "Global project settings")DATAtZ  scenesettings = Toggle("Scene Settings", 557, 175, 310, 100, 20, scenesettings.val, "Global scene settings")DATAP[  shadereditor = Toggle("Shader Editor", 13, 275, 310, 100, 20, shadereditor.val, "Surface and diplacement shader settings")DATA\  objecteditor = Toggle("Object Editor", 33, 375, 310, 100, 20, objecteditor.val, "Edit object settings that Blender doesn't support")DATAh\  about = Toggle("About", 16, 475, 310, 100, 20, about.val, "Information about this script")DATAX] DATA]  # Global SettingsDATA ]  if (globalsettings.val == 1):DATA^  debug = Slider("Debug Level ", updateguievent, 440, 270, 180, 20, debug.val, 0, 3, 0, "How much debug information the renderer should output")DATA^  hiddenlayer = Number("Hidden Layer:", 0, 10, 270, 120, 20, hiddenlayer.val, 0, 20, "Objects that are present on this layer won't be exported")DATA_  progress = Toggle("Progressbar", updateguievent, 520, 30, 100, 20, progress.val, "Hint: It takes slightly less time to export a scene with the progressbar off")DATAP`  gain = Slider("Gain ", 0, 225, 270, 180, 20, gain.val, 0.0, 5.0, 0)REEDATAPa  gamma = Slider("Gamma ", 0, 225, 248, 180, 20, gamma.val, 0.0, 5.0, 0)DATAa  lightx = Slider("Light* ", 0, 225, 226, 180, 20, lightx.val, 0.0, 15.0, 0, "Light intensity multiplier for lamps (pointlights) and spotlights")DATAHb  if (menuval.val != 5):WDATAb  recurs = Slider("RaySteps ", 0, 440, 248, 180, 20, recurs.val, 0, 15, 0, "Maximum number of steps for the raytracing recursion")KDATA|Hc  reconvert = Toggle("Reconvert Textures", updateguievent, 440, 226, 180, 20, reconvert.val, "Reconvert UV textures")DATAc  rgba = Menu(rgbatext, updateguievent, 370, 150, 90, 20, rgba.val, "What channels to export (A = Alpha. Z = Depth)")DATAd  menuval = Menu(renderer, updateguievent, 370, 125, 90, 20, menuval.val, "Which renderer should be taken into account when exporting the scene and displaying the GUI")DATAe  samples = Menu(pixelsamples, updateguievent, 370, 75, 90, 20, samples.val, "Silhouette, motion blur and depth of field quality")DATAd8f  srate = Menu(shadingrate, updateguievent, 370, 100, 90, 20, srate.val, "Shading quality")@DATApf  filename = String("Filename: ", 0, 150, 75, 140, 19, filename.val, 200, "Name of the master RIB file")DATAlhg  image = String("Image: ", 0, 150, 100, 140, 19, image.val, 200, "Name of the rendered image(s)")DATAdh  dirw = String("Project: ", 500, 150, 125, 140, 19, dirw.val, 200, "Name of the project")DATAh  if menuval.val == 1:DATAh  prmanrenderer = String("Renderer: ", 0, 480, 125, 140, 19, prmanrenderer.val, 200, "Name of the renderer executable")DATAi  prmantexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, prmantexmaker.val, 200, "Name of the mipmap texture making executable")VDATAHj  elif menuval.val == 2:DATA|j  bmrtrenderer = String("Renderer: ", 0, 480, 125, 140, 19, bmrtrenderer.val, 200, "Name of the renderer executable")DATA8k  bmrttexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, bmrttexmaker.val, 200, "Name of the mipmap texture making executable")DATAk  elif menuval.val == 3:DATA8l  entropyrenderer = String("Renderer: ", 0, 480, 125, 140, 19, entropyrenderer.val, 200, "Name of the renderer executable")DATAl  entropytexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, entropytexmaker.val, 200, "Name of the mipmap texture making executable")DATAm  elif menuval.val == 4:DATAxm  dlrenderer = String("Renderer: ", 0, 480, 125, 140, 19, dlrenderer.val, 200, "Name of the renderer executable")DATAn  dltexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, dltexmaker.val, 200, "Name of the mipmap texture making executable")EDATAPo  elif menuval.val == 5:DATAo  aqsisrenderer = String("Renderer: ", 0, 480, 125, 140, 19, aqsisrenderer.val, 200, "Name of the renderer executable")DATAHp  aqsistexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, aqsistexmaker.val, 200, "Name of the mipmap texture making executable")DATAq  elif menuval.val == 6:npuDATAPq  pixierenderer = String("Renderer: ", 0, 480, 125, 140, 19, pixierenderer.val, 200, "Name of the renderer executable")DATAr  pixietexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, pixietexmaker.val, 200, "Name of the mipmap texture making executable")DATAxr  anim = Toggle("Animation", updateguievent, 150, 30, 69, 19, anim.val, "Render single or multiple frames")DATAhs  rendert = Toggle("Render", updateguievent, 220, 30, 69, 19, rendert.val, "Start the renderer after the export is done")DATAlt  file = Toggle("File", filetoggleevent, 150, 50, 70, 20, file.val, "Render the image to a file")DATAlt  buffer = Toggle("Buffer", 5, 220, 50, 70, 20, buffer.val, "Render the image to the framebuffer")DATALHu  Button("Exit", exitevent, 385, 30, 75, 20, "Exit the script")DATAPu  Button("Export", exportevent, 310, 30, 74, 20, "Start the export")DATAX@v  Button("Load Sett", 30, 310, 51, 74, 20, "Load global and scene settings")DATAXv  Button("Save Sett", 31, 385, 51, 75, 20, "Save global and scene settings")DATAPw  glRasterPos2i(310, 80)DATAw  Text("Samples")DATAw  glRasterPos2i(310, 105)DATA x  Text("ShRate")DATA`x  glRasterPos2i(310, 130)DATAx  Text("Renderer")DATAx  glRasterPos2i(310, 155)DATA0y  Text("Channels")DATApy  if (progress.val == 1):DATAy  # Progressbar textDATAz  glRasterPos2i(10, 25)DATA8Hz  Text("Mesh: %s/%s"%(int(meshnum), int(meshobjects)))DATAz ## if anim.val:DATAz ## glRasterPos2i(10, 40)DATA,8{ ## display = Blender.Scene.GetCurrent()DATAd{ ## Text("Frame: %s/%s"%(display.currentFrame(), display.endFrame() - display.startFrame() + 1))EDATA |  # Progressbar backplateDATAh|  glColor3f(0, 0, 0)DATA|  glRectf(9, 10, 620, 21)DATA |  glColor3f(0.78, 0.7, 0.8)DATAH}  glRectf(10, 9, 621, 20)DATA}  glColor3f(0.4, 0.4, 0.4)DATA}  glRectf(10, 10, 620, 20)DATA ~  # ProgressbarDATA`~  glColor3f(0, 0, 0)DATA$~  glRectf(10, 10, xbar + 1, 20)DATA ~  glColor3f(0.78, 0.7, 0.8)DATA H  glRectf(10, 11, xbar, 20)XDATA   glColor3f(0.52, 0.25, 0.45)DATA   glRectf(11, 11, xbar, 19)DATA8  DATAh  # Scene settingsDATA  if (scenesettings.val == 1):DATA  preworldra = Toggle("PreWorld ReadArchive", updateguievent, 10, 60, 180, 20, preworldra.val, "Add a ReadArchive to a user-defined file just before WorldBegin")DATAЁ  if (preworldra.val == 1):DATA\  preworldrafile = String("File: ", 0, 190, 60, 430, 20, preworldrafile.val, 100)DATA  postworldra = Toggle("PostWorld ReadArchive", updateguievent, 10, 40, 180, 20, postworldra.val, "Add a ReadArchive to a user-defined file just after WorldBegin")DATA x  if (postworldra.val == 1):# 0.2):DATA2  eblur.val = 0.2DATA2  maxblur = 0.2DATA 3  Register (gui, event, bevent)DATAp3  if (evt == 245):DATA3  rendershadow.val = 0DATA3  raytraceshadow.val = 1DATA@4  saveload(1,0,'object')DATA4  maxblur = 10.0DATA 4  Register (gui, event, bevent)DATA5  if (evt == 475):DATAX5  indirectgi.val = 1DATA5  areagi.val = 0DATA 5  Register (gui, event, bevent)DATA06  if (evt == 476):DATAp6  indirectgi.val = 0DATA6  areagi.val = 1DATA 6  Register (gui, event, bevent)DATA,H7  if (evt == 367): # Convert texturesDATA(7  imagelist = os.listdir(texturesdir) DATA7  if (imagelist != []):DATA@8  for image in imagelist:DATA,8  rawimage = '%s/%s'%(texturesdir, image)DATA$8  totiff.SetOutDir(texturesdir)DATA(09  ok = totiff.ConvertShort(rawimage)DATA$9  if not ok[0]: # error occurredDATA(9  print ok[1] # print error messageDATA(0:  imagelist = os.listdir(texturesdir) DATA:  imagelisttif = []DATA:  for image in imagelist:DATA ;  if (image[-3:] == 'tif'):DATA,h;  imagelisttif = imagelisttif + [image]DATA4;  imagelistmenu = string.join(imagelisttif, "|")DATA <  Register (gui, event, bevent)DATAp<  if (evt == 368):DATA(<  imagelist = os.listdir(texturesdir) DATA=  if (imagelist != []):DATAP=  imagelisttif = []DATA=  for image in imagelist:DATA =  if (image[-3:] == 'tif'):DATA,0>  imagelisttif = imagelisttif + [image]DATA4>  imagelistmenu = string.join(imagelisttif, "|")DATA8>  texturem.val = str(imagelisttif[converttex.val - 1])DATAP?  saveload(1,0,'shader')DATA ?  Register (gui, event, bevent)DATA ? Register (gui, event, bevent)DATA8@ DATAh@ def getSelectedObject():DATA@@  global selectedname, selectedtype, namelist, sshader2, sshaderDATA A  try:DATA0XA  selected = Blender.Object.GetSelected()[0]DATA A  except:DATA A  return 0DATA (B  selectedname = selected.nameDATA$xB  if (selected.getType() == "Mesh"):DATA B  selectedtype = 'Type: Mesh'DATA(C  elif (selected.getType() == "Lamp"):DATA pC  selectedtype = 'Type: Lamp'DATAC  else:DATA C  selectedtype = 'Type: Other'DATA(HD  namelist = string.split(sshader, "|")DATAD  namelist.remove('ADD NEW')DATA D  namelist = map(str, namelist)DATA(8E  sshader2 = string.join(namelist, "|")DATA E  return 1DATAE  DATA(E def saveload(save, exportS, module):DATAPF  if (module == 'shader'):DATAF  Variables = [shadermenu.val, ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, coefshader.val, DATAHG  reflblurshader.val, refrblurshader.val, reflsamples.val, refrsamples.val, kr.val, textshader.val, textshaderd.val, texturem.val,DATATG  textureblurm.val, norm.val, textnor.val, illuminationmenu.val, projection.val]DATAxH  if exportS:DATA,H  namelist = string.split(sshader, "|")DATA0I  name = namelist[objectshadermenu.val - 1]DATA pI  else: DATA I  name = surfaceshadername.valDATAI  if (name == ''):DATA 8J  returnDATA$pJ  fname = surfaceshadersdir + nameDATAJ  if (module == 'object'):DATAlK  Variables = [convertbm.val, objectshadermenu.val, geom.val, meshexport.val, uv.val, arealightMESH.val, DATAxK  areasamples.val, recievecaustics.val, transmittcaustics.val, transmittcausticsslider.val, caustics.val, photon.val, DATApHL  rendershadow.val, buff256.val, buff512.val, buff1024.val, buff2048.val, eblur.val, esamples.val, amesh.val, DATAhL  reflectcaustics.val, raytraceshadow.val, bias.val, rvisibility.val, castshadow.val, pointwidth.val, DATA$M  objectra.val, objectrafile.val]DATA,M  fname = objectsettingsdir + selectednameDATA(N  if (selectedname == ''): DATA pN  returnDATAN  if (module == 'global'):DATA|N  Variables = [gi.val, gisteps.val, radiosity.val, radnum.val, dirw.val, image.val, filename.val, file.val, buffer.val, DATAxO  anim.val, rendert.val, menuval.val, samples.val, srate.val, debug.val, maxerror.val, maxpixeldist.val, geom.val, DATAp@P  motionblur.val, motionblurframe.val, dof.val, stop.val, lenght.val, distance.val, autogs.val, progress.val, DATAxP  indirectgi.val, areagi.val, gianim.val, patchsize.val, elemsize.val, minsize.val, recurs.val, gain.val, gamma.val, DATApQ  lightx.val, hiddenlayer.val, gisphere.val, finalgather.val, hdri.val, hdritex.val, rgba.val, reconvert.val, DATAt(R  prmanrenderer.val, bmrtrenderer.val, entropyrenderer.val, dlrenderer.val, aqsisrenderer.val, pixierenderer.val,DATAtR  prmantexmaker.val, bmrttexmaker.val, entropytexmaker.val, dltexmaker.val, aqsistexmaker.val, pixietexmaker.val,DATA|hS  preworldra.val, preworldrafile.val, postworldra.val, postworldrafile.val, ambiSamples.val, occlusion.val, indirect.val]DATA4T  fname = globalpropertiesdir + 'GlobalProperties'DATApT  # Save variablesDATAT  if (save == 1):DATAT  f = open(fname,'w')DATA$8U  writeln(f,'BlenderMan0.1Beta9.0')DATAU  for i in Variables:DATA U  writeln(f,type(i).__name__)DATA V  if (i == '\n'):DATA`V  writeln(f,'')DATAV  continueDATAV  writeln(f,i)DATA W DATAPW  # Load variablesDATAW  if (save == 0):DATAW  try:DATAX  f = open(fname,'r')DATA PX  except: DATA X  returnDATA X  index = 0DATA X  version = str(f.readline())DATA,HY  if (version != 'BlenderMan0.1Beta9.0\n'):DATA Y  returnDATAY  for i in Variables:DATA Z  varType = str(f.readline())DATApZ  if (varType == "str\n"):DATA,Z  Variables[index] = str(f.readline())DATA [  elif (varType == "float\n"):DATA,`[  Variables[index] = float(f.readline())DATA [  elif (varType == "int\n"):DATA,\  Variables[index] = int(f.readline())DATA`\  index += 1DATA \  f.close()DATA\  if (module == 'shader'):DATA$ ]  shadermenu.val = Variables[0]DATA(p]  ambientshader.val = Variables[1]DATA(]  diffuseshader.val = Variables[2]DATA( ^  specularshader.val = Variables[3]DATA(x^  roughnessshader.val = Variables[4]DATA$^  coefshader.val = Variables[5]DATA( _  reflblurshader.val = Variables[6]DATA(x_  refrblurshader.val = Variables[7]DATA$_  reflsamples.val = Variables[8]DATA$ `  refrsamples.val = Variables[9]DATA p`  kr.val = Variables[10]DATA$`  textshader.val = Variables[11]DATA$a  textshaderd.val = Variables[12]DATA$`a  texturem.val = Variables[13]DATA(a  textureblurm.val = Variables[14]DATA b  norm.val = Variables[15]DATA$Xb  textnor.val = Variables[16]DATA,b  illuminationmenu.val = Variables[17]DATA$c  projection.val = Variables[18]DATAPc  elif (module == 'object'):DATA$c  convertbm.val = Variables[0]DATA(c  objectshadermenu.val = Variables[1]DATA @d  geom.val = Variables[2]DATA$d  meshexport.val = Variables[3]DATAd  uv.val = Variables[4]DATA((e  arealightMESH.val = Variables[5]DATA$e  areasamples.val = Variables[6]DATA(e  recievecaustics.val = Variables[7]DATA,(f  transmittcaustics.val = Variables[8]DATA0f  transmittcausticsslider.val = Variables[9]DATA$f  caustics.val = Variables[10]DATA 0g  photon.val = Variables[11]DATA(g  rendershadow.val = Variables[12]DATA$g  buff256.val = Variables[13]DATA$(h  buff512.val = Variables[14]DATA$xh  buff1024.val = Variables[15]DATA$h  buff2048.val = Variables[16]DATA i  eblur.val = Variables[17]DATA$hi  esamples.val = Variables[18]DATA i  amesh.val = Variables[19]DATA(j  reflectcaustics.val = Variables[20]DATA(`j  raytraceshadow.val = Variables[21]DATA j  bias.val = Variables[22]DATA$k  rvisibility.val = Variables[23]DATA$Xk  castshadow.val = Variables[24]DATA$k  pointwidth.val = Variables[25]DATA$k  objectra.val = Variables[26]DATA$Hl  objectrafile.val = Variables[27]DATAl  elif (module == 'global'):DATAl  gi.val = Variables[0]DATA (m  gisteps.val = Variables[1]DATA$xm  radiosity.val = Variables[2]DATA m  radnum.val = Variables[3]DATA n  dirw.val = Variables[4]DATA hn  image.val = Variables[5]DATA$n  filename.val = Variables[6]DATA o  file.val = Variables[7]DATA Xo  buffer.val = Variables[8]DATA o  anim.val = Variables[9]DATA$o  rendert.val = Variables[10]DATA$Hp  menuval.val = Variables[11]DATA$p  samples.val = Variables[12]DATA p  srate.val = Variables[13]DATA 8q  debug.val = Variables[14]DATA$q  maxerror.val = Variables[15]DATA(q  maxpixeldist.val = Variables[16]DATA 0r  geom.val = Variables[17]DATA$r  motionblur.val = Variables[18]DATA(r  motionblurframe.val = Variables[19]DATA (s  dof.val = Variables[20]DATA xs  stop.val = Variables[21]DATA s  lenght.val = Variables[22]DATA$t  distance.val = Variables[23]DATA ht  autogs.val = Variables[24]DATA$t  progress.val = Variables[25]DATA$u  indirectgi.val = Variables[26]DATA Xu  areagi.val = Variables[27]DATA u  gianim.val = Variables[28]DATA$u  patchsize.val = Variables[29]DATA$Hv  elemsize.val = Variables[30]DATA$v  minsize.val = Variables[31]DATA v  recurs.val = Variables[32]DATA 8w  gain.val = Variables[33]DATA w  gamma.val = Variables[34]DATA w  lightx.val = Variables[35]DATA$(x  hiddenlayer.val = Variables[36]DATA$xx  gisphere.val = Variables[37]DATA$x  finalgather.val = Variables[38]DATA y  hdri.val = Variables[39]DATA hy  hdritex.val = Variables[40]DATA y  rgba.val = Variables[41]DATA$z  reconvert.val = Variables[42]DATA(Xz  prmanrenderer.val = Variables[43]DATA$z  bmrtrenderer.val = Variables[44]DATA({  entropyrenderer.val = Variables[45]DATA$X{  dlrenderer.val = Variables[46]DATA({  aqsisrenderer.val = Variables[47]DATA(|  pixierenderer.val = Variables[48]DATA(X|  prmantexmaker.val = Variables[49]DATA$|  bmrttexmaker.val = Variables[50]DATA(}  entropytexmaker.val = Variables[51]DATA$X}  dltexmaker.val = Variables[52]DATA(}  aqsistexmaker.val = Variables[53]DATA(~  pixietexmaker.val = Variables[54]DATA$X~  preworldra.val = Variables[55]DATA(~  preworldrafile.val = Variables[56] DATA$  postworldra.val = Variables[57]DATA(P  postworldrafile.val = Variables[58] DATA(  ambiSamples.val = Variables[59] DATA$  occlusion.val = Variables[60] DATA,P  #ambiSamplesindex.val = Variables[61] DATA$  indirect.val = Variables[61]DATA  DATA( def writeln(f,x):DATAh  try:DATAx  if (type(x).__name__ == 'string'): # this thing is to combat a bug that saves strings with a \n, (we dont want that)DATA H  nn = string.find(x, '\n')DATA  if (nn > 0):DATA؂  x = x[:nn] + x[nn + 1:]DATA  f.write(str(x))DATA`  f.write('\n')DATA  except:DATA؃  passDATA DATA@ def readint(f):DATA  try:DATA  return int(f.readline())DATA  except:DATA8  passDATAp def readfloat(f):DATA  try:DATA  return float(f.readline())DATA 8  except:DATAp  passDATA def readstr(f):DATA  try:DATA  s = (f.readline())DATAh  nn = string.find(s, '\n')DATA  if (nn > 0):DATA  s = s[:nn] + s[nn + 1:]DATA 8  return sDATA p  except:DATA  print sDATA DATA def saveShaderName(save):DATAX  global sshaderDATA<  if save: f = open(surfaceshadersdir + 'ShaderNames','w')DATA8  else: f = open(surfaceshadersdir + 'ShaderNames','r')DATA h  if save: writeln(f,sshader)DATA  else: sshader = readstr(f)DATA  f.close()DATA8 try: DATA4p  f = open(surfaceshadersdir + 'ShaderNames','r')DATAЋ except:DATA  saveShaderName(1)DATA H  Register (gui, event, bevent)DATA DATAȌ saveShaderName(0)DATA  Register (gui, event, bevent)DATAX sshader2 = sshaderDATA DATAȍ DATA def newdirs():DATA`8  global pdir, globalpropertiesdir, surfaceshadersdir, displacementshadersdir, objectsettingsdirDATAhȎ  global lightsettingsdir, lightsettingsdir, meshesdir, imagesdir, shadowdir, texturesdir, shadersdirDATA`  if (os.name != "posix"):DATA  rootdir = '/BlenderMan/'DATA  else:DATA0(  rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$  pdir = rootdir + dirw.val + '/'DATA4ؐ  globalpropertiesdir = pdir + '/GlobalProperties/'DATA08  surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<  displacementshadersdir = pdir + '/DisplacementShaders/'DATA0  objectsettingsdir = pdir + '/ObjectSettings/'DATA0`  lightsettingsdir = pdir + '/LightSettings/'DATA  meshesdir = pdir + '/Meshes/'DATA   imagesdir = pdir + '/images/'DATA `  shadowdir = pdir + '/shadows/'DATA$  texturesdir = pdir + '/textures/'DATA$  shadersdir = pdir + '/shaders/'DATAP  try:DATA  os.mkdir(pdir)DATA Ȕ  os.mkdir(globalpropertiesdir)DATA   os.mkdir(surfaceshadersdir)DATA$h  os.mkdir(displacementshadersdir)DATA  os.mkdir(meshesdir)DATA  os.mkdir(objectsettingsdir)DATA P  os.mkdir(lightsettingsdir)DATA  os.mkdir(shadowdir)DATA  os.mkdir(texturesdir)DATA0  os.mkdir(imagesdir)DATAx  except OSError: DATA  passDATA DATA, def writeHeader(ribfile, frames, frames2):DATA\x  ribfile.write('Option "searchpath" "texture" ["%s"]\n'%(texturesdir + ":" + shadowdir))DATA  display = Scene.GetCurrent()DATA,P  context = display.getRenderingContext()DATA$  yResolution = context.imageSizeY()DATA$  xResolution = context.imageSizeX()DATA H  if xResolution >= yResolution:DATA,  factor = yResolution / float(xResolution)DATA  else:DATA,(  factor = xResolution / float(yResolution)DATA  if Blender.World.Get() != []:DATA$Л  world = Blender.World.Get()[0]DATA  if world.hor != [0, 0, 0]:DATApp  ribfile.write('Imager "background" "color bgcolor" [%s %s %s]\n'%(world.hor[0], world.hor[1], world.hor[2]))DATA$  scene = Blender.Scene.GetCurrent()DATA$`  camobj = scene.getCurrentCamera()DATA<  camera = Blender.Camera.Get(camobj.getData().name)DATAp  ribfile.write('Projection "perspective" "fov" [%s]\n'%(360.0 * atan(factor * 16.0 / camera.lens) /pi))DATA@  ribfile.write('Format %s %s 1\n' % (xResolution, yResolution))DATAH(  ribfile.write("Clipping %s %s\n" % (camera.clipStart, camera.clipEnd))DATAD  ribfile.write('PixelSamples %s %s\n'%(samples.val, samples.val))DATA  try:DATA<H  ribfile.write('Exposure %s %s\n'%(gain.val, gamma.val))DATA  except: DATA  passDATA  if (menuval.val != 2):DATAh  if (dof.val == 1): DATAT  ribfile.write('DepthOfField %s %s %s\n'%(stop.val, lenght.val, distance.val))DATA<0  ribfile.write('ShadingRate %s\n'%sratelist[srate.val - 1])DATA4  if ((radiosity.val == 1) & (menuval.val == 2)):DATA@  ribfile.write('Option "radiosity" "steps" [%s]\n'%radnum.val)DATAHh  ribfile.write('Attribute "indirect" "maxerror" [%s]\n'%maxerror.val)DATAX  ribfile.write('Attribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATAPh  ribfile.write('Attribute "radiosity" "float patchsize" [%s]'%patchsize.val)DATAL  ribfile.write('Attribute "radiosity" "float elemsize" [%s]'%elemsize.val)DATAL`  ribfile.write('Attribute "radiosity" "float minsize" [%s]'%minsize.val)DATAإ  if (motionblur.val == 1):DATA$  ribfile.write('Shutter 0 1\n')DATA0p  if (menuval.val == 1) or (menuval.val == 4):DATAHЦ  ribfile.write('Option "trace" "integer maxdepth" [%s]\n'%recurs.val)DATA0H  elif (menuval.val == 2) or (menuval.val == 3):DATAD  ribfile.write('Option "render" "max_raylevel" [%s]\n'%recurs.val)DATAL  ribfile.write('Option "statistics" "integer endofframe" [%s]\n'%debug.val)DATA0  if ((indirectgi.val == 1) & (gi.val == 1)):DATA,  if ((gianim.val == 0) & (frames2 == 0)):DATAPH  ribfile.write('Option "indirect" "string savefile" ["%s/irr.dat"]\n'%pdir)DATA0ȩ  elif ((frames2 > 0) or (gianim.val == 1)):DATA(  if (anim.val == 1):DATAPp  ribfile.write('Option "indirect" "string seedfile" ["%s/irr.dat"]\n'%pdir)DATA  if (menuval.val == 3):DATA@8  ribfile.write('Option "indirect" "integer maxbounce" [3]\n')DATA DATAث DATA( def writeTransform(ribfile, lampobj):DATA`  global cframeDATA  Blender.Get('curframe')DATA  Blender.Window.RedrawAll()DATA0  if (lampobj == 0):DATA$p  camobj = scene.getCurrentCamera()DATA  else:DATA  camobj = lampobjDATA,8  caminvmatrix = camobj.getInverseMatrix()DATA  ribfile.write("Transform [" +DATA<  "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATAH  (caminvmatrix[0][0],DATA  caminvmatrix[0][1],DATAد  -caminvmatrix[0][2],DATA  caminvmatrix[0][3],DATAh  caminvmatrix[1][0],DATA  caminvmatrix[1][1],DATA  -caminvmatrix[1][2],DATA@  caminvmatrix[1][3],DATA  caminvmatrix[2][0],DATAб  caminvmatrix[2][1],DATA  -caminvmatrix[2][2],DATA`  caminvmatrix[2][3],DATA  caminvmatrix[3][0],DATA  caminvmatrix[3][1],DATA8  -caminvmatrix[3][2],DATA  caminvmatrix[3][3]))DATAȳ DATA def ambientLight(ribfile):DATA @  if Blender.World.Get() != []:DATA$  world = Blender.World.Get()[0]DATA(  if (occlusion.val) or (indirect.val):DATAH8  ribfile.write('\tAttribute "visibility" "transmission" "opaque"\n')DATA  else:DATA  ribfile.write('\tLightSource "ambientlight" 998 "float intensity" [1] "color lightcolor" [%s %s %s]\n\n'%(world.amb[0], world.amb[1], world.amb[2]))DATA DATA def checkLamps(ribfile):DATA(  global selectednameDATAp  lampnum = 0DATA(  for objects in Blender.Object.Get():DATA  name = objects.getName()DATA$P  if (objects.getType() == "Lamp"):DATA  lampnum += 1DATA  resetObject()DATA  selectedname = nameDATA$h  Register (gui, event, bevent)DATA  saveload(0,0,'object')DATA$  Register (gui, event, bevent)DATA(P  writeLamps(ribfile, name, lampnum)DATA  ribfile.write("\n")DATA DATA( def renderShadows(ribfile, frames2):DATA$x  global selectedname, partitionnameDATA(Ȼ  display = Blender.Scene.GetCurrent()DATA$  cframe = Blender.Get('curframe')DATA(p  for objects in Blender.Object.Get():DATAȼ  name = objects.getName()DATA$  if (objects.getType() == "Lamp"):DATA`  resetObject()DATA$  Register (gui, event, bevent)DATA  selectedname = nameDATA8  saveload(0,0,'object')DATA$  Register (gui, event, bevent)DATA о  if (rendershadow.val == 1):DATA  if (anim.val == 1):DATA,h  shadowframe = Blender.Get('curframe')DATA  else:DATA  shadowframe = ''DATAH@  ribfiledir = os.path.normpath(shadowdir + name + str(shadowframe))DATA(  shadowrib = open(ribfiledir, 'w')DATA4  if ((menuval.val == 4) & (os.name != "posix")):DATAp  ribfile.write('ReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + shadowdir + name + str(shadowframe))))))DATA 8  else:DATAPp  ribfile.write('ReadArchive "%s"\n'%(shadowdir + name + str(shadowframe)))DATA(  shadowrib.write('FrameBegin 0\n')DATA(H  lampobj = Blender.Object.Get(name)DATA4  lamp = Blender.Lamp.Get(lampobj.getData().name)DATA|  if ((lamp.getMode() & lamp.Modes['Shadows']) & (lamp.type == 2)): # if it is set to render shadow and is a spotlightDATA  if (buff256.val == 1):DATA  buffer = 256DATA 0  elif (buff512.val == 1):DATA  buffer = 512DATA  elif (buff1024.val == 1):DATA  buffer = 1024DATA P  elif (buff2048.val == 1):DATA  buffer = 2048DATAP  shadowrib.write('Projection "perspective" "fov" %s\n' %(lamp.spotSize))DATA,`  shadowrib.write('PixelSamples 1 1\n')DATA4  if (menuval.val != 2) and (menuval.val != 3):DATAD  shadowrib.write('Hider "hidden" "depthfilter" "midpoint"\n')DATA  if (menuval.val == 3):DATA4  shadowrib.write('PixelFilter "min" 1 1\n')DATA 0  else:DATA4h  shadowrib.write('PixelFilter "box" 1 1\n')DATA8  shadowrib.write('Hider "hidden" "jitter" [0]\n')DATA(0  writeTransform(shadowrib, lampobj)DATA<  shadowrib.write('Format %s %s 1\n'%(buffer, buffer))DATA\  shadowrib.write('Display "%s/%s%s.pic" "zfile" "z"\n'%(shadowdir, name, shadowframe))DATAx  if menuval.val == 5:DATA,  shadowrib.write('ShadingRate 1\n')DATA   else:DATA,P  shadowrib.write('ShadingRate 4\n')DATA(  shadowrib.write('WorldBegin \n')DATA  shadows = 1DATA8@  createObjects(shadowrib, cframe, shadows, frames2)DATA$  shadowrib.write('WorldEnd \n')DATA  shadowrib.write('MakeShadow "%s/%s%s.pic" "%s/%s%s.tx"\n'%(shadowdir, name, shadowframe, shadowdir, name, shadowframe))DATA$  shadowrib.write('FrameEnd\n')DATA DATA(( def writeLamps(ribfile, name, lampnum):DATA  global selectednameDATA$  lampobj = Blender.Object.Get(name)DATA4  lamp = Blender.Lamp.Get(lampobj.getData().name)DATA4x  x = lampobj.matrix[3][0] / lampobj.matrix[3][3]DATA4  y = lampobj.matrix[3][1] / lampobj.matrix[3][3]DATA48  z = lampobj.matrix[3][2] / lampobj.matrix[3][3]DATA4  tox = -lampobj.matrix[2][0] + lampobj.matrix[3][0]DATA4  toy = -lampobj.matrix[2][1] + lampobj.matrix[3][1]DATA4X  toz = -lampobj.matrix[2][2] + lampobj.matrix[3][2]DATA0  if lamp.getMode() & lamp.Modes['Negative']:DATA  negative = -1DATAX  else:DATA  negative = 1DATA  selectedname = nameDATA   Register (gui, event, bevent)DATAh  saveload(0,0,'object')DATA  if (caustics.val):DATA0  ribfile.write('\tLightSource "caustic" 2\n')DATA(P  ribfile.write('\tIlluminate 2 0\n\n')DATA(  ribfile.write('\tTransformBegin\n')DATAL  ribfile.write('\tAttribute "light" "integer nphotons" [%s]\n'%photon.val)DATA,x  if lamp.getMode() & lamp.Modes['Shadows']:DATA  shadow = 'on'DATA  else:DATAH  shadow = 'off'DATA0  if (menuval.val == 2) or (menuval.val == 4):DATA  if (raytraceshadow.val == 1):DATAH8  ribfile.write('\tAttribute "light" "shadows" ["%s"]\n' % (shadow))DATA  else:DATA<  ribfile.write('\tAttribute "light" "shadows" ["off"]\n')DATAP  if (lamp.type == 2):DATA  if (anim.val == 1):DATA0  shadowframe = '%s'%(Blender.Get('curframe'))DATA@  else:DATAx  shadowframe = ''DATA$  energratio = lamp.dist * negativeDATA8  if ((shadow == 'on') and (raytraceshadow.val == 1)):DATAp  if (menuval.val == 3):DATA  shadowname = 'shadow'DATA  elif (menuval.val == 1):DATAH  shadowname = 'raytrace'DATA  elif (menuval.val == 6):DATAH  ribfile.write('\t(Attribute "visibility" "transmission" "opaque")')DATAP  shadowname = 'raytrace'DATA  else:DATA  shadowname = ''DATA  else:DATA4H  if (shadow == 'on') and (rendershadow.val == 1):DATA,  shadowname = name + shadowframe + '.tx'DATA  else:DATA8  shadowname = ''DATA@x  if (menuval.val == 6) and (shadow == 'off'): #Pixie RenderDATA  ribfile.write('\tLightSource "spotlight" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAp  elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 0): #Pixie Render with SpotShadowsDATA  ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAt  elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 1): #Pixie Render with Ray Spot shadowsDATA  ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA  else:DATA  ribfile.write('\tLightSource "bml" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA  %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA0  elif (lamp.type == 1):DATAx  energratio = negativeDATAx  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATAh  ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATAp  else:DATA  if (menuval.val == 3):DATAD  ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowsamples" [%s] "float shadowblur" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val))DATA`  elif (menuval.val == 1):DATAD  ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["raytrace"] "float samples" [%s] "float width" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val * 100 + 1))DATA  elif (lamp.type == 0):DATA$`  energratio = lamp.dist * negativeDATAx  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATAX  ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B))DATALH  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 6):DATA  ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B))DATA  else:DATA  if (menuval.val == 3): DATA08  ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float shadowblur" [%s] "float shadowsamples" [%s] "string shadowname" ["shadow"]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, eblur.val, esamples.val))DATA  elif (menuval.val == 1): DATA  ribfile.write('\tLightSource "shadowpoint" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float width" [%s] "float samples" [%s] "string sfpx" ["raytrace"] "string sfnx" ["raytrace"] "string sfpy" ["raytrace"] "string sfny" ["raytrace"] "string sfpz" ["raytrace"] "string sfnz" ["raytrace"]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, eblur.val * 100 + 1, esamples.val))DATA8  if (raytraceshadow.val == 1) and (menuval.val == 6):DATA0  print 'raytrace lamp'DATAHx  ribfile.write('Attribute "visibility" "transmission" "opaque"\n')DATA  ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "shadowname" "raytrace"\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA  elif (lamp.type == 3):DATAX  energratio = negativeDATA  ribfile.write('\tLightSource "hemilight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float falloff" [0]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA  if (caustics.val == 1):DATA$  ribfile.write('\tTransformEnd\n')DATAP DATA def writeMatrix(ribfile, name):DATA  Blender.Get('curframe')DATA  Blender.Window.RedrawAll()DATA,`  matrix = Blender.Object.Get(name).matrixDATA$  ribfile.write("\t\tTransform [" +DATA<  "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATA p  (matrix[0][0], matrix[0][1],DATA  matrix[0][2], matrix[0][3],DATA   matrix[1][0], matrix[1][1],DATA `  matrix[1][2], matrix[1][3],DATA  matrix[2][0], matrix[2][1],DATA  matrix[2][2], matrix[2][3],DATA P  matrix[3][0], matrix[3][1],DATA  matrix[3][2], matrix[3][3]))DATA DATA  def resetObject():DATA`  convertbm.val = 0DATA  objectshadermenu.val = 0DATA  geom.val = 1DATA(  meshexport.val = 1DATAh  pointwidth.val = 1.0DATA   uv.val = 0DATA  arealightMESH.val = 0DATA0  areasamples.val = 20DATAx  recievecaustics.val = 0DATA  transmittcaustics.val = 0DATA$  transmittcausticsslider.val = 1.4DATAX  caustics.val = 0DATA  photon.val = 4000DATA  buff256.val = 0DATA  buff512.val = 1DATAX  buff1024.val = 0DATA  buff2048.val = 0DATA  eblur.val = 0.00DATA  esamples.val = 1DATAX  amesh.val = 0DATA  reflectcaustics.val = 0DATA  raytraceshadow.val = 0DATA(  rendershadow.val = 0DATAp  bias.val = 0.25DATA  rvisibility.val = 0DATA  castshadow.val = 1DATA8  objectra.val = 0DATAx DATA def resetShaderVal():DATA  if (shadermenu.val == 1):DATA8  ambientshader.val = 1DATA  diffuseshader.val = 0.5DATA  specularshader.val = 0.5DATA  roughnessshader.val = 0.1DATAX  if (shadermenu.val == 2):DATA  ambientshader.val = 0.2DATA  diffuseshader.val = 0.0DATA0  specularshader.val = 0.5DATA x  roughnessshader.val = 0.05DATA  coefshader = 1.5DATA  reflblurshader = 0DATAP  refrblurshader.val = 0DATA  reflsamples.val = 0DATA  refrsamples.val = 0DATA(  if (shadermenu.val == 3):DATAp  ambientshader.val = 1.0DATA  diffuseshader.val = 0.1DATA  specularshader.val = 1.0DATAH  roughnessshader.val = 0.2DATA  if (shadermenu.val == 5):DATA  ambientshader.val = 1DATA   diffuseshader.val = 0.5DATAh  specularshader.val = 0.5DATA  roughnessshader.val = 0.1DATA(  textshader.val = 'Surface "plastic"'DATA,P  textshaderd.val = 'Displacement "bumpy"'DATA  texturem.val = ''DATA  textnor.val = 0DATA(  illuminationmenu.val = 0DATAp DATA0 def writeShader(ribfile, name, meshobj, anim):DATA  global texturefile, txdoneDATA H  if (arealightMESH.val == 0):DATA  MName = '"plastic"'DATA  else: DATA  MName = ''DATA,X  if ((uv.val == 1) and (meshobj != 10)):DATA0  mesh = Blender.NMesh.GetRawFromObject(name)DATA  if mesh.faces[0].image:DATA,X  imagename = mesh.faces[0].image.filenameDATA   imagename = imagename[:-3]DATA  imagename = imagenameDATA$H  imagename = imagename + 'tif'DATAT  imagename = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(imagename)[1])DATAh  rawimage = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(mesh.faces[0].image.filename)[1])DATA8  infile = open(mesh.faces[0].image.filename, 'rb')DATA$  outfile = open(rawimage, 'wb')DATA h  outfile.write(infile.read())DATA  outfile.close()DATA  infile.close()DATA`8  imagenameconv = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tif'DATAX  txname = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tx'DATA(P  if os.path.isfile(imagename) == 0:DATA   try:DATA$  totiff.SetOutDir(texturesdir)DATA(0  ok = totiff.ConvertShort(rawimage)DATA$  if not ok[0]: # error occurredDATA(  print ok[1] # print error messageDATA 0  except:DATA h  if (os.name != "posix"):DATA   try:DATAd  os.system('/ImageMagick/convert.exe -depth 8 -compress none %s %s'%(rawimage, imagename))DATA  except OSError:DATA  print "\nYou do not have ImageMagic installed in c:\ImageMagic so texture conversion will not be possible. You will havto do it manualy.\nYou can find the textures to convert in c:\BlenderMan\PROJECTNAME\textures\\n"DATA   else:DATA   try:DATAPH  os.system('convert -depth 8 -compress none %s %s'%(rawimage, imagename))DATA  except OSError:DATA0  print "\nCould not find ImageMagic\n"DATA,p  imagename = mesh.faces[0].image.filenameDATA   imagename = imagename[:-3]DATA  imagename = imagenameDATA `  tdlname = imagename + 'tx'DATA$  imagename = imagename + 'tif'DATA4!  imagename = '%s'%(os.path.split(imagename)[1])DATA0`!  tdlname = '%s'%(os.path.split(tdlname)[1])DATAH!  MName = '"bms" "string texname" ["%s"] "float maptype" 3'%(tdlname)DATA@8"  if ((os.path.isfile(txname) == 0) or (reconvert.val == 1)):DATA"  if menuval.val == 1:DATAH"  os.system('%s %s %s'%(prmantexmaker.val, imagenameconv, txname))DATAh#  elif menuval.val == 2:DATAH#  os.system('%s %s %s'%(bmrttexmaker.val, imagenameconv, txname))DATA($  elif menuval.val == 3:DATAHp$  os.system('%s %s %s'%(entropytexmaker.val, imagenameconv, txname))DATA$  elif menuval.val == 4:DATAD0%  os.system('%s %s %s'%(dltexmaker.val, imagenameconv, txname))DATA%  elif menuval.val == 5:DATAH%  os.system('%s %s %s'%(aqsistexmaker.val, imagenameconv, txname))DATA`&  elif menuval.val == 6:DATAH&  os.system('%s %s %s'%(pixietexmaker.val, imagenameconv, txname))DATA '  else: DATAX'  MName = '"plastic"'DATA$'  if (transmittcaustics.val == 1):DATA0'  mesh = Blender.NMesh.GetRawFromObject(name)DATAP(  try:DATA<(  material = Blender.Material.Get(mesh.materials[0].name)DATA(  mr = material.RDATA0)  mg = material.GDATAp)  mb = material.BDATA@)  except: # if the mesh doesnt have a material default to whiteDATA *  mr = 1DATA X*  mg = 1DATA *  mb = 1DATA`*  ribfile.write('\t\tAttribute "caustic" "color refractioncolor" [%s %s %s]\n'%(mr, mg, mb))DATAhX+  ribfile.write('\t\tAttribute "caustic" "float refractionindex" [%s]\n'%transmittcausticsslider.val)DATA +  if (reflectcaustics.val == 1):DATAP@,  ribfile.write('\t\tAttribute "caustic" "color specularcolor" [.9 .9 .9]\n')DATA ,  if (recievecaustics.val == 1):DATA(-  ribfile.write('\t\tIlluminate 2 1\n')DATA8h-  if ((shadermenu.val == 1) & (arealightMESH.val != 1)):DATA0-  if ((convertbm.val != 0) or (meshobj == 10)):DATA0.  ribfile.write('\t\tSurface "plastic" "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val))DATA</  elif ((shadermenu.val == 2) & (arealightMESH.val != 1)):DATA0h/  if ((convertbm.val != 0) or (meshobj == 10)):DATA8/  ribfile.write('\t\tDeclare "eta" "uniform float"\n')DATA<00  ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@0  ribfile.write('\t\tDeclare "refrblur" "uniform float"\n')DATA@1  ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATADx1  ribfile.write('\t\tDeclare "refrraysamples" "uniform float"\n')DATA@1  ribfile.write('\t\tDeclare "envname" "uniform string"\n')DATAX2  if (menuval.val == 3):DATA2  evar = ('"float reflblur" [%s] "float refrblur" [%s] "string envname" ["reflection"] "string envspace" ["current"] "refrblur" %s "eta" %s'%(reflblurshader.val, refrsamples.val, refrblurshader.val, coefshader.val))DATA3  elif (menuval.val == 2):DATA3  evar = '"blur" [%s] "raysamples" [%s] "refrraysamples" %s "refrblur" %s "eta" %s'%(reflblurshader.val, reflsamples.val, refrsamples.val, refrblurshader.val, coefshader.val)DATA 4  else:DATA5  evar = ''DATAH5  ribfile.write('\t\tSurface "glass" "Ka" %s "Kd" %s "Ks" %s "roughness" %s "Kr" %s %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, kr.val, evar))DATA<06  elif ((shadermenu.val == 3) & (arealightMESH.val != 1)):DATA06  if ((convertbm.val != 0) or (meshobj == 10)):DATA<6  ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@`7  ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATA7  if (menuval.val == 3):DATA`8  evar = '"string envname" ["reflection"] "string envspace" ["current"] "float twosided" 1'DATA8  elif (menuval.val == 2):DATAP8  evar = ('"raysamples" %s "blur" %s'%(reflsamples.val, reflblurshader.val))DATA p9  else:DATA9  evar = ''DATA9  ribfile.write('\t\tSurface "shiny" "Ka" %s "Kd" %s "Ks" %s "roughness" %s %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, evar))DATA<:  elif ((shadermenu.val == 4) & (arealightMESH.val != 1)):DATA0(;  if ((convertbm.val != 0) or (meshobj == 10)):DATAt;  ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA,(<  ribfile.write('\t\t%s\n'%textshader.val)DATA0<  ribfile.write('\t\t%s\n'%textshaderd.val)DATA<<  elif ((shadermenu.val == 5) & (arealightMESH.val != 1)):DATA0H=  if ((convertbm.val != 0) or (meshobj == 10)):DATAt=  ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA H>  txname = texturem.val[:-3]DATA>  txname = txname + 'tx'DATA>  tdlname = txnameDATA$ ?  txname = texturesdir + txnameDATAp?  converttex = 1DATA$?  if os.path.isfile(txname) == 0:DATA@  for texture in txdone:DATA H@  if (txname == texture):DATA@  converttex = 0DATA @  breakDATAA  if (converttex == 1):DATA`A  if (menuval.val == 1):DATATA  os.system('%s %s %s'%(prmantexmaker.val, texturesdir + texturem.val, txname))DATA (B  elif (menuval.val == 2):DATATxB  os.system('%s %s %s'%(bmrttexmaker.val, texturesdir + texturem.val, txname))DATA B  elif (menuval.val == 3):DATAXHC  os.system('%s %s %s'%(entropytexmaker.val, texturesdir + texturem.val, txname))DATA C  elif (menuval.val == 4):DATAT D  os.system('%s %s %s'%(dltexmaker.val, texturesdir + texturem.val, txname))DATA D  elif (menuval.val == 5):DATATD  os.system('%s %s %s'%(aqsistexmaker.val, texturesdir + texturem.val, txname))DATA pE  elif (menuval.val == 6):DATATE  os.system('%s %s %s'%(pixietexmaker.val, texturesdir + texturem.val, txname))DATA @F  txdone = txdone + [txname]DATAF  txname = tdlnameDATAF  if (textnor.val == 1):DATAG  ribfile.write('\t\tDisplacement "bmd" "string texname" ["%s"] "float maptype" %s "float Km" %s\n'%(txname, projection.val - 1, norm.val))DATAG  ribfile.write('\t\tSurface "bms" "Ka" %s "Kd" %s "Ks" %s "roughness" %s "string texname" ["%s"] "float maptype" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, txname, projection.val - 1))DATA0H  if ((convertbm.val == 0) & (meshobj != 10)):DATA0PI  mesh = Blender.NMesh.GetRawFromObject(name)DATAI  if (MName == ''):DATA I  returnDATA(J  try:DATA<`J  material = Blender.Material.Get(mesh.materials[0].name)DATA$J  hard = 1-(material.hard*0.00392)DATAK  ribfile.write('\t\tSurface %s "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(MName, material.amb, material.ref, material.spec, hard))DATA K  except:DATA0L  ribfile.write('\t\tSurface %s\n'%(MName))DATAhL  if (meshobj != 10):DATA0L  mesh = Blender.NMesh.GetRawFromObject(name)DATAM  try:DATAHM  if mesh.materials:DATA<M  material = Blender.Material.Get(mesh.materials[0].name)DATATM  ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATAxN  except: passDATA N  if (arealightMESH.val == 1):DATA,O  ribfile.write('\t\tSurface "constant"\n')DATAL`O  ribfile.write('\t\tAttribute "light" "nsamples" [%s]\n'%areasamples.val)DATAO  if (menuval.val == 2):DATA@ P  ribfile.write('\t\tAttribute "light" "shadows" ["on"]\n')DATA0P  mesh = Blender.NMesh.GetRawFromObject(name)DATAP  try:DATA<(Q  material = Blender.Material.Get(mesh.materials[0].name)DATAQ  if (menuval.val == 3):DATAQ  ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowbias" [0.15]\n'%(material.emit * 100, material.R, material.G, material.B))DATAR  elif (menuval.val == 2):DATA(S  ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(material.emit * 100, material.R, material.G, material.B))DATA S  except:DATAx0T  ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(0.7 * 100, 1, 1, 1))DATAT DATA8U def createObjects(ribfile, cframe, shadows, frames2):DATATpU  global sshader, selectedname, thisone, meshobjects, xbar, meshnum, partitionnameDATAU  meshobjects = 0.0DATA0V  thisone = 0DATApV  meshnum = 0DATAV  objecttime = ''DATA(V  for objects in Blender.Object.Get():DATAHW  name = objects.getName()DATAW  try:DATADW  if (objects.getType() == "Mesh"): meshobjects = meshobjects + 1DATA 8X  except: DATApX  passDATA(X  for objects in Blender.Object.Get():DATAY  name = objects.getName()DATAHY  resetObject()DATA Y  area = 0DATA$Y  obj = Blender.Object.Get(name)DATAZ  i = 0DATA0HZ  while (obj.Layer>>i): # convert layer numberDATAZ  i = i + 1DATA Z  if (i == hiddenlayer.val):DATA8[  layer = 1DATAx[  else:DATA[  layer = 0DATA8[  if ((objects.getType() == "Mesh") & (layer == 0)):DATAX\  meshnum = meshnum + 1DATA(\  meshobj = Blender.Object.Get(name)DATA$\  obj = Blender.Object.Get(name)DATAH]  selectedname = nameDATA$]  Register (gui, event, bevent)DATA]  saveload(0,0,'object')DATA(^  if (shadows == 0):DATA(p^  ribfile.write('\tAttributeBegin\n')DATA0^  if ((shadows == 0) and (objectra.val == 1)):DATA@(_  ribfile.write('\t\tReadArchive "%s"\n' %(objectrafile.val))DATA_  if (shadows != 1):DATA0_  mesh = Blender.NMesh.GetRawFromObject(name)DATA @`  if (len(mesh.faces) == 0):DATA(`  ribfile.write('\tAttributeEnd\n')DATA`  del(mesh)DATA (a  returnDATA`a  if (mesh.materials):DATA a  try:DATA@a  material = Blender.Material.Get(mesh.materials[0].name)DATATPb  ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATAdb  ribfile.write("\t\tOpacity [%s %s %s]\n" %(material.alpha, material.alpha, material.alpha))DATA`c  except:DATA c  passDATAc  del(mesh)DATAd DATA Hd  if (motionblur.val == 1):DATA,d  ribfile.write('\tMotionBegin [0 1]\n')DATA(d  Blender.Set('curframe', cframe) DATA He  writeMatrix(ribfile, name)DATA<e  Blender.Set('curframe', cframe + motionblurframe.val)DATA f  writeMatrix(ribfile, name)DATA$Pf  ribfile.write('\tMotionEnd\n')DATA(f  Blender.Set('curframe', cframe) DATA f  else:DATA 0g  writeMatrix(ribfile, name)DATA,g  namelist = string.split(sshader, "|")DATAg  if len(namelist) > 1: DATA@ h  surfaceshadername.val = namelist[objectshadermenu.val - 1] DATA$h  Register (gui, event, bevent)DATAh  if (convertbm.val == 1):DATA(i  saveload(0,1,'shader')DATA$pi  Register (gui, event, bevent)DATA i  if (castshadow.val == 1):DATAj  op = "Os"DATA Pj  elif (castshadow.val == 2):DATAj  op = "opaque"DATA j  elif (castshadow.val == 3):DATA40k  if (menuval.val == 1) or (menuval.val == 4):DATAk  op = "shader"DATA k  else:DATAl  op = "shade"DATA Hl  elif (castshadow.val == 4):DATA4l  if (menuval.val == 1) or (menuval.val == 4):DATAl  op = "transparent"DATA @m  else:DATAxm  op = "none"DATA0m  if (menuval.val == 1) or (menuval.val == 4):DATATn  ribfile.write('\t\tAttribute "visibility" "string transmission" ["%s"]\n'%op)DATA4n  elif (menuval.val == 2) or (menuval.val == 3):DATAPn  ribfile.write('\t\tAttribute "render" "string casts_shadows" ["%s"]\n'%op)DATA xo  if (rvisibility.val == 1):DATAo  if (menuval.val == 3):DATAHp  ribfile.write('\t\tAttribute "visibility" "integer camera" [0]\n')DATA p  elif (menuval.val == 2):DATAHp  ribfile.write('\t\tAttribute "render" "integer visibility" [2]\n')DATAPq  if (shadows == 0):DATA4q  writeShader(ribfile, name, meshobj, frames2)DATAq  if (amesh.val == 1):DATA@r  objecttime = frames2DATA r  else:DATAr  objecttime = ''DATA s  if (motionblur.val != 1):DATA,Ps  if ((frames2 == 0) or amesh.val == 1):DATAs  if (geom.val == 1):DATAHs  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8ht  check(name, meshfile, meshobj, meshnum, shadows)DATAt  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA\u  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA `v  else:DATA v  if (meshexport.val == 2):DATA,v  if ((frames2 == 0) or amesh.val == 1):DATA@w  if (geom.val == 1):DATAHw  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8x  check(name, meshfile, meshobj, meshnum, shadows)DATAhx  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + objecttime + ".rib")))))DATA\hy  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA y  else:DATA(z  if (amesh.val != 1):DATApz  if (frames2 == 0):DATAz  if (geom.val == 1):DATAL{  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA<x{  check(name, meshfile, meshobj, meshnum, shadows)DATA{  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + objecttime + ".rib")))))DATA\|  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA h}  else:DATA(}  Blender.Set('curframe', cframe) DATA$}  Blender.Window.RedrawAll()DATAH~  if (geom.val == 1):DATAH~  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8  check(name, meshfile, meshobj, meshnum, shadows)DATA0p  ribfile.write('\tMotionBegin [0 1]\n')DATA  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA\؀  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA<`  Blender.Set('curframe', cframe + motionblurframe.val)DATA$ȁ  Blender.Window.RedrawAll()DATA4  objecttime = frames2 + motionblurframe.valDATAx  if (geom.val == 1):DATAP  meshfile = open('%s/%s%s.rib'%(meshesdir,name, str(objecttime)), 'w')DATA8@  check(name, meshfile, meshobj, meshnum, shadows)DATA  if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA`  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, str(objecttime)))DATA(@  ribfile.write('\tMotionEnd\n')DATA(  Blender.Set('curframe', cframe) DATA$  Blender.Window.RedrawAll()DATA@  objecttime = frames2DATA  if (shadows == 0):DATA(І  ribfile.write('\tAttributeEnd\n')DATA (  if (arealightMESH.val == 1):DATA,x  ribfile.write('\tIlluminate 999 1\n')DATAЇ DATA( def drawBar(meshnum, qwerty, pixels):DATAX  if (progress.val == 1):DATA$  global thisone, meshobjects, xbarDATA  xbar = 0DATA(  xbar = qwertyDATAh  if (xbar < 10): xbar = 11DATA  Draw()DATA0  elif ((progress.val == 0) & (anim.val == 1)):DATA(H  testtime = Blender.Get('curframe')DATA DATA8Њ def check(name, meshfile, meshobj, meshnum, shadows):DATA8  if (shadows != 1):DATA x  print 'Exporting: %s'%nameDATA0ȋ  mesh = Blender.NMesh.GetRawFromObject(name)DATA (  if (len(mesh.faces) == 0):DATAx  del(mesh)DATA  returnDATA  if (meshexport.val == 1):DATA$8  pointspolygon(meshfile, mesh)DATA  elif (meshexport.val == 2):DATA0؍  polygon(mesh, meshfile, meshobj, meshnum)DATA 8  elif (meshexport.val == 3):DATA  subdivmesh(meshfile, mesh)DATA ؎  elif (meshexport.val == 4):DATA(  points(meshfile, mesh)DATA p  elif (meshexport.val == 5):DATA  general(meshfile, mesh)DATA   elif (meshexport.val == 6):DATAX  bilinear(meshfile, mesh)DATA  del(mesh)DATAؐ  meshfile.close()DATA DATA H def pointspolygon(file, mesh): DATA  global meshnumDATA$ؑ  testtime = Blender.Get('curframe')DATA (  update = 5DATA`  colorif = 0DATA  perso = 0.0DATA  pixels = 0.0DATA  update = 100DATA `  index = 0DATA  facenum = len(mesh.faces)DATA  if menuval.val != 2:DATA(  if mesh.hasFaceUV() == 1:DATA8p  file.write('Declare "st" "facevarying float[2]"\n')DATA$ؔ  file.write("PointsPolygons [");DATA(  for face in mesh.faces:DATA,p  if len(face.v) == 4 and menuval.val == 2:DATAȕ  file.write('3 3 ')DATA  else:DATA$H  file.write('%s '%(len(face.v)))DATA  index = index + 1DATA0ؖ  if ((index == update) or (index == facenum)):DATA8  update = update + 100DATA  pixels = 619DATA(  perso = float(index) / float(facenum)DATA,  qwerty = float(pixels) * float(perso) DATA$p  drawBar(meshnum, qwerty, pixels)DATA  file.write("] ")DATA  file.write("[ ")DATA@  for face in mesh.faces:DATA  num = len(face.v)DATAș  if num == 3 or num == 4:DATA(  if num == 4 and menuval.val == 2:DATAh  for i in (0,1,2,0,2,3):DATA,  file.write('%s ' % face.v[i].index)DATA   else:DATA@  for vert in face.v:DATA$  file.write('%s ' % vert.index)DATA؛  file.write("]")DATA  file.write('\n"P" [')DATA`  for vert in mesh.verts:DATAD  file.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATA  file.write('] ')DATAX  if mesh.faces[0].smooth:DATA  file.write(' "N" [')DATA  for vert in mesh.verts:DATAD0  file.write("%s %s %s " % (vert.no[0], vert.no[1], vert.no[2]))DATA  file.write(']')DATA$  if mesh.hasVertexColours() == 1:DATA(0  vertexcol = range(len(mesh.verts))DATA  file.write('\n"Cs" [')DATAП  for face in mesh.faces:DATA  num = len(face.v)DATA`  if num == 3 or num == 4:DATA$  for vi in range(len(face.v)):DATA0  vertexcol[face.v[vi].index] = face.col[vi]DATAX  for vc in vertexcol:DATAD  file.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATA  file.write(']')DATAP  if (menuval.val != 2):DATA  if mesh.hasFaceUV() == 1:DATA  file.write('\n"st" [')DATA(  for face in mesh.faces:DATAp  num = len(face.v)DATA  if num == 3 or num == 4:DATA$  for vi in range(len(face.v)):DATADX  file.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATAȤ  file.write(']')DATA  else:DATA,@  if (len(mesh.faces[0].uv) != 0):DATA  file.write('\n"st" [ ')DATA  vtuv = [] DATA(  for i in range(len(mesh.verts)): DATAx  vtuv.append(0) DATA  for f in mesh.faces: DATA  for i in range(len(f.uv)): DATAP  uv = f.uv[i]DATA  uv = uv[0], 1.0 - uv[1]DATA  vtuv[f.v[i].index] = uvDATA0  for c in vtuv:DATAp  for d in c: DATA  file.write('%s '%d)DATA  file.write(']')DATA8  file.write('\n')DATAx DATA0 def polygon(mesh, meshfile, meshobj, meshnum):DATA  global meshobjects, iDATAP  i = 0DATA  update = 5DATA  colorif = 0DATA  perso = 0.0DATA@  pixels = 0.0DATA  facenum = len(mesh.faces)DATAȫ  for face in mesh.faces:DATA  if mesh.materials:DATA$X  matname=mesh.materials[0].nameDATA  try:DATA0  material = Blender.Material.Get(matname)DATA<@  if (colorif != material.R + material.G + material.B):DATA4  colorif = material.R + material.G + material.BDATAT  meshfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA  except:DATA  passDATA  if len(mesh.faces[i].v) == 3:DATAH  vertar = 3DATA  else:DATA  vertar = 4DATA  if face.smooth:DATA@  smooth = 1DATA  else:DATA  smooth = 0DATA8  writePoly(mesh,face, meshfile, i, vertar, smooth);DATA `  i = i + 1DATA(  if ((i == update) or (i == facenum)):DATA  update = update + 5DATA8  pixels = 619DATA(x  perso = float(i) / float(facenum)DATA,в  qwerty = float(pixels) * float(perso)DATA$(  drawBar(meshnum, qwerty, pixels)DATAx DATA< def textureUV(i, mesh, va, vb, vc, meshfile, face, number):DATA  try:DATAH  etest = face.uv[0][0]DATA  except:DATA ȴ  returnDATA  meshfile.write('"st" [ ')DATAH  if (number == 1):DATA  for x in [0, 1, 2]:DATA(е  meshfile.write("%s "%face.uv[x][0])DATA0(  meshfile.write("%s "%(1.0 - face.uv[x][1]))DATA  if (number == 2):DATA$ȶ  if len(mesh.faces[i].v) == 3: DATA   returnDATAP  for x in [0, 2, 3]:DATA(  meshfile.write("%s "%face.uv[x][0])DATA0  meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAP  meshfile.write(']\n')DATA DATA8ȸ def writePoly(mesh, face, meshfile, i, vertar, smooth):DATA$0  meshfile.write('Polygon "P" [ ')DATA  for x in [0, 1, 2]:DATAȹ  for y in range(3):DATA  try:DATA4H  meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATA  except Error:DATA  print iDATA  print xDATA X  print yDATA  meshfile.write(']\n')DATAػ  if (smooth == 1):DATA  meshfile.write('"N" [')DATA`  for x in [0, 1, 2]:DATA  for y in range(3):DATA4  meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATAP  meshfile.write(']\n')DATA  number = 1DATA4н  textureUV(i,mesh,0,1,2, meshfile, face, number)DATA0  if (vertar == 4):DATA$p  meshfile.write('Polygon "P" [ ')DATA  for x in [0, 2, 3]:DATA  for y in range(3):DATA4P  meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATA  meshfile.write(']\n')DATA  if (smooth == 1):DATA8  meshfile.write('"N" [')DATA  for x in [0, 2, 3]:DATA  for y in range(3):DATA4  meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATAp  meshfile.write(']\n')DATA  number = 2DATA4  textureUV(i,mesh,0,1,2, meshfile, face, number)DATAX DATA def general(meshfile, mesh):DATA  index = 0DATA,  meshfile.write('PointsGeneralPolygons [')DATAh  for face in mesh.faces:DATA  meshfile.write('1 ')DATA  index = index + 1DATA8  meshfile.write(']\n[')DATA  index = 0DATA  for face in mesh.faces:DATA  meshfile.write(str(nr) + ' ')DATAP  index = index + 1DATA  meshfile.write(']\n[')DATA  index = 0DATA  for f in mesh.faces:DATAX  for v in f.v:DATA(  meshfile.write(str(v.index) + ' ')DATA  index = index + 1DATA0  meshfile.write(']\n"P" [')DATA x  index = 0DATA$  for x in range(len(mesh.verts)):DATA  for y in range(3):DATA4H  meshfile.write(str(mesh.verts[x].co[y]) + '')DATA  index = index + 1DATA  meshfile.write(']\n')DATA0 DATA ` def bilinear(meshfile, mesh):DATA  f = 0DATA  for face in mesh.faces:DATA,0  meshfile.write('Patch "bilinear" "P" [ ')DATA  for x in [3, 2, 0, 1]:DATA  for y in range(3):DATA4  meshfile.write('%s '%mesh.faces[f].v[x].co[y])DATAx  meshfile.write(']\n')DATA  if face.smooth:DATA  meshfile.write('"N" [ ')DATAH  for x in [3, 2, 0, 1]:DATA  for y in range(3):DATA4  meshfile.write('%s '%mesh.faces[f].v[x].no[y])DATA8  meshfile.write(']\n')DATA  f = f + 1DATA DATA def subdivmesh(meshfile, mesh):DATA8  if menuval.val != 2:DATA  if mesh.hasFaceUV() == 1:DATA<  meshfile.write('Declare "st" "facevarying float[2]"\n')DATA80  meshfile.write('SubdivisionMesh "catmull-clark" [')DATA  for face in mesh.faces:DATA  num = len(face.v)DATA  meshfile.write('%s '%(num))DATAp  meshfile.write(']\n[')DATA  for face in mesh.faces:DATA  for vert in face.v:DATA(H  meshfile.write('%s ' % vert.index)DATAD  meshfile.write(']\n["interpolateboundary"] [0 0] [] []\n"P" [') DATA  for vert in mesh.verts:DATAHX  meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATA  meshfile.write(']')DATA  if (menuval.val != 2):DATA`  if mesh.hasFaceUV() == 1:DATA  meshfile.write('\n"st" [')DATA  for face in mesh.faces:DATA@  num = len(face.v)DATA  if num == 3 or num == 4:DATA$  for vi in range(len(face.v)):DATAH(  meshfile.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA  meshfile.write(']')DATA$  if mesh.hasVertexColours() == 1:DATA(8  vertexcol = range(len(mesh.verts))DATA  meshfile.write('\n"Cs" [')DATA  for face in mesh.faces:DATA(  num = len(face.v)DATAp  if num == 3 or num == 4:DATA$  for vi in range(len(face.v)):DATA0  vertexcol[face.v[vi].index] = face.col[vi]DATAh  for vc in vertexcol:DATAH  meshfile.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATA(  meshfile.write(']')DATAp  meshfile.write('\n')DATA DATA def points(meshfile, mesh):DATA 0  meshfile.write('Points "P" [')DATA  for vert in mesh.verts:DATAH  meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATA@@  meshfile.write('] "constantwidth" [%s]\n' % (pointwidth.val))DATA DATA def createGI(ribfile, frames):DATA00  if (areagi.val == 1) and (menuval.val !=6):DATA8  ribfile.write('\tDeclare "casts_shadows" "string"\n')DATAH  ribfile.write('\tAttribute "render" "casts_shadows" ["opaque"]\n')DATATp  ribfile.write('\tLightSource "ambientlight" 998 "lightcolor" [0.02 0.02 0.02]\n')DATA(  ribfile.write('\tAttributeBegin\n')DATA@H  ribfile.write('\t\tAttribute "identifier" "name" ["sky"]\n')DATA`  ribfile.write('\t\tConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 -1573.14 307.099 -988.299 1]\n')DATAXH  ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(  ribfile.write('\t\tAttributeBegin\n')DATA,(  ribfile.write('\t\t\tColor [1 1 1]\n')DATA,  ribfile.write('\t\t\tOrientation "rh"\n')DATA0  ribfile.write('\t\t\tReverseOrientation\n')DATA08  ribfile.write('\t\t\tSurface "constant"\n')DATAL  ribfile.write('\t\t\tAttribute "light" "nsamples" [%s]\n'%gisteps.val)DATA@  ribfile.write('\t\t\tAttribute "light" "shadows" ["on"]\n')DATAh  ribfile.write('\t\t\tAreaLightSource "arealight" 1 "lightcolor" [1 1 1] "intensity" [10000000000]\n')DATA4  ribfile.write('\t\t\tSphere 50000 0 50000 360\n')DATA(x  ribfile.write('\t\tAttributeEnd\n')DATA$  ribfile.write('\tAttributeEnd\n')DATA(  ribfile.write('\tIlluminate 1 1\n')DATA4x  if (indirectgi.val == 1) and (menuval.val !=6):DATA  if (finalgather.val == 0):DATAP(  ribfile.write('\tAttribute "indirect" "float maxerror" [%s]\n'%maxerror.val)DATAX  ribfile.write('\tAttribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATA0  else:DATAHh  ribfile.write('\tAttribute "indirect" "float maxpixeldist" [0]\n')DATAP  ribfile.write('\tAttribute "indirect" "integer nsamples" [%s]\n'%gisteps.val)DATA4`  ribfile.write('\tLightSource "indirect" 42\n\n')DATA  if (gisphere.val == 1):DATA(  ribfile.write('\tAttributeBegin\n')DATAX`  ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(  ribfile.write('\t\tColor [1 1 1]\n')DATA0@  ribfile.write('\t\tSurface "constant"\n')DATA8  ribfile.write('\t\tSphere 2000 -2000 2000 360\n')DATA(  ribfile.write('\tAttributeEnd\n')DATA` DATA def render(ribfile):DATA  if (os.name != "posix"):DATA  if (menuval.val == 1):DATA4h  os.system('%s %s'%(prmanrenderer.val, ribfile))DATA  elif (menuval.val == 2):DATA4  os.system('%s %s'%(bmrtrenderer.val, ribfile))DATAp  elif (menuval.val == 3):DATA8  os.system('%s %s'%(entropyrenderer.val, ribfile))DATA  elif (menuval.val == 4):DATA0h  os.system('%s %s'%(dlrenderer.val, ribfile))DATA  elif (menuval.val == 5):DATA4  os.system('%s %s'%(aqsisrenderer.val, ribfile))DATAp  elif (menuval.val == 6):DATA4  os.system('%s %s'%(pixierenderer.val, ribfile))DATA  elif (os.name == "posix"):DATA`  if (menuval.val == 1):DATA8  os.system('%s %s &'%(prmanrenderer.val, ribfile))DATA  elif (menuval.val == 2):DATA4X  os.system('%s %s &'%(bmrtrenderer.val, ribfile))DATA  elif (menuval.val == 3):DATA8  os.system('%s %s &'%(entropyrenderer.val, ribfile))DATAh  elif (menuval.val == 4):DATA4  os.system('%s %s &'%(dlrenderer.val, ribfile))DATA  elif (menuval.val == 5):DATA8X  os.system('%s %s &'%(aqsisrenderer.val, ribfile))DATA  elif (menuval.val == 6):DATA8  os.system('%s %s &'%(pixierenderer.val, ribfile))DATAp DATA def closeFile(ribfile):DATA  ribfile.close()DATA( DATAX def writeFrame(ribfile):DATA  global sshader, cframeDATA  display = Scene.GetCurrent()DATA,8  context = display.getRenderingContext()DATA  frames2 = 0DATA(  display = Blender.Scene.GetCurrent()DATA(  if (anim.val == 1):DATA8p  frames = context.endFrame() - context.startFrame()DATA  else:DATA  frames = 0DATAP  if (anim.val == 1):DATA  cframe = context.startFrame()DATA  else:DATA$  cframe = Blender.Get('curframe')DATA p  for x in range(frames + 1):DATA$  Blender.Set('curframe', cframe)DATA8  print 'Exporting Frame: %s'%Blender.Get('curframe')DATA$x  renderShadows(ribfile, frames2)DATA,  ribfile.write('\nFrameBegin %s\n'%cframe)DATA(  writeHeader(ribfile, frames, frames2)DATAx  lampobj = 0DATA  if (motionblur.val == 1):DATA(  ribfile.write('MotionBegin [0 1]\n')DATA$X  Blender.Set('curframe', cframe)DATA$  writeTransform(ribfile, lampobj)DATA<  Blender.Set('curframe', cframe + motionblurframe.val)DATA$`  writeTransform(ribfile, lampobj)DATA$  Blender.Set('curframe', cframe)DATA  ribfile.write('MotionEnd\n')DATAP  else:DATA$  writeTransform(ribfile, lampobj)DATA  if (rgba.val == 1):DATA  channels = "rgb"DATA`  elif (rgba.val == 2):DATA  channels = "rgba"DATA  elif (rgba.val == 3):DATA8  channels = "rgbz"DATA  elif (rgba.val == 4):DATA  channels = "z"DATA  if (buffer.val == 1):DATAlP  ribfile.write('Display "%s/%s%05d.tif" "framebuffer" "%s"\n'%(imagesdir, image.val, cframe, channels))DATA  if (file.val == 1):DATAd0  ribfile.write('Display "%s/%s%05d.tif" "file" "%s"\n'%(imagesdir, image.val, cframe, channels))DATA  if (preworldra.val == 1):DATA<  ribfile.write('ReadArchive "%s"\n'%(preworldrafile.val))DATA$p  ribfile.write('WorldBegin \n')DATA   if (postworldra.val == 1):DATA@  ribfile.write('\tReadArchive "%s"\n'%(postworldrafile.val))DATA0  if (menuval.val == 1) or (menuval.val == 4):DATAD  ribfile.write('\tAttribute "visibility" "integer trace" [1]\n')DATAP  if (menuval.val == 3):DATA@  ribfile.write('\tAttribute "visibility" "reflection" [1]\n')DATA<  ribfile.write('\tAttribute "visibility" "shadow" [1]\n')DATA p  #PixieDATA  if (occlusion.val == 1):DATAl  ribfile.write('\tLightSource "ambientocclusion" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATA  if (indirect.val == 1):DATAh  ribfile.write('\tLightSource "ambientindirect" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATAh  #End PixieDATA  ambientLight(ribfile)DATA  checkLamps(ribfile)DATA8  if (gi.val == 1):DATA x  createGI(ribfile, frames)DATA  if (hdri.val == 1):DATA  if (menuval.val == 3):DATA(X  ribfile.write('\tAttributeBegin\n')DATAD  ribfile.write('\t\tAttribute "visibility" "reflection" [1]\n')DATAd  ribfile.write('\t\tSurface "envsurf" "string envname" ["%s"] "float blur" [0]\n'%(hdritex.val))DATA4  ribfile.write('\t\tSphere 50000 0 50000 360\n')DATA(  ribfile.write('\tAttributeEnd\n')DATAPh  createObjects(ribfile, cframe, 0, frames2) # 0 is for the shadows variableDATA  ribfile.write('WorldEnd \n')DATA 8  ribfile.write('FrameEnd\n')DATA  cframe = cframe + 1DATA  frames2 = frames2 + 1DATA DATA4H def export(): # start the export stuff from hereDATAX  global selectedtype, selectedname, xbar, texturefile, shadernametemp, partitionnameDATA80  newdirs() # make sure all the directories are thereDATA$  xbar = 10 # reset the progressbarDATA8  selectedtype = 'Type:' # reset the object editor stuffDATAP  selectedname = ''DATA4  filedir = os.path.normpath(pdir + filename.val)DATAD  ribfile = open(filedir, 'w') # open the main ribfile (default.rib)DATA4`  if ((menuval.val == 4) & (os.name != "posix")):DATA  ribfile.write('ReadArchive "%s%s"\n'% os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + pdir + "/texturefile.rib") ) ) )DATA  else:DATAD  ribfile.write('ReadArchive "%s"\n'% (pdir + "/texturefile.rib"))DATAd(  texturefile = open(os.path.normpath(pdir + 'texturefile.rib'), 'w') # open the texture rib fileDATA  if (menuval.val == 5):DATA  texturefile.write('#\n')DATA,H  writeFrame(ribfile) # write all the framesDATA0  closeFile(ribfile) # close the main ribfileDATA  texturefile.close()DATA8H  selectedtype = 'Type:' # reset the object editor stuffDATA  selectedname = ''DATA(  surfaceshadername.val = shadernametempDATAHH  Register (gui, event, bevent) # make sure all gui values are in placeDATA4  if (rendert.val == 1): # if the renderbutton is onDATA4   render(pdir + filename.val) # render the rib fileOB G OBCube) ?????????????DOBd?? #=?>=?@??? ( *DATA, I=L> ף ף;)    AAAOB G$  OBSphere, @????????@?????DOBd?? #=?>=?@???"  # ^DATA," I=L> ף ף;Tm}Um}X%?Tm@Tm@Tm@OB$ G OBSuzannehL ???????i!3?i!3?????DOBd?? #=?>=?@???' ( ȓDATA,' I=L> ף ף;@ZA@AAME) ., MECube , * P+  5 A A ADATA* 3 A A AIII A A II A I A AII A AIIA  I    AIDATAP+ 0 ############DATAx, /ME, .X= ) MESphere.001(8 - X2 :x@Tm}@Tm}@Tm}@DATA- 3:Tm}@?"j@0\v333@233@;ZZ"j@?'v81Tm}@$9"j@'v233@333;Z9?"j0['?['?"jr"r"Sm?Tm?433??9'%@)%@SS233@333@33ZZ)%@)%@?SS81Tm?Um?233@??Z['?\'?"j@r"r"\v?"j@0\vUm}333@233@;ZZ""j@?'v81Tm}@33>~Ѵ"j@'vTm}233@433;Z9?"j0]'['?"jr"UmPm?4332?9)%'%@tS433233@33Z,%)%@?tS81VmSm?233@2?Z]'['?"j@r"\vR"j@I\v333Um233@ťZ"ju(?ى81Tm}w+33"jt(ى233Tm433ť9R"jI@-Tm}Z']'"jݎݤPmVm433229&%*%tt13363333)%.%?tt81PmXm233@22ZZ']'"j@ݎ\v,4"j@I\v>5333233@ťZ5"j?ى81;F5Um}33ug5"jى>5233433ť9,4"jIϤ^'?Y'"jr"ݤXm?Nm433?29+%@%%St733@13333Z0%@)%?St81Zm?Pm233@?2Z^'?Y'"j@r"\vDATAX2 0x######## # # # # # # # # # ## ### ## ## ## ## ##################### # # !#!#!"#"#"#####$##%#"&#%&#!'#&'# (#'(#)#()#*#)*#+#*+#,+#,-#-*#-.#.)#./#/(#/0#0'#01#1&#12#2%#23#14#34#05#45#/6#56#.7#67#-8#78#,9#89#$#3#4#5#6#7#8#9#9#3$#2$#,#+#$%###$#$###$#DATA(8 /@$                $$ ! "!#"$#$%##%&""&'!!'(  ())**++,+*-,+).-*(/.)'0/(&10'%21&$2%$3223411450056//67..78--89,9,9897867564534$3MEhL .0 MESuzanne.002n` PM u @@@@DATA'PM 3 @Q?u@}\F Q?u@F @>\@LQ >\@ Q/@>9@T⵿=/>9@⵿=?E@ @>E@@>?>f@LW>f@HLW?)?z@yn)?z@yn?Q?@8u$Q?@Tu$?>m@Ȃ]^>m@H7]^H?>O@]BEH>O@MG]BE>?R@h3JȾ?R@Khh3J4??m@N_4?m@T_??@b%?@hzb%??@ XY#?@U XY#??m@A^?m@7A^H? @O@3VNNIH @O@EVNNI?%@E@ krD%@E@krD?@f@[X@f@7[X??z@}?z@z} @?u@6]CU ?u@ʢCU @?\@LՆq?p4@qzO p4@pzO ? 6@zȿ 6@<?^6@} ^6@Y ?*@q|*@?@'@O,ҿ@'@a,f?1@ f1@q 9@K @4*@r/u 4*@uJ@ H,@Mƚ J H,@ƚ @>?@q >?@( @ @>@hq3  @>@3 c@@H@@jyc@H@(jy@@@\@KReF@@\@wReF?r@k@&w6Ϳr@k@w6H?f@r@6` Hf@r@P6` >@p@L@p@RdLR?@w@|R@w@| ??u@~} ?u@`~}?>m@y>m@y?=a@j"wn=a@wn@>W@7W@_U}  @f@U}?@r@({@r@({uk@Ҫw ?fk@'Ay fk@Ay?c@ zc@z z>@^@ y@^@y\@۴zzp@.aLS4m@hI?>m@4$5n>m@5n ?p@_ԶH p@EԶH>m@u@uZcܾm@uZc? pW@g1 f pW@Ν fE@>H@;kdE>H@rkdh@?@@fB Afh?@@ Afm@?R@W6pm?R@Ɏp\@@h@R*a}x\@h@a}x @/@@)x /@@@x?M@@5~|ȿM@@'5~|?E@@@},E@@@,? @@Y~ @@~Y~ ?@s"{ @"{?c@Jfc@,f?a\@Hia\@i?@T@Bh@T@Mh?@J@>,b_@J@b_R?J@46PRJ@e46P@M@ɚXNo>h@?u@p|?@m@:8~ҿ@m@8~R?3?p@%nvR3?p@)nv*??r@9{*?r@j9{?\k@u$~\k@$~>p@+~Ⱦp@~p@zҿm@y$j>z@B-5z@Y-5*?@v$*@{$ ?*z@Q_1 *z@Y_1H> z@Ƞl'H z@C7l'@*}p>>@YNBbp>@FYNBb>H@X+>fH@ԇ>f ?@.Yt @ Yt>@.ƵcȾ@Ƶc@n?ȿ1@x")cȿ1@")cR?c@PbRc@bf?ȿc@SG_fȿc@)G_?1@zC#@1@C#@\@VM^p>\@F}^p\@p1F}^>@c@mKX@c@[mKX>mh@W'Xmh@sW'XzR@S>pT@bpT@b>M@FM@gFp>@J@1pp@J@!1pJ@<q\??z@]{\?z@]{p?G?w@G "pG?w@"? @r@QJ~׿ @r@J~?@w@V}@w@&V}@?w@9}?w@J9}4@?^@u{4?^@qu{;@?\@~;?\@/~9@z?Y@}9z?Y@O}@?f@!K{?f@K{?>m@U}>m@}? ?z@ ?z@f??z@"+zf?z@W+z??z@~l{?z@l{??r@@ b?r@ bz??r@`QPz?r@㟩QP??r@$7zGZ?r@zGZ?>h@LZNb>h@ZNb@?a@UEEk?a@ EEk/@?W@Cx/?W@ Cx1@?W@{_v1?W@l-{_v*@?Y@l+c*?Y@(l+c@?p@#Q?p@6#Q??u@'vq?u@vq?@p@o׿@p@+o?[?p@T*U[?p@*Uz??p@f Lz?p@ L ?@C@vh @C@IIvhz?T@E@BzT@E@0?B?\@>@; YZХ׿\@>@YZХ@1@1@%hr1@1@[hrY@@@C-(tY@@(t@@@d^O@@Ow@R??xݥwR?? ݥ@@f{@Lj@f{@ej @@8  @4 @?jF@ǾRzW6̦p?A@@̵?ݢ6?ɇ?a@@?>} @?>\ @?o~B?oRBw@? FQ w? @ @a{:F @aFk@p>LYkp>>@ R]&"> R"M@ j+۪ުM ۪ު?>T7m׿>TXm?@x$@;$f??Tf?D?c?OVc?}V? ?c ??@?A>ҿ@?4?r?74r?{7 ?,?0 ,?ϣR?@ @D ڞR@ @ڞ? @|j @=j?@xi$@i$?\ @e\ @`?R?xTݟR?ݟ?ȿC*Iȿ*I?>,?ܿ>,7@@"8_@Ǡ_@@67xs@xs@@@??\<@@?\<@'@ @{1f9'@ @f9h@@?bI#h@?rI#J@@?=j!J@?j!M@a@>LW4Ma@>W4@4@ ?eB(4@ ?EB(@E@qD:wE@ID:wM@p@yV]Mp@y]M@Y@UFMY@F@,@濦n*,@Z*E@?;:K9tE?;ƴ9t@=/IFȭ=/ȭ@@?rP)&@?>P)&@\>?J\>? @zYGs zs@@H]jO@#]jOw@4 "TFw4 "TF@@ҿC=@ҿ\=@> SrS> MrS@@?6\ W@?ʣ W@"@>SaI"@ SaI@@ȿPo>@ȿKPo>@@Eui@ui@ @"Y{ @Y{@?E{? {@>'x>U'x@Gÿ 38-RlGÿ8-Rl@*&>h*m>h@?>n?&n@@? WI:@?I:@@jy@%@jy@%@@ൢ3뿝Yz!@ൢ3cYz!@>Q >aQ @?<_?|_@? F? F@?ADq@?濿q@@?qVWX?WX@\?_kd*\?*o=r>֐=@@>O[+@>[+@ =kD =1D@R@I@Ih@3By2&uB/h3By2ڊB/f@\aPf\jPf@H>ptB3fH>pB3@?pq'?'@?iZ=8?=8@?ͿRfR?ͿAfR@Ϳ@b^LͿ @b^L@@ =ͿMoKd@ =ͿjoKd@>Ϳ<<^>Ϳþ<^u@>ͿS]u>Ϳ9]@\?ͿbIȪX\?ͿȪX@@?Dpg@?黦pg@?Yx?x@@?g@?Fg@>+@wd>.@wd@34\T3\T@@9toe>@toe>@?ܿPfկY?ܿ:fկY@ ?ҿl} ?ҿxl}@>׿:hy>׿:hy@ ?7~#s ?&~#s@\?ῤ)y\?\y@?' 7y?ؿ 7y@p?.)vp?0)v@?F5TUt?TUt@?c,$&q?$&q@ @Hަ @9Hަ@@/%{D@/:{D@? yI? I@>*;RKF>*ŭKF@@۾@۾z|@ ҿ~zͧ| ҿzͧ@?]A?>ADATA/u 0.##,#,.##/#-/#-##*#*,##+-#+#### # ## # # # # # ## # # ########### ### ########### # ##!#!##"# "#!####"$#$&# &#%'##%#!'#&(#(#')#)#&,#(*#'-#)+#$.#%/#$2#02#.0#%3#/1#13#"4#24##5#35#6#46#7#57#8#68#9#79#: #8:#; #9;#> #:>#? #;?#@#>@#A#?A#0@#1A#<@#0<#=A#1=#<>#=?#:<#;=#8<#9=#6<#7=#4<#5=#2<#3=#X##Z#XZ##Y#YZ#V##XV##W#WY#T##TV##U#WU#R##RT##S#SU#P##PR##Q#QS#[N#[##N#\#\O#O##[]#]##^#\^##]_#_##`#^`##_a#a##b#`b##ac#c##d#bd##ce#e##f#df##eg#g##h#fh##gi#i##j#hj##ik#k##l#jl##kB#BC#C#lB#C#m##m##n#n#####}#}#~#~#{#{}#|#|~#y#y{#z#z|#w#wy#x#xz#u#uw#v#vx#s#su#t#tv#q#qs#r#rt#q####r##oC#mo#np#pC#C##o#p###!#######################!#####D!D#D##D!#####################F#F##F#E#E#E###E###F###############################P###Q#####N#O#G#G###G#########################G#############o#p###m#n##q##r##s##t##u##v##w##x##y##z##{##|##}##~############################## # ###  # # # #  # # #  # ### ###################k#H#BH#l#H#i##j##g##h # #e!#!#f"# "#c##!##d$#"$#a%##%#b&#$&#_'#%'#`(#&(#])#')#^*#(*#[+#)+#\,#*,#34#4G#GQ#3Q#4H#3R#HR#23#OQ#2O#2P#PR#12#OS#1S#1T#PT#Z1#XS#YT#MS#MV#WN#NT#IM#IT#JU#JN#IK#KR#LS#JL#IO#KQ#JP#LR#EK#EG#FL#FH#EP#FQ#U#UW#W#VX#V#X#EU#FV#WY#YN#ZO#XZ#+Y#,Z#CL#C_#/_#/L#D`#DL#/`#]_#]M#/M#^`#^M#[]#0[#0M#\^#0\#G[#04#H\#U[#V\#)=#5=#'5#*>#(6#6>#;K#;C#KL#<D#<K#-e#ce#.c#-.#df#-f#.d#ac#aJ#.J#bd#bJ#;a#JK#<b#%i#ik##k#&j#$l#jl#io#mo#km#jp#ln#np#oq#qs#ms#pr#nt#rt#qw#uw#su#rx#tv#vx#9y#uy#9w#vz#:z#:x#au#;y#bv#<z#cs#dt#em#fn#eg#gk#hl#fh#!g#"h#gI#-I#hI#!#"#I#I#HI#5i#6j#57#7o#8p#68#7}#q}#r~#8~#9}#:~#]##[#^#\##=#?#=?#>#>@#@#+#,#+W#U#,X#V#9A#A{#y{#B|#:B#z|#C{#D|#{#?A#|#@B#_{#`|#################################################################?##=#@#>##?##@##7#8#}##}##~#~#########################!#!###7#8##############################################################!###!##############################################################9#:#A#B#DATA'` /.,/-,*-+         !" !#"$& '%#! &()'!&,*(+-')$.,&-/%'.$203%/1$"425#%3"647#58697 :8; 9 >:? ; @>A ?.0@1/A<@01A=>@<=A?<:>?;=<8:;9=<6897=<4675=<2453=<0231=XZYZVXWYTVUWRTSUPRQSN[\O[]^\]_`^_ab`acdbcefdeghfgijhikljkBCCBlmn}~{}|~y{z|wyxzuwvxsutvqsrtqrmCoCnpoCCpDDDDFFEEEEFFPQNOGGGGopmopnqrqstrsuvtuwxvwyzxy{|z{}~|}~mn          BkHlBHkijlig hjge!"fh ec#!$df"ca%#&bd$a_'%(`b&_])'*^`(][+),\^*34GQH43R23QOR32P12OSP21TXZ1S1ZYTVXSMTYWNTVMINWUJRTIKJUSLIOQKRPJLIMSOTNJPEKQGRLFHPRKELSQFUWXVPEUVFQNWYXOZNY+[,ZO\LC_/`DL//_]M^`/MM][0\^M00[G4H\04EG[U\HFV')=5>*(6K;CLD<KL-ec.df-..caJbd.JJa;K<bJK#%ikj&$lkiompjlnmoqsrpntsqwuxrtv9yuwvz:x;auyvb<zacsutdbvcemsnfdtegkmlhfn!#kgl$"hIge-fhI-! "!gIh"IHIIH%'5i6(&j57oip86j7}qor~8p9wq}rx:~[]^\=?>@)+=,*>+WUVX,U[\V+YWXZ,9A{y|B:z;y{C|z<D?{A|@B]_{|`^C{_`|D=?@>?@5=7>68}~7}8~789}~:9A:B?AB@GLOBrV DNA18dPSDNANAME*next*prev*first*lastxyzwxminxmaxyminymax*newid*libname[24]usflagpadid*idblock*filedataname[160]totcurvecurblocktypeshowkeyposcurvaltypeadrcodetotelem*data*weightsname[32]vgroup[32]sliderminslidermax*refkeyelemstr[32]elemsizeblock*ipo*fromtotkeyslurph**scripts*flagactscripttotscript*line*formatlenblen*nameflagsnlineslines*curl*sellcurcselc*undo_bufundo_posundo_len*compiledsizeseekpassepartalphapad1clipstaclipendlensortho_scaledrawsizeYF_dofdistYF_apertureYF_bkhtypeYF_bkhbiasYF_bkhrotscriptlink*anim*ibuf*mipmap[10]oklastframelastqualitytpageflagtotbindxrepyreptwstatwendbindcode*repbind*packedfilelastupdatelastusedanimspeedreserved1reserved2texcomaptomaptonegblendtype*object*texprojxprojyprojzmappingofs[3]size[3]texflagcolormodelrgbkdef_varcolfacnorfacvarfacdispfacwarpfac*handle*pname*stnamesstypesvars*varstr*result*cfradata[32](*doit)()(*callback)()versionaipotypedata[16]*ima*cube[6]imat[4][4]stypenotlaycuberesdepthrecalclastsizenoisesizeturbulbrightcontrastrfacgfacbfacfiltersizemg_Hmg_lacunaritymg_octavesmg_offsetmg_gaindist_amountns_outscalevn_w1vn_w2vn_w3vn_w4vn_mexpvn_distmvn_coltypenoisedepthnoisetypenoisebasisnoisebasis2imaflagcropxmincropymincropxmaxcropymaxxrepeatyrepeatextendcheckerdistnablaframesoffsetsfrafie_ima*plugin*coba*envfradur[4][2]modetotexenergydistspotsizespotblendhaintatt1att2bufsizesampshadspotsizebiassoftray_sampray_sampyray_sampzray_samp_typearea_shapearea_sizearea_sizeyarea_sizeztexactshadhalostepYF_numphotonsYF_numsearchYF_phdepthYF_useqmcYF_bufsizeYF_padYF_causticblurYF_ltradiusYF_glowintYF_glowofsYF_pad3YF_glowtypeYF_pad2*mtex[10]layspecrspecgspecbmirrmirgmirbambrambbambgambemitangspectraray_mirroralpharefspeczoffsaddtranslucencyfresnel_mirfresnel_mir_ifresnel_trafresnel_tra_ifilterray_depthray_depth_traharseed1seed2mode2flarecstarclinecringchasizeflaresizesubsizeflarebooststrand_stastrand_endstrand_easergbselpr_typepr_backpr_lampseptexpad4pad5diff_shaderspec_shaderroughnessrefracparam[4]rmsdarkness*ramp_col*ramp_specrampin_colrampin_specrampblend_colrampblend_specramp_showpad3rampfac_colrampfac_specfrictionfhreflectfhdistxyfrictdynamodepad2YF_arYF_agYF_abYF_dscaleYF_dpwrYF_dsmpYF_presetYF_djitname[256]scale*bbi1j1k1i2j2k2selcol1selcol2quat[4]expxexpyexpzradrad2s*mat*imatelemsdisp**mattotcolloc[3]rot[3]wiresizerendersizethreshvec[3][3]alfaweighth1h2f1f2f3hidevec[4]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bp*beztcharidxkernhnurb*bevobj*taperobj*textoncurve*path*keybevpathlenbevresolwidthext1ext2spacemodespacinglinedistshearfsizewordspaceulposulheightxofyoflinewidth*strfamily[24]*vfont*vfontb*vfonti*vfontbisepchartotboxactbox*tbselstartselend*strinfocurinfo*obname[128]maxrcttotrctvartypetotvertipoextraprtbitmask*driver*tpageuv[4][2]col[4]transptileunwrapeffect*mface*tface*dface*mvert*medge*dvert*mcol*msticky*texcomesh*oc*sumohandletotedgetotfacecubemapsizesmoothreshsubdivsubdivrsubsurftypev1v2v3v4edcodecreasedef_nr*dwtotweightco[3]no[3]co[2]*errormodifiersubdivTypelevelsrenderLevels*emCache*mCachestartlengthrandomizeseedaxistolerancepercentfaceCountstartxstartyheightnarrowspeeddamptimeoffslifetimedeformflagparentinv[4][4]cent[3]falloff*indexartotindexforceoperationpntswopntsuopntsvopntswtypeutypevtypewfufvfwdudvdw*defvec[8][3]dvec[3]max**obpartypepar1par2par3parsubstr[32]*pardata*parent*track*action*poseconstraintChannelsnetworkdefbasemodifiersdloc[3]orig[3]dsize[3]drot[3]dquat[4]obmat[4][4]colbitstransflagipoflagtrackflagupflagnlaflagprotectflagipowinscaflagscavisflagboundtypedupondupoffdupstadupendsfctimemassdampinginertiaformfactorsofttimerdampingsizefacdtdtxactcolpropsensorscontrollersactuatorsbbsize[3]dfrasactdefgameflaggameflag2softflaganisotropicFriction[3]constraintsnlastripshooks*pd*soft*lifelbufportfluidsimFlagshapenrshapeflag*fluidsimSettings*derivedDeform*derivedFinalmat[4][4]curindexactivedeflectforcefieldpdef_damppdef_rdamppdef_permf_strengthf_powermaxdistpdef_sbdamppdef_sbiftpdef_sbofttotpointtotspring*bpoint*bspringnodemassgravmediafrictrklimitphysics_speedgoalspringgoalfrictmingoalmaxgoaldefgoalvertgroupinspringinfrictefrainterval**keystotpointkeyshow_advancedoptionsresolutionxyzpreviewresxyzrealsizeguiDisplayModerenderDisplayModeviscosityValueviscosityModeviscosityExponentgravxgravygravzanimStartanimEndgstarmaxRefineiniVelxiniVelyiniVelz*orgMesh*meshSurface*meshBBsurfdataPath[240]bbStart[3]bbSize[3]mistypehorrhorghorbhorkzenrzengzenbzenkambkfastcolexposureexprangelinfaclogfacgravityactivityBoxRadiusskytypephysicsEnginemisimiststamistdistmisthistarrstargstarbstarkstarsizestarmindiststardiststarcolnoisedofstadofenddofmindofmaxaodistaodistfacaoenergyaobiasaomodeaosampaomixaocolor*aospherehemiresmaxiterdrawtypesubshootpsubshootenodelimmaxsublamppamapamielmaelmimaxnodeconvergenceradfacgammaselcolsxsy*lpFormat*lpParmscbFormatcbParmsfccTypefccHandlerdwKeyFrameEverydwQualitydwBytesPerSeconddwFlagsdwInterleaveEveryavicodecname[128]*cdParms*padcdSizeqtcodecname[128]mixratemainpad[3]*avicodecdata*qtcodecdatacfraimagesframaptoframelenblurfacedgeRedgeGedgeBfullscreenxplayyplayfreqplayattribrt1rt2stereomodedimensionspresetfiltertypemaximsizexschyschxaspyaspxpartsypartssafetyborderwinposplanesimtypebufflagqualityscemoderendererocresrpad[2]alphamodedogammaosafrs_secedgeintsame_mat_reduxgausspostmulpostgammapostaddpostigammaposthuepostsatdither_intensityzminfocuszgammazsigmazblurGIqualityGIcacheGImethodGIphotonsGIdirectYF_AAYFexportxmlYF_nobumpYF_clamprgbyfpad1GIdepthGIcausdepthGIpixelspersampleGIphotoncountGImixphotonsGIphotonradiusYF_numprocsYF_raydepthYF_AApassesYF_AAsamplesGIshadowqualityGIrefinementGIpowerGIindirpowerYF_gammaYF_exposureYF_raybiasYF_AApixelsizeYF_AAthresholdbackbuf[160]pic[160]ftype[160]col[3]framename[64]cornertypeeditbutflagdegrstepturnextr_offsdoublimitsegmentsringsvertices*camera*world*setbase*basact*groupcursor[3]twcent[3]twmin[3]twmax[3]selectmodeproportionalprop_modeeditbutsize*ed*radioframing*toolsettingsaudiomarkers*theDagdagisvaliddagflagszoomblendximyim*rectspacetypeblockscale*areablockhandler[8]viewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]winmat1[4][4]viewmat1[4][4]viewquat[4]perspview*bgpic*localvdlocalviewlayactscenelockaroundcamzoomgridgridviewpixsizenearfargridlinesviewbutgridflagmodeselectmenunrtexnrtwtypetwmodetwflagtwdrawflagtwmat[4][4]clip[4][4]*clipbbafterdrawzbufxrayverthormaskmin[2]max[2]minzoommaxzoomscrollkeeptotkeepaspectkeepzoomoldwinxoldwinyrowbutv2d*editipoipokeyactname[32]constname[32]totipopinbutofschannellockmedian[3]cursenscuractaligntabomainbmainbo*lockpointexfromshowgrouprectxrectycurymodeltypescriptblockre_alignoldkeypresstab[7]*filelisttotfiletitle[24]dir[160]file[80]ofssortmaxnamelencollums*libfiledataretvalmenuact(*returnfunc)()*menupoopsvisiflagtree*treestoreoutlinevisstoreflagdeps_flags*imageimanrcurtile*texttopviewlinesfont_idlheightleftshowlinenrstabnumbercurrtab_setshowsyntaxunused_paddpix_per_linetxtscrolltxtbar*scriptredrawstitle[28]fasesubfasemouse_move_redrawimafasemxmydirslidirsli_linesdirsli_sxdirsli_eydirsli_exdirsli_himaslifileselmenuitemimasli_sximasli_eyimasli_eximasli_hdssxdssydsexdseydesxdesydeexdeeyfssxfssyfsexfseydsdhfsdhfesxfesyfeexfeeyinfsxinfsyinfexinfeydnsxdnsydnwdnhfnsxfnsyfnwfnhfole[128]dor[128]file[128]dir[128]*firstdir*firstfiletopdirtotaldirshilitetopfiletotalfilesimage_sliderslider_heightslider_spacetopimatotalimacurimaxcurimay*first_sel_ima*hilite_imatotal_selectedima_redraw*cmap*arg1outline[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_drawtypepad1[3]back[4]header[4]panel[4]shade1[4]shade2[4]hilite[4]grid[4]wire[4]select[4]lamp[4]active[4]transform[4]vertex[4]vertex_select[4]edge[4]edge_select[4]edge_seam[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]vertex_sizefacedot_sizebpad[2]syntaxl[4]syntaxn[4]syntaxb[4]syntaxv[4]syntaxc[4]tuitbutstv3dtfiletipotinfotsndtacttnlatseqtimatimaseltexttoopsttimespec[4]dupflagsavetimetempdir[160]fontdir[160]renderdir[160]textudir[160]plugtexdir[160]plugseqdir[160]pythondir[160]sounddir[160]yfexportdir[160]versionsvrmlflaggameflagswheellinescrolluiflaglanguageuserprefviewzoomconsole_bufferconsole_outmixbufsizefontsizeencodingtransoptsmenuthreshold1menuthreshold2fontname[256]themesundostepscurssizetb_leftmousetb_rightmouselight[3]tw_hotspottw_flagtw_handlesizetw_sizetextimeouttexcollectrateobcenter_diavertbaseedgebaseareabase*sceneendxendysizexsizeyscenenrscreennrfullmainwinwinakthandler[8]*newvvec*v1*v2panelname[64]tabname[64]ofsxofsycontrolold_ofsxold_ofsysortcounter*paneltab*v3*v4*fullwinmat[4][4]headrctwinrctheadwinwinheadertypebutspacetypewinxwinyhead_swaphead_equalwin_swapwin_equalheadbutlenheadbutofscursorspacedatauiblockspanels*curscreen*curscenedisplaymodefileflagsglobalfname[80]*se1*se2*se3nrdone*stripdataorxory*newseqstartofsendofsstartstillendstillmachinestartdispenddispmulhandsize*strip*curelemfacf0facf1*seq1*seq2*seq3seqbase*soundlevelpancurposstrobe*effectdata*oldbasep*parseq*seqbasepmetastackedgeWidthangleforwardwipetypefMinifClampfBoostdDistdQualitybNoCompbuttypeuserjitstaendtotpartnormfacobfacrandfactexfacrandlifeforce[3]vectsizedefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstepomattimetexspeedtexflag2flag2negvertgroup_vvgroupname[32]vgroupname_v[32]*keysminfacused*idusedelemdxdylinkotypedataold*poin*oldpoinresetdistlastval*makeyqualqual2targetName[32]toggleName[32]value[32]maxvalue[32]materialName[32]damptimerdelaypropname[32]matname[32]axisflag*fromObjectsubject[32]body[32]pulsefreqtotlinks**linksinvertfreq2axisfbuttonbuttonfhathatfprecisionstr[128]*mynewinputstotslinks**slinksvalvalotime*actblendinprioritystridelengthstrideaxisreserved3sndnrmakecopycopymadepad[1]trackvolume*melinVelocity[3]localflagforceloc[3]forcerot[3]linearvelocity[3]angularvelocity[3]addedlinearvelocity[3]anotherpad[4]butstabutendminfacvisifacslowminloc[3]maxloc[3]minrot[3]maxrot[3]distributionint_arg_1int_arg_2float_arg_1float_arg_2toPropName[32]*toObjectbodyTypefilename[64]loadaniname[64]goaccellerationmaxspeedmaxrotspeedmaxtiltspeedrotdamptiltdampspeeddamp*sample*stream*newpackedfile*snd_soundpanningattenuationpitchmin_gainmax_gaindistancestreamlenloopstartloopendchannelshighpriopad[10]gaindopplerfactordopplervelocitynumsoundsblendernumsoundsgameengine*gkeypadfokeygobjectgkey*activechildbaserollhead[3]tail[3]bone_mat[3][3]arm_head[3]arm_tail[3]arm_mat[4][4]xwidthzwidthease1ease2rad_headrad_tailboneclassbonebasechainbaseghostepghostsizeconstflagikflag*bone*childiktree*b_bone_matschan_mat[4][4]pose_mat[4][4]pose_head[3]pose_tail[3]limitmin[3]limitmax[3]stiffness[3]ikstretchchanbasestride_offset[3]actnrtimeslidename[30]enforce*tariterationsrootbonesubtarget[32]orientweightgrabtarget[3]minmaxflagstickystuckcache[3]locallockflagfollowflagoffset[3]zmaxvolmodeplaneorglengthbulgestride_axisactstartactendstridelenrepeatblendoutstridechannel[32]TYPEcharucharshortushortintlongulongfloatdoublevoidLinkListBasevec2svec2ivec2fvec2dvec3ivec3fvec3dvec4ivec4fvec4drctirctfIDLibraryFileDataIpoKeyBlockKeyScriptLinkTextLineTextPackedFileCameraImageanimImBufMTexObjectTexPluginTexCBDataColorBandEnvMapLampWaveMaterialVFontVFontDataMetaElemBoundBoxMetaBallBezTripleBPointNurbCharInfoTextBoxCurvePathIpoDriverIpoCurveTFaceMeshMFaceMVertMEdgeMDeformVertMColMStickyOcInfoMDeformWeightModifierDataSubsurfModifierDataLatticeModifierDataCurveModifierDataBuildModifierDataMirrorModifierDataDecimateModifierDataWaveModifierDataArmatureModifierDataHookModifierDataSoftbodyModifierDataBooleanModifierDataLatticebDeformGroupLBufbActionbPosePartDeflectSoftBodyLifeFluidsimSettingsDerivedMeshObHookSBVertexBodyPointBodySpringWorldRadioBaseAviCodecDataQuicktimeCodecDataAudioDataRenderDataGameFramingTimeMarkerToolSettingsSceneGroupDagForestBGpicView3DSpaceLinkScrAreaView2DSpaceInfoSpaceIpoSpaceButsSpaceSeqSpaceFiledirentryBlendHandleSpaceOopsTreeStoreSpaceImageSpaceNlaSpaceTextSpaceScriptScriptSpaceTimeSpaceImaSelImaDirOneSelectableImaThemeUIThemeSpacebThemeSolidLightUserDefbScreenScrVertScrEdgePanelFileGlobalStripElemStripPluginSeqSequencebSoundMetaStackEditingWipeVarsGlowVarsEffectBuildEffPartEffParticleWaveEffTreeStoreElemOopsbPropertybNearSensorbMouseSensorbTouchSensorbKeyboardSensorbPropertySensorbCollisionSensorbRadarSensorbRandomSensorbRaySensorbMessageSensorbSensorbControllerbJoystickSensorbExpressionContbPythonContbActuatorbAddObjectActuatorbActionActuatorbSoundActuatorbCDActuatorbEditObjectActuatorbSceneActuatorbPropertyActuatorbObjectActuatorbIpoActuatorbCameraActuatorbConstraintActuatorbGroupActuatorbRandomActuatorbMessageActuatorbGameActuatorbVisibilityActuatorFreeCamerabSamplebSoundListenerSpaceSoundGroupKeyObjectKeyGroupObjectBonebArmaturebPoseChannelbActionChannelSpaceActionbConstraintChannelbConstraintbKinematicConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbMinMaxConstraintbActionConstraintbLockTrackConstraintbFollowPathConstraintbDistanceLimitConstraintbRotationConstraintbStretchToConstraintbActionStripTLEN  0Phtdt0XP4@l`88,T< 4DXXD<<\@4@l( 8,\T (PD$$x$(T x H8th  8 ,@0,HhH,(lDLP@< <@Lx0848l(@0pPD<,4L,,,<8,<4XSTRC                   !"#$% &'( )*+,-./012345 678 9:;<=>?@ A!BC7 "DEFGHIJKLMNO*P#$Q%R%STUVWXYZ[\]^!_`abcd&efgh'i(jklmnopqrstuvwxyz{|) }~  *stu+*,'i##FGTUE(44y*#)+,-2rstuvFG&*P.*/_rstu     ef+ +!"#$%&'()&**+,-./012345678P09:1 !_2223;<=>?@ABCDEFGHIJ4KL43; M N*/OPqQpRSTU5 VWXYZ[\]^6_WX[^777`^abcdefghij6k5lm8n`09o:63; p N'q'r's*;tu/O vQpRqwPxyz{cd49|}~0000988<'===6k5l  <> ? 3; *u/O@> ABCDE?F qQpRP@`BGXCGA`DstuEHHH"IH7  JH'i"KH'i"LHMHNHO HyPHE0'iQ H'i"RHSH'iTab06*uUUU"3FpV''_ ''*;t3;WX    N  /OQpRD      !"#P$P % & ' ( )*+,-./ 0 1 2Y3Z4[5V6V789:\;]<]=^^^'>"?@Y ABCDEFGHIJK__ZLM`NaOPQRSTUVWXYZE[\]^0__`,\abcdefghijklmnopqrs?t?u?vwxyb8rz{|}~*&Pcddd'ie  f  0ghbef]B      !"#$i%E0'jjj&'k ()*+,E-./010'l'2b3l4# 5d6m789:;<=>? @cA iBkChsgDP EnFGHEo #(jBIJKLMp5qqNOrPQRSTUVWXYZ'2o[p\]^_`aHbcdefo8ghijklmnopqr3s tuv0swxyz{|}~qqqNOrPQtqqNOrPQuqqNOrPQ0s  *+kvqqNOrPQsk lMEw qqNOrPQsI0xqqNOrPQyz {qqNOrPQs   |}qqNOrPQs#Ik~ qqNOrPQksqqNOrPQ 7k qqNOrP07kqqNOrPsQqqNOrP     0%   !"#$%$&'()*+,-./0123456789:;<=>?@ABCDEFG"HIJKLMNOPQRSTUVW_-XYZ[\]^_`abcdefghijklmnopqrs tuvwxyz{|}~E0'   l @rrrNP     %RT 4 9 }~  & 4*l$Q      4)Z,Ny| "^  "     "E0"/""0"""E' ! "#$E0" %'&' "()*+,-. /0$ 10'" %2345' W6"789:cd; <=>?<@A 5'?B"CDl'2"' EFQRGHIJ "EKL'MNOPQRST "EKLm7UVWXYZ'[ \E0!]^ / _" ' `abcdefg h!_!i j*Aklmnop7qrstuvwxyz{qqNOrPs<0]"|''*QpRD    }' ~m   "Xp/   0"wE0  QpDtX * "cW qqNOrPQsW* c 'X0'cd'c'c' 'MW6' ' 'E0p   '*W67ENDB