BLENDER_v241REND 4nStageSRtJim ~iSRAnimationȦ=Mi*`RiXRi8xij~N~KDATAȦ=n8rbDATA8rbnXKiȦ=KDATAXKinKi8rb~KDATAKinKiXKi~DATAKinLiKiDATALinXLiKi~DATAXLinLiLi1DATALinLiXLi~1DATALinMiLiDATAMinXMiLi1DATAXMinMiMiDATAMinXMi~DATA*`o?8rbXKiDATA?oMi*`KiȦ=DATAMio Ni?KiLiDATA NiohNiMi8rbXLiDATAhNioNi NiXKiLiDATANioNihNiXLiLiDATANio@OiNiKiLiDATA@OioOiNiLiLiDATAOioOi@OiXLiMiDATAOioPiOiLiMiDATAPio`PiOiLiMiDATA`PioPiPiLiLiDATAPioPi`PiKiXLiDATAPio8QiPiXMiȦ=DATA8QioQiPiKiXMiDATAQioQi8QiLiMiDATAQioRiQiKiMiDATARioQiXMiMiDATAXRiqfiȦ=XMiMiKi~~~`di`eiPSiciDATAPSip TiLink and MaterialsEditing>DATA TipTiPSiMeshEditingF>DATATipUi TiAnim settingsObject>DATAUipViTiDrawObjectF>DATAVip`WiUiConstraintsObject>DATA`Wip0XiViEffectsObjectDATA0XipYi`WiHooksObjectF>UiDATAYipYi0XiParticle InteractionObject>ViDATAYipZiYiScriptlinksScript>DATAZipp[iYiCameraEditingF>DATAp[ip@\iZiOutputRender>DATA@\ip]ip[iRenderRenderF>DATA]ip]i@\iAnimRender>DATA]ip^i]iFormatRender>DATA^ip_i]iAnimAnim>DATA_ipP`i^iSoundSound>DATAP`ip ai_iListenerSoundF>DATA aipaiP`iSequencerSound>DATAaipbi aiCurve and SurfaceEditingF>DATAbipciaiCurve ToolsEditing>DATAcipbiCurve Tools1Editing>DATA`di^`ei333?X @DhCQDhCC(BDC?z?DATAT`ei``di333?X /9DATAfiqgiXRiXLi8rbXKiLi~2K~2L~KKDATAgiqpifiKiXLiMiLi?2?AHM00-gpji8oihiiiDATAhipiiTransform PropertiesView3d[>DATAiiphi3D Viewport propertiesView3d>"DATApjiYPmi333?(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?;澲XvfAH~? B?=CY_@ DATA Pmiemipji333?(X DATAxmidHniPmi 333?(X j. ǁ@#%%DATAHnia8oimi333?(X }lA@zA‰B}K -B- A@CC #<@-DATAT8oi`Hni333?(X Open Text File/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.py DATApiq8xigiLiMiLiLi??Pף~0~~0-riviqiqiDATAqipTransform PropertiesIpo!>DATA(ri]si333?/X yC̽̌?yC@-uu- #< #<`jFzD OByC̽̌?DATAsiYviri333?/X ??? ???? A???PA A!O?j?}GCHB? AH~? B? #<CDATATvi`si333?/X /9DATA8xiqpiXMiKiLiMi~~~ #zi|i0yiziDATA0yipziLink and MaterialsEditing>DATAzip0yiMeshEditingF>DATAzi{i 333?5X zCCHBC#?CFC= ADATA{i^|izi333?5X #DhC`DpJgChCC(BDC?z?DATAT|i`{i333?5X /9SRt ~imPiJiSRBlenderMan~iiiІiiij~N~KDATA~iniDATAin@i~iKDATA@inii~KDATAini@i~DATAinii,DATAin@ii~,DATA@inii0DATAini@i~0DATAinii,DATAin@ii0DATA@iniiDATAin@iDATAioii@iDATAioPii~iiDATAPioii~iiDATAioiPiiiDATAio(iiiiDATA(iopiii@iDATApioi(i@iiDATAioipi@iiDATAioHiiiiDATAHioiiiiDATAio؄iHiiiDATA؄io ii@iiDATA iohi؄iiiDATAhioi iiiDATAioihii@iDATAio@ii@i@iDATA@ioiiiiDATAioІi@iiiDATAІioi@iiDATAiqpi~iiii?@Pף~+~~+ ,PiiiiDATAipiOutputRender>DATAipiiRenderRenderF>DATAipiiAnimRender>DATAipiFormatRender>DATAPi i 333?,>zCCHBC,?CFC= ADATA i^ iPi333?,>DhC?DhCC(BDC?z?mDATA iYi i333?,>??? ???? A??@PA Aj?c3>}GCHB? AH~? B? #<CDATAiai i333?,>@̌AR|B1@lA A@CC #<@DATATi`i333?,>/9DATApiqhii@ii@ii~1K~1K~KKDATAhiq(ipiiiiiG@? JL~-/~-G~H/pii`iiDATA`ip0iOutputRender>DATA0ipi`iRenderRender>DATAipЖi0iAnimRender0>DATAЖipiiFormatRenderH>DATAippiЖiPreviewMaterial>DATApip@iiMaterialMaterial>DATA@ipipiShadersMaterial0>DATAipi@iTextureMaterialH>DATAipiiMap InputMaterialD>DATAipiiMap ToMaterial,>DATAipPiiLink and MaterialsEditing>DATAPip iiMeshEditing>DATA ipiPiMesh ToolsEditing0>DATAipi iMesh Tools 1EditingH>DATAipiiRampsMaterial>piDATAip`iiMirror TranspMaterial0>@iDATA`ip0iiPreviewLamp>DATA0ipi`iLampLamp>DATAipУi0iShadow and SpotLamp0>DATAУipiiTexture and InputLampH>DATAippiУiMap ToLampH>УiDATApip@iiPreviewTexture>DATA@ipipiTextureTexture>DATAipi@iColorsTexture>@iDATAipiiCloudsTexture0>DATAipiiAnim settingsObject>DATAipPiiDrawObject>DATAPip iiHooksObject>iDATA ipiPiConstraintsObject0>DATAipi iEffectsObject0 iDATAipiiParticle InteractionObject0> iDATAip`iiPreviewWorld>DATA`ip0iiWorldWorld>DATA0ipi`iMist / Stars / PhysicsWorld0>DATAipаi0iAmb OccWorld0>0iDATAаipiiTexture and InputWorldH>DATAipаiMap ToWorldH>аiDATApi^pi333?LChCCpb@\CC(BDC?z?DATApiYPipi333?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?@?$$OAH~?  B?=Ch?j(4?t'>dDATA(Pi]ipi333?LzC AzC A #< #<`jFzD OBDATATi`Pi333?L;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA(iqihii@iiiʫ==o?--GH`wii i iDATA ipTransform PropertiesView3di>"DATA ie@i333?DATAx@idii 333? > B@DATAiYȾi@i333????]־Z?????]>Z??ʫ==o=>n? ;?ɾ>A,A]>Z??ʫ==o????]־Z???ɾ>AH~?  B?=C]־Z?lJ@B@?1?dDATAȾiaii333?@ffzAbB@jA A@CC #<@DATAi^iȾi333?DdC>9C,DeCC(BDC?z?DATA(i]ii333?zC AzC A #< #<`jFzD OBDATATi`i333? Open Text FileATH/home/jerome/soft/3D/blender/blenderman0.1beta9.0//../pts/../blenderman0.1beta9.0.py DATAiq(i@i@iii?4@ JL//lgXiiiiDATAipTransform PropertiesView3di>"DATAXiY8i333?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"?ɾ>AH~?  B?=C]־Z?lJ@B@?1?dDATA 8ieiXi333?DATAxid0i8i 333? > B@DATA0iaxii333?@ffzAbB@jA A@CC #<@ i iDATA, iSC@ffjDATAxi^xi0i333?DdC>9C,DeCC(BDC?z?DATA(xi]ixi333?zC AzC A #< #<`jFzD OBDATATi`xi333? Open Text FileATH/home/jerome/soft/3D/blender/blenderman0.1beta9.0//../pts/../blenderman0.1beta9.0.py SRtPimj ~iSRModel 4-splitii0iiijj^`DATAin0iDATA0inpii`DATApini0i`DATAinipiDATAin0iiDATA0inpiiDATApini0iDDATAinipiDDATAin0iiLDATA0inpiiLDDATApini0iL DATAinipi DATAini DATA0ioxi0ipiDATAxioi0iiiDATAioixiiiDATAioPiii0iDATAPioiii0iDATAioiPi0ipiDATAio(iipiiDATA(iopiipiiDATApioi(iiiDATAioipi0iiDATAioHiipi0iDATAHioiii0iDATAioiHiipiDATAio ii0ipiDATA iohiiiiDATAhioi i0iiDATAioihipiiDATAio@iiiiDATA@ioiipiiDATAio@ipiiDATAiqiii0ii?@PףiXiiiDATAipiPreviewLamp>DATAiphiiLampLamp@>DATAhip8iiSpotLamp>DATA8ipihiTexture and InputLamp>DATAipi8iMap ToLamp>8iDATAipiiPreviewMaterial>DATAipxiiMaterialMaterial@>DATAxipHiiPreviewWorld>DATAHipixiWorldWorld@>DATAipiHiMist Stars PhysicsWorld>DATAipiiTexture and InputWorld>DATAipiiMap ToWorld>iDATAipXiiOutputRender>DATAXip(iiRenderRenderF>DATA(ipiXiAnimRender>DATAipi(iFormatRender>DATAipiiLink and MaterialsEditing>DATAiphiiMeshEditingF>DATAhip8iiMesh ToolsEditing>DATA8ipihiMesh Tools 1Editing>DATAipi8iCameraEditing@>DATAipiiShadersMaterial>DATAipxiiTextureMaterial>DATAxipHiiAnim settingsObject>DATAHipixiDrawObjectF>DATAipiHiConstraintsObject>DATAipiiScriptlinksScript>DATAipiEffectsObjectiDATAi^i333?DhC^e¸/DuOlCC(BDC?z?mDATAiYhii333???? ???? A??@PA Aj?c3>}GCHB? AH~? B? #<CDATAhiaXii333?@̌AR|B1@lA A@CC #<@DATATXi`hi333?/9DATAiqiipi0ipiiE`E_``DATAiqiiipii0iX<*a=o?MMM4(ixiiiDATAip3D Viewport propertiesView3d>"DATAiYxi333???DD$?N?D$?%N%D??%H ?oX< xI !*a=S!?& B'!k'_Ay@?X<*a=o???DD$?N?? BH~?  B??==C DATAxi^xii333?DdCSC/ugD4=CC(BDC?z?DATAxxid ixi 333?`j x?OQ6RDATA( i]xixi333?zC AzC A #< #<`jFzD OBDATATxi` i333?MSAVE FILE/home/intrr/blender/blend/jects/klo/untitled.blend7DATAiqxjiiipiiQB=tn=o?KKKL(jjjjDATAjpTransform PropertiesView3dx>"DATAjYj333? ?3?3??3?3?QB=(^1n;sn=?QBA=4Xg)AzC?QB=tn=o??3?3?5?5QBAH~? B??を==C DATAj^jj333? DdC8CnD fCC(BDC?z?DATA(j]jj333? zC AzC A #< #<`jFzD OBDATATj`j333? "LOAD FILEPUT PICTURES/Users/ton/Desktop/render/d/../er/../B.blendDATAxjqjipi0iii?@ JLM!CM!!M!C4#C@ jxjp jp jDATAp jpTransform PropertiesView3dj>"DATA@ jY j333?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!AH~?  B??8zT;=C DATA j^ j@ j333?DdCaCnDCC(BDC?z?DATA( j]xj j333?zC AzC A #< #<`jFzD OBDATATxj` j333? SELECT SEQ PLUGIN PATH/home/jerome/local/blender-2.30/plugins/sequence/ DDATAjqxjipi0ipi0,"=0أ=o?K!CK!!K!CL#Cj(jDATAjYj333?????????0,"=0أ=o?kAGAy?0,"=0أ=o??????kAH~? B??==C DATAj^jj333?DdCQ"CfDAӗCC(BDC?z?DATA(j](jj333?zC AzC A #< #<`jFzD OBDATAT(j`j333?SELECT SCRIPT PATH/home/jerome/local/blender-2.30/scripts/ntitled.blend lSRtjm`ejPiSRModel SingleHjjjj jXjj^` DATAHjnjDATAjnjHj`DATAjnjj`DATAjnHjjDATAHjnjj0DATAjnjHj0DATAjnjjFDATAjnHjjFDATAHjnjj0DATAjnHjFDATAjojjjDATAjoXjjHjjDATAXjojjHjHjDATAjojXjjjDATAjo0jjHjjDATA0joxjjjjDATAxjoj0jjjDATAjojxjjjDATAjoPjjjjDATAPjojjHjHjDATAjojPjjHjDATAjo(jjjjDATA(jopjjjjDATApjoj(jHjjDATAjopjHjjDATA jqX+jHjHjjj?@Pף// 08$j)j jh#jDATA jp!jOutputRender>DATA!jp"j jRenderRenderF>DATA"jph#j!jAnimRender>DATAh#jp"jFormatRender>DATA8$j%j 333? jzCCHBC0?CFC= ADATA%j^&j8$j333? jDhC?DhCC(BDC?z?mDATA&jY(j%j333? j??? ???? A??@PA Aj?c3>}GCHB? AH~? B? #<CDATA(ja)j&j333? j@̌AR|B1@lA A@CC #<@DATAT)j`(j333? j/9DATAX+jqP,j jjjjjG`Ga``X`X`DATAP,jqXjX+jHjjjjG@? JL1E1KLEeQjWjy=GiH-jb`DATAH-jp.jOutputRender>DATA.jp.jH-jRenderRender>DATA.jp/j.jAnimRender0>DATA/jp0j.jFormatRenderH>DATA0jpX1j/jPreviewMaterial>DATAX1jp(2j0jMaterialMaterial>DATA(2jp2jX1jShadersMaterial0>DATA2jp3j(2jTextureMaterialH>DATA3jp4j2jMap InputMaterialD>DATA4jph5j3jMap ToMaterial,>DATAh5jp86j4jLink and MaterialsEditing>5DATA86jp7jh5jMeshEditing>&DATA7jp7j86jMesh ToolsEditing0>DATA7jp8j7jMesh Tools 1EditingH>DATA8jpx9j7jRampsMaterial>X1jDATAx9jpH:j8jMirror TranspMaterial0>(2jDATAH:jp;jx9jPreviewLamp>DDATA;jp;jH:jLampLamp>DDATA;jpDDATADDATA=jpX>jDjp(?j=jPreviewTexture>DATA(?jp?jX>jTextureTexture>DATA?jp@j(?jColorsTexture>(?jDATA@jpAj?jCloudsTexture0>DATAAjphBj@jAnim settingsObject>ADATAhBjp8CjAjDrawObject>ADATA8CjpDjhBjHooksObject>hBjDATADjpDj8CjConstraintsObject0>ADATADjpEjDjEffectsObject0DjDATAEjpxFjDjParticle InteractionObject0>DjDATAxFjpHGjEjPreviewWorld>EDATAHGjpHjxFjWorldWorld>EDATAHjpHjHGjMist / Stars / PhysicsWorld0>EDATAHjpIjHjAmb OccWorld0>EHjDATAIjpJjHjTexture and InputWorldH>EDATAJjpXKjIjMap ToWorldH>EIjDATAXKjp(LjJjFields and DeflectionPhysics>DATA(LjpLjXKjParticles Physics>DATALjpMj(LjSoft BodyPhysics0>MjDATAMjpNjLjFluid SimulationPhysics0>DATANjphOjMjModifiersEditing0>&DATAhOjp8PjNjShapesEditing0>&NjDATA8PjpQjhOjRadio RenderRadio>1DATAQjpb`8PjRadio ToolRadio>1DATAb`pQjCameraEditing>4DATAQj^Rj333?P,jChC>8C[@gCC(BDC?z?j&DATARjYUjQj333?P,jJ>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?@?$$OAH~?  B?=Ch?j(4?t'>dDATA(Uj]WjRj333?P,jzC AzC A #< #<`jFzD OBDATATWj`Uj333?P,j;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATAXjqP,jHjjjHj<<o?1E1KLE XZjcjp8`p8`YjYjDATAYjpTransform PropertiesView3d{>DATAXZjY8]j333?Xj???=]????]???<<ou;kn?;?ݺ*B4Y2Bz]???<<o????=]??ݺ*BH~?  B??==C=]lJ@B@?1?d????DATA8]ja`jXZj333?Xj7}AffA8LB@jA A@CC #<@(^j8`jDATA,(^j^jSCffjDATA,^j^j(^jOBR(@ǏDATA,^j0_j^jOB TDATA,0_j_j^jME7-A=@DATA,_j8`j0_jMEFΑcB"ADATA,8`j_jMA@ffA0DATA `je`j8]j333?XjDATAx`jdaj`j 333?Xj > B@DATAaj^bj`j333?XjDdC>9C,DeCC(BDC?z?DATA(bj]cjaj333?XjzC AzC A #< #<`jFzD OBDATATcj`bj333?XjSave FileFileATH/home/jerome/blender/Fluid/nuls/derman0.1beta9.0//../pts/../first.blendta9.0.pyBSRt`ejmjSRSequence Editfjhjijmjnjjj5DATAfjn@fjDATA@fjnfjfjDATAfjnfj@fjDATAfjngjfjDATAgjn@gjfjDATA@gjngjgjDATAgjngj@gjDATAgjnhjgjDATAhjn@hjgj\DATA@hjnhjhj\DATAhjnhj@hj\DATAhjnhjDATAijoHij@fjfjDATAHijoijijfjfjDATAijoijHijfjgjDATAijo jjijfj@gjDATA jjohjjijgj@gjDATAhjjojj jj@fjgjDATAjjojjhjjfjgjDATAjjo@kjjjgjgjDATA@kjokjjjgjhjDATAkjokj@kjgjhjDATAkjoljkjgj@hjDATAljo`ljkj@gj@hjDATA`ljoljljhj@hjDATAljolj`ljhjhjDATAljo8mjlj@hjhjDATA8mjomjljgjhjDATAmjomj8mjgjhjDATAmjomjhjhjDATAnjqtjfjgj@gjfjHrjHsjojxqjDATAojpojOutputRender>DATAojppjojRenderRenderF>DATApjpxqjojAnimRender>DATAxqjppjFormatRender>DATAHrj^Hsj333?ƼDhC&ԓDhCC(BDC?z?DATATHsj`Hrj333?Ƽ/9DATAtjqujnjgj@fjfjgjDATAujq{jtjgjhj@hj@gj8=i>o?[  [P vjhzjDATAvj_wj333?\zCAzCAPP A@FB= A DATAwjYhzjvj333?\????????8=i>o?fffAD&@??fffAH~? B? #<CDATAThzj`wj333?\AVE TARGA/t1.blend9DATA{jqjujhjhjgj@hj8=H>o?]]]]S |jjDATA|j_}j333?zCAzCA1||1 A@FB= A DATA}jYj|j333?????????8=H>o?fffA*@??fffAH~? B? #<CDATATj`}j333?AVE TARGA/t1.blend9DATAjq{jhjgjhjhj8=>o?]]wx8j@jDATA(j]`j333?|B̽̌?B̽̌?88 #< #<`jFzD SQB̽̌?DATA`jY@jj333?|????????8=>o?fffA@??fffAH~? B? #<CDATAT@j``j333?|OAD FILE/9SCjWSCStageainH~?jia(jh= BA:NҝZ??Z=pjȍjddd??< ddd??_@@????L?fff??@ A///tmp///@&#@^@&^#DX=DATAiaOjdrs=DATAjO?iarDATA?Oh=j7`=DATAh=O(j?7H~?DATA(jOh=rDATA(pjN,d'=A@DATAȍjVZ ?o: CAtP)`CACamera L>=B B@?LA^5`O/LALamp?????pB4B>??A\B4B?@@???LA`O/^5LALamp.001????? B4B>??? B4B?@@???WO jMWOWorld>>>===??A@pA A?L=TXd`jjTX=====LAYERS====jjjjjDATAj8jO`DATA8jjj`jNDATAjȐj8j=DATAȐjjjaDATAjXjȐjjMDATAXjjj=reenDATAjjXj:`DATAj0jj`jQreenDATA0jxjj=====DATAxjj0j0`DATAjjxjjQDATAjPjj>DATAPjjjpdDATAjjPj`jQDATAj(jj=DATA(jpjj?rDATApjj(jjQDATAjjpj=)DATAjHjj`jDATAHjjjjQDATAjؕjHj=reenDATAؕj jjjDATA jhjؕj@jQDATAhjj j=vH@DATAjjhjjDATAj@jjjQDATA@jjjcFREEDATAjЗj@jpj====DATAЗjjjjQDATAj`jЗj=DATA`jjj jreenDATAjj`jPjNDATAj8jjx= NEWDATA8jjjЧjDATAjșj8jjQDATAșjjj0=DATAjXjșjjDATAXjjjjQ==LADATAjjXj=vH@DATAj0jj0jDATA0jxjj`jQDATAxjj0jXcDATAjjxjjDATAjPjjjQFREEDATAPjjj>DATAjjPjjİbDATAj(jjjRDATA(jpjj=LRpDATApjj(j@jvH@DATAjjpjpjQDATAjHjjH= NEWDATAHjjjj NEWDATAj؞jHj jQDATA؞j jjh=DATA jhj؞jjreenDATAhjj jЬjQreenDATAjjhj =reenDATAj@jjPj NEWDATA@jjjjQvH@DATAjРj@j=DATAРjjjjDATAjРj0jQDATAO` 32DATAP`j============================================================================= DATA= 1: DATAa DATAPj-----------------------------------------------------------------------------x DATA= 2: DATA:`rDATAT`j----------------------------------------------------------------------------- EEDATA= 3: DATA0`rDATATj----------------------------------------------------------------------------- EEDATA> 4: DATApdrDATAT`j----------------------------------------------------------------------------- --DATA= 5: DATA?rDATATj============================================================================= EEDATA= 6: DATA`jrDATATj----------------------------------------------------------------------------- 6 DATA= 7: DATAjrDATAT@j----------------------------------------------------------------------------- DATA= 8: DATAjrDATATj----------------------------------------------------------------------------- DATAc 9: DATApjrDATATj----------------------------------------------------------------------------- EEDATA=10: DATA jDATAPPj============================================================================= @DATAx=11: DATAЧjbDATATj----------------------------------------------------------------------------- EEDATA0=12: DATAjoDATATj----------------------------------------------------------------------------- t DATA=13: DATA0jbDATAT`j----------------------------------------------------------------------------- EEDATAXc14: DATAjbDATATj----------------------------------------------------------------------------- DATA>15: DATAjbDATATj============================================================================= EDATA=16: DATA@jjDATATpj----------------------------------------------------------------------------- EEDATAH=17: DATAjjDATAT j----------------------------------------------------------------------------- EEDATAh=18: DATAjjrDATATЬj----------------------------------------------------------------------------- EEDATA =19: DATAPjjDATATj----------------------------------------------------------------------------- qDATA=20: DATAj==DATAT0j============================================================================= EETXdjجm`jTXblenderman0.1betapjjljjmDATALpj/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.pyDATAj0j(chtmlDATA0jxjj@l)DATAxjj0j(=DATAjjxjplFREEDATAjPjjl DATAPjjjlDATAjjPj@l6zDATAj(jjlRW@DATA(jpjjlDATApjj(jl> 0 SDATAjjpjxl$DATAjHjjlFREEDATAHjjjl8e.icDATAjطjHjl2.X DATAطj jjlDATA jhjطjlDATAhjj jPl DATAjjhj= DATAj@jj0> 9DATA@jjjlDATAjйj@jlDATAйjjj lDATAj`jйjhlculaDATA`jjjl QDATAjj`jlDATAj8jj@lDATA8jjjlDATAjȻj8jlts@DATAȻjjj=of@DATAjXjȻjl$DATAXjjj`DATAjjXj@lFDATAj0jjlDATA0jxjjlDATAxjj0jl1DATAjjxjxleo SDATAjPjjlr %xDATAPjjjlDATAjjPj@l"CDATAj(jjl!FREEDATA(jpjjl2e EdDATApjj(j@lile DATAjjpjplDATAjHjjl*ytagDATAHjjjl&DATAjjHjhl(ageTDATAj jjl-|DATA jhjj lDATAhjj jPlDATAjjhjl`-DATAj@jjlDATA@jjjlDATAjj@jXlDATAjjjl rDATAj`jjl72 .DATA`jjj0l44 .DATAjj`jxlDATAj8jjlartDATA8jjjlDATAjj8jPl#DATAjjjlDATAjXjjlDATAXjjj@l ip@DATAjjXjl!DATAj0jjl"4 21DATA0jxjj0 l# DATAxjj0j l%-W@DATAjjxj l!--- DATAjPjj(!l# jerDATAPjjjx!l"4 23DATAjjPj!l!@DATAj(jj"l!DATA(jpjjh"l#27-MDATApjj(j"l" DATAjjpj#lRelaDATAjHjjP#lDATAHjjj#lDATAjjHj#lDATAj jj8=LDATA jhjj $l(DATAhjj jh$lDATAjjhj$lDATAj@jjp` DATA@jjj$lDATAjj@j@%l'DATAjjj%lDATAj`jj%lDATA`jjj&lDATAjj`jh&lDATAj8jj&l'DATA8jjj&lDATAjj8j@'lDATAjjj'lDATAjXjj'l?DATAXjjj(l'DATAjjXj`(lDATAj0jj(lDATA0jxjj(lDATAxjj0j@)l?DATAjjxj)l'DATAjPjj)lDATAPjjj*lDATAjjPjX*lDATAj(jj*lDATA(jpjj*lcDATApjj(j0+lDATAjjpj+lDATAjHjj+lDATAHjjj,lDATAjjHjX,l LDATAj jj,lDATA jhjj,lDATAhjj j8-lDATAjjhj-lDATAj@jj-lDATA@jjj(.l DATAjj@jx.lDATAjjj.lDDATAj`jj/lDATA`jjjh/lt FiDATAjj`j/lDATAj8jj/lDATA8jjjH0l-X DATAjj8j0l DATAjjj0lDATAjXjj01l'DATAXjjj1lDATAjjXj1l/DDATAj0jj2lDATA0jxjj`2lPDATAxjj0j2lDATAjjxj2lDATAjPjj@3lpADATAPjjj3lʒDATAjjPj3lFREEDATAj(jj0m(DATA(jpjjxmDATApjj(jmDATAjjpjmDATAjHjjXm?DATAHjjjmDATAjjHjmDATAj jj8mDATA jhjjmDATAhjj jmDATAjjhjm4 21DATAj@jjPm jerDATA@jjjm27-SDATAjj@jm21-FDATAjjjmDATAj`jjmDATA`jjj8m&DATAjj`jmDATAj8jjm*DATA8jjj0myk&DATAjj8jmDATAjjj@m Hz&DATAjXjjmqDATAXjjjPmr-- DATAjjXjm23-ODATAj0jjm07-FDATA0jxjjm4 22DATAxjj0jm DATAjjxjHm DATAjPjjm4 21DATAPjjj`m04-JDATAjjPjm(DATAj(jjmDATA(jpjj@mDATApjj(jmDATAjjpjm?DATAjHjjmDATAHjjj`mDATAjjHjmDATAj jjmDATA jhjj8mDATAhjj jm jerDATAjjhjm08-ODATAj@jjm jerDATA@jjj8m=r-x DATAjj@jma96 .DATAjjj8m_@DATAj`jjmCr-x DATA`jjj8mA@DATAjj`jm148 .DATAj8jjm> jerDATA8jjjxmy DATAjj8j m703-ADATAjjjmDATAjXjjmDATAXjjjm DATAjjXjXmDATAj0jjm4DATA0jxjjpa DATAxjj0jmDATAjjxj(m$DATAjPjjm"DATAPjjjm,DATAjjPj0m08:3DATAj(jjpmDATA(jpjjmDATApjj(jm834DATAjjpj m DATAjHjj`m DATAHjjjmDATAjjHjmDATAj jjm 1DATA jhjjXm\t{ADATAhjj jm.DATAjjhjmDATAj@jj0m@DATA@jjjxm,4DATAjj@jmDATAjjjn/DATAj`jjpn#DATA`jjjn3DATAjj`j n/DATAj8jjn8DATA8jjjn/DATAjj8jHn-DATAjjjn28DATAjXjjn DATAXjjjXn!DATAjjXjn$DATAj0jjn")ADATA0jxjjPnDATAxjj0jnDATAjjxjnDATAjPjj n3DATAPjjjhn DATAjjPjnDATAj(jjn"DATA(jpjjPnDATApjj(jn%DATAjjpjn3 DATAjHjj8nDATAHjjjnDATAjjHjn (DATAj jjnDATA jhjj`nDATAhjj jnDATAjjhjnDATAj@jj@ niDATA@jjj nDATAjj@j nDATAjjj nDATAj`jj` nDATA`jjj nDATAjj`j n DATAj8jj nPDATA8jjj nU?DATAjj8j n_DATAjjj npDATAjXjjH naDATAXjjj nb8DATAjjXjhn_DATAj0jjnZDATA0jxjjngFREEDATAxjj0jn`DATAjjxjnPDATAjPjj(n^DATAPjjjnEUV/IDATAjjPj0n^DATAj(jjn^DATA(jpjjPnXbDATApjj(jn=DATAjjpjHnDATAjHjjxn2DATAHjjjn DATAjjHjnDATAj kjXnDATA khkjnDATAhkk knDATAkkhkn4DATAk@kkxntor DATA@kkkn(DATAkk@k nDATAkkkhn.DATAk`kknDATA`kkkn(DATAkk`khnDATAk8kknDATA8kkkn&ADATAkk8k n)DATAkkkxnxDATAkXkk nsDATAXkkkn?DATAkkXkpnDATAk0kk0ndDATA0kxkknDATAxkk0kndDATAkkxk8nDATAkPkknDATAPkkkPnDATAkkPknDATAk(kknLDATA(kpkkp nN@2YDATApkk(k n100%DATAkkpk!nDATAkHkk"nDATAHkkk"nyDATAkkHk`#n}DATAk kk$nDATA kh kk$nDATAh k k k%nbDATA k kh k8&nnDATA k@ k k&niDATA@ k k kp'naDATA k k@ k(nDATA k k kH(n}DATA k` k k(n@DATA` k k k)njeroDATA k k` k*n{*.&DATA k8 k k*n 2 DATA8 k k k`+nay-0DATA k k8 k+nDATA k k kX,nDATA kX k k-n@`DATAX k k k`-nwmeDATA k kX k.n4DATA k0k k.n DATA0kxk k/n}12:4DATAxkk0k/nDATAkkxkx0nDATAkPkk0n}DATAPkkkp1nDATAkkPk02ntzEiADATAk(kk2nDATA(kpkk3njDATApkk(k 4niDATAkkpk4nIDATAkHkk05nLvDATAHkkk5nTDATAkkHk86nTDATAk kk6nDATA khkk7nDATAhkk kH7nSDATAkkhk7nDATAk@kk7nDATA@kkk8nDATAkk@kX8nDATAkkk8nDATAk`kk8n-UDATA`kkk(9nDATAkk`kp9nDATAk8kk9n7DATA8kkk :nDATAkk8k`:nDATAkkk:n*DATAkXkk;nbDATAXkkk;nDATAkkXk;n DATAk0kk n tDATA(kpkkh>ntDATApkk(k>n}DATAkkpk?niDATAkHkkX?nt|DATAHkkk?n | DATAkkHk?ndDATAk kk@ndDATA khkkh@ntDATAhkk k@AnWqDATAkkhkAnYidDATAk@kkBno?DATA@kkkBn7}DATAkk@k8Cn[*tDATAkkkCnqWDATAk`kkDnu|DATA`kkkDntDATAkk`kDnp|DATAk8kkEn}xDATA8kkkHFnDATAkk8kGnDATAkkkGn DATAkXkkHnDATAXkkkHnDATAkkXk(InDATAk0 kkInDATA0 kx kk(Jns DATAx k k0 kJn0meDATA k!kx k(KnyDATA!kP!k kKnmeDATAP!k!k!kLnA{ADATA!k!kP!kLn{ DATA!k("k!kpMnv19:1DATA("kp"k!kNnDATAp"k"k("khNn832DATA"k#kp"kNnDATA#kH#k"kOnr--DATAH#k#k#kPPnDATA#k#kH#kQnDATA#k $k#kQn@DATA $kh$k#kRnF4DATAh$k$k $kRn'7@DATA$k$kh$kSnDATA$k@%k$kSnDATA@%k%k$kTnbDATA%k%k@%kTnDATA%k&k%kUn DATA&k`&k%k@Vn4DATA`&k&k&kWn"DATA&k&k`&kPWnc4DATA&k8'k&kWnDATA8'k'k&k Xn~DATA'k'k8'kXnDATA'k(k'kYnDATA(kX(k'kYn DATAX(k(k(k ZnwDATA(k(kX(kZnDATA(k0)k(k[nDATA0)kx)k(kX[naDATAx)k)k0)k[nDATA)k*kx)k8\n]DATA*kP*k)k\n@DATAP*k*k*k8]nDATA*k*kP*k]n@DATA*k(+k*k]n@DATA(+kp+k*k`^nKDATAp+k+k(+k^n@DATA+k,kp+k(_njF4DATA,kH,k+k_nkDATAH,k,k,kX`njDATA,k,kH,k`nlCADATA,k -k,kanDATA -kh-k,kanfDATAh-k-k -kxbnpDATA-k-kh-kcnssuADATA-k@.k-kcnd+hDATA@.k.k-kPdncDATA.k.k@.kdnM(WDATA.k/k.k`enDATA/k`/k.kenq}@DATA`/k/k/kPfnbDATA/k/k`/kfnDATA/k80k/k0gnDATA80k0k/kxgnDATA0k0k80kgnMdDATA0k1k0k@hni DATA1kX1k0khndDATAX1k1k1khnOGHnDATA1k1kX1kXin|DATA1k02k1k8jni"DATA02kx2k1kjnOnDATAx2k2k02kknS:iDATA2k3kx2kknPjDATA3kP3k2kln=itDATAP3k3k3kxlngDATA3k3kP3kmn`d*tDATA3k(4k3kmnDx&DATA(4kp4k3knn[jDATAp4k4k(4knn|DATA4k5kp4knnd,DATA5kH5k4koniDATAH5k5k5k`oned0|DATA5k5kH5kon|DATA5k 6k5k@pn7nBDATA 6kh6k5kpnjDATAh6k6k 6kpn].}DATA6k6kh6k@qnd DATA6k@7k6kqn}DATA@7k7k6kqn$iDATA7k7k@7k(rn}DATA7k8k7krntDATA8k`8k7k@snVqPDATA`8k8k8ksnO|DATA8k8k`8kHtndLocDATA8k89k8ktn)DATA89k9k8ktnDATA9k9k89k8un!DATA9k:k9kun)DATA:kX:k9kunDATAX:k:k:k0vnDATA:k:kX:kxvn"DATA:k0;k:kvn CDATA0;kx;k:kwnXDATAx;k;k0;kwnsDATA;kkp=k{n/DATA>kH>k=k{n|DATAH>k>k>k|n1?DATA>k>kH>k|ny?DATA>k ?k>k}n DATA ?kh?k>k}nDATAh?k?k ?k~na?DATA?k?kh?k0naDATA?k@@k?knfDATA@@k@k?kXn$hDATA@k@k@@knx"' DATA@kAk@khn``DATAAk`Ak@knDATA`AkAkAknDATAAkAk`AkHnDATAAk8BkAkpn$DATA8BkBkAkȃn1DATABkBk8Bk(nDATABkCkBknIDATACkXCkBkXnsDATAXCkCkCkn-DATACkCkXCkXn2DATACk0DkCknDDATA0DkxDkCk0nDATAxDkDk0DkxnqDATADkEkxDknBDATAEkPEkDk`neFREEDATAPEkEkEkn$DATAEkEkPEkPnDATAEk(FkEkn^'+|ADATA(FkpFkEk0n5SDATApFkFk(Fkn[DATAFkGkpFkn[4DATAGkHGkFkn^ADATAHGkGkGk n^QDATAGkGkHGknDDATAGk HkGk(noDATA HkhHkGkȍnaDATAhHkHk HkXndDATAHkHkhHknDATAHk@IkHk nDATA@IkIkHk`nDATAIkIk@IknADATAIkJkIkn24-ODATAJk`JkIk0n!DATA`JkJkJknDATAJkJk`JkȐn.DATAJk8KkJk(nmeDATA8KkKkJkhnA{ADATAKkKk8Kkn!bDATAKkLkKknDATALkXLkKkHn.T{ADATAXLkLkLknDATALkLkXLknaDATALk0MkLknDATA0MkxMkLkȓn3rw-DATAxMkMk0Mk(n@DATAMkNkxMkpnorwDATANkPNkMknDATAPNkNkNkXn8DATANkNkPNkn1DATANk(OkNknWDATA(OkpOkNknDATApOkOk(Okؖn;DATAOkPkpOk@nbDATAPkHPkOkn2meDATAHPkPkPknDATAPkPkHPk0n1DATAPk QkPknDATA QkhQkPkؘn0r--DATAhQkQk Qk8nDATAQkQkhQknSDATAQk@RkQknʒDATA@RkRkQk0n/homDATARkRk@Rkxn!DATARkSkRkȚnDATASk`SkRkn)DATA`SkSkSkXn DATASkSk`SknDATASk8TkSknDATA8TkTkSknoDATATkTk8Tkn&?DATATkUkTkn 52 .DATAUkXUkTk0nDATAXUkUkUknDATAUkUkXUkȝnDATAUk0VkUkn2'+|ADATA0VkxVkUk`nDATAxVkVk0Vkn DATAVkWkxVknDATAWkPWkVk(nDATAPWkWkWkhnDATAWkWkPWknDATAWk(XkWknQDATA(XkpXkWkHn,DATApXkXk(Xkn DATAXkYkpXkn*DATAYkHYkXk8nADATAHYkYkYkpn,DATAYkYkHYkСn"DATAYk ZkYk n.DATA ZkhZkYknDATAhZkZk ZknDATAZkZkhZknADATAZk@[kZkPn$DATA@[k[kZknDATA[k[k@[knDATA[k\k[k(nDATA\k`\k[kxn1DATA`\k\k\kؤnA{ADATA\k\k`\knDATA\k8]k\khn'DATA8]k]k\kn T{ADATA]k]k8]knXQDATA]k^k]kPn,DATA^kX^k]knDATAX^k^k^knDATA^k^kX^k8nDATA^k0_k^kxnDATA0_kx_k^knDATAx_k_k0_knDATA_k`kx_kPn,DATA`kP`k_knDATAP`k`k`knDATA`k`kP`k8nDATA`k(ak`kxnDATA(akpak`knDATApakak(aknDATAakbkpakPn-DATAbkHbkaknDATAHbkbkbknDATAbkbkHbk8nDATAbk ckbkxnDATA ckhckbknDATAhckck cknDATAckckhckPn-DATAck@dkcknDATA@dkdkcknDATAdkdk@dk8nDATAdkekdkxnDATAek`ekdknDATA`ekekeknDATAekek`ekPn`DATAek8fkekn`DATA8fkfkekخnPPPDATAfkfk8fk nPPPDATAfkgkfkhnPPPDATAgkXgkfknDATAXgkgkgknDATAgkgkXgk@nDATAgk0hkgknDATA0hkxhkgkȰnDATAxhkhk0hknDATAhkikxhkXnDATAikPikhknDATAPikikiknDATAikikPik0nDATAik(jkikpnDATA(jkpjkiknDATApjkjk(jknDATAjkkkpjkHnDATAkkHkkjknDATAHkkkkkkгnDATAkkkkHkk nDATAkk lkkk`nDATA lkhlkkkn`DATAhlklk lknDATAlklkhlk8nDATAlk@mklknDATA@mkmklknPPPDATAmkmk@mknDATAmknkmkPnDATAnk`nkmknDATA`nknknknDATAnknk`nk(nDATAnk8oknkpnDATA8okoknknDATAokok8okn'DATAokpkokXn]˾DATApkXpkoknDATAXpkpkpkn1DATApkpkXpknDATApk0qkpknDATA0qkxqkpkn DATAxqkqk0qk@n)µDATAqkrkxqknDATArkPrkqkn DATAPrkrkrk nDATArkrkPrkhn'ķDATArk(skrknDATA(skpskrknDATApsksk(skPn,DATAsktkpskn<ǺDATAtkHtksk n'DATAHtktktkxn:DATAtktkHtknDATAtk uktk(nɼDATA ukhuktkhnDATAhukuk uknDATAukukhuknDATAuk@vkuk0nDATA@vkvkukpn(DATAvkvk@vknDATAvkwkvknDATAwk`wkvkXnDATA`wkwkwknDATAwkwk`wknDATAwk8xkwk0nMDATA8xkxkwkn"DATAxkxk8xknDATAxkykxkPn'DATAykXykxkn(DATAXykykykn9DATAykykXykhnDATAyk0zkykn&DATA0zkxzkyknDATAxzkzk0zk`n'DATAzk{kxzkn:DATA{kP{kzk nDATAP{k{k{kpn+PPPDATA{k{kP{knDATA{k(|k{knDATA(|kp|k{kPn&DATAp|k|k(|kn$FREEDATA|k}kp|knDATA}kH}k|k@nDATAH}k}k}knDATA}k}kH}kn,DATA}k ~k}k8n@2YDATA ~kh~k}kn-DATAh~k~k ~kn4DATA~k~kh~kHnDATA~k@k~knDATA@kk~knTh DATAkk@k(nnce DATAkkkxn3DATAk`kknDATA`kkkn(kCDATAkk`kn:H DATAk8kkXn'DATA8kkknDATAkȁk8knDATAȁkkk@n!DATAkXkȁknDATAXkkknDATAkkXknDATAk0kkhnDATA0kxkkn5DATAxkk0kn9PoinDATAkkxkxn(QDATAkPkkn8DATAPkkknSDATAkkPkXnUDATAk(kknFREEDATA(kpkknDATApkk(k0nDATAkkpkxnDATAkHkkn8DATAHkkknIΒDATAk؆kHkxnHlYDATA؆k kkn&FREEDATA khk؆kHn(UIDATAhkk kn'DATAkkhkn)DATAk@kkPn'DATA@kkkn"9DATAkЈk@kn.]DATAЈkkkXnEZDATAk`kЈknUIDATA`kkknBFREEDATAkk`kn>8DATAk8kkn.DATA8kkkXnRDATAkȊk8kn0DATAȊkkk8nNDATAkXkȊknD8aDATAXkkk0nUIDATAkkXkxn>FREEDATAk0kkn_FREEDATA0kxkkxn`UIDATAxkk0knbDATAkkxkPnlgDATAkPkknΒDATAPkkkn8DATAkkPk(nUIDATAk(kkn8DATA(kpkkn"lDATApkk(knJRW@DATAkkpkxnDATAkHkknlDATAHkkkn(DATAk؏kHk`nFREEDATA؏k kknDATA khk؏knqXnDATAhkk kn+pDATAkkhkn-8DATAk@kk8n&DATA@kkkn(HrDATAkБk@kn09DATAБkkkHn-FREEDATAk`kБkn0LvDATA`kkkn,UIDATAkk`khn0sDATAk8kkn*8DATA8kkk n9DATAkȓk8kn_DATAȓkkkn&ΒDATAkXkȓkpn FREEDATAXkkknUIDATAkkXkn%DATAk0kk`n&(zDATA0kxkknFREEDATAxkk0knpyDATAkkxkHn& = DATAkPkknzDATAPkkknDATAkkPk0nDATAk(kkpnDATA(kpkknDATApkk(knDATAkkpkHnDATAkHkkn)1DATAHkkknZQk;DATAkؘkHk nDATAؘk kkhnNo SDATA khkؘknDATAhkk knDATAkkhkHnDATAk@kknDATA@kkkn @BDATAkКk@knDATAКkkk`nDATAk`kКknDATA`kkknDATAkk`k8nDATAk8kknLDATA8kkknDATAkȜk8knDATAȜkkkPnDATAkXkȜknDATAXkkknDATAkkXk npUW@DATAk0kkhnUIDATA0kxkknFREEDATAxkk0kn= DATAkkxk8n= DATAkPkkn9DATAPkkkn= DATAkkPkn4= DATAk(kkPnFREEDATA(kpkkn= DATApkk(kn= DATAkkpk(nFREEDATAkHkkhn= DATAHkkkn*D= DATAkءkHkn&ΒDATAءk kkhnFREEDATA khkءknDATAhkk kn+t= DATAkkhkPn!= DATAk@kkn&FREEDATA@kkkn"DATAkУk@kHn&8DATAУkkkn'L= DATAk`kУknDATA`kkk@nUIDATAkk`knDATAk8kkn*= DATA8kkk0n19DATAkȥk8knFREEDATAȥkkkn DATAkXkȥk n&GDATAXkkkxnDATAkkXknDATAk0kknDATA0kxkkPnDATAxkk0kn*DATAkkxkn1DATAkPkkXn7DATAPkkknDATAkkPknDATAk(kkXnDATA(kpkknDATApkk(knDATAkkpk o?DATAkHkkoDATAHkkko,%t|BDATAkتkHk(on EdDATAتk kk`o er PDATA khkتkoFREEDATAhkk ko#Add DATAkkhk8oDATAk@kko%DATA@kkkoDATAkЬk@k0o,DATAЬkkkhoTo ODATAk`kЬko&DATA`kkkoDATAkk`kXoDATAk8kko&xDATA8kkko DATAkȮk8k8oDATAȮkkkho$DATAkXkȮkoADATAXkkko~FREEDATAkkXkoDATAk0kkhoQDATA0kxkko ,DATAxkk0k(o(DATAkkxko,DATAkPkkoDATAPkkk o CDATAkkPkh oFREEDATAk(kk o DATA(kpkk o"DATApkk(k0 oDATAkkpkx oiDATAkHkk owDATAHkkk ooDATAkسkHkX ogDATAسk kk o"DATA khkسk@ o*DATAhkk k oDATAkkhk o DATAk@kkoDATA@kkk`oxDATAkеk@kotDATAеkkkooDATAk`kеkPovDATA`kkkooDATAkk`korDATAk8kk8orDATA8kkkozDATAkȷk8ko2DATAȷkkkoDATAkXkȷk oDATAXkkk`oDATAkkXko#DATAk0kkoDATA0kxkk@oDATAxkk0koDATAkkxkoDATAkPkko DATAPkkkPoDATAkkPkoDATAk(kkoDATA(kpkkoDATApkk(k@oDATAkkpkxoDATAkHkko DATAHkkko DATAkؼkHk0o DATAؼk kkhoDATA khkؼko+DATAhkk ko DATAkkhkHoDATAk@kkoDATA@kkkoDATAkоk@k(o(DATAоkkkoDATAk`kоko*DATA`kkk(oDATAkk`kxo(DATAk8kko DATA8kkko DATAkk8kHoDATAkkko"DATAkXkko$DATAXkkk8o$DATAkkXko%DATAk0kko&DATA0kxkk@o"DATAxkk0ko%DATAkkxko%DATAkPkk@o#DATAPkkko"DATAkkPkoDATAk(kk0 o#DATA(kpkk o#DATApkk(k o!DATAkkpk !o$DATAkHkkx!oDATAHkkk!o DATAkkHk"o(DATAk kkp"o#DATA khkk"oDATAhkk k#o!DATAkkhkX#o'DATAk@kk#oDATA@kkk$o"DATAkk@kP$oDATAkkk$o$DATAk`kk$o"DATA`kkk@%o&DATAkk`k%o(DATAk8kk%o-DATA8kkkP&o!DATAkk8k&oDATAkkk&o$DATAkXkkH'o DATAXkkk'o DATAkkXk'o!DATAk0kk8(o!DATA0kxkk(oDATAxkk0k(o!DATAkkxk()oDATAkPkkx)o'sDATAPkkk)o'DATAkkPk(*oDATAk(kkx*o#DATA(kpkk*o"DATApkk(k+o"DATAkkpkh+o DATAkHkk+o#DATAHkkk,oDATAkkHkP,oDATAk kk,oDATA khkk,o!DATAhkk k8-oDATAkkhk-oDATAk@kk-oDATA@kkk(.o DATAkk@kx.oDATAkkk.oDATAk`kk/oDATA`kkkh/o DATAkk`k/o DATAk8kk0o DATA8kkkX0oDATAkk8k0oDATAkkk0o!`DATAkXkkH1o$`DATAXkkk1o`DATAk`Xk1o#DATA``k@2o'DATA` ``2oPPPDATA `h``2oPPPDATAh`` `83oPPPDATA``h`3o!PPPDATA`@``3oDATA@```(4o!DATA``@`x4o#DATA```4oDATA````5oDATA````h5o"аDATA````5o!DATA`8``6o DATA8```X6oDATA``8`6oDATA```6o˾DATA`X``H7oDATAX```7o#DATA``X`7o!DATA`0``88o#DATA0`x``8oDATAx``0`8oDATA``x`(9oDATA`P``x9o!DATAP```9o$fffDATA``P` :o#fffDATA`(``p:o&µDATA(`p``:o"DATAp``(`;o$DATA``p`p;o%DATA`H``;o$mmmDATAH``` o'ǺDATA@```p>o#DATA``@`>o'DATA```?o$DATA````p?o#}}}DATA````?o(}}}DATA````@o!DATA`8``h@oDATA8```@oDATA``8`@oDATA```AovDATA`X``AoDATAX```BoDATA``X`HBoDATA`0``BoDATA0`x``BoDATAx``0`CoDATA``x`HCoDATA`P``CoDATAP```CoDATA``P`CoDATA`(``(DoDATA(`p``pDoDATAp``(`DoDATA``p`DoDATA`H`` EoDATAH```XEoDATA``H`EoDATA` ``EoDATA `h``FoDATAh`` `XFoDATA``h`FoDATA`@``FoDATA@``` GoDATA``@``GoDATA```Go DATA````GoDATA````Ho DATA````PHoDATA`8``HoDATA8```HoPPPDATA``8`Io9PPPDATA```pIo6PPPDATA`X``IoDATAX```(JoDATA``X`pJo FREEDATA`0``JoDATA0`x``Jo0DATAx``0`@KoDATA``x`xKoDATA`P``KoDATAP```LoDATA``P`8LoDATA`(``xLoDATA(`p``LoDATAp``(`MoDATA``p`8MoDATA`H``hMoDATAH```Mo_DATA``H`8NodDATA` ``NoDATA `h``OoDATAh`` ``OoDATA``h`Oo.DATA`@``Oo DATA@```HPo2DATA``@`Po.DATA```Qo8DATA````pQo.DATA````Qo,DATA````0RoDATA`8``RoDATA8```RoմDATA``8` So"մDATA```pSo մDATA`X``SoմDATAX```SoDATA``X`8ToDATA`0``ToPPPDATA0`x``To"PPPDATAx``0`(UoPPPDATA``x`pUoPPPDATA`P``UoDATAP```VoDATA``P`XVoDATA`(``VoDATA(`p``VoDATAp``(`(WoDATA``p``WoɼDATA`H``Wo*DATAH```WoXDATA``H`pXoDATA` ``Xo(DATA `h``Yo#DATAh`` `hYo#˾DATA``h`YoDATA`@``Zo+DATA@````ZoDATA``@`Zo+DATA```ZoDATA````@[o DATA````[oDATA````[ooDATA`8``\o#DATA8```\o"hhhDATA``8` ]o:PPPDATA```]onDATA`X``(^o?DATAX```^oGDATA``X`_oApppDATA`0``_oŸDATA0`x``_o9DATAx``0` `o DATA``x`X`oDATA`P```oDATAP````oxxxDATA``P` aoPDATA`(``ao;DATA(`p``bo0DATAp``(`hbo?DATA``p`boFDATA`H``PcoTDATAH```coMDATA``H`XdoKDATA` ``doIDATA `h``HeoDATAh`` `eo ̿DATA``h`eo-DATA`@``@foFDATA@```fo/DATA``@`goCDATA```goKDATA````ho,DATA``4l``ho*DATA4l`4l``hoMDATA`4l4l4l8io,DATA4l4l`4lioDATA4l85l4lioNDATA85l5l4l`joDATA5l5l85ljo?DATA5l6l5lkoDATA6lX6l5lHkoDATAX6l6l6lxko%DATA6l6lX6lkoDATA6l07l6lloDATA07lx7l6lXloDATAx7l7l07lloDATA7l8lx7llo#DATA8lP8l7l0moDATAP8l8l8lhmoDATA8l8lP8lmo)PPPDATA8l(9l8lnoDATA(9lp9l8lPno9DATAp9l9l(9lnoDATA9l:lp9looDATA:lH:l9lHooDATAH:l:l:looDATA:l:lH:looDATA:l ;l:l poDATA ;lh;l:lhpoDATAh;l;l ;lpoDATA;l;lh;lpoDATA;l@l=l8soDATA8>l>l=lhsoDATA>l>l8>lsoDATA>l?l>lto DATA?lX?l>lPto'DATAX?l?l?ltoFDATA?l?lX?l uoDATA?l0@l?lXuoDATA0@lx@l?l voDATAx@l@l0@lPvoDATA@lAlx@lvoDATAAlPAl@lvo DATAPAlAlAl wo%DATAAlAlPAlxwoDATAAl(BlAlwo#DATA(BlpBlAlxoDATApBlBl(BlPxoDATABlClpBlxoDATAClHClBlxo DATAHClClCl(yoDATAClClHClpyo DATACl DlClyo%DATA DlhDlClzoDATAhDlDl Dl`zoDATADlDlhDlzo$DATADl@ElDlzo#DATA@ElElDl8{o%DATAElEl@El{o!DATAElFlEl{o%DATAFl`FlEl8|oDATA`FlFlFl|o#DATAFlFl`Fl|oDATAFl8GlFl}o DATA8GlGlFl`}oDATAGlGl8Gl}oDATAGlHlGl}o DATAHlXHlGl@~oDATAXHlHlHl~oDATAHlHlXHl~o*DATAHl0IlHl0o DATA0IlxIlHlhoDATAxIlIl0IloFDATAIlJlxIl(o%DATAJlPJlIlo3DATAPJlJlJloDATAJlJlPJlo DATAJl(KlJloNDATA(KlpKlJl`o%DATApKlKl(Klo&DATAKlLlpKlo3DATALlHLlKlpoxDATAHLlLlLloDATALlLlHLl`oDATALl MlLloDATA MlhMlLloDATAhMlMl Ml0oDATAMlMlhMloDATAMl@NlMloDATA@NlNlMloDATANlNl@NlPoLDATANlOlNlІo*DATAOl`OlNl(o2DATA`OlOlOloBDATAOlOl`OloDATAOl8PlOl@o0DATA8PlPlOlo DATAPlPl8Pl؈o0DATAPlQlPl8o5DATAQlXQlPlo'DATAXQlQlQlo9DATAQlQlXQl`oZDATAQl0RlQloDATA0RlxRlQl0o(DATAxRlRl0Rlo DATARlSlxRlo(DATASlPSlRlo%DATAPSlSlSlpoDATASlSlPSlo7DATASl(TlSlo#DATA(TlpTlSlho|DATApTlTl(Tlo!DATATlUlpTlhoDATAUlHUlTlo'DATAHUlUlUloDATAUlUlHUl8o#DATAUl VlUlo0DATA VlhVlUlo0DATAhVlVl VlHo0DATAVlVlhVlo0DATAVl@WlVlo3DATA@WlWlVlho3DATAWlWl@Wlȑo3DATAWlXlWl(o,DATAXl`XlWloDATA`XlXlXlȒoDATAXlXl`XloDATAXl8YlXl@oDATA8YlYlXloDATAYlYl8YlؓoDATAYlZlYl oDATAZlXZlYl`o.DATAXZlZlZlo'DATAZlZlXZlo%DATAZl0[lZlpoKDATA0[lx[lZlo+DATAx[l[l0[l@oDATA[l\lx[loDATA\lP\l[loDATAP\l\l\lo-DATA\l\lP\lXoDATA\l(]l\loEDATA(]lp]l\l oDATAp]l]l(]lXo;DATA]l^lp]loDATA^lH^l]loDATAH^l^l^lPo/DATA^l^lH^loPPPDATA^l _l^loDATA _lh_l^l(o#DATAh_l_l _lxo6DATA_l_lh_loDATA_l@`l_l(oDATA@`l`l_lpoDATA`l`l@`loDATA`lal`loDATAal`al`lHoGDATA`alalaloDATAalal`aloDATAal8blal@oDATA8blblaloDATAblbl8blo3DATAblclblo+DATAclXclblpoDATAXclclcloDATAclclXclo<DATAcl0dlclXoDATA0dlxdlclxoDATAxdldl0dlolDATAdlelxdl(oDATAelPeldlPoDATAPelelel`oqDATAelelPeloDATAel(flel(oDATA(flpflel8oDATApflfl(flpoDATAflglpfloDATAglHglflo`DATAHglglgloPPPDATAglglHgl0ovPPPDATAgl hlglتoPPPDATA hlhhlgloDATAhhlhl hloPPPDATAhlhlhhl`o@DATAhl@ilhlЭoDATA@ililhloBDATAilil@iloDATAiljlilЯo#DATAjl`jlil ovDATA`jljljlȰoDATAjljl`jloJDATAjl8kljl0oDATA8klkljl oDATAklkl8klXoDATAklllklo,DATAllXllkloDATAXllllllXoDATAllllXll8o6DATAll0mllloDATA0mlxmllloDDATAxmlml0ml`oDATAmlnlxmloDATAnlPnlmlȹoDATAPnlnlnloDATAnlnlPnl(oDATAnl(olnlpo#DATA(olpolnloDATApolol(oloPPPDATAolplpol@oDATAplHploloDATAHplplplмo)DATAplplHpl(o"DATApl qlplxo8DATA qlhqlploDATAhqlql ql0oDATAqlqlhqloDATAql@rlqlоoDATA@rlrlql oDATArlrl@rlpoDATArlslrloDATAsl`slrloDATA`slslsl`oDATAslsl`sloDATAsl8tlsloDATA8tltlsloDATAtltl8tlXo DATAtlultloDATAulXultloDATAXululul o DATAululXulXoDATAul0vluloDATA0vlxvluloDATAxvlvl0vl0oDATAvlwlxvlxo"DATAwlPwlvloDATAPwlwlwloDATAwlwlPwlHoDATAwl(xlwloDATA(xlpxlwloDATApxlxl(xloDATAxlylpxlHoDATAylHylxloDATAHylylyloDATAylylHyloDATAyl zlylPoDATA zlhzlyloDATAhzlzl zloDATAzlzlhzl oDATAzl@{lzlhoDATA@{l{lzloDATA{l{l@{loDATA{l|l{loDATA|l`|l{l`oDATA`|l|l|loDATA|l|l`|loDATA|l8}l|l8oDATA8}l}l|loDATA}l}l8}loDATA}l~l}loDATA~lX~l}lXoDATAX~l~l~loDATA~l~lX~loDATA~l0l~l8oDATA0lxl~lxoDATAxll0loDATAllxloDATAlPllPoDATAPllloDATAllPloDATAl(ll(oDATA(lpllpoDATApll(loDATAllploDATAlHllHoDATAHllloDATAl؂lHloDATA؂l ll oDATA lhl؂lho&DATAhll lo*DATAllhloDATAl@llXoDATA@llloDATAlЄl@loDATAЄlllo.DATAl`lЄlpoDATA`llloDATAll`loDATAl8llPoDATA8lllo DATAlȆl8lo(DATAȆlll o-DATAlXlȆloDATAXlllo+DATAllXl oDATAl0llpoDATA0lxllo DATAxll0loSDATAllxloeDATAlPll o4DATAPlllo!DATAllPloDATAl(ll(oDATA(lpllhoDATApll(lo\DATAllpl8oTDATAlHllo%DATAHllloDATAl؋lHlPo"DATA؋l llo'DATA lhl؋lo#DATAhll lHo'DATAllhlo DATAl@lloDATA@lll(o DATAlЍl@l`o`DATAЍllloDATAl`lЍl8oDATA`lllHo DATAll`lo DATAl8lloODATA8lll8oDATAlȏl8lo,DATAȏlllo+DATAlXlȏl8oDATAXllloDATAllXloDATAl0ll o DATA0lxllpo1DATAxll0lo-DATAllxl0oFDATAlPllo>DATAPllloDATAllPl`oEDATAl(lloDATA(lpll oDDATApll(loDATAllploGDATAlHllXoDATAHllloBDATAlؔlHloDATAؔl llXoEDATA lhlؔloDATAhll loEDATAllhloDATAl@lloDATA@lllo!DATAlЖl@l`o-DATAЖllloDATAl`lЖlo:DATA`lll`oDATAll`loFREEDATAl8lloDATA8lll o?zDDATAlȘl8lo DATAȘlllo DATAlXlȘlo DATAXlll8o\DATAllXloePE DATAl0ll`o(}DATA0lxlloMDATAxll0l0oDATAllxlo'DATAlPllo7DATAPlll@o/DATAllPloDATAl(llpo9DATA(lpllo/DATApll(l8o7DATAllplo8DATAlHllo<DATAHlllxo>DATAl؝lHloBDATA؝l llXo<DATA lhl؝loDATAhll loDATAllhloDATAl@ll`oDATA@lll@oDATAlПl@lxo DATAПllloDATAl`lПlo9DATA`lllo/DATAll`lho8DATAl8llo>DATA8lll@oDATAlȡl8lo]DATAȡllloDATAlXlȡl`oNDATAXllloDATAllXlo DATAl0llXoDATA0lxll0o9DATAxll0lo/DATAllxlopDATAlPllo+DATAPlllo,DATAllPlPo9DATAl(llo/DATA(lpllopDATApll(loDATAllploDATAlHllPoDATAHlllo DATAlئlHloDATAئl ll o"DATA lhlئlpoDATAhll loDATAllhl8DATAl@ll DATA@lllDATAlШl@lDATAШlllHSDATAl`lШlDATA`lllRDATAll`lDATAl8llUDATA8lllpDATAlȪl8lPDATAȪlll@DATAlXlȪlSDATAXlllDATAllXl`SDATAl0llDATA0lxll0DATAxll0lpDATAllxlDATAlPllxDATAPlll-DATAllPl-DATAl(llP DATA(lpll  DATApll(l DATAllpl :DATAlHllh #DATAHlll DATAlدlHlp  DATAدl ll ,DATA lhlدl DATAhll lP -DATAllhl DATAl@ll DATA@lll0 ;DATAlбl@l QDATAбlllDATAl`lбlXDATA`lll+DATAll`lJDATAl8llxDATA8lll<DATAlȳl8l0-DATAȳlllDATAlXlȳl:DATAXlll0DATAllXlxDATAl0llDATA0lxllDATAxll0l DATAllxlwDATAlPllxDATAPlll5DATAllPlQDATAl(llDATA(lpll DATApll(l DATAllplPDATAlHll%DATAHlllDATAlظlHl0DATAظl llhBDATA lhlظl DATAhll lDATAllhlH%DATAl@llDATA@lllDATAlкl@l( DATAкlll` DATAl`lкlDATA`lll.DATAll`lH DATAl8llDATA8lll DATAlȼl8lDATAȼlllP DATAlXlȼl4DATAXlllDATAllXl@%DATAl0ll!DATA0lxllDATAxll0l0 DATAllxlDATAlPllDATAPlll'DATAllPlh/DATAl(ll?DATA(lpll8DATApll(l/DATAllplDATAlHll0 &DATAHlll DATAllHl  DATAl ll!DATA lhllH! DATAhll l!=DATAllhl!SDATAl@llp"aDATA@lll# DATAll@l@# DATAlllx# DATAl`ll#DATA`lll#DATAll`l8$*DATAl8ll$$DATA8lll$DATAll8l8%9DATAlll%DATAlXll%"DATAXlll@&$DATAllXl&DATAl0ll&DATA0lxll '(DATAxll0lx'DATAllxl'?DATAlPll0( DATAPlll(DATAllPl(DATAl(ll)!DATA(lpll`)DATApll(l) DATAllpl)DATAlHll@*DATAHlll*DATAllHl*0DATAl ll0+DATA lhllp+ DATAhll l+DATAllhl+DATAl@ll8,0DATA@lll,DATAll@l, DATAlll-DATAl`llX-/DATA`lll-QDATAll`l8.1DATAl8ll.NDATA8lll/DATAll8lh/DATAlll/GDATAlXll(0DATAXlllx0GDATAllXl0DATAl0ll810DATA0lxll1DATAxll0l1DATAllxl(2DATAlPll`2DATAPlll2DATAllPl2*DATAl(llH3DATA(lpll3FDATApll(l46DATAllplp4DATAlHllx5XDATAHlll6DATAllHl86DATAl ll6+DATA lhll6DATAhll l(7GDATAllhl77DATAl@ll8DATA@lll9YDATAll@l9 DATAlll9DATAl`ll:DATA`lllX:DATAll`l:HDATAl8ll;8DATA8lll;DATAll8l<ZDATAlll= DATAlXll@=&DATAXlll= DATAllXl=DATAl0ll0>GDATA0lxll>7DATAxll0l?,DATAllxlp?DATAlPllx@ZDATAPlllA;DATAllPlhA DATAl(llA0DATA(lpllBDATApll(l`BLDATAllplB7DATAlHllHCDATAHlllPD_DATAllHlD$DATAl ll8E&DATA lhllE DATAhll lEDATAllhl(FIDATAl@llpF%DATA@lllFDATAll@lG)DATAlllpGDATAl`llG%ADATA`lllGDATAll`l@H#qJDATAl8llH DATA8lllHy@DATAll8lIi`DATAlllPI` DATAlXllI.^DATAXlllI$ԏ`DATAllXl@J,@DATAl0llpJ5ihDATA0lxllJ`V@DATAxll0lK*ZDATAllxlhK-DATAlPllKDATAPlllL DATAllPlXL `;@DATAl(llLDATA(lpllL DATApll(l(MD`DATAllplxM,DATAlHllMDATAHlll(NDATAllHlxN`Z@DATAl llN8g`DATA lhllO:DATAhll l`ODATAllhlOq@DATAl@llO7tDATA@lll@P X΂@DATAll@lxPł@DATAlllP9vDATAl`llP@DATA`lll8Q`DATAll`l$m#DATAl8llP$m }^DATA8lll$m g`DATAll8l$m DATAlll%m `DATAlXllH%m 첂@DATAXlll%m `DATAllXl%mDATAl0ll&mLĈDATA0lxllP&mDATAxll0l&m6DATAllxl'm DATAlPllP'mDATAPlll'm+`DATAllPl'mkpJDATAl(ll8(mztDATA(lpllp(m"DATApll(l(mn@DATAllpl)m.;DATAlHll`)m̎`DATAHlll)m8apJDATAllHl)m'9@DATAl ll@*m(@DATA lhll*m"u DATAhll l*msfDATAllhl(+mx`DATAl@llh+m@^@DATA@lll+m\`DATAll@l+mDATAlll8,m$aDATAl`ll,mDATA`lll,m(*ZDATAll`l0-mX@DATAl8llh-m6qJDATA8lll-m#DATAll8l.mDATAlll@.mDATAlXll.m,`DATAXlll.m@DATAllXl@/mx`DATAl0ll/m@DATA0lxll/mDATAxll0l0m^@DATAllxlX0mADATAlPll0m"@DATAPlll1m!DATAllPlX1m$}t^DATAl(ll1mDATA(lpll1mtpJDATApll(l@2mܒ`DATAllpl2mDATAlHll2m! @DATAHlll 3m/L@DATAllHl3m@@DATAl ll3mADATA lhll84mВ`DATAhll lx4mDATAllhl4mDATAl@ll5mȮ@DATA@lllP5mDATAll@l5mDATAlll5mDATAl`ll06m"DATA`lll6mCADATAll`l6m`DATAl8ll07mDATA8lllh7m)^DATAll8l7mDATAlll8m DATAlXllH8m$`4qJDATAXlll8mf`DATAllXl8m`!@DATAl0ll(9mh`DATA0lxllx9mDATAxll0l9m`DATAllxl:mDATAlPllX:m@DATAPlll:mDATAllPl:mT`DATAl(ll ;m|.DATA(lpll`;m|@DATApll(l;mDATAlmpl;m.DATAmHml0mjDATAmm@m>m!DATAmmm>mQ@DATAm`mm?m,CBTDATA`mmmh?m:t#qJDATAmm`m?m3~pJDATAm8mm0@mSDATA8mmm@m %tDATAmm8m@mDATAmmm Am߭QjDATAmXmmpAm @DATAXmmmAm@DATAmmXmAm DATAm0mm(BmDATA0mxmmhBm pJDATAxmm0mBmDATAmmxmBm DATAmPmm Cm4DATAPmmmCm =V;WDATAmmPmCm'DATAm(mmDmc^DATA(mpmm`DmDATApmm(mDm$`DATAm mpmDm(DATA mH mmPEm#8@DATAH m m mEmpڂ@DATA m mH mEm;`DATA m m m8Fm`DATA mh m mpFmDATAh m m mFm̻@DATA m mh mFmDATA m@ m m(Gm`DATA@ m m mpGmyDATA m m@ mGm pJDATA m m mGm&DATA m` m mPHm.`X@DATA` m m mHm7DATA m m` mHm DATA m8 m m@Im DATA8 m m mxImi`DATA m m8 mIm&X@DATA mm mJm. %@DATAmXm mxJmDATAXmmmJm @DATAmmXmJm7DATAm0mmXKm!@DATA0mxmmKmH @DATAxmm0mKm?~DATAmmxm8Lm<`DATAmPmmpLm2DATAPmmmLm`pJDATAmmPmMm DATAm(mmHMm DATA(mpmmMm DATApmm(mMm'ZDATAmmpmNmh`DATAmHmm@Nm=@DATAHmmmNm`DATAmmHmNmpJDATAm mmOm2t*pDATA mhmmxOmteleDATAhmm mOm agaDATAmmhmOm0edsDATAm@mmXPmepyDATA@mmmPm"jxpDATAmm@mPmarsDATAmmm0QmresDATAm`mmxQm2gainDATA`mmmQmcropDATAmm`m RmstsDATAm8mm`RmareaDATA8mmmRmltraDATAmm8mRmransDATAmmm8Sm3rinDATAmXmmSmolrDATAXmmmSm e[25DATAmmXm Tm1t[3]DATAm0mmTmv*bDATA0mxmmTmspacDATAxmm0mUm [4]DATAmmxm8Um*etoDATAmPmmUmwtyDATAPmmmUmrsubDATAmmPm VmquaDATAm(mm`VmondDATA(mpmmVm actDATApmm(mVmft*DATAmmpm(WmbkfDATAmHmmxWmizeDATAHmmmWmhysiDATAmmHmXm asxDATAm mm8XmrleaDATA mhmmXmgesDATAhmm mXm%yscDATAmmhmYmgeinDATAm@mmXYmFexpDATA@mmmYm lesDATAmm@mYm!160]DATAmmm(ZmblocDATAm`mmpZm0]peDATA`mmmZmaskDATAmm`m[mschDATAm8mmX[mckrDATA8mmm[mmenDATAmm8m[mightDATAm mm\move_DATA mX mmX\m+i_hDATAX m m m\mhfoDATA m mX m\mr_spDATA m0!m m@]m2ctioDATA0!mx!m m]m]buDATAx!m!m0!m]m4]vDATA!m"mx!m(^mfacDATA"mP"m!mp^mfontDATAP"m"m"m^mggaDATA"m"mP"m_m3menuDATA"m(#m"m`_mndyDATA(#mp#m"m_m neltDATAp#m#m(#m_mswapDATA#mkp#m`mgloDATAk0k#m``mtartDATA0kxkk`mpmeDATAxkk0k`m:endDATAkkxkXam4eighDATAkPkkamxycoDATAPkkkbml2tDATAkkPkHbm*froDATAk(kkbmactDATA(kpkkbmlocaDATApkk(k(cmnlocDATAkkpkpcm%filDATAkHkkcmAsounDATAHkkk8dmmeenDATAkkHkdmDclasDATAk kkdm]caDATA khkk@emutDATAhkk kem4ivDATAkkhkemxPlDATAk@kk fmrveDATA@kkkhfmbConDATAkk@kfmGrouDATAkkkgm"ceImDATAk`kkPgmGcrEdDATA`kkkgmybNDATAkk`khm!MessDATAk8kk`hm$tActDATA8kkkhmageADATAkk8kimeChaDATAkkkPimionCDATAkXkkimonStDATAXkkkim! DATAkkXk0jm/8DATAk0kkjm DATA0kxkkjmEDATAxkk0kPkmDATAkkxkkm1DATAkPkkkmGDATAPkkklm]DATAkkPkXlm}DATAk(kklmDATA(kpkklmDDATApkk(khmm>DATAkkpkmmDATAkHkknmDATAHkkkXnm,DATAkkHknm74DATAk kk omDFDATA khkkomSaDATAhkk kpm%?|DATAkkhkppm>DATAk@kkpm^DATA@kkkpqmVDATAkk@kqm'MDATAkkkPrm(DATAk`kkrm+(DATA`kkksm-6DATAkk`k`sm-RDATAk8kksmHtDATA8kkk8tm= DATAkk8ktmgDATAkkk@um3\DATAkXkkum% DATAXkkkum#DATAkkXkHvm%hDATAk0kkvm0DATA0kxkkwmDATAxkk0kPwmO5DATAkkxkwmW`DATAkPkkXxmqDATAPkkkxmEDATAkkPkymOwDATAk(kkym2DATA(kpkkymwDATApkk(k0zm&DATAkkpkzmWDATAkHkk{m'DATAHkkkh{m,2DATAkkHk{m4DATAk kk0|m$ DATA khkk|mDATAhkk k|mDATAkkhk}mDATAk@kkH}mDATA@kkk}m2tDATAkk@k}mDATAkkk8~m1DATAk`kk~m]DATA`kkk~m45DATAkk`kHmDATAk8kkm/DATA8kkkmDATAkk8k8m2'DATAkkkmDATAkXkkm2Ȇm DATAXkkk@m\m DATAkkXkmm DATAk0kkЁm4Тm DATA0kxkk8mĨm DATAxkk0km3DATAkkxkmDATAkPkk(m6DATAPkkkmDATAkkPk؃m1DATAk(kk8mDATA(kpkkm4DATApkk(kmDATAkkpk0m4DATAkHkkmDATAHkkkȅmDATAkkHkmDATAk kkPmDATA khkkmDATAhkk kȆmDATAkkhkmDATAk@kk`m(DATA@kkkm DATAkk@km%DATAkkkPmDATAk`kkm4DATA`kkkmDATAkk`k8m DATAk8kkxmDATA8kkkmDATAkk8kmDATAkkkHm"sssDATAkXkkmsssDATAXkkkm!sssDATAkkXk8m5sssDATAk0kkm!sssDATA0kxkkm+DATAxkk0kHm'DATAkkxkm DATAkPkkmDATAPkkk(m'DATAkkPkm"DATAk(kkЍm#DATA(kpkk m8DATApkk(km#DATAkkpk؎m"DATAkHkk(mDATAHkkkxmDATAkkHkm#DATAk kkmDATA khkkHmDATAhkk kmDATAkkhkАmDATAk@kkmDATA@kkk`mDATAkk@kmDATAkkkmDATAk`kk0mDATA`kkkxmiDATAkk`kmDATAk8kkXmbDATA8kkkmDATAkk8k0m;DATAklkm DATAlXlkmDATAXlll8m>DATAllXlm.DATAl0llmBDATA0lxllxmDATAxll0lm?DATAllxl0m;DATAlPllmDATAPlllЗmDATAllPlmhDATAl(llmDATA(lpllmgDATApll(lm DATAllplЙmDATAlHllmDATAHlll`mDATAllHlmDATAl llmDATA lhll8mDATAhll lm'DATAllhl؛mBDATAl@llHmcDATA@lll؜m3DATAll@l8m%DATAlllmLDATAl`llmDATA`lll`mDATAll`lmDATAl8llmDATA8lll@mDATAll8lpm0DATAl llПmTDATA lX llXm4DATAX l l lm"DATA l lX lm7DATA l0 l lxmDATA0 lx l lm0DATAx l l0 lmCDATA l lx lm0DATA lP l lmDATAP l l lmDATA l lP lmBDATA l( l lPm`DATA( lp l lmDATAp l l( l(mDATA l lp lpm+DATA lH l lȥm,DATAH l l l(mDATA l lH lpm7DATA l l lئmDATA lhl lm'DATAhll lpmFDATAllhlm3`DATAllHm3`DATA(c#!BPY tDATA@l6 dDATA(=""" y-0DATA plName: 'RenderMan (.rib)...' DATAlBlender: 233DATAlGroup: 'Export'DATA8@lTooltip: 'Save/Render a Scene to RenderMan Renderers' DATAl"""DATAlRW@DATA@l# RenderMan export script by Christoffer Green and Goran KocovDATA(xl# Pixie Extension by Joseph MontanezDATAl# version 0.1 Beta9.0bDATA<l# the script needs Blender 2.33 and Python 2.3 installedDATA4l# to run the script press alt+p in the text windowDATAlDATAlimport BlenderDATAPlimport string-gDATA =import osDATA 0>import sysDATAlfrom os import P_NOWAITDATAlfrom Blender.Draw import *DATA lfrom Blender.BGL import *DATAhlfrom Blender import SceneDATA$lfrom Blender.Scene import RenderDATAlfrom math import piDATA@lfrom math import atanDATAlfrom math import powDATAlDATA=try:DATAl import totiffDATA`except:DATAH@l print "Did not find the totiff module, will use ImageMagic instead\n"DATAlDATAlDATA4l# MAKE SURE YOU CHANGE THIS TO YOUR PYTHON FOLDER|ADATAxlif (os.name != "posix"):encDATA l sys.path = ['c:\\python23']DATAlDATA$@lscene = Blender.Scene.GetCurrent()DATA$lcamobj = scene.getCurrentCamera()DATA4lcamera = Blender.Camera.Get(camobj.getData().name)ODATA@lREEDATApl# The bevent constantsDATA,lexportevent = 1 # export button pressed DATA(lexitevent = 2 # exit button pressedDATA,hlupdateguievent = 3 # update the pressedu7 DATA0lfiletoggleevent = 999 # file button pressed7 DATA lDATAPl# GUI variablesDATAlfs = Create('')DATAlmenuval = Create(4)DATAldof = Create(0)DATAXlsamples = Create(2)DATAlstop = Create(2.0)0DATAllenght = Create(1.0)DATA0ldistance = Create(5.0)neDATAxlsrate = Create(3)DATAlfile = Create(0)DATAlbuffer = Create(1)DATA$Plfilename = Create("default.rib")DATA limage = Create("default")DATA ldirw = Create("default")DATA$@lpixierenderer = Create("rndr")-x DATA$lprmanrenderer = Create("prman")12DATA$ldlrenderer = Create("renderdl").DATA$0 lbmrtrenderer = Create("rendrib")DATA( lentropyrenderer = Create("entropy")x DATA$ laqsisrenderer = Create("aqsis")erDATA$(!lpixietexmaker = Create("texmake")DATA$x!lprmantexmaker = Create("txmake")DATA$!ldltexmaker = Create("tdlmake")erDATA$"lbmrttexmaker = Create("mkmip")-JDATA$h"lentropytexmaker = Create("mkmip")DATA$"laqsistexmaker = Create("teqser")aDATA#lradiosity = Create(0)DATAP#lradnum = Create(50)DATA#lgi = Create(0)DATA#lgisteps = Create(100)DATA8=#PixieDATA $lindirect = Create(0)DATAh$locclusion = Create(0)DATA$lambiSamples = Create(6)DATA p`#End PixieDATA$lgeom = Create(1)DATA@%lmeshexport = Create(1)DATA%lpointwidth = Create(1.0)DATA%lanim = Create(0)DATA &lmaxpixeldist = Create(20)DATAh&lmaxerror = Create(0.25)DATA&lrshadow = Create(1)DATA&lsmooth = Create(0.00)DATA@'lareasamples = Create(20)DATA'lbuff256 = Create(0)DATA'lbuff512 = Create(1)DATA(lbuff1024 = Create(0)DATA`(lbuff2048 = Create(0)DATA(lmotionblur = Create(0)DATA (lmotionblurframe = Create(1)DATA@)lrendert = Create(1)DATA)lcaustics = Create(0)DATA)lphoton = Create(4000)DATA*luv = Create(0)DATAX*lrecurs = Create(4)DATA*ldebug = Create(0)DATA*lhiddenlayer = Create(0)DATA 0+lglobalsettings = Create(1)DATA+lscenesettings = Create(0)DATA+lshadereditor = Create(0)DATA,lsurfaceshader = Create(3)DATA$X,lsurfaceshadername = Create("")serDATA,labout = Create(0)DATA,lshadermenu = Create(1)DATA 8-lambientshader = Create(1.00)ADATA -ldiffuseshader = Create(0.50) DATA -lspecularshader = Create(0.50)DATA$(.lroughnessshader = Create(0.10)DATA x.lcoefshader = Create(1.50)DATA .lreflblurshader = Create(0.00)DATA /lrefrblurshader = Create(0.00)DATAh/lobjecteditor = Create(0)DATA/lconvertbm = Create(1)DATA /lobjectshadermenu = Create(0)DATAH0larealightMESH = Create(0)DATA 0lrecievecaustics = Create(0)DATA 0ltransmittcaustics = Create(0)DATA(01ltransmittcausticsslider = Create(1.40)DATA1lreflsamples = Create(0)DATA1lrefrsamples = Create(0)DATA2lkr = Create(1.0)DATA`2lrendershadow = Create(0)DATA2lautogs = Create(0)DATA 2lreflectcaustics = Create(0)DATA@3lprogress = Create(1)DATA3lgain = Create(1.0)DATA3lgamma = Create(1.0)DATA0mlightx = Create(1.0)DATAxmbias = Create(0.25)DATA mraytraceshadow = Create(1)DATAmprojection = Create(0)DATA Xmtextureblurm = Create(0.0)DATAmnorm = Create(0.01)DATAmconverttex = Create(1)DATA8mgisphere = Create(1)DATAmrvisibility = Create(0)DATAmfinalgather = Create(0)DATAmrgba = Create(1)DATAPmcastshadow = Create(1)3-DDATAmreconvert = Create(0)DATAmtexturem = Create(' ')DATAmtexturem.val = ''DATAmtextshader = Create('Surface "plastic" ')DATA(8mtextshader.val = 'Surface "plastic"'DATAmtextshaderd = Create('Displacement "bumpy" ')DATA,mtextshaderd.val = 'Displacement "bumpy"'DATA0mhdritex = Create(' ')DATAmhdritex.val = ''DATA@mhdri = Create(0)DATAmpreworldrafile = Create(' ')DATAPmpreworldrafile.val = ''jerDATAmpreworldra = Create(0)9-MDATAmpostworldrafile = Create(' ') DATAmpostworldrafile.val = '' DATAmpostworldra = Create(0) .DATAHmobjectrafile = Create(' ')2DATAmobjectrafile.val = ''0DATA`mobjectra = Create(0)DATAmtextnor = Create(0)DATA milluminationmenu = Create(0)DATA@mareagi = Create(0)DATAmindirectgi = Create(1)DATAmeblur = Create(0.00)DATAmesamples = Create(1)DATA`mgianim = Create(1)DATAmamesh = Create(0)DATAmpatchsize = Create(4.0)DATA8melemsize = Create(2.0)DATAmminsize = Create(1.0)8-FDATAm DATAm# Other variablesDATA@8mrenderer = "PRMan |BMRT |Entropy |3Delight |AQSIS |Pixie "ngDATAdmshader = "Plastic (All)|Glass (BMRT, Entropy)|Shiny (BMRT, Entropy) |Custom (All) |BMS (All) "W@DATA`8mpixelsamples = "1 Preview|2 Good|3 Recomended|4|5 To High|6|7 For DoF|8|9|10 Best and Crazy"DATADmambiSamplesindex = "7 Preview|8|9|10|11 Good|12|13|14 Perfection"DATAD8mshadingrate = "0.25 Best|0.5|1 Good|2|4 Preview|6|8|12|16 Bad" .DATA4msratelist = [0.25, 0.5, 1, 2, 4, 6, 8, 12, 16]erDATA@mmeshex = "PointsPolygons |Polygons |SubdivSurface |Points "nDATA|xmillumination = "Plastic |Matte |RoughMetal |ThinPlastic |ShinyPlastic |ShinyMetal |Clay |BrushedMetal |Ceramic |Glass "-ODATA8 mprojectionm = "Plane |Cylinder |Sphere |UV-Map |Auto"DATAmsshader = "ADD NEW" DATAmsshader2 = ""DATAmshadernametemp = ""DATAXmselectedname = "" DATAmselectedtype = "Type: "DATA patmp = ""DATAmimagelist = ""DATA((mimagelistmenu = "No images loaded"DATA$mrgbatext = "rgb |rgba |rgbz |z "DATA0mcastshadowtext = "Os |opaque |shader |none"DATA0mtxdone = []DATApmw-DATAm# Global variablesDATAmincrement = 0DATA mxbar = 111 DATA `mi = 0DATAmmeshobjects = 0-MDATAmmaxblur = 10.0DATAmmeshnum = 0DATAXm--DATA0m# Create the BlenderMan directories on startup@DATAmif (os.name != "posix"):DATA0m rootdir = '/BlenderMan/'DATA0xm partitionname = Blender.sys.progname[0:2]26DATAmelse:DATA0n rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$pnpdir = rootdir + dirw.val + '/'DATA4nglobalpropertiesdir = pdir + '/GlobalProperties/'DATA0 nsurfaceshadersdir = pdir + '/SurfaceShaders/'DATA<ndisplacementshadersdir = pdir + '/DisplacementShaders/'DATA0nobjectsettingsdir = pdir + '/ObjectSettings/'DATA0Hnlightsettingsdir = pdir + '/LightSettings/'DATA4nmeshesdir = os.path.normpath(pdir + '/Meshes/')DATA$nimagesdir = pdir + '/images/'DATA$Xnshadowdir = pdir + '/shadows/'DATA(ntexturesdir = pdir + '/textures/'dDATA$nshadersdir = pdir + '/shaders/'DATAPntry: os.mkdir(rootdir)DATAnexcept OSError: passDATAntry: os.mkdir(pdir)DATA nexcept OSError: passDATA$hntry: os.mkdir(surfaceshadersdir)DATAnexcept OSError: passDATA$ntry: os.mkdir(globalpropertiesdir)DATAPnexcept OSError: passDATA(ntry: os.mkdir(displacementshadersdir)DATAnexcept OSError: passDATA8ntry: os.mkdir(meshesdir)DATAnexcept OSError: passDATA$ntry: os.mkdir(objectsettingsdir)DATAnexcept OSError: passDATA `ntry: os.mkdir(lightsettingsdir)DATAnexcept OSError: pass|DATAntry: os.mkdir(shadowdir)dDATA@ nexcept OSError: passSSDATA ntry: os.mkdir(texturesdir)DATA nexcept OSError: passDATA ntry: os.mkdir(imagesdir)DATA` nexcept OSError: passDATA nDATA ndef gui():DATAT n global menuval, dof, samples, stop, lenght, distance, srate, file, buffer, dirwDATAX n global filename, image, radiosity, radnum, gi, gisteps, geom, meshexport, pointwidthDATA` n global anim, maxpixeldist, maxerror, smooth, areasamples, buff256, buff512, buff1024, buff2048DATAt n global motionblur, motionblurframe, rendert, caustics, photon, uv, recurs, debug, globalsettings, scenesettingsDATAdH n global shadereditor, sshader, surfaceshader, surfaceshadername, about, shadermenu, ambientshaderEEDATAd n global diffuseshader, specularshader, roughnessshader, coefshader, reflblurshader, refrblurshaderDATA`hn global objecteditor, selectedname, convertbm, objectshadermenu, arealightMESH, recievecausticsDATA\n global transmittcaustics, transmittcausticsslider, reflsamples, refrsamples, rendershadowDATAhn global xbar, autogs, kr, progress, indirectgi, areagi, eblur, esamples, gianim, amesh, reflectcausticsDATAdn global patchsize, elemsize, minsize, textshader, raytraceshadow, bias, textshaderd, gain, gammaDATATn global lightx, textureblurm, texturem, norm, planarm, converttex, imagelistmenu.CDATA`(n global textnor, illuminationmenu, projection, hiddenlayer, gisphere, rvisibility, finalgathereDATAHn global hdritex, hdri, rgba, castshadow, reconvert, maxblur, sshader2DATA`0n global prmanrenderer, dlrenderer, bmrtrenderer, entropyrenderer, aqsisrenderer, pixierendererDATA`n global prmantexmaker, dltexmaker, bmrttexmaker, entropytexmaker, aqsistexmaker, pixietexmakerDATA\Pn global preworldra, preworldrafile, postworldra, postworldrafile, objectra, objectrafileDATA@n global ambiSamples, occlusion, indirect #Pixie Ambient stuffDATAHnREEDATA4xn if (autogs.val == 1): #automaticly select objects?DATA n Redraw(1)DATAn getSelectedObject()DATAXn saveload(0,0,'object')DATAnDATAn # GUI settingsDATA8n glClearColor(0.4,0.48,0.57, 0.0) # blue backgroundL DATA xn glClear(GL_COLOR_BUFFER_BIT)DATA,n glColor3f(0, 0, 0) # main black backDATA n glRectf(2, 2, 630, 340)DATA0hn glColor3f(0.4, 0.48, 0.57) # main blue backDATAn glRectf(4, 4, 628, 300)dDATA,n glColor3f(0.27, 0.3, 0.35) # blue topDATAhn glRectf(4, 302, 628, 338)DATAn glColor3f(1,1,1)DATAn?DATA, n # Buttons for the main BlenderMan panelsDATA|xn globalsettings = Toggle("Global Settings", 12, 75, 310, 100, 20, globalsettings.val, "Global project settings")DATAt n scenesettings = Toggle("Scene Settings", 557, 175, 310, 100, 20, scenesettings.val, "Global scene settings")DATAn shadereditor = Toggle("Shader Editor", 13, 275, 310, 100, 20, shadereditor.val, "Surface and diplacement shader settings")DATApn objecteditor = Toggle("Object Editor", 33, 375, 310, 100, 20, objecteditor.val, "Edit object settings that Blender doesn't support")DATAh0n about = Toggle("About", 16, 475, 310, 100, 20, about.val, "Information about this script")#CDATAnDATAn # Global SettingsDATA 8n if (globalsettings.val == 1):DATAn debug = Slider("Debug Level ", updateguievent, 440, 270, 180, 20, debug.val, 0, 3, 0, "How much debug information the renderer should output")DATAPn hiddenlayer = Number("Hidden Layer:", 0, 10, 270, 120, 20, hiddenlayer.val, 0, 20, "Objects that are present on this layer won't be exported")DATAn progress = Toggle("Progressbar", updateguievent, 520, 30, 100, 20, progress.val, "Hint: It takes slightly less time to export a scene with the progressbar off")DATAPn gain = Slider("Gain ", 0, 225, 270, 180, 20, gain.val, 0.0, 5.0, 0)DATAPp n gamma = Slider("Gamma ", 0, 225, 248, 180, 20, gamma.val, 0.0, 5.0, 0)DATA n lightx = Slider("Light* ", 0, 225, 226, 180, 20, lightx.val, 0.0, 15.0, 0, "Light intensity multiplier for lamps (pointlights) and spotlights")DATA!n if (menuval.val != 5):DATA"n recurs = Slider("RaySteps ", 0, 440, 248, 180, 20, recurs.val, 0, 15, 0, "Maximum number of steps for the raytracing recursion")DATA|"n reconvert = Toggle("Reconvert Textures", updateguievent, 440, 226, 180, 20, reconvert.val, "Reconvert UV textures")DATA`#n rgba = Menu(rgbatext, updateguievent, 370, 150, 90, 20, rgba.val, "What channels to export (A = Alpha. Z = Depth)")DATA$n 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$n samples = Menu(pixelsamples, updateguievent, 370, 75, 90, 20, samples.val, "Silhouette, motion blur and depth of field quality")DATAd%n srate = Menu(shadingrate, updateguievent, 370, 100, 90, 20, srate.val, "Shading quality")DATAp8&n filename = String("Filename: ", 0, 150, 75, 140, 19, filename.val, 200, "Name of the master RIB file")DATAl&n image = String("Image: ", 0, 150, 100, 140, 19, image.val, 200, "Name of the rendered image(s)")DATAdp'n dirw = String("Project: ", 500, 150, 125, 140, 19, dirw.val, 200, "Name of the project")ADATA(n if menuval.val == 1:DATAH(n prmanrenderer = String("Renderer: ", 0, 480, 125, 140, 19, prmanrenderer.val, 200, "Name of the renderer executable")DATA(n prmantexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, prmantexmaker.val, 200, "Name of the mipmap texture making executable")DATA)n elif menuval.val == 2:vDATA|*n bmrtrenderer = String("Renderer: ", 0, 480, 125, 140, 19, bmrtrenderer.val, 200, "Name of the renderer executable")DATA*n bmrttexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, bmrttexmaker.val, 200, "Name of the mipmap texture making executable")DATA`+n elif menuval.val == 3:DATA+n entropyrenderer = String("Renderer: ", 0, 480, 125, 140, 19, entropyrenderer.val, 200, "Name of the renderer executable")DATAX,n entropytexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, entropytexmaker.val, 200, "Name of the mipmap texture making executable")DATA-n elif menuval.val == 4:qDATAx`-n dlrenderer = String("Renderer: ", 0, 480, 125, 140, 19, dlrenderer.val, 200, "Name of the renderer executable")DATA.n dltexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, dltexmaker.val, 200, "Name of the mipmap texture making executable")5DATA.n elif menuval.val == 5:)ADATA/n aqsisrenderer = String("Renderer: ", 0, 480, 125, 140, 19, aqsisrenderer.val, 200, "Name of the renderer executable")-DATA/n aqsistexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, aqsistexmaker.val, 200, "Name of the mipmap texture making executable")DATAx0n elif menuval.val == 6:15 DATA0n pixierenderer = String("Renderer: ", 0, 480, 125, 140, 19, pixierenderer.val, 200, "Name of the renderer executable")DATAp1n pixietexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, pixietexmaker.val, 200, "Name of the mipmap texture making executable")DATAx02n anim = Toggle("Animation", updateguievent, 150, 30, 69, 19, anim.val, "Render single or multiple frames")DATA2n rendert = Toggle("Render", updateguievent, 220, 30, 69, 19, rendert.val, "Start the renderer after the export is done")ADATAl3n file = Toggle("File", filetoggleevent, 150, 50, 70, 20, file.val, "Render the image to a file")DATAl 4n buffer = Toggle("Buffer", 5, 220, 50, 70, 20, buffer.val, "Render the image to the framebuffer")DATAL4n Button("Exit", exitevent, 385, 30, 75, 20, "Exit the script")DATAP05n Button("Export", exportevent, 310, 30, 74, 20, "Start the export")DATAX5n Button("Load Sett", 30, 310, 51, 74, 20, "Load global and scene settings")DATAX86n Button("Save Sett", 31, 385, 51, 75, 20, "Save global and scene settings")DATA6n glRasterPos2i(310, 80)DATA7n Text("Samples")DATAH7n glRasterPos2i(310, 105)DATA7n Text("ShRate")DATA7n glRasterPos2i(310, 130)DATA8n Text("Renderer")DATAX8n glRasterPos2i(310, 155)|ADATA8n Text("Channels")DATA8n if (progress.val == 1):DATA(9n # Progressbar textDATAp9n glRasterPos2i(10, 25)DATA89n Text("Mesh: %s/%s"%(int(meshnum), int(meshobjects)))DATA :n## if anim.val:DATA`:n## glRasterPos2i(10, 40)DATA,:n## display = Blender.Scene.GetCurrent()DATAd;n## Text("Frame: %s/%s"%(display.currentFrame(), display.endFrame() - display.startFrame() + 1))DATA;n # Progressbar backplateDATA;n glColor3f(0, 0, 0)DATA n glRectf(10, 10, xbar + 1, 20)iDATA h>n glColor3f(0.78, 0.7, 0.8)}DATA >n glRectf(10, 11, xbar, 20)}DATA ?n glColor3f(0.52, 0.25, 0.45)DATA X?n glRectf(11, 11, xbar, 19)}DATA?n DATA?n # Scene settingsDATA @n if (scenesettings.val == 1):}DATAh@n preworldra = Toggle("PreWorld ReadArchive", updateguievent, 10, 60, 180, 20, preworldra.val, "Add a ReadArchive to a user-defined file just before WorldBegin")DATA@An if (preworldra.val == 1):DATA\An preworldrafile = String("File: ", 0, 190, 60, 430, 20, preworldrafile.val, 100)DATABn postworldra = Toggle("PostWorld ReadArchive", updateguievent, 10, 40, 180, 20, postworldra.val, "Add a ReadArchive to a user-defined file just after WorldBegin")|DATA Bn if (postworldra.val == 1):qDATA\8Cn postworldrafile = String("File: ", 0, 190, 40, 430, 20, postworldrafile.val, 100)DATACn if (menuval.val != 2):iDATAxDn dof = Toggle("Depth Of Field", updateguievent, 440, 270, 180, 20, dof.val, "Depth of field of the camera")|DATADn if (dof.val == 1):gDATAtDn stop = Slider("Stop ", 0, 440, 250, 180, 20, stop.val, 0, 100, 0, "Focal Stop. The camera's aperture")dDATAEn lenght = Slider("Lenght ", 0, 440, 230, 180, 20, lenght.val, 0, 10, 0, "Focal Lenght. Lenght of the camera's lens")DATAHFn distance = Slider("Distance ", 0, 440, 210, 180, 20, distance.val, 0, 20, 0, "Focal Distance. Distance at which the camera is focused")DATAGn motionblur = Toggle("Motion Blur", updateguievent, 225, 170, 180, 20, motionblur.val, "Apply blur to objects in motion")REEDATA Gn if (motionblur.val == 1):DATAHn 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")DATAHn if (menuval.val == 3):DATA(In hdri = Toggle("HDRI", updateguievent, 225, 120, 180, 20, hdri.val, "Sets up a sphere that emits light filtered by a HDRI image")DATAIn if (hdri.val == 1):DATAt(Jn hdritex = String("HDRI Texture: ", 0, 225, 100, 280, 20, hdritex.val, 100, "Flie name of the HDRI image")DATA4Jn if ((menuval.val == 2) or (menuval.val == 3)):DATA|(Kn gi = Toggle("Global Illumination", 6, 10, 270, 180, 20, gi.val, "Uses advanced algorithms for realstic lighting")^+DATAKn if (gi.val == 1):;< DATALn indirectgi = Toggle("Indirect", 475, 10, 250, 90, 20, indirectgi.val, "Calculate GI from light bouncing between objects")DATA|Ln areagi = Toggle("Area", 476, 100, 250, 90, 20, areagi.val, "Sets up a big sphere that generates skydome lighting")DATAxpMn gisteps = Slider("Steps ", 0, 10, 230, 180, 20, gisteps.val, 0, 600, 0, "Controls the detail of the solution")DATA Nn if (indirectgi.val == 1):DATA hNn if (finalgather.val == 0):DATANn maxerror = Slider("MaxError ", 0, 10, 210, 180, 20, maxerror.val, 0.01, 0.50, 0, "Smaller numbers cause recomputation to happen more often")DATAOn maxpixeldist = Slider("MPixelDis ", 0, 10, 190, 180, 20, maxpixeldist.val, 0.00, 40.00, 0, "Smaller numbers cause recomputation to happen more often")roDATAPPn gianim = Toggle("Animate GI", updateguievent, 10, 170, 180, 20, gianim.val, "Recompute GI for every frame in the animation")DATAQn gisphere = Toggle("GI Sphere", 0, 10, 150, 180, 20, gisphere.val, "Sets up a big sphere that generates skydome lighting") DATAQn if (menuval.val == 3):DATARn finalgather = Toggle("Final Gather", updateguievent, 10, 130, 180, 20, finalgather.val, "More precise, but slower form of GI") DATARn if (menuval.val == 2)::0DATASn radiosity = Toggle("Radiosity", 7, 225, 270, 180, 20, radiosity.val, "Calculate GI from light bouncing between objects")DATA Sn if (radiosity.val == 1):eDATATn radnum = Slider("Steps ", 0, 225, 250, 180, 20, radnum.val, 0, 1000, 0, "Number of stepes for the radiosity calculation")DATATn patchsize = Slider("Patchsize", 0, 225, 230, 180, 20, patchsize.val, 0.0, 10.0, 0, "Smaller numbers cause recomputation to happen more often")DATAUn elemsize = Slider("Elemsize ", 0, 225, 210, 180, 20, elemsize.val, 0.0, 6.0, 0, "Smaller numbers cause recomputation to happen more often")DATA@Vn minsize = Slider("Minsize ", 0, 225, 190, 180, 20, minsize.val, 0.0, 3, 0, "Smaller numbers cause recomputation to happen more often")ODATA$Wn if (menuval.val == 6): #Pixie!!!DATAdPWn gi = Toggle("Global Illumination", 6, 10, 270, 180, 20, gi.val, "Fast Global Illumination")DATAWn if (gi.val):DATA Xn indirect = Toggle("Indirect", 475, 10, 250, 90, 20, indirect.val, "Calculate GI from light bouncing between objects")DATAXn occlusion = Toggle("Occlusion", 476, 100, 250, 90, 20, occlusion.val, "Sets up a big sphere that generates skydome lighting")DATAYn glRasterPos2i(30, 235)ADATA$Yn Text("Samples:", "normal")DATAx Zn ambiSamples = Menu(ambiSamplesindex, updateguievent, 90, 230, 100, 20, ambiSamples.val, "Smoothness of shading")DATAZn # Shader editorDATA [n if (shadereditor.val == 1):DATAdX[n surfaceshader = Menu(sshader, 14, 10, 270, 20, 20, surfaceshader.val, "Choose shader")DATA [n if (surfaceshader.val != 0):@DATA`8\n surfaceshadername = String("SH: ", 17, 30, 270, 140, 20, surfaceshadername.val, 200)DATAD\n Button("X", 15, 171, 270, 20, 20, "Delete shader")S_DATA8]n if surfaceshadername.val:DATAD]n Button("Test Render Shader", 19, 220, 230, 150, 20)DATAD]n Button("Set default values", 340, 380, 230, 150, 20)DATAL`^n shadermenu = Menu(shader, 32, 10, 230, 200, 20, shadermenu.val)DATA ^n if (shadermenu.val != 4):DATAl(_n ambientshader = Slider("Ambient (Ka) ", 32, 10, 200, 300, 20, ambientshader.val, 0.00, 1.00, 0)DATAl_n diffuseshader = Slider("Diffuse (Kd) ", 32, 10, 175, 300, 20, diffuseshader.val, 0.00, 1.00, 0)DATAlX`n specularshader = Slider("Specular (Ks) ", 32, 10, 150, 300, 20, specularshader.val, 0.00, 1.00, 0)DATAp`n roughnessshader = Slider("Roughness ", 32, 10, 125, 300, 20, roughnessshader.val, 0.00, 1.00, 0)DATA an if (shadermenu.val == 2):DATAhan coefshader = Slider("Coefficient (eta)", 32, 10, 100, 300, 20, coefshader.val, 0.00, 3.00, 0)DATAtxbn reflblurshader = Slider("Reflect Blur (blur)", 32, 10, 75, 300, 20, reflblurshader.val, 0.00, 1.00, 0)DATAtcn refrblurshader = Slider("Refract Blur (refrblur)", 32, 10, 50, 300, 20, refrblurshader.val, 0.00, 1.00, 0)DATAhcn reflsamples = Slider("Reflect Samples ", 32, 315, 200, 300, 20, reflsamples.val, 0, 30, 0)}@DATAdPdn refrsamples = Slider("Refract Samples ", 32, 315, 175, 300, 20, refrsamples.val, 0, 30, 0)DATAPdn kr = Slider("Kr ", 32, 315, 150, 300, 20, kr.val, 0.0, 2.0, 0)DATA `en if (shadermenu.val == 3):DATAten reflblurshader = Slider("Reflect Blur (blur)", 32, 10, 100, 300, 20, reflblurshader.val, 0.00, 1.00, 0)WDATAdPfn reflsamples = Slider("Reflect Samples ", 32, 10, 75, 300, 20, reflsamples.val, 0, 30, 0)DATA fn elif (shadermenu.val == 4):DATA0gn glRasterPos2i(10, 200)DATAxgn Text('Surface Shader')DATAPgn textshader = String("", 32, 10, 175, 600, 20, textshader.val, 100)iDATA@hn glRasterPos2i(10, 150)DATA hn Text('Displacement Shader')DATAPhn textshaderd = String("", 32, 10, 125, 600, 20, textshaderd.val, 100)DATAXin 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 8jn elif (shadermenu.val == 5):DATAPjn projection = Menu(projectionm, 32, 315, 200, 180, 20, projection.val)DATATkn texturem = String("Texture: ", 32, 315, 180, 280, 20, texturem.val, 100)DATATkn converttex = Menu(imagelistmenu, 368, 595, 180, 20, 20, converttex.val)&DATA@ln Button("Convert and Reload", 367, 495, 200, 120, 20)jDATAhxln textureblurm = Slider("Texture Blur ", 32, 315, 160, 300, 20, textureblurm.val, 0.0, 1.0, 0)DATAdmn norm = Slider("Bump Height ", 32, 315, 140, 300, 20, norm.val, 0.0, 10.0, 0)dDATAHmn textnor = Toggle("Nor", 32, 315, 120, 60, 20, textnor.val)dDATA\nn illuminationmenu = Menu(illumination, 32, 375, 120, 120, 20, illuminationmenu.val)DATAnndDATAnn # Object editoriDATA on if (objecteditor.val == 1):}DATAh`on autogs = Toggle("Auto getSelected (drains cpu)", updateguievent, 10, 10, 180, 20, autogs.val)dDATAon if (autogs.val == 0):DATA8@pn Button("Get Selected", 34, 10, 30, 180, 20)DATApn glRasterPos2i(200, 35)}DATA pn Text('Name: ' + selectedname)DATA@qn glRasterPos2i(200, 15)|DATAqn Text(selectedtype)dDATA(qn if (selectedtype == 'Type: Mesh'):DATA(rn objectra = Toggle("Object ReadArchive", 18, 10, 60, 180, 20, objectra.val, "Add a ReadArchive to a user-defined file just after object's AttributeBegin")iDATArn if (objectra.val == 1):DATAX@sn objectrafile = String("File: ", 18, 190, 60, 430, 20, objectrafile.val, 100)iDATAPsn convertbm = Toggle("Use Shader", 18, 10, 220, 180, 20, convertbm.val)DATAHtn if (convertbm.val == 1):DATA,tn namelist = string.split(sshader, "|")DATA tn namelist.remove('ADD NEW')DATA$8un namelist = map(str, namelist)DATA,un sshader2 = string.join(namelist, "|")DATA un if (len(sshader2) == 0):DATA0vn glRasterPos2i(10, 205)DATA$xvn Text("No shaders available.")DATA vn else:DATA\wn objectshadermenu = Menu(sshader2, 18, 10, 200, 180, 20, objectshadermenu.val)DATAtwn geom = Toggle("Export Geometry", 18, 230, 270, 180, 20, geom.val, "Output the mesh geometry to a RIB file")DATA(xn if (geom.val == 1):DATALpxn meshexport = Menu(meshex, 18, 230, 250, 180, 20, meshexport.val)DATAxxn amesh = Toggle("Animated Mesh", 18, 230, 230, 120, 20, amesh.val, "Turn this on if the mesh deforms in time")DATA yn if (meshexport.val != 4):DATAyn 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 zn else:DATAzn pointwidth = Slider("Width ", 18, 230, 180, 180, 20, pointwidth.val, 0.0, 10.0, 0, "Radius of the Points primitive")DATA0{n if (menuval.val == 2) or (menuval.val == 3):DATA{n rvisibility = Toggle("Hide Source", 18, 230, 200, 180, 20, rvisibility.val, "Hides the object from primary rays")DATA4|n if ((menuval.val == 2) or (menuval.val == 3)):DATA||n arealightMESH = Toggle("AreaLight", 18, 10, 270, 180, 20, arealightMESH.val, "Use the object as an area light")DATA$}n if (arealightMESH.val == 1):DATA}n areasamples = Slider("AreaSamp ", 18, 10, 250, 180, 20, areasamples.val, 0, 400, 0, "Controls the graininess of the area light")DATAd~n recievecaustics = Toggle("Recieve Caustics", 18, 440, 270, 180, 20, recievecaustics.val)DATAd0n reflectcaustics = Toggle("Reflect Caustics", 18, 440, 250, 180, 20, reflectcaustics.val)DATAhn transmittcaustics = Toggle("Transmitt Caustics", 18, 440, 230, 180, 20, transmittcaustics.val)DATA(Xn if (transmittcaustics.val == 1):"' DATAn transmittcausticsslider = Slider("IOR ", 18, 440, 210, 180, 20, transmittcausticsslider.val, 0.00, 2.20, 0, "Index of refraction")`DATAhn if (menuval.val != 5):DATAn glRasterPos2i(10, 165)DATA n Text('Raytraced Shadows')DATAHn 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(pn if (selectedtype == 'Type: Lamp'):DATA4ȃn if ((menuval.val == 2) or (menuval.val == 3)):DATA(n caustics = Toggle("Caustics", 18, 230, 270, 180, 20, caustics.val, "Turn on photon emission used for caustics calculations")DATALn if ((caustics.val == 1) & ((menuval.val == 2) or (menuval.val == 3))):DATAtXn photon = Slider("Photons ", 18, 230, 250, 180, 20, photon.val, 4000, 80000, 0, "Number of photons emitted")DATA0n lampobj = Blender.Object.Get(selectedname)DATA4Xn lamp = Blender.Lamp.Get(lampobj.getData().name)DATAHn if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATA0n if (menuval.val != 5):DATAtxn raytraceshadow = Toggle("Ray Shadow", 245, 100, 270, 90, 20, raytraceshadow.val, "Use raytraced shadows")DATAn if lamp.type == 2:DATAh`n rendershadow = Toggle("Ren Shadow", 244, 10, 270, 90, 20, rendershadow.val, "Use shadowmaps")xDATA(n prmanshadowbuttonsposition = 270@DATA Pn if (rendershadow.val == 1):DATA`n bias = Slider("Bias ", 18, 10, 210, 180, 20, bias.val, 0.0, 1.0, 0, "Shadowmap bias")DATA 0n if (rendershadow.val == 1):DATA\n buff256 = Toggle("256", 8, 10, 190, 42, 20, buff256.val, "Shadowmap resolution")DATA\n buff512 = Toggle("512", 9, 52, 190, 42, 20, buff512.val, "Shadowmap resolution")DATA`n buff1024 = Toggle("1024", 10, 95, 190, 48, 20, buff1024.val, "Shadowmap resolution")DATA` n buff2048 = Toggle("2048", 11, 143, 190, 48, 20, buff2048.val, "Shadowmap resolution")DATAHn if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATAp(n if ((((menuval.val == 1) or (menuval.val == 3)) and (raytraceshadow.val == 1)) or (rendershadow.val == 1)):DATAdȍn eblur = Slider("Blur ", 18, 10, 250, 180, 20, eblur.val, 0.0, maxblur, 0, "Shadow blur")DATAhXn esamples = Slider("Samples ", 18, 10, 230, 180, 20, esamples.val, 0, 256, 0, "Blur quality")`DATAn DATA n # About dialogDATA`n if (about.val == 1):DATAn glColor3f(0,0,0)DATAn glRasterPos2i(10, 279)DATA$0n Text("BlenderMan 0.1 Beta 9.0")DATAn glRasterPos2i(10, 259)92DATA0Ȑn Text("by Christoffer Green and Goran Kocov")@DATA(n glColor3f(1,1,1)DATAhn glRasterPos2i(9, 280)DATA$n Text("BlenderMan 0.1 Beta 9.0")DATAn glRasterPos2i(9, 260)DATA0Hn Text("by Christoffer Green and Goran Kocov")DATAn glRasterPos2i(10, 230) DATAdn Text("_______________________________________________________________________________________")0DATAn glRasterPos2i(10, 200)`DATA4ȓn Text("Thanks to sgefant for the name suggestion")DATA(n glRasterPos2i(10, 180)7-JDATAppn Text("Thanks to Phillipe Crassous for helping me fix the spotlight rotation bug and other code improvements")DATAn glRasterPos2i(10, 160)37DATA<Xn Text("Thanks to desaster and #python for syntax help")DATAn glRasterPos2i(10, 140)DATAXn Text("Thanks to K-Rich, Macke, Kib_Tph, sgefant and #Blender3d for pre-beta testing")DATAn glRasterPos2i(10, 120)b-0DATA<ؖn Text("Thanks to Jan Walter for the basic exporting code")DATA@n glRasterPos2i(10, 100)DATA4n Text("Thanks to svo for the pointspolygon code")DATAn glRasterPos2i(10, 80)DATA40n Text("Thanks to nishin for alpha/beta-testing")-DATAn glRasterPos2i(10, 60)DATA4ؘn Text("Thanks to eeshlo for the totiff module")sDATA8n glRasterPos2i(10, 40)DATATn Text("Thanks to DetectiveThorn for the help with the light intensity conversion")DATAnDATA0ndef event(evt, val):DATA$xn if (evt == ESCKEY and not val): DATA Țn Exit()DATA,n if (evt == ACCENTGRAVEKEY and not val): DATA Xn export()DATAnDATAndef bevent(evt):DATApn global sshader, increment, pdir, maxblur, imagelist, imagelistmenu, imagelisttif, shadernametemp, selectednameDATA(n if (evt == 500): # Change projectDATA n newdirs()DATA 0n surfaceshadername.val = ""DATAn sshader = "ADD NEW"DATAȝn try: DATA4n f = open(surfaceshadersdir + 'ShaderNames','r')DATA`n saveShaderName(0)DATA n except:DATAn saveShaderName(1)DATA(n resetObject()DATAhn saveload(0, 0, 'object')DATAn saveload(0, 0, 'global')DATA n Register (gui, event, bevent)DATA0Hn if (evt == exportevent): # Export buttonDATA n export()DATA,n if (evt == exitevent): # Exit buttonDATA 8n Exit()DATA0pn if (evt == updateguievent): # Update GUIDATA Сn Register (gui, event, bevent)DATA0 n if (evt == filetoggleevent): # File toggleDATAn file.val = 1DATAn buffer.val = 0DATA n Register (gui, event, bevent)DATA(Pn if (evt == 5): # Buffer toggleDATAn file.val = 0DATAn buffer.val = 1DATA (n Register (gui, event, bevent)DATA4xn if (evt == 6): # Global Illumination toggleDATAؤn radiosity.val = 0DATA n Register (gui, event, bevent)DATA(hn if (evt == 7): # Radiosity toggleDATAn gi.val = 0DATA n Register (gui, event, bevent)DATA0Pn if (evt == 8): # Shadow buffer buttonsDATAn if (buff256.val == 1):DATAn buff512.val = 0DATA8n buff1024.val = 0DATAxn buff2048.val = 0DATAn saveload(1,0,'object')DATA n Register (gui, event, bevent)DATA0Pn if (evt == 9): # Shadow buffer buttonsDATAn if (buff512.val == 1):DATAn buff256.val = 0ADATA8n buff1024.val = 0DATAxn buff2048.val = 0DATAn saveload(1,0,'object')e{ADATA n Register (gui, event, bevent)DATA0Pn if (evt == 10): # Shadow buffer buttonsDATAn if (buff1024.val == 1):DATAn buff512.val = 0DATA8n buff256.val = 0DATAxn buff2048.val = 0DATAn saveload(1,0,'object')DATA n Register (gui, event, bevent)DATA0Pn if (evt == 11): # Shadow buffer buttonsDATAn if (buff2048.val == 1):DATAn buff512.val = 0DATA8n buff1024.val = 0DATAxn buff256.val = 0DATAn saveload(1,0,'object')DATA n Register (gui, event, bevent)DATAPn if (evt == 12):`DATAn globalsettings.val = 1`DATAخn scenesettings.val = 0DATA n shadereditor.val = 0DATAhn objecteditor.val = 0DATAn about.val = 0DATA n Register (gui, event, bevent)DATA@n if (evt == 557):DATAn globalsettings.val = 0DATAȰn scenesettings.val = 1DATAn shadereditor.val = 0DATAXn objecteditor.val = 0DATAn about.val = 0DATA n Register (gui, event, bevent)DATA0n if (evt == 13):DATApn globalsettings.val = 0DATAn scenesettings.val = 0DATAn shadereditor.val = 1DATAHn objecteditor.val = 0DATAn about.val = 0DATA гn Register (gui, event, bevent)DATA n if (evt == 16):DATA`n globalsettings.val = 0`DATAn scenesettings.val = 0DATAn shadereditor.val = 0DATA8n objecteditor.val = 0DATAn about.val = 1DATA n Register (gui, event, bevent)DATAn if (evt == 33):DATAPn globalsettings.val = 0DATAn scenesettings.val = 0DATAn shadereditor.val = 0DATA(n objecteditor.val = 1DATApn about.val = 0DATA n Register (gui, event, bevent)DATA(n if (evt == 14): # Add shader menuDATA`Xn namelist = string.split(sshader, "|") # the names of the shaders gets hacked up into a listDATAn surfaceshadername.val = namelist[surfaceshader.val - 1] # change the label of the shader in the shadereditor to the one selectedDATA4n listlenght = len(namelist) # length of the listDATAn 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 menuDATAn increment = increment +1DATA n name = 0DATA,@n numbername = "%03d" % (int(increment))DATAn while (name == 0):DATAn name = 1DATA n for x in namelist[:]:DATA(hn if ('Surface.%s'%numbername == x):DATA n increment = increment +1DATAn name = 0DATA0Pn numbername = "%03d" % (int(increment))PPDATA@n namelist.insert(listlenght - 1 , 'Surface.%s'%numbername)DATA( n sshader = string.join(namelist, "|")DATA<xn surfaceshadername.val = namelist[surfaceshader.val - 1]DATAn saveShaderName(1)DATA(n resetShaderVal()DATAhn shadermenu.val = 1DATAn else:DATAn saveload(0,0,'shader')DATA0n saveShaderName(1)DATA,pn shadernametemp = surfaceshadername.valDATA n Register (gui, event, bevent)DATAn if (evt == 340):DATAXn resetShaderVal()DATAn saveload(1,0,'shader')DATA n Register (gui, event, bevent)DATAP0n if ((evt == 15) & (surfaceshadername.val != "")): # Surface shader deletePDATA$n deleteshader = surfaceshader.valDATA n tempselected = selectednameDATA(Pn namelist = string.split(sshader, "|")DATA,n namelist.remove(surfaceshadername.val)DATA<n surfaceshadername.val = namelist[surfaceshader.val - 1]DATA hn namelist = map(str, namelist)DATA(n sshader = string.join(namelist, "|")DATA n listlenght = len(namelist)DATA(`n if (surfaceshader.val == listlenght):DATA<n surfaceshadername.val = namelist[surfaceshader.val - 2]DATA n surfaceshadername.val = ""DATA,pn surfaceshader.val = surfaceshader.val - 1DATAn saveShaderName(1)DATAn saveload(0,0,'shader')DATA(Pn for objects in Blender.Object.Get():DATA(n if (objects.getType() == "Mesh"):DATAn resetObject()DATA @n selectedname = objects.nameDATAn saveload(0,0,'object')DATA0n if deleteshader == objectshadermenu.val:DATA8n convertbm.val = 0 DATA0n elif deleteshader < objectshadermenu.val:DATA8n objectshadermenu.val = objectshadermenu.val - 1DATAHn saveload(1,0,'object')DATA n selectedname = tempselectedDATAn saveload(0,0,'object')matDATA (n Register (gui, event, bevent)DATA4xn if (evt == 17): # Surface shader name editDATAn if (len(surfaceshadername.val) != 0): # this if thing fixes a bug that crashes the app when renaming a shader without a name. ("" = "")DATA,n namelist = string.split(sshader, "|")2YDATA<n namelist[surfaceshader.val - 1] = surfaceshadername.valDATA(Xn sshader = string.join(namelist, "|")DATAn saveload(1,0,'shader')DATAn saveShaderName(1)DATA$@n Register (gui, event, bevent) EEDATAn if (evt == 18):DATAn saveload(1,0,'object')DATA n Register (gui, event, bevent)DATAhn if (evt == 19):DATA8n testrender = open('%s/testrender.rib'%rootdir, 'w')DATA<n testrender.write('Projection "perspective" "fov" 40\n')DATA,xn testrender.write('Format 320 240 1\n')REEDATAn if (rgba.val == 1):DATAn channels = "rgb"DATAXn elif (rgba.val == 2):DATAn channels = "rgba"@DATAn elif (rgba.val == 3):DATA0n channels = "rgbz"DATAxn elif (rgba.val == 4):DATAn channels = "z"DATALn testrender.write('Display "Test Render" "framebuffer" "%s"\n'%channels)DATALxn testrender.write('Option "searchpath" "texture" ["%s"]\n'%texturesdir)E DATA(n testrender.write('Exposure 1 1.2\n')DATA,Hn testrender.write('PixelSamples 1 1\n')DATA(n testrender.write('Translate 0 0 5\n')DATA,n testrender.write('Rotate -120 1 0 0\n')DATA(Pn testrender.write('Rotate 25 0 0 1\n')DATA$n testrender.write('WorldBegin\n')DATA0n if (menuval.val == 1) or (menuval.val == 4):DATAHXn testrender.write('\tAttribute "visibility" "integer trace" [1]\n')IDATAn if (menuval.val == 3):DATADn testrender.write('\tAttribute "visibility" "reflection" [1]\n')EDATA@n testrender.write('\tAttribute "visibility" "shadow" [1]\n')DATA0n if (menuval.val == 1) or (menuval.val == 4):DATATXn testrender.write('\tAttribute "visibility" "string transmission" ["shader"]\n')DATA4n elif (menuval.val == 2) or (menuval.val == 3):REEDATAP8n testrender.write('\tAttribute "render" "string casts_shadows" ["shade"]\n')DATAHn 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')DATAdxn testrender.write('\tLightSource "spotlight" 2 "intensity" 20 "from" [0 -3 4] "to" [0 0 0]\n')DATAn elif (menuval.val == 3):DATAPn testrender.write('\tLightSource "spotlight" 1 "intensity" 10 "from" [0 3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')dDATAn testrender.write('\tLightSource "spotlight" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')EEDATAn elif (menuval.val == 1):DATA(n testrender.write('\tLightSource "shadowspot" 1 "intensity" 10 "from" [0 3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')DATAn testrender.write('\tLightSource "shadowspot" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')REEDATA$n elif (menuval.val == 6): #Pixie!DATALn testrender.write('\tAttribute "visibility" "transmission" "opaque"\n') DATAxn 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')DATAn 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,n testrender.write('\tAttributeBegin\n')DATA`n name = 'foobar'DATAn meshobj = 10DATAtn testrender.write('\t\tAttribute "displacementbound" "string coordinatesystem" ["object"] "float sphere" [1]\n')W@DATA,n writeShader(testrender, name, meshobj, 0)DATA0n testrender.write('\t\tSphere 1 -1 1 360\n')DATA(8n testrender.write('\tAttributeEnd\n')DATA,n testrender.write('\tAttributeBegin\n')REEDATA4n if ((menuval.val == 2) or (menuval.val == 3)):DATA0Hn testrender.write('\tSurface "oakplank"\n')EEDATA4n elif (menuval.val == 4) or (menuval.val == 1):tDATA0n testrender.write('\tSurface "rmarble"\n')sDATA4hn elif (menuval.val == 5) or (menuval.val == 6):REEDATA,n testrender.write('\tSurface "matte"\n')DATA< n testrender.write('\tPointsPolygons [4 ] [0 3 2 1 ]\n')DATA`n 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(n testrender.write('\tAttributeEnd\n')DATA$pn testrender.write('WorldEnd\n')xDATAn testrender.close()DATA(n render('%s/testrender.rib'%rootdir)DATA(`n if (evt == 20): # Load settingsDATAn loadSettings()DATA n Register (gui, event, bevent)DATA(Hn if (evt == 21): # Save settings@DATAn saveSettings()|DATA n Register (gui, event, bevent)DATA0n if (evt == 30):DATApn saveload(0, 0, 'global')DATA n Register (gui, event, bevent)DATAn if (evt == 31):DATAHn saveload(1, 0, 'global')BDATA n Register (gui, event, bevent)DATAn if (evt == 32):DATA n saveload(1,0,'shader')/DATA hn Register (gui, event, bevent)DATAn if (evt == 34):DATA n worked = getSelectedObject()DATAHn if (worked == 1):DATAn resetObject()E DATA$n Register (gui, event, bevent)upSDATAn saveload(0,0,'object')DATA `n Register (gui, event, bevent)DATAn if (evt == 244):@ADATAn rendershadow.val = 1DATA8n raytraceshadow.val = 0RW@DATAn saveload(1,0,'object')DATAn if (eblur.val > 0.2):DATAn eblur.val = 0.2DATAPn maxblur = 0.2DATA n Register (gui, event, bevent)DATAn if (evt == 245):YDATA n rendershadow.val = 0DATAhn raytraceshadow.val = 1DATAn saveload(1,0,'object')DATAn maxblur = 10.0DATA 8n Register (gui, event, bevent)DATAn if (evt == 475):DATAn indirectgi.val = 1REEDATAn areagi.val = 0DATA Pn Register (gui, event, bevent)DATAn if (evt == 476):IDATAn indirectgi.val = 0DATA(n areagi.val = 1DATA hn Register (gui, event, bevent)DATA,n if (evt == 367): # Convert textures DATA(n imagelist = os.listdir(texturesdir) DATAhn if (imagelist != []):DATAn for image in imagelist:DATA,n rawimage = '%s/%s'%(texturesdir, image)DATA$Pn totiff.SetOutDir(texturesdir)GDATA(n ok = totiff.ConvertShort(rawimage)DATA$n if not ok[0]: # error occurredEDATA(Hn print ok[1] # print error messageEDATA(n imagelist = os.listdir(texturesdir) DATAn imagelisttif = []IDATA@n for image in imagelist:DATA n if (image[-3:] == 'tif'):= DATA,n imagelisttif = imagelisttif + [image]EDATA40n imagelistmenu = string.join(imagelisttif, "|")DATA n Register (gui, event, bevent)DATAn if (evt == 368):DATA( n imagelist = os.listdir(texturesdir) DATAxn if (imagelist != []):DATAn imagelisttif = []DATAn for image in imagelist:DATA Pn if (image[-3:] == 'tif'):DATA,n imagelisttif = imagelisttif + [image]DATA4n imagelistmenu = string.join(imagelisttif, "|")DATA8Xn texturem.val = str(imagelisttif[converttex.val - 1])DATAn saveload(1,0,'shader')?DATA n Register (gui, event, bevent)DATA XnRegister (gui, event, bevent)DATAnDATAndef getSelectedObject():DATA@ o global selectedname, selectedtype, namelist, sshader2, sshaderDATAo try:DATA0o selected = Blender.Object.GetSelected()[0]REEDATA (o except:o SDATA `o return 0|DATA o selectedname = selected.namensDATA$o if (selected.getType() == "Mesh"):DATA 8o selectedtype = 'Type: Mesh'DATA(o elif (selected.getType() == "Lamp"):DATA o selectedtype = 'Type: Lamp'DATA0o else:cDATA ho selectedtype = 'Type: Other'DATA(o namelist = string.split(sshader, "|")DATAo namelist.remove('ADD NEW')DATA Xo namelist = map(str, namelist)DATA(o sshader2 = string.join(namelist, "|")DATA o return 1DATA8o DATA(hodef saveload(save, exportS, module):DATAo if (module == 'shader'):DATAo Variables = [shadermenu.val, ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, coefshader.val, DATAo reflblurshader.val, refrblurshader.val, reflsamples.val, refrsamples.val, kr.val, textshader.val, textshaderd.val, texturem.val,DATATho textureblurm.val, norm.val, textnor.val, illuminationmenu.val, projection.val]DATAo if exportS:DATA,(o namelist = string.split(sshader, "|")DATA0o name = namelist[objectshadermenu.val - 1]DATA o else: DATA  o name = surfaceshadername.valDATAh o if (name == ''):DATA o returnDATA$ o fname = surfaceshadersdir + nameDATA0 o if (module == 'object'):DATAlx o Variables = [convertbm.val, objectshadermenu.val, geom.val, meshexport.val, uv.val, arealightMESH.val, DATAx o areasamples.val, recievecaustics.val, transmittcaustics.val, transmittcausticsslider.val, caustics.val, photon.val, DATAp o rendershadow.val, buff256.val, buff512.val, buff1024.val, buff2048.val, eblur.val, esamples.val, amesh.val, DATAhX o reflectcaustics.val, raytraceshadow.val, bias.val, rvisibility.val, castshadow.val, pointwidth.val, DATA$ o objectra.val, objectrafile.val]DATA,@ o fname = objectsettingsdir + selectednameDATA o if (selectedname == ''): DATA o returnDATAo if (module == 'global'):DATA|`o 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, DATApo motionblur.val, motionblurframe.val, dof.val, stop.val, lenght.val, distance.val, autogs.val, progress.val, DATAxPo indirectgi.val, areagi.val, gianim.val, patchsize.val, elemsize.val, minsize.val, recurs.val, gain.val, gamma.val, DATApo lightx.val, hiddenlayer.val, gisphere.val, finalgather.val, hdri.val, hdritex.val, rgba.val, reconvert.val, DATAto prmanrenderer.val, bmrtrenderer.val, entropyrenderer.val, dlrenderer.val, aqsisrenderer.val, pixierenderer.val,DATAt8o prmantexmaker.val, bmrttexmaker.val, entropytexmaker.val, dltexmaker.val, aqsistexmaker.val, pixietexmaker.val,DATA|o preworldra.val, preworldrafile.val, postworldra.val, postworldrafile.val, ambiSamples.val, occlusion.val, indirect.val]DATA4o fname = globalpropertiesdir + 'GlobalProperties'DATAo # Save variablesDATA o if (save == 1):DATA`o f = open(fname,'w')DATA$o writeln(f,'BlenderMan0.1Beta9.0')DATAo for i in Variables:DATA @o writeln(f,type(i).__name__)DATAo if (i == '\n'):DATAo writeln(f,'')DATAo continueDATAPo writeln(f,i)DATAoDATAo # Load variablesDATAo if (save == 0):DATA@o try:DATAxo f = open(fname,'r')DATA o except: DATA o returnDATA 0o index = 0DATA ho version = str(f.readline())DATA,o if (version != 'BlenderMan0.1Beta9.0\n'):DATA o returnDATAHo for i in Variables:DATA o varType = str(f.readline())DATAo if (varType == "str\n"):DATA,(o Variables[index] = str(f.readline())DATA o elif (varType == "float\n"):DATA,o Variables[index] = float(f.readline())DATA (o elif (varType == "int\n"):DATA,xo Variables[index] = int(f.readline())DATAo index += 1DATA o f.close()DATAHo if (module == 'shader'):DATA$o shadermenu.val = Variables[0]DATA(o ambientshader.val = Variables[1]DATA(8o diffuseshader.val = Variables[2]DATA(o specularshader.val = Variables[3]DATA(o roughnessshader.val = Variables[4]DATA$@o coefshader.val = Variables[5]DATA(o reflblurshader.val = Variables[6]DATA(o refrblurshader.val = Variables[7]DATA$@o reflsamples.val = Variables[8]DATA$o refrsamples.val = Variables[9]DATA o kr.val = Variables[10]DATA$0 o textshader.val = Variables[11]DATA$ o textshaderd.val = Variables[12]DATA$ o texturem.val = Variables[13]DATA( !o textureblurm.val = Variables[14]DATA x!o norm.val = Variables[15]DATA$!o textnor.val = Variables[16]DATA,"o illuminationmenu.val = Variables[17]DATA$p"o projection.val = Variables[18]DATA"o elif (module == 'object'):DATA$#o convertbm.val = Variables[0]DATA(X#o objectshadermenu.val = Variables[1]DATA #o geom.val = Variables[2]DATA$$o meshexport.val = Variables[3]DATAP$o uv.val = Variables[4]DATA($o arealightMESH.val = Variables[5]DATA$$o areasamples.val = Variables[6]DATA(@%o recievecaustics.val = Variables[7]DATA,%o transmittcaustics.val = Variables[8]DATA0%o transmittcausticsslider.val = Variables[9]DATA$P&o caustics.val = Variables[10]DATA &o photon.val = Variables[11]DATA(&o rendershadow.val = Variables[12]DATA$H'o buff256.val = Variables[13]DATA$'o buff512.val = Variables[14]DATA$'o buff1024.val = Variables[15]DATA$8(o buff2048.val = Variables[16]DATA (o eblur.val = Variables[17]DATA$(o esamples.val = Variables[18]DATA ()o amesh.val = Variables[19]DATA(x)o reflectcaustics.val = Variables[20]DATA()o raytraceshadow.val = Variables[21]DATA (*o bias.val = Variables[22]DATA$x*o rvisibility.val = Variables[23]DATA$*o castshadow.val = Variables[24]DATA$+o pointwidth.val = Variables[25]DATA$h+o objectra.val = Variables[26]DATA$+o objectrafile.val = Variables[27]DATA,o elif (module == 'global'):DATAP,o gi.val = Variables[0]DATA ,o gisteps.val = Variables[1]DATA$,o radiosity.val = Variables[2]DATA 8-o radnum.val = Variables[3]DATA -o dirw.val = Variables[4]DATA -o image.val = Variables[5]DATA$(.o filename.val = Variables[6]DATA x.o file.val = Variables[7]DATA .o buffer.val = Variables[8]DATA /o anim.val = Variables[9]DATA$h/o rendert.val = Variables[10]DATA$/o menuval.val = Variables[11]DATA$0o samples.val = Variables[12]DATA X0o srate.val = Variables[13]DATA 0o debug.val = Variables[14]`DATA$0o maxerror.val = Variables[15]`DATA(H1o maxpixeldist.val = Variables[16]`DATA 1o geom.val = Variables[17]`DATA$1o motionblur.val = Variables[18]DATA(@2o motionblurframe.val = Variables[19]DATA 2o dof.val = Variables[20]PPDATA 2o stop.val = Variables[21]PDATA 83o lenght.val = Variables[22]DATA$3o distance.val = Variables[23]DATA 3o autogs.val = Variables[24]DATA$(4o progress.val = Variables[25]DATA$x4o indirectgi.val = Variables[26]DATA 4o areagi.val = Variables[27]DATA 5o gianim.val = Variables[28]DATA$h5o patchsize.val = Variables[29]DATA$5o elemsize.val = Variables[30]DATA$6o minsize.val = Variables[31]DATA X6o recurs.val = Variables[32]DATA 6o gain.val = Variables[33]DATA 6o gamma.val = Variables[34]DATA H7o lightx.val = Variables[35]DATA$7o hiddenlayer.val = Variables[36]DATA$7o gisphere.val = Variables[37]DATA$88o finalgather.val = Variables[38]DATA 8o hdri.val = Variables[39]DATA 8o hdritex.val = Variables[40]DATA (9o rgba.val = Variables[41]DATA$x9o reconvert.val = Variables[42]DATA(9o prmanrenderer.val = Variables[43]ffDATA$ :o bmrtrenderer.val = Variables[44]DATA(p:o entropyrenderer.val = Variables[45]DATA$:o dlrenderer.val = Variables[46]DATA(;o aqsisrenderer.val = Variables[47]DATA(p;o pixierenderer.val = Variables[48]mDATA(;o prmantexmaker.val = Variables[49]mmDATA$ o preworldrafile.val = Variables[56] DATA$p>o postworldra.val = Variables[57]DATA(>o postworldrafile.val = Variables[58] DATA(?o ambiSamples.val = Variables[59] }}DATA$p?o occlusion.val = Variables[60] DATA,?o #ambiSamplesindex.val = Variables[61] ɼDATA$@o indirect.val = Variables[61]DATAh@o DATA@odef writeln(f,x):DATA@o try:DATAxAo if (type(x).__name__ == 'string'): # this thing is to combat a bug that saves strings with a \n, (we dont want that)DATA Ao nn = string.find(x, '\n')DATABo if (nn > 0):DATAHBo x = x[:nn] + x[nn + 1:]DATABo f.write(str(x))DATABo f.write('\n')DATA Co except:DATAHCo passDATACoDATACodef readint(f):DATACo try:DATA(Do return int(f.readline())DATA pDo except:DATADo passDATADodef readfloat(f):DATA Eo try:DATA XEo return float(f.readline())DATA Eo except:DATAEo passDATAFodef readstr(f):DATAXFo try:DATAFo s = (f.readline())DATAFo nn = string.find(s, '\n')DATA Go if (nn > 0):DATA`Go s = s[:nn] + s[nn + 1:]DATA Go return sDATA Go except:DATA Ho print sDATAPHoDATAHodef saveShaderName(save):PDATAHo global sshaderDATA<Io if save: f = open(surfaceshadersdir + 'ShaderNames','w')PDATA8pIo else: f = open(surfaceshadersdir + 'ShaderNames','r')DATA Io if save: writeln(f,sshader)DATA(Jo else: sshader = readstr(f)DATA pJo f.close()DATAJotry: DATA4Jo f = open(surfaceshadersdir + 'ShaderNames','r')DATA@Koexcept:DATAxKo saveShaderName(1)DATA Ko Register (gui, event, bevent)DATALoDATA8LosaveShaderName(0)DATA xLoRegister (gui, event, bevent)DATALosshader2 = sshaderDATAMoDATA8MoDATAhModef newdirs():DATA`Mo global pdir, globalpropertiesdir, surfaceshadersdir, displacementshadersdir, objectsettingsdirDATAh8No global lightsettingsdir, lightsettingsdir, meshesdir, imagesdir, shadowdir, texturesdir, shadersdirDATANo if (os.name != "posix"):DATAOo rootdir = '/BlenderMan/'DATA`Oo else:DATA0Oo rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$Oo pdir = rootdir + dirw.val + '/'DATA4HPo globalpropertiesdir = pdir + '/GlobalProperties/'DATA0Po surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<Qo displacementshadersdir = pdir + '/DisplacementShaders/'DATA0pQo objectsettingsdir = pdir + '/ObjectSettings/'DATA0Qo lightsettingsdir = pdir + '/LightSettings/'DATA 0Ro meshesdir = pdir + '/Meshes/'DATA Ro imagesdir = pdir + '/images/'DATA Ro shadowdir = pdir + '/shadows/'DATA$ So texturesdir = pdir + '/textures/'DATA$pSo shadersdir = pdir + '/shaders/'մDATASo try:DATASo os.mkdir(pdir)DATA 8To os.mkdir(globalpropertiesdir)DATA To os.mkdir(surfaceshadersdir)PDATA$To os.mkdir(displacementshadersdir)DATA(Uo os.mkdir(meshesdir)PDATA pUo os.mkdir(objectsettingsdir)PDATA Uo os.mkdir(lightsettingsdir)DATAVo os.mkdir(shadowdir)DATAXVo os.mkdir(texturesdir)DATAVo os.mkdir(imagesdir)DATAVo except OSError: DATA(Wo passDATA`WoDATA,Wodef writeHeader(ribfile, frames, frames2):DATA\Wo ribfile.write('Option "searchpath" "texture" ["%s"]\n'%(texturesdir + ":" + shadowdir))DATA pXo display = Scene.GetCurrent()DATA,Xo context = display.getRenderingContext()DATA$Yo yResolution = context.imageSizeY()DATA$hYo xResolution = context.imageSizeX()DATA Yo if xResolution >= yResolution:DATA,Zo factor = yResolution / float(xResolution)DATA`Zo else:DATA,Zo factor = xResolution / float(yResolution)DATA Zo if Blender.World.Get() != []:DATA$@[o world = Blender.World.Get()[0]DATA [o if world.hor != [0, 0, 0]:DATAp[o ribfile.write('Imager "background" "color bgcolor" [%s %s %s]\n'%(world.hor[0], world.hor[1], world.hor[2]))DATA$\o scene = Blender.Scene.GetCurrent()DATA$\o camobj = scene.getCurrentCamera()DATA< ]o camera = Blender.Camera.Get(camobj.getData().name)DATAp]o ribfile.write('Projection "perspective" "fov" [%s]\n'%(360.0 * atan(factor * 16.0 / camera.lens) /pi))DATA@(^o ribfile.write('Format %s %s 1\n' % (xResolution, yResolution))DATAH^o ribfile.write("Clipping %s %s\n" % (camera.clipStart, camera.clipEnd))DATAD_o ribfile.write('PixelSamples %s %s\n'%(samples.val, samples.val))DATA_o try:DATA<_o ribfile.write('Exposure %s %s\n'%(gain.val, gamma.val))DATA `o except: DATAX`o passDATA`o if (menuval.val != 2):DATA`o if (dof.val == 1): xDATAT ao ribfile.write('DepthOfField %s %s %s\n'%(stop.val, lenght.val, distance.val))ǺDATA<ao ribfile.write('ShadingRate %s\n'%sratelist[srate.val - 1])DATA4bo if ((radiosity.val == 1) & (menuval.val == 2)):DATA@hbo ribfile.write('Option "radiosity" "steps" [%s]\n'%radnum.val)DATAHbo ribfile.write('Attribute "indirect" "maxerror" [%s]\n'%maxerror.val)DATAXPco ribfile.write('Attribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)PPDATAPco ribfile.write('Attribute "radiosity" "float patchsize" [%s]'%patchsize.val)DATALXdo ribfile.write('Attribute "radiosity" "float elemsize" [%s]'%elemsize.val)DATALdo ribfile.write('Attribute "radiosity" "float minsize" [%s]'%minsize.val)DATAHeo if (motionblur.val == 1):DATA$eo ribfile.write('Shutter 0 1\n')DATA0eo if (menuval.val == 1) or (menuval.val == 4):DATAH@fo ribfile.write('Option "trace" "integer maxdepth" [%s]\n'%recurs.val)DATA0fo elif (menuval.val == 2) or (menuval.val == 3):DATADgo ribfile.write('Option "render" "max_raylevel" [%s]\n'%recurs.val)DATALgo ribfile.write('Option "statistics" "integer endofframe" [%s]\n'%debug.val)DATA0ho if ((indirectgi.val == 1) & (gi.val == 1)):DATA,`ho if ((gianim.val == 0) & (frames2 == 0)):DATAPho ribfile.write('Option "indirect" "string savefile" ["%s/irr.dat"]\n'%pdir)DATA08io elif ((frames2 > 0) or (gianim.val == 1)):DATAio if (anim.val == 1):DATAPio ribfile.write('Option "indirect" "string seedfile" ["%s/irr.dat"]\n'%pdir)DATA`jo if (menuval.val == 3):DATA@jo ribfile.write('Option "indirect" "integer maxbounce" [3]\n')DATAkoDATAHkoDATA(xkodef writeTransform(ribfile, lampobj):PDATAko global cframeDATAlo Blender.Get('curframe')DATAXlo Blender.Window.RedrawAll()DATAlo if (lampobj == 0):DATA$lo camobj = scene.getCurrentCamera()DATA0mo else:DATAhmo camobj = lampobjDATA,mo caminvmatrix = camobj.getInverseMatrix()DATA no ribfile.write("Transform [" +DATA<Pno "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATAno (caminvmatrix[0][0],DATAoo caminvmatrix[0][1],DATAHoo -caminvmatrix[0][2],DATAoo caminvmatrix[0][3],DATAoo caminvmatrix[1][0],DATA po caminvmatrix[1][1],DATAhpo -caminvmatrix[1][2],DATApo caminvmatrix[1][3],IDATApo caminvmatrix[2][0],IDATA@qo caminvmatrix[2][1],IDATAqo -caminvmatrix[2][2],DATAqo caminvmatrix[2][3],DATAro caminvmatrix[3][0],DATA`ro caminvmatrix[3][1],DATAro -caminvmatrix[3][2],DATAro caminvmatrix[3][3]))DATA8soDATAhsodef ambientLight(ribfile):DATA so if Blender.World.Get() != []:DATA$to world = Blender.World.Get()[0]DATA(Pto if (occlusion.val) or (indirect.val):DATAHto ribfile.write('\tAttribute "visibility" "transmission" "opaque"\n')DATA uo else:DATAXuo 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 voDATAPvodef checkLamps(ribfile):DATAvo global selectednameDATAvo lampnum = 0DATA( wo for objects in Blender.Object.Get():DATAxwo name = objects.getName()DATA$wo if (objects.getType() == "Lamp"):DATAxo lampnum += 1DATAPxo resetObject()DATAxo selectedname = nameDATA$xo Register (gui, event, bevent)DATA(yo saveload(0,0,'object')DATA$pyo Register (gui, event, bevent)DATA(yo writeLamps(ribfile, name, lampnum)DATAzo ribfile.write("\n")DATA`zoDATA(zodef renderShadows(ribfile, frames2):DATA$zo global selectedname, partitionnameDATA(8{o display = Blender.Scene.GetCurrent()DATA${o cframe = Blender.Get('curframe')DATA({o for objects in Blender.Object.Get():DATA8|o name = objects.getName()DATA$|o if (objects.getType() == "Lamp"):DATA|o resetObject()DATA$}o Register (gui, event, bevent)DATA`}o selectedname = nameDATA}o saveload(0,0,'object')DATA$}o Register (gui, event, bevent)DATA @~o if (rendershadow.val == 1):DATA~o if (anim.val == 1):DATA,~o shadowframe = Blender.Get('curframe')DATA 0o else:DATAho shadowframe = ''DATAHo ribfiledir = os.path.normpath(shadowdir + name + str(shadowframe))DATA((o shadowrib = open(ribfiledir, 'w')DATA4o if ((menuval.val == 4) & (os.name != "posix")):DATAo ribfile.write('ReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + shadowdir + name + str(shadowframe))))))DATA o else:DATAPo ribfile.write('ReadArchive "%s"\n'%(shadowdir + name + str(shadowframe)))DATA(`o shadowrib.write('FrameBegin 0\n')DATA(o lampobj = Blender.Object.Get(name)DATA4o lamp = Blender.Lamp.Get(lampobj.getData().name)DATA|po if ((lamp.getMode() & lamp.Modes['Shadows']) & (lamp.type == 2)): # if it is set to render shadow and is a spotlightDATAo if (buff256.val == 1):DATA`o buffer = 256DATA o elif (buff512.val == 1):DATAo buffer = 512DATA 0o elif (buff1024.val == 1):DATAo buffer = 1024DATA o elif (buff2048.val == 1):DATAo buffer = 2048DATAPPo shadowrib.write('Projection "perspective" "fov" %s\n' %(lamp.spotSize))DATA,Іo shadowrib.write('PixelSamples 1 1\n')DATA4(o if (menuval.val != 2) and (menuval.val != 3):DATADo shadowrib.write('Hider "hidden" "depthfilter" "midpoint"\n')DATAo if (menuval.val == 3):DATA4@o shadowrib.write('PixelFilter "min" 1 1\n')DATA o else:DATA4؈o shadowrib.write('PixelFilter "box" 1 1\n')DATA88o shadowrib.write('Hider "hidden" "jitter" [0]\n')DATA(o writeTransform(shadowrib, lampobj)DATA<o shadowrib.write('Format %s %s 1\n'%(buffer, buffer))DATA\`o shadowrib.write('Display "%s/%s%s.pic" "zfile" "z"\n'%(shadowdir, name, shadowframe))DATAo if menuval.val == 5:DATA,0o shadowrib.write('ShadingRate 1\n')DATA o else:DATA,o shadowrib.write('ShadingRate 4\n')DATA(o shadowrib.write('WorldBegin \n')DATApo shadows = 1DATA8o createObjects(shadowrib, cframe, shadows, frames2)DATA$o shadowrib.write('WorldEnd \n')DATAho shadowrib.write('MakeShadow "%s/%s%s.pic" "%s/%s%s.tx"\n'%(shadowdir, name, shadowframe, shadowdir, name, shadowframe))DATA$o shadowrib.write('FrameEnd\n')DATAhoDATA(odef writeLamps(ribfile, name, lampnum):DATAo global selectednameDATA$8o lampobj = Blender.Object.Get(name)DATA4o lamp = Blender.Lamp.Get(lampobj.getData().name)DATA4o x = lampobj.matrix[3][0] / lampobj.matrix[3][3]DATA4Ho y = lampobj.matrix[3][1] / lampobj.matrix[3][3]DATA4o z = lampobj.matrix[3][2] / lampobj.matrix[3][3]DATA4o tox = -lampobj.matrix[2][0] + lampobj.matrix[3][0]DATA4ho toy = -lampobj.matrix[2][1] + lampobj.matrix[3][1]DATA4ȑo toz = -lampobj.matrix[2][2] + lampobj.matrix[3][2]DATA0(o if lamp.getMode() & lamp.Modes['Negative']:DATAo negative = -1DATAȒo else:DATAo negative = 1DATA@o selectedname = nameDATA o Register (gui, event, bevent)DATAؓo saveload(0,0,'object')DATA o if (caustics.val):DATA0`o ribfile.write('\tLightSource "caustic" 2\n')DATA(o ribfile.write('\tIlluminate 2 0\n\n')DATA(o ribfile.write('\tTransformBegin\n')DATALpo ribfile.write('\tAttribute "light" "integer nphotons" [%s]\n'%photon.val)DATA,o if lamp.getMode() & lamp.Modes['Shadows']:DATA@o shadow = 'on'DATAo else:DATAo shadow = 'off'DATA0o if (menuval.val == 2) or (menuval.val == 4):DATA Xo if (raytraceshadow.val == 1):DATAHo ribfile.write('\tAttribute "light" "shadows" ["%s"]\n' % (shadow))DATA o else:DATA<Xo ribfile.write('\tAttribute "light" "shadows" ["off"]\n')DATAo if (lamp.type == 2):DATAo if (anim.val == 1):DATA0Po shadowframe = '%s'%(Blender.Get('curframe'))DATAo else:DATAo shadowframe = ''DATA$(o energratio = lamp.dist * negativeDATA8xo if ((shadow == 'on') and (raytraceshadow.val == 1)):DATAo if (menuval.val == 3):DATA(o shadowname = 'shadow'DATApo elif (menuval.val == 1):DATAo shadowname = 'raytrace'DATAo elif (menuval.val == 6):DATAHHo ribfile.write('\t(Attribute "visibility" "transmission" "opaque")')DATAo shadowname = 'raytrace'DATA o else:DATA@o shadowname = ''DATAo else:DATA4o if (shadow == 'on') and (rendershadow.val == 1):DATA,o shadowname = name + shadowframe + '.tx'DATA po else:DATAo shadowname = ''DATA@o if (menuval.val == 6) and (shadow == 'off'): #Pixie RenderDATAXo 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' \DATAxo %(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))DATApo elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 0): #Pixie Render with SpotShadowsDATA(o 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' \DATAPo %(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`o elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 1): #Pixie Render with Ray Spot shadowsDATAo 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(o %(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))DATA8o else:DATApo 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' \DATAo %(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))DATAo elif (lamp.type == 1):DATAo energratio = negativeDATAx0o if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATAتo 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))DATAo else:DATAo if (menuval.val == 3):DATAD`o 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Эo elif (menuval.val == 1):DATADo 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))DATAo elif (lamp.type == 0):DATA$Яo energratio = lamp.dist * negativeDATAx o if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATAȰo 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))DATALo if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 6):DATA0o 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 o else:DATA Xo if (menuval.val == 3): DATA0o 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 o elif (menuval.val == 1): DATAXo 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))DATA88o if (raytraceshadow.val == 1) and (menuval.val == 6):DATAo print 'raytrace lamp'DATAHo ribfile.write('Attribute "visibility" "transmission" "opaque"\n')DATA`o 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))DATAo elif (lamp.type == 3):DATAȹo energratio = negativeDATAo 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(o if (caustics.val == 1):DATA$po ribfile.write('\tTransformEnd\n')DATAoDATA odef writeMatrix(ribfile, name):DATA@o Blender.Get('curframe')DATAo Blender.Window.RedrawAll()DATA,мo matrix = Blender.Object.Get(name).matrixDATA$(o ribfile.write("\t\tTransform [" +DATA<xo "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATA o (matrix[0][0], matrix[0][1],DATA 0o matrix[0][2], matrix[0][3],DATA o matrix[1][0], matrix[1][1],DATA оo matrix[1][2], matrix[1][3],PDATA o matrix[2][0], matrix[2][1],DATA po matrix[2][2], matrix[2][3],DATA o matrix[3][0], matrix[3][1],DATA o matrix[3][2], matrix[3][3]))DATA`oDATAodef resetObject():DATAo convertbm.val = 0DATAo objectshadermenu.val = 0DATAXo geom.val = 1DATAo meshexport.val = 1DATAo pointwidth.val = 1.0DATA o uv.val = 0DATAXo arealightMESH.val = 0DATAo areasamples.val = 20DATAo recievecaustics.val = 0DATA0o transmittcaustics.val = 0DATA$xo transmittcausticsslider.val = 1.4DATAo caustics.val = 0DATAo photon.val = 4000DATAHo buff256.val = 0DATAo buff512.val = 1DATAo buff1024.val = 0DATAo buff2048.val = 0DATAHo eblur.val = 0.00DATAo esamples.val = 1DATAo amesh.val = 0DATAo reflectcaustics.val = 0DATAPo raytraceshadow.val = 0DATAo rendershadow.val = 0DATAo bias.val = 0.25DATA o rvisibility.val = 0DATAho castshadow.val = 1DATAo objectra.val = 0DATAoDATAodef resetShaderVal():DATA`o if (shadermenu.val == 1):DATAo ambientshader.val = 1DATAo diffuseshader.val = 0.5DATA8o specularshader.val = 0.5DATAo roughnessshader.val = 0.1DATAo if (shadermenu.val == 2):DATAo ambientshader.val = 0.2DATAXo diffuseshader.val = 0.0DATAo specularshader.val = 0.5DATA o roughnessshader.val = 0.05DATA8o coefshader = 1.5DATAxo reflblurshader = 0DATAo refrblurshader.val = 0DATAo reflsamples.val = 0DATAPo refrsamples.val = 0DATAo if (shadermenu.val == 3):DATAo ambientshader.val = 1.0DATA(o diffuseshader.val = 0.1DATApo specularshader.val = 1.0DATAo roughnessshader.val = 0.2DATAo if (shadermenu.val == 5):DATAHo ambientshader.val = 1DATAo diffuseshader.val = 0.5DATAo specularshader.val = 0.5DATA o roughnessshader.val = 0.1DATA(ho textshader.val = 'Surface "plastic"'DATA,o textshaderd.val = 'Displacement "bumpy"'DATAo texturem.val = ''DATAXo textnor.val = 0DATAo illuminationmenu.val = 0DATAoDATA0odef writeShader(ribfile, name, meshobj, anim):DATApo global texturefile, txdoneDATA o if (arealightMESH.val == 0):DATAo MName = '"plastic"'DATAPo else: DATAo MName = ''DATA,o if ((uv.val == 1) and (meshobj != 10)):DATA0 o mesh = Blender.NMesh.GetRawFromObject(name)DATAo if mesh.faces[0].image:DATA,o imagename = mesh.faces[0].image.filenameDATA o imagename = imagename[:-3]DATApo imagename = imagenameDATA$o imagename = imagename + 'tif'DATATo imagename = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(imagename)[1])DATAho rawimage = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(mesh.faces[0].image.filename)[1])DATA8 o infile = open(mesh.faces[0].image.filename, 'rb')DATA$o outfile = open(rawimage, 'wb')DATA o outfile.write(infile.read())DATA(o outfile.close()DATAho infile.close()DATA`o imagenameconv = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tif'DATAX8o txname = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tx'DATA(o if os.path.isfile(imagename) == 0:DATA o try:DATA$Po totiff.SetOutDir(texturesdir)DATA(o ok = totiff.ConvertShort(rawimage)DATA$o if not ok[0]: # error occurredDATA(Ho print ok[1] # print error messageDATA o except:DATA o 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:DATA8o 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 Ho else:DATA o try:DATAPo os.system('convert -depth 8 -compress none %s %s'%(rawimage, imagename))DATA8o except OSError:DATA0o print "\nCould not find ImageMagic\n"DATA,o imagename = mesh.faces[0].image.filenameDATA 8o imagename = imagename[:-3]DATAo imagename = imagenameDATA o tdlname = imagename + 'tx'DATA$ o imagename = imagename + 'tif'DATA4po imagename = '%s'%(os.path.split(imagename)[1])DATA0o tdlname = '%s'%(os.path.split(tdlname)[1])DATAH0o MName = '"bms" "string texname" ["%s"] "float maptype" 3'%(tdlname)DATA@o if ((os.path.isfile(txname) == 0) or (reconvert.val == 1)):DATAo if menuval.val == 1:DATAH`o os.system('%s %s %s'%(prmantexmaker.val, imagenameconv, txname))DATAo elif menuval.val == 2:DATAH o os.system('%s %s %s'%(bmrttexmaker.val, imagenameconv, txname))DATAo elif menuval.val == 3:DATAHo os.system('%s %s %s'%(entropytexmaker.val, imagenameconv, txname))DATAXo elif menuval.val == 4:DATADo os.system('%s %s %s'%(dltexmaker.val, imagenameconv, txname))DATAo elif menuval.val == 5:DATAHXo os.system('%s %s %s'%(aqsistexmaker.val, imagenameconv, txname))DATAo elif menuval.val == 6:DATAHo os.system('%s %s %s'%(pixietexmaker.val, imagenameconv, txname))DATAo else: DATAo MName = '"plastic"'DATA$o if (transmittcaustics.val == 1):DATA0`o mesh = Blender.NMesh.GetRawFromObject(name)DATAo try:DATA<o material = Blender.Material.Get(mesh.materials[0].name)DATA`o mr = material.RDATAo mg = material.GDATAo mb = material.BDATA@ o except: # if the mesh doesnt have a material default to whiteDATA o mr = 1DATA o mg = 1DATA o mb = 1DATA`8o ribfile.write('\t\tAttribute "caustic" "color refractioncolor" [%s %s %s]\n'%(mr, mg, mb))E DATAho ribfile.write('\t\tAttribute "caustic" "float refractionindex" [%s]\n'%transmittcausticsslider.val)DATA `o if (reflectcaustics.val == 1):DATAPo ribfile.write('\t\tAttribute "caustic" "color specularcolor" [.9 .9 .9]\n')DATA 0o if (recievecaustics.val == 1):DATA(o ribfile.write('\t\tIlluminate 2 1\n')DATA8o if ((shadermenu.val == 1) & (arealightMESH.val != 1)):DATA0@o if ((convertbm.val != 0) or (meshobj == 10)):DATAo ribfile.write('\t\tSurface "plastic" "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val))DATA<po elif ((shadermenu.val == 2) & (arealightMESH.val != 1)):DATA0o if ((convertbm.val != 0) or (meshobj == 10)):DATA88o ribfile.write('\t\tDeclare "eta" "uniform float"\n')DATA<o ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@o ribfile.write('\t\tDeclare "refrblur" "uniform float"\n')DATA@xo ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATADo ribfile.write('\t\tDeclare "refrraysamples" "uniform float"\n')DATA@Xo ribfile.write('\t\tDeclare "envname" "uniform string"\n')DATAo if (menuval.val == 3):DATAo 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))DATAo elif (menuval.val == 2):DATA`o evar = '"blur" [%s] "raysamples" [%s] "refrraysamples" %s "refrblur" %s "eta" %s'%(reflblurshader.val, reflsamples.val, refrsamples.val, refrblurshader.val, coefshader.val)DATA @o else:DATAxo evar = ''DATAo 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<o elif ((shadermenu.val == 3) & (arealightMESH.val != 1)):DATA0o if ((convertbm.val != 0) or (meshobj == 10)):DATA<ho ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@o ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATA@o if (menuval.val == 3):DATA`o evar = '"string envname" ["reflection"] "string envspace" ["current"] "float twosided" 1'DATAo elif (menuval.val == 2):DATAP`o evar = ('"raysamples" %s "blur" %s'%(reflsamples.val, reflblurshader.val))DATA o else:DATAo evar = ''DATAXo 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<0o elif ((shadermenu.val == 4) & (arealightMESH.val != 1)):DATA0o if ((convertbm.val != 0) or (meshobj == 10)):DATAto 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<Po elif ((shadermenu.val == 5) & (arealightMESH.val != 1)):DATA0o if ((convertbm.val != 0) or (meshobj == 10)):DATAto ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA o txname = texturem.val[:-3]DATAo txname = txname + 'tx'DATAPo tdlname = txnameDATA$o txname = texturesdir + txnameDATAo converttex = 1DATA$ o if os.path.isfile(txname) == 0:DATApo for texture in txdone:DATA o if (txname == texture):DATA8 converttex = 0DATA  breakDATA if (converttex == 1):DATA if (menuval.val == 1):DATATH os.system('%s %s %s'%(prmantexmaker.val, texturesdir + texturem.val, txname))DATA  elif (menuval.val == 2):DATAT os.system('%s %s %s'%(bmrttexmaker.val, texturesdir + texturem.val, txname))DATA  elif (menuval.val == 3):DATAX os.system('%s %s %s'%(entropytexmaker.val, texturesdir + texturem.val, txname))DATA p elif (menuval.val == 4):DATAT os.system('%s %s %s'%(dltexmaker.val, texturesdir + texturem.val, txname))DATA @ elif (menuval.val == 5):DATAT os.system('%s %s %s'%(aqsistexmaker.val, texturesdir + texturem.val, txname))DATA  elif (menuval.val == 6):DATAT` os.system('%s %s %s'%(pixietexmaker.val, texturesdir + texturem.val, txname))DATA  txdone = txdone + [txname]DATA0 txname = tdlnameDATAp if (textnor.val == 1):DATA ribfile.write('\t\tDisplacement "bmd" "string texname" ["%s"] "float maptype" %s "float Km" %s\n'%(txname, projection.val - 1, norm.val))DATAx 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)DATAP  if (MName == ''):DATA  returnDATA  try:DATA<  material = Blender.Material.Get(mesh.materials[0].name)DATA$h  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 p  except:DATA0  ribfile.write('\t\tSurface %s\n'%(MName))DATA  if (meshobj != 10):DATA0P  mesh = Blender.NMesh.GetRawFromObject(name)DATA  try:DATA  if mesh.materials:DATA<0  material = Blender.Material.Get(mesh.materials[0].name)DATAT  ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA except: passDATA X if (arealightMESH.val == 1):DATA, ribfile.write('\t\tSurface "constant"\n')DATAL ribfile.write('\t\tAttribute "light" "nsamples" [%s]\n'%areasamples.val)DATAx if (menuval.val == 2):DATA@ ribfile.write('\t\tAttribute "light" "shadows" ["on"]\n')DATA00 mesh = Blender.NMesh.GetRawFromObject(name)DATA try:DATA< material = Blender.Material.Get(mesh.materials[0].name)DATA0 if (menuval.val == 3):DATAx 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))DATA 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  except:DATAx ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(0.7 * 100, 1, 1, 1))DATAxDATA8def createObjects(ribfile, cframe, shadows, frames2):DATAT global sshader, selectedname, thisone, meshobjects, xbar, meshnum, partitionnameDATA meshobjects = 0.0DATA thisone = 0DATA meshnum = 0DATAP objecttime = ''DATA( for objects in Blender.Object.Get():DATA name = objects.getName()DATA0 try:DATADh if (objects.getType() == "Mesh"): meshobjects = meshobjects + 1DATA  except: DATA passDATA(H for objects in Blender.Object.Get():DATA name = objects.getName()DATA resetObject()DATA ( area = 0DATA$` obj = Blender.Object.Get(name)DATA i = 0DATA0 while (obj.Layer>>i): # convert layer numberDATAH i = i + 1DATA  if (i == hiddenlayer.val):DATA layer = 1DATA else:DATAP layer = 0DATA8 if ((objects.getType() == "Mesh") & (layer == 0)):DATA meshnum = meshnum + 1DATA(@ meshobj = Blender.Object.Get(name)DATA$ obj = Blender.Object.Get(name)DATA selectedname = nameDATA$0 Register (gui, event, bevent)DATA saveload(0,0,'object')DATA if (shadows == 0):DATA( ribfile.write('\tAttributeBegin\n')DATA0h if ((shadows == 0) and (objectra.val == 1)):DATA@ ribfile.write('\t\tReadArchive "%s"\n' %(objectrafile.val))DATA8 if (shadows != 1):DATA0 mesh = Blender.NMesh.GetRawFromObject(name)DATA  if (len(mesh.faces) == 0):DATA(0  ribfile.write('\tAttributeEnd\n')DATA  del(mesh)DATA  returnDATA! if (mesh.materials):DATA H! try:DATA@! material = Blender.Material.Get(mesh.materials[0].name)DATAT! ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATAdp" ribfile.write("\t\tOpacity [%s %s %s]\n" %(material.alpha, material.alpha, material.alpha))DATA# except:DATA @# passDATAx# del(mesh)DATA#DATA # if (motionblur.val == 1):DATA,8$ ribfile.write('\tMotionBegin [0 1]\n')DATA($ Blender.Set('curframe', cframe) DATA $ writeMatrix(ribfile, name)DATA<8% Blender.Set('curframe', cframe + motionblurframe.val)DATA % writeMatrix(ribfile, name)DATA$% ribfile.write('\tMotionEnd\n')DATA(@& Blender.Set('curframe', cframe) DATA & else:DATA & writeMatrix(ribfile, name)DATA, ' namelist = string.split(sshader, "|")DATAx' if len(namelist) > 1: DATA@' surfaceshadername.val = namelist[objectshadermenu.val - 1] DATA$0( Register (gui, event, bevent)DATA( if (convertbm.val == 1):DATA( saveload(0,1,'shader')DATA$) Register (gui, event, bevent)DATA `) if (castshadow.val == 1):DATA) op = "Os"DATA ) elif (castshadow.val == 2):DATA@* op = "opaque"DATA * elif (castshadow.val == 3):DATA4* if (menuval.val == 1) or (menuval.val == 4):DATA0+ op = "shader"DATA p+ else:DATA+ op = "shade"DATA + elif (castshadow.val == 4):DATA48, if (menuval.val == 1) or (menuval.val == 4):DATA, op = "transparent"DATA , else:DATA- op = "none"DATA0X- if (menuval.val == 1) or (menuval.val == 4):DATAT- ribfile.write('\t\tAttribute "visibility" "string transmission" ["%s"]\n'%op)DATA48. elif (menuval.val == 2) or (menuval.val == 3):DATAP. ribfile.write('\t\tAttribute "render" "string casts_shadows" ["%s"]\n'%op)DATA / if (rvisibility.val == 1):DATAh/ if (menuval.val == 3):DATAH/ ribfile.write('\t\tAttribute "visibility" "integer camera" [0]\n')DATA (0 elif (menuval.val == 2):DATAHx0 ribfile.write('\t\tAttribute "render" "integer visibility" [2]\n')DATA0 if (shadows == 0):DATA481 writeShader(ribfile, name, meshobj, frames2)DATA1 if (amesh.val == 1):DATA1 objecttime = frames2DATA (2 else:DATA`2 objecttime = ''DATA 2 if (motionblur.val != 1):DATA,2 if ((frames2 == 0) or amesh.val == 1):DATAH3 if (geom.val == 1):DATAH3 meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA84 check(name, meshfile, meshobj, meshnum, shadows)DATAp4 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\x5 else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA 6 else:DATA 86 if (meshexport.val == 2):DATA,6 if ((frames2 == 0) or amesh.val == 1):DATA6 if (geom.val == 1):DATAH(7 meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA87 check(name, meshfile, meshobj, meshnum, shadows)DATA8 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\9 else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA 9 else:DATA9 if (amesh.val != 1):DATA: if (frames2 == 0):DATAX: if (geom.val == 1):DATAL: meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA<; 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(@= Blender.Set('curframe', cframe) DATA$= Blender.Window.RedrawAll()DATA= if (geom.val == 1):DATAH0> meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8> check(name, meshfile, meshobj, meshnum, shadows)DATA0? ribfile.write('\tMotionBegin [0 1]\n')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 + str(objecttime) + ".rib")))))DATA\x@ else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA<A Blender.Set('curframe', cframe + motionblurframe.val)DATA$hA Blender.Window.RedrawAll()DATA4A objecttime = frames2 + motionblurframe.valDATAB if (geom.val == 1):DATAP`B meshfile = open('%s/%s%s.rib'%(meshesdir,name, str(objecttime)), 'w')DATA8B check(name, meshfile, meshobj, meshnum, shadows)DATAHC 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`PD else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, str(objecttime)))DATA(D ribfile.write('\tMotionEnd\n')DATA(8E Blender.Set('curframe', cframe) DATA$E Blender.Window.RedrawAll()DATAE objecttime = frames2DATA(F if (shadows == 0):DATA(pF ribfile.write('\tAttributeEnd\n')DATA F if (arealightMESH.val == 1):DATA,G ribfile.write('\tIlluminate 999 1\n')DATApGDATA(Gdef drawBar(meshnum, qwerty, pixels):DATAG if (progress.val == 1):DATA$@H global thisone, meshobjects, xbarDATA H xbar = 0DATAH xbar = qwertyDATAI if (xbar < 10): xbar = 11DATA PI Draw()&{@DATA0I elif ((progress.val == 0) & (anim.val == 1)):DATA(I testtime = Blender.Get('curframe')DATA@JDATA8pJdef check(name, meshfile, meshobj, meshnum, shadows):DATAJ if (shadows != 1):DATA K print 'Exporting: %s'%nameDATA0hK mesh = Blender.NMesh.GetRawFromObject(name)DATA K if (len(mesh.faces) == 0):DATAL del(mesh)@DATA XL returnDATAL if (meshexport.val == 1):DATA$L pointspolygon(meshfile, mesh)@DATA (M elif (meshexport.val == 2):DATA0xM polygon(mesh, meshfile, meshobj, meshnum)DATA M elif (meshexport.val == 3):yDATA (N subdivmesh(meshfile, mesh)EJDATA xN elif (meshexport.val == 4):`DATAN points(meshfile, mesh)@DATA O elif (meshexport.val == 5):pJDATA`O general(meshfile, mesh)@DATA O elif (meshexport.val == 6):UDATAO bilinear(meshfile, mesh)DATA @P del(mesh)DATAxP meshfile.close()`DATAPyDATA Pdef pointspolygon(file, mesh): DATA8Q global meshnumDATA$$m testtime = Blender.Get('curframe')DATA P$m update = 5DATA$m colorif = 0@DATA$m perso = 0.0z^DATA%m pixels = 0.0@DATAH%m update = 100DATA %m index = 0DATA%m facenum = len(mesh.faces)JDATA&m if menuval.val != 2:DATAP&m if mesh.hasFaceUV() == 1:DATA8&m file.write('Declare "st" "facevarying float[2]"\n')DATA$'m file.write("PointsPolygons [");DATAP'm for face in mesh.faces:@DATA,'m if len(face.v) == 4 and menuval.val == 2:DATA'm file.write('3 3 ')DATA8(m else:DATA$p(m file.write('%s '%(len(face.v)))DATA(m index = index + 1DATA0)m if ((index == update) or (index == facenum)):DATA`)m update = update + 100DATA)m pixels = 619@DATA()m perso = float(index) / float(facenum)DATA,@*m qwerty = float(pixels) * float(perso) @DATA$*m drawBar(meshnum, qwerty, pixels)DATA*m file.write("] ")DATA(+m file.write("[ ")DATAh+m for face in mesh.faces:DATA+m num = len(face.v)DATA+m if num == 3 or num == 4:JDATA(8,m if num == 4 and menuval.val == 2:DATA,m for i in (0,1,2,0,2,3):DATA,,m file.write('%s ' % face.v[i].index)DATA 0-m else:pJDATAh-m for vert in face.v:DATA$-m file.write('%s ' % vert.index)DATA.m file.write("]")`DATA@.m file.write('\n"P" [')DATA.m for vert in mesh.verts:DATAD.m file.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATA@/m file.write('] ')urDATA/m if mesh.faces[0].smooth:DATA/m file.write(' "N" [')@DATA0m for vert in mesh.verts:@DATADX0m file.write("%s %s %s " % (vert.no[0], vert.no[1], vert.no[2]))Y+DATA0m file.write(']')`DATA$1m if mesh.hasVertexColours() == 1:aDATA(X1m vertexcol = range(len(mesh.verts))DATA1m file.write('\n"Cs" [')˴DATA1m for face in mesh.faces:@DATA@2m num = len(face.v)͂@DATA2m if num == 3 or num == 4:DATA$2m for vi in range(len(face.v)):DATA0 3m vertexcol[face.v[vi].index] = face.col[vi]DATA3m for vc in vertexcol: DATAD3m file.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))@DATA84m file.write(']')`DATAx4m if (menuval.val != 2):DATA4m if mesh.hasFaceUV() == 1:DATA5m file.write('\n"st" [')@DATAP5m for face in mesh.faces:DATA5m num = len(face.v)`DATA 5m if num == 3 or num == 4:DATA$06m for vi in range(len(face.v)):@DATAD6m file.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA6m file.write(']')DATA07m else:JDATA,h7m if (len(mesh.faces[0].uv) != 0):DATA7m file.write('\n"st" [ ')DATA8m vtuv = [] `DATA(H8m for i in range(len(mesh.verts)): aDATA8m vtuv.append(0) DATA8m for f in mesh.faces: DATA (9m for i in range(len(f.uv)): DATAx9m uv = f.uv[i]DATA 9m uv = uv[0], 1.0 - uv[1]DATA :m vtuv[f.v[i].index] = uv^@DATAX:m for c in vtuv:DATA:m for d in c: DATA:m file.write('%s '%d)@DATA ;m file.write(']')DATA`;m file.write('\n')}DATA;mDATA0;mdef polygon(mesh, meshfile, meshobj, meshnum):@DATA0m if mesh.materials:DATA$>m matname=mesh.materials[0].nameDATA>m try:DATA0?m material = Blender.Material.Get(matname)~@DATA<h?m if (colorif != material.R + material.G + material.B):@DATA4?m colorif = material.R + material.G + material.BDATAT0@m meshfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA @m except:DATA @m passDATA Am if len(mesh.faces[i].v) == 3:DATApAm vertar = 3DATAAm else:DATAAm vertar = 4DATA(Bm if face.smooth:DATAhBm smooth = 1DATABm else:DATABm smooth = 0DATA8 Cm writePoly(mesh,face, meshfile, i, vertar, smooth);DATA Cm i = i + 1DATA(Cm if ((i == update) or (i == facenum)):DATADm update = update + 5DATA`Dm pixels = 619DATA(Dm perso = float(i) / float(facenum)`DATA,Dm qwerty = float(pixels) * float(perso)DATA$PEm drawBar(meshnum, qwerty, pixels)DATAEmDATA<Emdef textureUV(i, mesh, va, vb, vc, meshfile, face, number):DATA8Fm try:DATApFm etest = face.uv[0][0]DATA Fm except:pJDATA Fm returnDATA(Gm meshfile.write('"st" [ ')DATApGm if (number == 1):DATAGm for x in [0, 1, 2]:@DATA(Gm meshfile.write("%s "%face.uv[x][0])@DATA0PHm meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAHm if (number == 2):JDATA$Hm if len(mesh.faces[i].v) == 3: ς@DATA @Im return@DATAxIm for x in [0, 2, 3]:DATA(Im meshfile.write("%s "%face.uv[x][0])JDATA0Jm meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAxJm meshfile.write(']\n')DATAJm`DATA8Jmdef writePoly(mesh, face, meshfile, i, vertar, smooth):DATA$XKm meshfile.write('Polygon "P" [ ')DATAKm for x in [0, 1, 2]:DATAKm for y in range(3):DATA8Lm try:DATA4pLm meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATALm except Error:v@DATA Mm print iDATA HMm print xDATA Mm print yDATAMm meshfile.write(']\n')JDATANm if (smooth == 1):DATA@Nm meshfile.write('"N" [')DATANm for x in [0, 1, 2]:pJDATANm for y in range(3):`DATA4Om meshfile.write('%s '%mesh.faces[i].v[x].no[y])dDATAxOm meshfile.write(']\n')DATA Om number = 1DATA4Om textureUV(i,mesh,0,1,2, meshfile, face, number)*ibDATAXPm if (vertar == 4):eDATA$Pm meshfile.write('Polygon "P" [ ')fDATAPm for x in [0, 2, 3]:poDATA0Qm for y in range(3):faDATA4xQm meshfile.write('%s '%mesh.faces[i].v[x].co[y])pDATAQm meshfile.write(']\n')DATA Rm if (smooth == 1):DATA`Rm meshfile.write('"N" [')rDATARm for x in [0, 2, 3]:mDATARm for y in range(3):tDATA48Sm meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATASm meshfile.write(']\n')mpfDATASm number = 2radDATA4 Tm textureUV(i,mesh,0,1,2, meshfile, face, number)uDATATmpatDATA Tmdef general(meshfile, mesh):codDATA Um index = 0mDATA,8Um meshfile.write('PointsGeneralPolygons [')oDATAUm for face in mesh.faces:ef_DATAUm meshfile.write('1 ')CDATA Vm index = index + 1DATA`Vm meshfile.write(']\n[')DATA Vm index = 0aDATAVm for face in mesh.faces:actDATA (Wm meshfile.write(str(nr) + ' ')DATAxWm index = index + 1DATAWm meshfile.write(']\n[')DATA Xm index = 0lDATA8Xm for f in mesh.faces:xrDATAXm for v in f.v:DATA(Xm meshfile.write(str(v.index) + ' ')deDATAYm index = index + 1DATAXYm meshfile.write(']\n"P" [')DATA Ym index = 0rDATA$Ym for x in range(len(mesh.verts)):eDATA(Zm for y in range(3):4][DATA4pZm meshfile.write(str(mesh.verts[x].co[y]) + '')ogDATAZm index = index + 1DATA[m meshfile.write(']\n')iDATAX[mr[1DATA [mdef bilinear(meshfile, mesh):efDATA[m f = 0eDATA\m for face in mesh.faces:li_DATA,X\m meshfile.write('Patch "bilinear" "P" [ ')DATA\m for x in [3, 2, 0, 1]:dirDATA\m for y in range(3):alDATA4@]m meshfile.write('%s '%mesh.faces[f].v[x].co[y])cDATA]m meshfile.write(']\n')DATA]m if face.smooth:elDATA(^m meshfile.write('"N" [ ')DATAp^m for x in [3, 2, 0, 1]:pyDATA^m for y in range(3):uDATA4_m meshfile.write('%s '%mesh.faces[f].v[x].no[y])DATA`_m meshfile.write(']\n')nelDATA _m f = f + 1DATA_mdatDATA `mdef subdivmesh(meshfile, mesh):DATA``m if menuval.val != 2:*sDATA`m if mesh.hasFaceUV() == 1:DATA<`m meshfile.write('Declare "st" "facevarying float[2]"\n')[DATA8Xam meshfile.write('SubdivisionMesh "catmull-clark" [')lasDATAam for face in mesh.faces:typDATAbm num = len(face.v)DATA Hbm meshfile.write('%s '%(num))12DATAbm meshfile.write(']\n[')DATAbm for face in mesh.faces:dedDATA(cm for vert in face.v:fDATA(pcm meshfile.write('%s ' % vert.index)mpDATADcm meshfile.write(']\n["interpolateboundary"] [0 0] [] []\n"P" [') aiDATA8dm for vert in mesh.verts:[3]DATAHdm meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))3]DATAdm meshfile.write(']')aneDATA@em if (menuval.val != 2):DATAem if mesh.hasFaceUV() == 1:DATA em meshfile.write('\n"st" [')mDATA fm for face in mesh.faces:gDATAhfm num = len(face.v)QuDATA fm if num == 3 or num == 4:eSeDATA$gm for vi in range(len(face.v)):hDATAHPgm meshfile.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATAgm meshfile.write(']')DATA$hm if mesh.hasVertexColours() == 1:AcDATA(`hm vertexcol = range(len(mesh.verts))orDATA hm meshfile.write('\n"Cs" [')erDATAim for face in mesh.faces:kTDATAPim num = len(face.v)itCDATAim if num == 3 or num == 4:DATA$im for vi in range(len(face.v)): DATA00jm vertexcol[face.v[vi].index] = face.col[vi]DATAjm for vc in vertexcol:DATAHjm meshfile.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATAPkm meshfile.write(']')(DATAkm meshfile.write('\n')DATAkmDATAlmdef points(meshfile, mesh):DATA Xlm meshfile.write('Points "P" [')DATAlm for vert in mesh.verts:DATAHlm meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))lDATA@hmm meshfile.write('] "constantwidth" [%s]\n' % (pointwidth.val))DATAmmDATA nmdef createGI(ribfile, frames):DATA0Xnm if (areagi.val == 1) and (menuval.val !=6):&DATA8nm ribfile.write('\tDeclare "casts_shadows" "string"\n')DATAH om ribfile.write('\tAttribute "render" "casts_shadows" ["opaque"]\n')YDATATom ribfile.write('\tLightSource "ambientlight" 998 "lightcolor" [0.02 0.02 0.02]\n')DATA(pm ribfile.write('\tAttributeBegin\n')\DATA@ppm ribfile.write('\t\tAttribute "identifier" "name" ["sky"]\n')DATA`pm ribfile.write('\t\tConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 -1573.14 307.099 -988.299 1]\n')DATAXpqm ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(qm ribfile.write('\t\tAttributeBegin\n')DATA,Prm ribfile.write('\t\t\tColor [1 1 1]\n') DATA,rm ribfile.write('\t\t\tOrientation "rh"\n')DATA0sm ribfile.write('\t\t\tReverseOrientation\n')FDATA0`sm ribfile.write('\t\t\tSurface "constant"\n')fDATALsm ribfile.write('\t\t\tAttribute "light" "nsamples" [%s]\n'%gisteps.val)uDATA@8tm ribfile.write('\t\t\tAttribute "light" "shadows" ["on"]\n')DATAhtm ribfile.write('\t\t\tAreaLightSource "arealight" 1 "lightcolor" [1 1 1] "intensity" [10000000000]\n')DATA4@um ribfile.write('\t\t\tSphere 50000 0 50000 360\n')DATA(um ribfile.write('\t\tAttributeEnd\n')DATA$um ribfile.write('\tAttributeEnd\n')DATA(Hvm ribfile.write('\tIlluminate 1 1\n')DATA4vm if (indirectgi.val == 1) and (menuval.val !=6):DATA wm if (finalgather.val == 0):&DATAPPwm ribfile.write('\tAttribute "indirect" "float maxerror" [%s]\n'%maxerror.val)DATAXwm ribfile.write('\tAttribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATAXxm else:DATAHxm ribfile.write('\tAttribute "indirect" "float maxpixeldist" [0]\n')DATAPym ribfile.write('\tAttribute "indirect" "integer nsamples" [%s]\n'%gisteps.val)DATA4ym ribfile.write('\tLightSource "indirect" 42\n\n')DATAym if (gisphere.val == 1):DATA(0zm ribfile.write('\tAttributeBegin\n')DATAXzm ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA({m ribfile.write('\t\tColor [1 1 1]\n')DATA0h{m ribfile.write('\t\tSurface "constant"\n')DATA8{m ribfile.write('\t\tSphere 2000 -2000 2000 360\n')DATA(0|m ribfile.write('\tAttributeEnd\n')%DATA|mDATA|mdef render(ribfile):DATA}m if (os.name != "posix"):DATAH}m if (menuval.val == 1):DATA4}m os.system('%s %s'%(prmanrenderer.val, ribfile))DATA}m elif (menuval.val == 2):DATA48~m os.system('%s %s'%(bmrtrenderer.val, ribfile))DATA~m elif (menuval.val == 3):DATA8~m os.system('%s %s'%(entropyrenderer.val, ribfile))DATAHm elif (menuval.val == 4):DATA0m os.system('%s %s'%(dlrenderer.val, ribfile))DATAm elif (menuval.val == 5):DATA48m os.system('%s %s'%(aqsisrenderer.val, ribfile))DATAm elif (menuval.val == 6):DATA4m os.system('%s %s'%(pixierenderer.val, ribfile)) DATA@m elif (os.name == "posix"):DATAm if (menuval.val == 1):m DATA8Ёm os.system('%s %s &'%(prmanrenderer.val, ribfile))m DATA8m elif (menuval.val == 2):@DATA4m os.system('%s %s &'%(bmrtrenderer.val, ribfile))DATAm elif (menuval.val == 3):DATA8(m os.system('%s %s &'%(entropyrenderer.val, ribfile))DATAm elif (menuval.val == 4):DATA4؃m os.system('%s %s &'%(dlrenderer.val, ribfile))DATA8m elif (menuval.val == 5):DATA8m os.system('%s %s &'%(aqsisrenderer.val, ribfile))DATAm elif (menuval.val == 6):DATA80m os.system('%s %s &'%(pixierenderer.val, ribfile))DATAmDATAȅmdef closeFile(ribfile):DATAm ribfile.close()DATAPmDATAmdef writeFrame(ribfile):DATAȆm global sshader, cframeDATA m display = Scene.GetCurrent()DATA,`m context = display.getRenderingContext()DATAm frames2 = 0DATA(m display = Blender.Scene.GetCurrent()DATAPm if (anim.val == 1):DATA8m frames = context.endFrame() - context.startFrame()DATAm else:DATA8m frames = 0DATAxm if (anim.val == 1):DATA m cframe = context.startFrame()DATAm else:DATA$Hm cframe = Blender.Get('curframe')DATA m for x in range(frames + 1):ssDATA$m Blender.Set('curframe', cframe)sDATA88m print 'Exporting Frame: %s'%Blender.Get('curframe')sDATA$m renderShadows(ribfile, frames2)DATA,m ribfile.write('\nFrameBegin %s\n'%cframe)DATA(Hm writeHeader(ribfile, frames, frames2)DATAm lampobj = 0DATAm if (motionblur.val == 1):DATA((m ribfile.write('MotionBegin [0 1]\n')DATA$m Blender.Set('curframe', cframe)DATA$Ѝm writeTransform(ribfile, lampobj)DATA< m Blender.Set('curframe', cframe + motionblurframe.val)DATA$m writeTransform(ribfile, lampobj)DATA$؎m Blender.Set('curframe', cframe)DATA (m ribfile.write('MotionEnd\n')DATAxm else:DATA$m writeTransform(ribfile, lampobj)DATAm if (rgba.val == 1):DATAHm channels = "rgb"DATAm elif (rgba.val == 2):DATAАm channels = "rgba"DATAm elif (rgba.val == 3):DATA`m channels = "rgbz"DATAm elif (rgba.val == 4):DATAm channels = "z"DATA0m if (buffer.val == 1):DATAlxm ribfile.write('Display "%s/%s%05d.tif" "framebuffer" "%s"\n'%(imagesdir, image.val, cframe, channels))DATAm if (file.val == 1):DATAdXm ribfile.write('Display "%s/%s%05d.tif" "file" "%s"\n'%(imagesdir, image.val, cframe, channels))DATAm if (preworldra.val == 1):DATA<0m ribfile.write('ReadArchive "%s"\n'%(preworldrafile.val))DATA$m ribfile.write('WorldBegin \n')DATA m if (postworldra.val == 1):DATA@8m ribfile.write('\tReadArchive "%s"\n'%(postworldrafile.val))DATA0m if (menuval.val == 1) or (menuval.val == 4):DATADm ribfile.write('\tAttribute "visibility" "integer trace" [1]\n')DATAxm if (menuval.val == 3):DATA@m ribfile.write('\tAttribute "visibility" "reflection" [1]\n')DATA<0m ribfile.write('\tAttribute "visibility" "shadow" [1]\n')DATA m #PixieDATAЗm if (occlusion.val == 1):DATAlm ribfile.write('\tLightSource "ambientocclusion" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATAm if (indirect.val == 1):DATAhm ribfile.write('\tLightSource "ambientindirect" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATAm #End PixieDATAЙm ambientLight(ribfile)DATAm checkLamps(ribfile)DATA`m if (gi.val == 1):DATA m createGI(ribfile, frames)DATAm if (hdri.val == 1):DATA8m if (menuval.val == 3):DATA(m ribfile.write('\tAttributeBegin\n')DATAD؛m ribfile.write('\t\tAttribute "visibility" "reflection" [1]\n')DATAdHm ribfile.write('\t\tSurface "envsurf" "string envname" ["%s"] "float blur" [0]\n'%(hdritex.val))DATA4؜m ribfile.write('\t\tSphere 50000 0 50000 360\n')DATA(8m ribfile.write('\tAttributeEnd\n')DATAPm createObjects(ribfile, cframe, 0, frames2) # 0 is for the shadows variableDATA m ribfile.write('WorldEnd \n')DATA `m ribfile.write('FrameEnd\n')DATAm cframe = cframe + 1DATAm frames2 = frames2 + 1DATA@mDATA4pmdef export(): # start the export stuff from hereDATAXПm global selectedtype, selectedname, xbar, texturefile, shadernametemp, partitionnameDATA8Xm newdirs() # make sure all the directories are thereDATA$m xbar = 10 # reset the progressbarDATA8m selectedtype = 'Type:' # reset the object editor stuffDATAxm selectedname = ''DATA4m filedir = os.path.normpath(pdir + filename.val)DATADm ribfile = open(filedir, 'w') # open the main ribfile (default.rib)DATA4m if ((menuval.val == 4) & (os.name != "posix")):DATAm ribfile.write('ReadArchive "%s%s"\n'% os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + pdir + "/texturefile.rib") ) ) )DATAm else:DATADm ribfile.write('ReadArchive "%s"\n'% (pdir + "/texturefile.rib"))DATAdPm texturefile = open(os.path.normpath(pdir + 'texturefile.rib'), 'w') # open the texture rib fileDATAm if (menuval.val == 5):DATA(m texturefile.write('#\n')DATA,pm writeFrame(ribfile) # write all the framesDATA0ȥm closeFile(ribfile) # close the main ribfileDATA(m texturefile.close()DATA8pm selectedtype = 'Type:' # reset the object editor stuffDATAئm selectedname = ''DATA(m surfaceshadername.val = shadernametempDATAHpm Register (gui, event, bevent) # make sure all gui values are in place`DATA4m if (rendert.val == 1): # if the renderbutton is onDATA4Hm render(pdir + filename.val) # render the rib fileTXdجm jTXKEYLIST.intrrhmmmmm DATA,hm/home/intrr/tuhopuu/blender/KEYLIST.intrrDATAmmmDATAmPmmmDATAPmmmHmDATAmmPmmODATAm(mmDATA(mpmm%DATApmm(mHCDATAmmpmxDATAmHmm"DATAHmmm%DATAmذmHmp%DATAذm mmDATA mhmذmDATAhmm m@,FREEDATAmmhm,DATAm@mm$oDATA@mmmXDDATAmвm@m%DATAвmmm(D0BDATAm`mвmDATA`mmm+DATAmm`m@!DATAm8mmDATA8mmmDATAmȴm8m DATAȴmmmht: DATAmXmȴm48 tDATAXmmmme/iDATAmmXm@.xDATAm0mmFREEDATA0mxmm4pDATAxmm0m0win DATAmmxmxDDATAmPmmDATAPmmmW#?DATAmmPm8 win DATAm(mm0?DATA(mpmm$DATApmm(m@4headDATAmmpmDATAmHmmwin DATAHmmm DDATAmعmHmhDATAعm mm?DATA mhmعmFREEDATAhmm m(DATAmmhmp!FREEDATAm@mmDATA@mmm@BDATAmлm@m@FREEDATAлmmmtDATAm`mлm4pDATA`mmmHtpDATAmm`m FREEDATAm8mm1DATA8mmmHDATAmȽm8mxDATAȽmmmDATAmXmȽmDATAXmmm@ DATAmmXmp(DATAm0mmDATA0mxmm,ADATAxmm0mhYDATAmmxmBDATAmPmm 2DATAPmmmDATAmmPmcDDATAm(mm%DATA(mpmmP/ DATApmm(m$DATAmmpmDATAmHmm8 DATAHmmmxDATAmmHmDATAm mmsDATA mhmmHsDATAhmm msDATAmmhm"sDATAm@mm('DATA@mmm(' DATAmm@mDATAmmmDATAm`mmH!DATA`mmm/CDATAmm`m&DATAm8mmHDATA8mmmADATAmm8m!PBDATAmmmDATAmXmm`DATAXmmm-DATAmmXm"DATAm0mmX!DATA0mxmmDATAxmm0mDATAmmxmDATAmPmmH/DATAPmmm&DATAmmPmDATAm(mmPDATA(mpmm!DATApmm(m TimDATAmmpm'pDATAmHmmp!DATAHmmmnterDATAmmHm$VDATAm mm`2ibDATA mhmm)DATAhmm mDATAmmhmHDATAm@mm;DATA@mmm'DATAmm@mPDATAmmmDATAm`mmDATA`mmm#DATAmm`m`<DATAm8mmDATA8mmm&DATAmm8mX.DATAmmm/DATAmXmm'DATAXmmmp)DATAmmXmDATAm0mm2DATA0mxmmXDATAxmm0m*DATAmmxmDDATAmPmmpDATAPmmmDATAmmPm/DATAm(mmH!DATA(mpmm5DATApmm(mIDATAmmpmx@DATAmHmm/homDATAHmmm DATAmmHmP,?DATAm mmT FIDATA mhmm*DATAhmm mP?DATAmmhm*DATAm@mmDATA@mmm8*DATAmm@mDATAmmmDATAm`mm(DATA`mmmX DATAmm`mDATAm8mmDATA8mmm =DATAmm8mDATAmmmDATAmXmm DATAXmmmpDATAmmXm0DATAm0mmW#?DATA0mxmmHDATAxmm0mDATAmmxm ?DATAmPmm01ecDATAPmmm#DATAmmPmDATAm(mm(DATA(mpmmXDATApmm(mADATAmmpm3DATAmHmmp#DATAHmmm+DATAmmHmhcDATAm mmH DATA mhmmDATAhmm m:endDATAmmhmH4DATAm@mmxxH@DATA@mmmdummDATAmm@m0wH@DATAmmm DATAm`mm )DATA`mmm3DATAmm`mxDATAm8mm0xH@DATA8mmm*wH@DATAmm8m@throDATAmmmp65DATAmXmm29-ADATAXmmm %DATAmXm` DATAmDATAmDATAHmKey FunctionDATAPm-------------------------------------------------------------------------------DATA~ Display all layersDATA(Shift-~ Display all/previous layersDATAHREEDATA x1..2..0-= Show layer 1..2..12DATA$ALT-1..2..0 Show layer 11..12..20DATA(SHIFT-1..2..0-= Toggle layer 1..2..12DATA(pSHIFT-ALT-... Toggle layer 11..12..20DATADATANumpad DEL Zoom on objectDATA0@Numpad / Local view on object (hide others)DATA0Numpad * Rotate view to object's local axesDATA(Numpad + Zoom in (works everywhere)DATAHXNumpad + Proportional vertex edit mode: Increase range of influenceDATA(Numpad - Zoom out (works everywhere)DATAH(Numpad - Proportional vertex edit mode: Decrease range of influenceoDATANumpad INS Set Camera viewDATA,CTRL-Numpad INS Set active object as cameraDATA$@ALT-Numbad INS Restore old cameraDATANumpad 1 Front viewDATACTRL-Numpad 1 Back viewDATA Numpad 3 Right-Side viewDATA hCTRL-Numpad 3 Left-Side view aDATANumpad 7 Top viewDATACTRL-Numpad 7 Bottom view EDATA0@Numpad 5 Toggle orthogonal / perspective viewNDATANumpad 9 Redraw viewEEDATANumpad 2 Rotate view leftDATA0Numpad 6 Rotate view rightDATAxNumpad 8 Rotate view upDATANumpad 2 Rotate view downDATAREEDATA$8PgUp IPO: Select next keyframeDATA4CTRL-PgUp IPO: Select and jump to next keyframeDATA(PgDn IPO: Select previous keyframe_DATA8@CTRL-PgDn IPO: Select and jump to previous keyframeDATAREEDATALEFT One frame backwardsDATA RIGHT One frame forwardsDATAhDOWN 10 frames backwardsDATAUP 10 frames forwardsDATADATA(TAB Enter/exit edit modeDATA$pTAB Sequencer: Edit meta stripDATA CTRL-TAB Enter/exit pose modeDATADATA @A Select all / Deselect allDATA ALT-A Animate current windowDATA8CTRL-A Apply object's size/rotation to object dataDATA HSHIFT-A Sequencer: ADD menuDATA$SHIFT-ALT-A Animate all windowsDATA4SHIFT-CTRL-A Apply lattice / Make dupliverts realDATAHDATAxB Border selectDATABB Circle selectDATASHIFT-B Set render borderDATA@DATApC Center view on cursorDATA C Sequencer: Change imagesDATA0C IPO: Snap current frame to selected keyDATAhALT-C Convert menu@fDATADCTRL-C Copy menu (Copy properties of active to selected objects)DATA4 SHIFT-C Center and zoom view on selected objectsDATADATAD Set 3d draw modeDATA(ALT-D Create new instance of objectCDATA0PCTRL-D Display alpha of image texture as wireDATA(SHIFT-D Create full copy of objectDATADATA8E ExtrudeDATAxsDATA F Edit mode: Make edge/faceDATA F Sequencer: Set Filter YsDATAHF Faceselect modeDATAALT-F Beautify fillsDATA$CTRL-F Sort faces in Z directionDATA((CTRL-F Edit mode: Flip triangle edgesDATA,SHIFT-F Edit mode: Fill with trianglesDATADATAG Grab (move)DATAHALT-G Clear locationDATA0SHIFT-ALT-G Remove selected objects from groupDATA(CTRL-G Add selected objects to groupDATAHSHIFT-G Group menuDATADATA$H Hide selected vertices/facesDATA H Curves: Set handle typeDATA`ALT-H Reveal verticesDATA0CTRL-H Curves: Automatic handle calculationEEDATA$SHIFT-H Hide deselected verticesDATA$XSHIFT-H Curves: Set handle typeDATADATAI Keyframe menuDATADATA0HJ Mesh: Join all adjacent triangles to quadsDATA(J Swap render page of render windowDATA CTRL-J Join selected objectsDATAPCTRL-J Nurbs: Add segmentDATA$CTRL-J IPO: Join keyframes menu DATAwH@DATA(K 3d window: Show keyframe positionsDATA$pK IPO: Show keyframe positionsDATAK Nurbs: Print knotsDATA(CTRL-K Make skeleton from armatureDATA4`SHIFT-K Show and select all keyframes for objectDATA,SHIFT-K Faceselect: Clear vertexcoloursDATADATAHL Make local menuDATA<L Edit mode: Select linked vertices (near mouse pointer)DATA(L OOPS window: Select linked objectsDATAPCTRL-L Make links menuDATASHIFT-L Select links menuDATADATA$M Move object to different layerDATA@`M Sequencer: Make meta strip (group) from selected stripsDATADATA(N Numeric input menu (Size/Rot/Loc)DATA0XN OOPS window: Rename object/linked objectsDATA0CTRL-N Armature: Recalculate bone roll anglesDATA(CTRL-N Recalculate normals to outsideDATA,pCTRL-ALT-N Recalculate normals to insideDATADATA4O Edit mode: Toggle proportional vertex editingDATAXALT-O Clear object originDATA,CTRL-O Revert current file to last savedDATAHSHIFT-O Proportional vertex edit mode: Toggle smooth/steep falloffDATApDATAP Start realtime engineDATA0P Edit mode: Seperate vertices to new objectDATA$HALT-P Clear parent relationshipDATA8CTRL-P Make active object parent of selected objectDATALCTRL-SHIFT-P Make active object parent of selected object without inverseDATADxCTRL-P Edit mode: Make active vertex parent of selected objectDATADATA R RotateDATA0PR IPO: Record mouse movement as IPO curveXcDATARX Rotate around X axisDATA,RXX Rotate around object's local X axisDATAPRY Rotate around Y axisEDATA,RYY Rotate around object's local Y axisDATARZ Rotate around Z axisDATA,8RZZ Rotate around object's local Z axisEDATA ALT-R Clear object rotationDATASHIFT-R Nurbs: Select rowDATA(DATA XS ScaleDATASX Flip around X axisDATASY Flip around Y axisDATA@ ALT-S Edit mode: Shrink/fatten (Scale along vertex normals)cDATAALT-S Clear object sizeDATACTRL-S Edit mode: ShearDATA SHIFT-S Cursor/Grid snap menuDATApDATA4T Sequencer: Touch and print selected moviesDATAT Adjust texture spaceEEDATA HT Edit mode: Flip 3d curveDATAT IPO: Change IPO typeDATA$ALT-T Clear tracking of objectDATA40CTRL-T Make selected object track active objectDATA$CTRL-T Mesh: Convert to trianglesDATACTRL-ALT-T BlenchmarkDATA(DATAXU Make single user menuDATADU Edit mode: Reload object data from before entering edit modeBDATA4U Faceselect mode: Automatic UV calculation menuDATA$pU Vertex-/Weightpaint mode: UndoDATA,CTRL-U Save current state as user defaultDATADATA$HV Curves/Nurbs: Vector handleDATAV Vertexpaint modeonDATA<ALT-V Scale object to match image texture's aspect ratioDATA8HSHIFT-V Edit mode: Align view to selected verticesDATAausDATA W Boolean operations menuwH@DATA 0W Edit mode: Specials menuDATACTRL-W Save current fileDATA$CTRL-W Nurbs: Switch directionDATA4SHIFT-W Warp/bend selected vertices around cursorDATAxtonDATAX Delete menuDATA,CTRL-X Restore default state (Erase all)DATA@rtrDATA8pY Mesh: Split selected vertices/faces from the restDATAsDATA( Z Switch 3d draw type (see also D)-ADATA` Q>TXd جmTXblenderman0.1beta9.0.P؉DATALP/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.pyDATA DATAXXDATAXDATAXw xDATA0 DATA0xPDATAx06DATAxDATAP(DATAPX>DATAPȌ$DATA( DATA(ph8RDATAp(Ѝ2DATAp0DATAH`DATAH DATAH DATA  DATA hPDATAh DATAhDATA@(DATA@p DATA@DATABDATA`HDDATA`CDATA`DATA8'DATA88DATA8pFDATADATAXDATAXH1DATAXDATA0DATA0x@DATAx0p"DATAx!DATAP2DATAPpDATAPDATA(*DATA(p@&FREEDATAp((14.zDATAp-~DATAHPromeDATAHDATAHDATA DATA hHDATAh DATAhИDATA@DATA@`DATA@DATADATA`8DATA`#DATA`КDATA8  DATA8  p `-W@DATA  8 !DATA ! "DATA!X! `#RW@DATAX!!!%FileDATA!!X!!DATA!0"!X#DATA0"x"!"DATAx""0"!DATA"#x"H!DATA#P#"#DATAP###"DATA##P#8DATA#($#DATA($p$#ȟDATAp$$($DATA$%p$PDATA%H%$?DATAH%%%РܦDATA%%H%DATA% &%` DATA &h&%DATAh&& &DATA&&h&(DATA&@'&pDATA@''&DATA''@'DATA'('PDATA(`('DATA`(((DATA((`((DATA(8)(pDATA8))(DATA))8)DATA)*)HDATA*X*)DATAX***DATA**X*(DATA*0+*pDATA0+x+*DATAx++0+DATA+,x+@DATA,P,+DATAP,,,ЧDATA,,P, DATA,(-,hDATA(-p-,DATAp--(- h@DATA-.p-H/kDATA.H.-DATAH...ةDATA..H.(DATA. /.xDATA /h/.Ȫ DATAh// /DATA//h/hDATA/@0/DATA@00/DATA00@0P DATA010DATA1`10DATA`1110DATA11`1DATA1821Э'DATA8221(DATA2282pDATA232DATA3X32DATAX333HDATA33X3DATA3043DATA04x43(DATAx4404pDATA45x4DATA5P54DATAP555HDATA55P5DATA5(65DATA(6p650 DATAp66(6xDATA67p6DATA7H76 DATAH777PDATA77H7DATA7 87سDATA 8h87 DATAh88 8hDATA88h88DATA8@98xDATA@998&DATA99@9176DATA9:9`*208DATA:`:9Հ/&DATA`:::DATA::`:ȹY%DATA:8;:ADATA8;;:غ"DATA;;8; DATA;<;h19-SDATA<X<;@DATAX<<<DATA<<X<м 1 DATA<0=<DATA0=x=<rwxDATAx==0=0DATA=>x=xDATA>P>=ȾrwxDATAP>>>DATA>>P>XDATA>(?>rwxDATA(?p?>DATAp??(?0DATA?@p?x859 DATA@H@?DATAH@@@DATA@@H@Pr--DATA@ A@DATA AhA@=DATAhAA A0aDATAAAhA_18-MDATAA@BAPCeb-0DATA@BBAADATABB@B01rwxDATABCB>@DATAC`CBy]DATA`CCC7DATACC`CDATAC8DCXDATA8DDC077DATADD8DDATADED(DATAEXEDp DATAXEEEDATAEEXE$DATAE0FE@"DATA0FxFE,DATAxFF0FDATAFGxF0DATAGPGF`DATAPGGGDATAGGPG DATAG(HG  DATA(HpHGXDATApHH(HDATAHIpH DATAIHIHDATAHIIIH.DATAIIHIDATAI JIDATA JhJI8,DATAhJJ JDATAJJhJ/DATAJ@KJ0#pDATA@KKJ3DATAKK@K/DATAKLK@8DATAL`LK/DATA`LLL-DATALL`Lh2DATAL8ML DATA8MML!DATAMM8Mh$DATAMNM"pp`DATANXNMDATAXNNNXDATANNXNDATAN0ONpDATA0OxON( DATAxOO0OxDATAOPxO"DATAPPPODATAPPPPX%DATAPPPPDATAP(QPDATA(QpQP@DATApQQ(Q DATAQRpQDATARHRQ DATAHRRRpDATARRHRDATAR SRDATA ShSRHDATAhSS SDATASShSDATAS@TS DATA@TTShDATATT@T DATATUTPDATAU`UTPUDATA`UUU_DATAUU`UhpDATAU8VUaDATA8VVUbDATAVV8V(_DATAVWVZDATAWXWV@gDATAXWWW`DATAWWXWhPDATAW0XW^DATA0XxXWxEDATAxXX0X^DATAXYxX^DATAYPYXX24 .DATAPYYY=@DATAYYPY DATAY(ZY8204-ODATA(ZpZY 39 .DATApZZ(Z4 21DATAZ[pZRW@DATA[H[Z`@DATAH[[[81 .DATA[[H[4 DATA[ \[8r-- DATA \h\[(r-- DATAh\\ \24-ODATA\\h\(.23-ODATA\@]\59 .DATA@]]\(.docDATA]]@]( jerDATA]^]p23-ADATA^`^] jerDATA`^^^)@DATA^^`^8x23-ADATA^8_^ssavDATA8__^DATA__8_0DATA_`_dDATA`X`_DATAX```DATA``X`DATA`0a`HH2YDATA0axa`FDATAxaa0apDATAabxaLDATAbPba0NDATAPbbb~KDATAbbPbxWDATAb(cbDATA(cpcbxy0DATApcc(c }XDATAcdpcDATAdHdc8DATAHdddhbZDATAddHdnTPDATAd ediDATA ehed0aDATAhee e`DATAeehe}TSDATAe@feYDATA@ffexPDATAff@f{DATAfgfhDATAg`gf DATA`ggghDATAgg`gDATAg8hgDATA8hhg wDATAhh8hDATAhihDATAiXih}FREEDATAXiiixFREEDATAiiXi8DATAi0ji}DATA0jxji0DATAxjj0jtDATAjkxjDATAkPkjHjDATAPkkkiDATAkkPkxIDATAk(lkLDATA(lplkpTfDATApll(lTFREEDATAlmplDATAmHmlDATAHmmmDATAmmHmPDATAm nmDATA nhnmDATAhnn nqDATAnnhn`DATAn@onDATA@oonDATAoo@o0DATAopox7DATAp`poDATA`ppp ctsDATApp`ph*DATAp8qpbDATA8qqpPDATAqq8qDATAqrqDATArXrq( DATAXrrrx DATArrXr 1@DATAr0sr FREEDATA0sxsrP /DATAxss0s DATAstxs  DATAtPts( DATAPtttx DATAttPt DATAt(ut DATA(uputh DATApuu(u 4zDATAuvpu D$DATAvHvu( 'DATAHvvvDATAvvHvHYDATAv wvDATA whwv DATAhww w[DATAwwhwder/DATAw@xwuDATA@xxwpDATAxx@xptDATAxyxX}DATAy`yxDATA`yyyDATAyy`yx333?DATAy8zyDATA8zzy DATAzz8zDATADATAz{zB.blDATA{X{zsDATAX{{{0DATA{{X{y3dDATA{0|{>DATA0|x|{rDATAx||0|{DATA|}x|0vDATA}P}|333?DATAP}}}( DATA}}P}xDATADATA}(~}@DATA(~p~}DATAp~~(~DATA~p~DATAH~DATAHDATAHDATA x DATA h DATAh x!DATAh@"0DATA@#XDATA@#"~(DATAЁ@$cDATADATAЁ$1DATA`Ё$~8DATA`%TDATA`H&`DATA8& DATADATA8&wFREEDATAȃ8'DATAȃ'DATAXȃ(a`DATAX(DATAX(]FREEDATA0)@DATA0x)erDATAx0@*@DATADATAx*@DATAP +KDATAP+DATAP+jDATA(,kDATA(p-jDATAp(-lDATApP.DATAH.fDATAH8/pDATA؈H/sDATA؈ x0dDATA h؈1c۷zADATAh 1MDATAh 2jzADATA@p2qDATA@3bDATAЊ@3(DATAЊ3DATA`Њ84DATA`4Mg.DATA`5DATA8H5DATA85ODATAȌ86DATAȌ6DATAXȌH7ODATAX7SDATAXH8PDATA08=DATA0x89gDATAx09`DATAx`:DDATAP:[DATAP`;DATAP;DATA(;DATA(p <eDATAp(<DATAp=7DATAHh=p~DATAH=DATAؑH>@DATAؑ H>eDATA hؑ>$DATAh >DATAh?DATA@@VDATA@@ODATAГ@ADATAГPA)DATA`ГADATA`A!DATA`HB)DATA8BDATA8BDATAȕ88C"DATAȕC DATAXȕCXDATAXHDsDATAXDDATA00EIDATA0xEuDATAx0PFDATAxFDATAPXG DATAPGDATAP@H/DATA(H|DATA(pPI1DATAp(IyDATApXJ DATAHJDATAH`KaDATAؚHKaDATAؚ LfDATA hؚM$DATAh pMDATAh(NDATA@pNDATA@NDATAМ@ODATAМ0P$DATA`МP1DATA`PDATA`QIDATA8RsDATA8R-DATAȞ8S2DATAȞxSDDATAXȞSDATAX8TqDATAXTDATA0 UeDATA0xU$DATAx0VDATAx`V^DATAPVDATAP@W[DATAPW[DATA(PX^DATA(pX^DATAp(pYDDATApYoDATAHZaDATAH[dDATAأH[DATAأ [DATA hأ \DATAh h\DATAh\DATA@\!DATA@@]DATAХ@].DATAХ]DATA`Х(^DATA`p^!DATA`^DATA8_.DATA8h_DATAȧ8_aDATAȧ@`DATAXȧ`3DATAX`DATAX0aoDATA0aDATA0xb8DATAx0bDATAxbWDATAPPcDATAPc;DATAPdDATA(Hd2DATA(pdDATAp(d1DATApPeDATAHe0DATAHeDATAجH@fSDATAج fDATA hجfDATAh 8g!DATAhgDATA@g)DATA@h DATAЮ@PhDATAЮhDATA`ЮhoDATA``i&DATA`i DATA8iDATA8@jDATAȰ8jDATAȰj2DATAXȰ kDATAXhk DATAXkDATA0kDATA0x(lDATAx0plDATAxlDATAPm,DATAPhm DATAPm*DATA(mDATA(p0n,DATAp(nDATApn.DATAH@oDATAHoDATAصHoDATAص p$DATA hصhpDATAh pDATAhpDATA@8q1DATA@qDATAз@qDATAз(r'DATA`зr DATA`rDATA`s,DATA8psDATA8sDATAȹ8sDATAȹ8tDATAXȹxtDATAXtDATAXu,DATA0puDATA0xuDATAx0uDATAx8vDATAPxvDATAPvDATAPw-DATA(pwDATA(pwDATAp(wDATAp8xDATAHxxDATAHxDATAؾHy-DATAؾ pyDATA hؾyDATAh yDATAh8zDATA@xzDATA@zDATA@{DATAP{DATA`{DATA`{DATA`(|DATA8p|DATA8|DATA8}DATA@}DATAX}DATAX}DATAX~DATA0`~DATA0x~DATAx0~DATAx0DATAPxDATAPDATAPDATA(PDATA(pDATAp(DATAp DATAHhDATAHDATAHDATA @DATA hDATAh ЂDATAhDATA@XDATA@DATA@DATA0DATA`pDATA`'DATA`]DATA8DATA8X1DATA8DATADATAXȇ DATAX)DATAXXDATA0 DATA0xDATAx0('DATAxDATAPЉDATAP,DATAPp<DATA('DATA(p8:DATAp(DATApDATAH(DATAHpDATAHDATA DATA h0(DATAh DATAh؍DATA@DATA@XDATA@DATAMDATA`p"DATA`DATA`'DATA8h(DATA89DATA8(DATAx&DATAXБDATAX 'DATAXx:DATA0DATA0x0+DATAx0DATAxȓDATAP&DATAPh$DATAPDATA(DATA(pPDATAp(,DATApDATAH@-DATAH4DATAHDATA PDATA hDATAh DATAh83DATA@DATA@X(DATA@:DATA'DATA`pDATA`DATA`!DATA8PDATA8DATA8؛DATA(DATAXh5DATAXМ9DATAX8(DATA0DATA0x؝DATAx0DATAx`DATAPDATAPDATAP8DATA(DATA(pIDATAp(8HDATAp&DATAH(DATAH`'DATAH)DATA 'DATA hh"DATAh .DATAhEDATA@DATA@أBDATA@H>DATA.DATA`RDATA`0DATA`NDATA8xDDATA8DATA88>DATA_DATAX8`DATAXȨDATAXDATA0ةDATA0xDATAx0DATAxDATAPp"DATAPJDATAP8DATA(DATA(pȯ(DATAp( DATAp`DATAHqDATAH@+DATAH-DATA &DATA hP(DATAh 0DATAh-DATA@h0DATA@ȳ,DATA@(0DATA*DATA`9DATA`H_DATA`ص&DATA80 DATA8DATA8ȶ%DATA &DATAXxDATAXDATAX&DATA0`DATA0xDATAx0DATAx0DATAPxDATAPȹDATAPDATA(PDATA(pDATAp(DATAp(DATAHxDATAHDATAHDATA HDATA h DATAh ؼDATAh DATA@pDATA@DATA@DATA@DATA`DATA`оDATA`DATA8PDATA8DATA8DATA(DATAXpDATAXDATAXDATA0HDATA0xDATAx0DATAxDATAP`DATAPDATAPDATA((DATA(px*DATAp(&DATAp(DATAHpDATAH+DATAH!DATA `&DATA h"DATAh &DATAh`'DATA@DATA@DATA@HDATA*DATA`1DATA`PDATA`DATA8&DATA88DATA8DATADATAXDATAX`*DATAX1DATA07DATA0xDATAx0DATAxDATAPhDATAPDATAP?DATA(PDATA(p,DATAp(DATAp  DATAHXDATAH#DATAHDATA H%DATA hDATAh DATAh(DATA@x&DATA@DATA@DATA h&DATA `  DATA`   DATA  ` ($DATA 8  DATA8   ~DATA  8 xDATA   (QDATA X   DATAX   (DATA  X @,DATA 0  DATA0 x  DATAx  0 (DATA  x h DATA P  "DATAP   DATA  P 8iDATA ( wDATA(p xoDATAp(gDATAp"DATAH*DATAHXDATAH DATA DATA h xDATAh tDATAhpoDATA@vDATA@oDATA@XrDATArDATA`zDATA`@2DATA`DATA8DATA8 DATA8h#DATADATAXDATAXPDATAXDATA0 DATA0xDATAx0PDATAxDATAPDATAPDATAP8DATA( DATA(p DATAp( DATAp(DATAHx+DATAH DATAHDATA PDATA hDATAh (DATAh@DATA@*DATA@DATA@8(DATA DATA` DATA`DATA`P"DATA8$DATA8$DATA8P%DATA&DATAX"DATAXP%DATAX%DATA0#DATA0xP"DATAx0DATAx#DATAP@#DATAP!DATAP$DATA( 8DATA( p  DATAp  ( (DATA !p 0#DATA!H! DATAH!!!!DATA!!H!'DATA! "!pDATA "h"!"DATAh"" "DATA""h"X$DATA"@#""DATA@##"&DATA##@#X(DATA#$#-DATA$`$#!DATA`$$$`DATA$$`$$DATA$8%$ DATA8%%$X DATA%%8%!DATA%&%!DATA&X&%HDATAX&&&!DATA&&X&DATA&0'&8'DATA0'x'&'DATAx''0'DATA'(x'8#DATA(P('"DATAP((("DATA((P(( DATA(()(x#DATA()p)(DATAp))()DATA)*p)XDATA*H*)!DATAH***DATA**H*HDATA* +*DATA +h+* DATAh++ +8DATA++h+DATA+@,+DATA@,,+( DATA,,@,x DATA,-, DATA-`-,DATA`---hDATA--`-!DATA-8.-$DATA8..-`DATA..8.#DATA./.'DATA/X/.XDATAX///DATA//X/DATA/00/H!DATA00x0/DATAx0000!DATA01x08#DATA1P10DATAP111DATA11P1("DATA1(21x!DATA(2p21 DATAp22(2DATA23p2hDATA3H32DATAH333DATA33H3X#DATA3 43!DATA 4h43#DATAh44 4HDATA44h4DATA4@54DATA@5548!DATA55@5$DATA565#DATA6`650&DATA`666"DATA66`6$DATA68760%DATA8776$DATA7787#DATA7870 &DATA8X87 "DATAX888 $DATA88X80 $DATA8098 "DATA09x98 'DATAx99090 #DATA9:x9 'DATA:P:9 $DATAP:::0 #DATA::P: (DATA:(;: !DATA(;p;:( DATAp;;(;X DATA;<p; DATA<H<; vDATAH<<<xDATA<<H<DATA< =<DATA =h=<PDATAh== =DATA==h=DATA=@>=DATA@>>=@DATA>>@>pDATA>?>DATA?`?>DATA`???0DATA??`?hDATA?8@?DATA8@@?DATA@@8@DATA@A@hDATAAXA@DATAXAAADATAAAXADATAA0BAPDATA0BxBADATAxBB0BDATABCxB DATACPCBh DATAPCCCDATACCPC DATAC(DCDATA(DpDC@DATApDD(DDATADEpD9DATAEHED06DATAHEEEDATAEEHEDATAE FE0 DATA FhFEhDATAhFF F0DATAFFhFDATAF@GF8DATA@GGFxDATAGG@GDATAGHGDATAH`HG8DATA`HHHDATAHH`HDATAH8IHDATA8IIH(DATAII8Ih_DATAIJIdDATAJXJIDATAXJJJDATAJJXJ DATAJ0KJX.DATA0KxKJ DATAxKK0K2DATAKLxKh.DATALPLK8DATAPLLL0.DATALLPL,DATAL(MLDATA(MpML@DATApMM(MDATAMNpM"DATANHNM0  DATAHNNN DATANNHN DATAN ON DATA OhONH!DATAhOO O!"DATAOOhO!DATAO@PO0"DATA@PPO"DATAPP@P"DATAPQP#DATAQ`QP`#DATA`QQQ#DATAQQ`Q#DATAQ8RQ $DATA8RRQP$*DATARR8R$XDATARSR0%DATASXSR%(DATAXSSS%#DATASSXS(&#DATAS0TSx&DATA0TxTS&+DATAxTT0T 'DATATUxTX'+DATAUPUT'DATAPUUU( DATAUUPUP(DATAU(VU(oDATA(VpVU@)#DATApVV(V)"DATAVWpV):DATAWHWVH*nDATAHWWW*?DATAWWHWX+GDATAW XW+ADATA XhXW@,DATAhXX Xx,9DATAXXhX, DATAX@YX-DATA@YYXP-DATAYY@Y-DATAYZY-PDATAZ`ZY`.;DATA`ZZZ.0DATAZZ`Z(/?DATAZ8[Z/FDATA8[[Z0TDATA[[8[0MDATA[\[1KDATA\X\[1IDATAX\\\2DATA\\X\P2 DATA\0]\2-DATA0]x]\3FDATAx]]0]x3/DATA]^x]3CDATA^P^]H4KDATAP^^^4,DATA^^P^ 5*DATA^(_^x5MDATA(_p_^5,DATAp__(_X6DATA_`p_6NDATA`H`_ 7DATAH```h7?DATA``H`7DATA` a`8DATA aha`88%DATAhaa a8DATAaaha8DATAa@ba9DATA@bba`9DATAbb@b9#DATAbcb9DATAc`cb(:DATA`ccch:)DATAcc`c:DATAc8dc;9DATA8ddcx;DATAdd8d;DATAded<DATAeXedP<DATAXeee<DATAeeXe<DATAe0fe(=DATA0fxfep=DATAxff0f=DATAfgxf>DATAgPgfH>DATAPggg>DATAggPg>DATAg(hg ?DATA(hphgh?DATAphh(h?DATAhiph?DATAiHih(@DATAHiiip@DATAiiHi@ DATAi jiA'DATA jhjihAFDATAhjj jADATAjjhjBDATAj@kjBDATA@kkjCDATAkk@kXCDATAklkC DATAl`lkC%DATA`lll8DDATAll`lD#DATAl8mlDDATA8mmlEDATAmm8mPEDATAmnmE DATAnXnmEDATAXnnn0F DATAnnXnF%DATAn0onFDATA0oxon GDATAxoo0oPG$DATAopxoG#DATApPpoG%DATAPpppPH!DATAppPpH%DATAp(qpHDATA(qpqp@I#DATApqq(qIDATAqrpqI DATArHrq JDATAHrrrhJDATArrHrJ DATAr srKDATA shsrPKDATAhss sK*DATAsshsK DATAs@ts(LDATA@ttspLFDATAtt@tL%DATAtut@M3DATAu`utMDATA`uuuhN DATAuu`uNNDATAu8vu O%DATA8vvuxO&DATAvv8vO3DATAvwv0PxDATAwXwvPDATAXwww QDATAwwXw`QDATAw0xwQDATA0xxxwQDATAxxx0x@RDATAxyxxRDATAyPyxRDATAPyyySLDATAyyPyS*DATAy(zyS2DATA(zpzyHTBDATApzz(zTDATAz{pzU0DATA{H{z`U DATAH{{{U0DATA{{H{U5DATA{ |{`V'DATA |h|{V9DATAh|| | WZDATA||h|WDATA|@}|W(DATA@}}|HX DATA}}@}X(DATA}~}X%DATA~`~}0YDATA`~~~pY7DATA~~`~Y#DATA~8~(Z|DATA8~Z!DATA8([DATAX['DATAX[DATAX[#DATAXH\0DATA0\0DATA0x]0DATAx0h]0DATAx]3DATAP(^3DATAP^3DATAP^,DATA(H_DATA(p_DATAp(_DATAp`DATAHH`DATAH`DATA؄H`DATA؄  a.DATA h؄a'DATAh a%DATAh0bKDATA@b+DATA@cDATAІ@@cDATAІxcDATA`Іc-DATA`dDATA`hdEDATA8dDATA8e;DATAȈ8eDATAȈeDATAXȈf/DATAXpfDATAXfDATA0f#DATA0x8g6DATAx0gDATAxgDATAP0hDATAPxhDATAPhDATA(iGDATA(piDATAp(iDATApjDATAH@jDATAHxj3DATA؍Hj+DATA؍ 0kDATA h؍hkDATAh k<DATAhlDATA@8mDATA@HnlDATAЏ@nDATAЏpDATA`Џ qqDATA`qDATA`rDATA8sDATA80tDATAȑ8PuDATAȑ`vDATAXȑvDATAXvvDATAXwDATA0xDATA0xxDATAx0 y@DATAxzDATAPzBDATAPH|DATAP|#DATA(|vDATA(p}DATAp(x~JDATAp~DATAHDATAHDATAؖHh,DATAؖ ȁDATA hؖDATAh 6DATAh`DATA@DDATA@ DATAИ@@DATAИDATA`ИІDATA`DATA`0#DATA8DATA8DATAȚ8DATAȚHDATAXȚ)DATAX"DATAX88DATA0DATA0xDATAx0@DATAxDATAPDATAP0DATAPDATA(ЌDATA(p DATAp(PDATApDATAHЍDATAH DATA؟HXDATA؟ DATA h؟ DATAh DATAh`DATA@DATA@DATAС@8"DATAСDATA`СȐDATA`DATA`HDATA8DATA8ȑDATAȣ8DATAȣHDATAXȣDATAXȒDATAXDATA0XDATA0xDATAx0DATAx(DATAPhDATAPDATAPؔDATA( DATA(phDATAp(DATApDATAH@DATAHDATAبHЖDATAب DATA hب`DATAh DATAhDATA@8DATA@DATAЪ@ȘDATAЪDATA`ЪXDATA`DATA`DATA80DATA8xDATAȬ8DATAȬDATAXȬPDATAXDATAXDATA0(&DATA0x*DATAx0؜DATAxDATAPXDATAPDATAPН.DATA(0DATA(pxDATAp(ȞDATApDATAHH DATAH(DATAرH-DATAر @DATA hر+DATAh DATAh0DATA@x DATA@ȡSDATAг@HeDATAг4DATA`гH!DATA`DATA`DATA8(DATA8h\DATAȵ8TDATAȵ%DATAXȵإDATAX"DATAX`'DATA0#DATA0x'DATAx0` DATAxDATAP DATAP `DATAPDATA(DATA(p DATAp(@ DATApxODATAHDATAH@,DATAغH+DATAغ DATA hغHDATAh DATAh DATA@01DATA@-DATAм@FDATAмh>DATA`мخDATA` EDATA`DATA8DDATA8XDATAȾ8GDATAȾDATAXȾ`BDATAXбDATAXEDATA0DATA0xزEDATAx0PDATAxDATAPг!DATAP -DATAPDATA(:DATA(p DATAp(`DATApDATAH?DATAHP DATAH DATA  DATA h\DATAh eDATAh DATA@pMDATA@DATA@@'DATA7DATA`/DATA``DATA`09DATA8/DATA87DATA8`8DATAȼ<DATAX8>DATAXBDATAX<DATA0DATA0xоDATAx0ؿDATAx DATAPDATAP8 DATAPxDATA(`9DATA(p/DATAp((8DATAp>DATAHDATAHH]DATAHDATA  NDATA hDATAh  DATAhDATA@9DATA@X/DATA@pDATAX+DATA`,DATA`9DATA`x/DATA8pDATA8xDATA8DATADATAXP DATAXDATAX"DATA00DATA0xxDATAx0DATAx DATAPHDATAPDATAPSDATA(XDATA(pRDATAp((DATApxUDATAHDATAHPPDATAHDATA  SDATA hDATAh SDATAhpDATA@DATA@DATA@HDATADATA` -DATA`-DATA`DATA8  DATA8XDATA8:DATA#DATAXHDATAX DATAX8,DATA0DATA0x-DATAx0@DATAxxDATAP;DATAP(QDATAPDATA(DATA(p8+DATAp(JDATApDATAHP<DATAH-DATAH DATA X:DATA hDATAh DATAhDATA@XDATA@( DATA@`wDATADATA`85DATA`QDATA` DATA8` DATA8 DATA8DATA %DATAXxDATAXDATAXBDATA0h DATA0xDATAx0%DATAx0DATAPxDATAP DATAP DATA(@DATA(px.DATAp( DATApDATAHh DATAHDATAH DATA  4DATA hDATAh %DATAh(!DATA@xDATA@ DATA@DATAXDATA`'DATA`/DATA`X?DATA8DATA8/DATA8pDATA&DATAXDATAXX DATAXDATA0 DATA0x=DATAx0SDATAxaDATAP DATAP DATAP DATA(HDATA(pxDATAp(*DATAp $DATAHxDATAH9DATAH0DATA "DATA h$DATAh (DATAh`DATA@(DATA@DATA@P?DATA DATA`DATA`XDATA`!DATA8DATA8@ DATA8DATADATAXDATAX`0DATAXDATA0 DATA0x8DATAx0xDATAx0DATAP(DATAPp DATAPDATA(/DATA(pHQDATAp(1DATAp(NDATAHDATAHDATAH@GDATA DATA hGDATAh DATAh0DATA@(DATA@pDATA@DATADATA`0DATA`*DATA`DATA8 FDATA86DATA8DATAXDATAXDATAXDATAX+DATA0pDATA0xGDATAx007DATAxDATAPYDATAP  DATAPXDATA(DATA(pDATAp(0HDATAp8DATAHDATAH ZDATAH  DATA  &DATA h(  DATAh x DATAh GDATA@8 7DATA@ ,DATA@ DATA ZDATA` ;DATA`  DATA`H0DATA8DATA8LDATA8p7DATADATAX_DATAXp$DATAX&DATA0  DATA0xpDATAx0DATA x%DATA P XDATAP   )DATA  P DATA (  0%DATA( p  DATAp  ( #DATA  p   DATA H  XDATAH   DATA  H DATA   .DATA h  x$DATAh   DATA  h 5DATA @  hDATA@   DATA  @ -DATA  XDATA`  DATA` DATA` DATA8h DATA8DATA8,DATAhDATAXDATAXDATAXXDATA0DATA0xDATAx08DATAxDATAP DATAPDATAPHDATA(xDATA(pDATAp(#DATApX DATAH DATAH DATAH DATA P DATA h DATAh DATAh DATA@X DATA@ 6DATA@! DATAX!DATA`!+DATA`!DATA`@"DATA8x""DATA8"DATA8#.DATAh#DATAX#DATAX#'DATAXH$(DATA0$"DATA0x$DATAx00%DATAxp%DATAP%DATAP%DATAP@&$DATA(&DATA(p&(DATAp(8'DATApp'DATAH'#DATAH(DATAHH(DATA (DATA h(@DATAh H)DATAh)DATA@)DATA@*DATA@`*ADATA *DATA ` +!DATA`   `+$DATA  ` +DATA 8! ,DATA8!! H,DATA!!8!,DATA!"!,!DATA"X"!(-/DATAX"""-DATA""X"-ADATA"0#"@.DATA0#x#".DATAx##0#.DATA#$x#/DATA$P$#X/DATAP$$$/DATA$$P$/DATA$(%$80"DATA(%p%$0CDATAp%%(%0DATA%&p%81DATA&H&%p1)DATAH&&&1DATA&&H&2 DATA& '&P2$DATA 'h'&2DATAh'' '2DATA''h'03DATA'@('3DATA@(('3DATA((@(4DATA()(`4DATA)`)(4DATA`)))4DATA))`)(5DATA)8*)h5DATA8**)5DATA**8*5.DATA*+*86DATA+X+*6DATAX+++6 DATA++X+6 DATA+0,+07 DATA0,x,+p7 DATAx,,0,7DATA,-x,7DATA-P-,@8DATAP---8!DATA--P-8DATA-(.-9,DATA(.p.-p9:DATAp..(.93DATA./p.8:SDATA/H/.: DATAH///:DATA//H/(;DATA/ 0/x; DATA 0h0/;DATAh00 0; DATA00h00<DATA0@10p< DATA@110<DATA11@1< DATA121(=4DATA2`21= DATA`222='DATA22`2 >DATA2832h>DATA8332>$DATA3383?(DATA343X?#DATA4X43?DATAX444?;DATA44X4@@DATA4054x@DATA05x54@DATAx5505@DATA56x50ADATA6P65xADATAP666ADATA66P6B&DATA6(76XB.DATA(7p76BDATAp77(7B DATA78p7HC DATA8H87CDATAH888C&DATA88H8 D.DATA8 98DDATA 9h98DDATAh99 9D7DATA99h9`E!DATA9@:9EDATA@::9EDATA::@:@FDATA:;:xF2DATA;`;:FDATA`;;;G DATA;;`;PG DATA;8<;G DATA8<<;GDATA<<8<HDATA<=<HHDATA=X=<HDATAX===HDATA==X= I2DATA=0>=IDATA0>x>=I DATAx>>0>J0DATA>?x>`JDATA?P?>J"DATAP???JDATA??P?8KDATA?(@?K2DATA(@p@?KDATAp@@(@(LDATA@Ap@hLDATAAHA@LDATAHAAALDATAAAHA@M3DATAA BAMDATA BhBAM DATAhBB B(N1DATABBhBNDATAB@CBNDATA@CCBO DATACC@C@O*DATACDCODATAD`DCODATA`DDD(PDATADD`DhPDATAD8EDP DATA8EEDPDATAEE8E0QDATAEFEQDATAFXFEQDATAXFFFR DATAFFXF@RDATAF0GFRDATA0GxGFR%DATAxGG0G SDATAGHxG`SDATAHPHGS DATAPHHHS!DATAHHPH0TDATAH(IHxT0DATA(IpIHTDATApII(IUDATAIJpI`UDATAJHJIUDATAHJJJUDATAJJHJVDATAJ KJ`V+DATA KhKJVDATAhKK KWDATAKKhKHW2DATAK@LKWDATA@LLKWDATALL@L0XDATALMLxXDATAM`MLXDATA`MMMY3DATAMM`MhYDATAM8NMY DATA8NNMYDATANN8NZDATANONhZDATAOXONZDATAXOOOZ:DATAOOXO`[4DATAO0PO[DATA0PxPO\DATAxPP0PP\DATAPQxP\DATAQPQP\DATAPQQQ0]DATAQQPQx]%DATAQ(RQ]ADATA(RpRQ@^DATApRR(R^DDATARSpR_DATASHSRH_DATAHSSS_DATASSHS_DATAS TS(`DATA ThTSp`DATAhTT T`DATATThTa"DATAT@UTXaGDATA@UUTaDATAUU@Ub!DATAUVUhb$DATAV`VUbDATA`VVVcDATAVV`VXcDATAV8WVcDATA8WWVc!DATAWW8W8d/DATAWXWdDATAXXXWdEDATAXXXXXeDATAXXXXeDATAX0YXeDATA0YxYXfDATAxYY0Y`fDATAYZxYfDATAZPZYfDDATAPZZZpg>DATAZZPZgDATAZ([ZhDATA([p[Z`h,DATAp[[([h7DATA[\p[(iDDATA\H\[iSDATAH\\\ j%DATA\\H\xj>DATA\ ]\j^DATA ]h]\xkVDATAh]] ]l'DATA]]h]Xl(DATA]@^]l+DATA@^^]m-DATA^^@^hm-DATA^_^mHDATA_`_^@n=DATA`___ngDATA__`_Ho3DATA_8`_o%DATA8``_p#DATA``8`Pp%DATA`a`p0DATAaXa`qDATAXaaaXqODATAaaXaqWDATAa0ba`rDATA0bxbarEDATAxbb0bsODATAbcxbs2DATAcPcbsDATAPccc8t&DATAccPctWDATAc(dcu'DATA(dpdcpu,DATApdd(du4DATAdepd8v$DATAeHedvDATAHeeevDATAeeHewDATAe fePwDATA fhfew2DATAhff fwDATAffhf@x1DATAf@gfxDATA@ggfx4DATAgg@gPyDATAghgy/DATAh`hgyDATA`hhh@z2DATAhh`hzDATAh8ihz2DATA8iihH{DATAii8i{DATAiji{4DATAjXji@|DATAXjjj|3DATAjjXj|DATAj0kj0}6DATA0kxkj}DATAxkk0k}1DATAklxk@~DATAlPlk~4DATAPlll~DATAllPl84DATAl(mlDATA(mpmlDATApmm(mDATAmnpmXDATAnHnmDATAHnnnЀDATAnnHnDATAn onh(DATA ohon DATAhoo o%DATAoohoXDATAo@po4DATA@ppoDATApp@p@ DATApqpDATAq`qpȃDATA`qqqDATAqq`qP"DATAq8rqDATA8rrq!DATArr8r@5DATArsr!DATAsXsr+DATAXsssP'DATAssXs DATAs0tsDATA0txts0'DATAxtt0t"DATAtuxt؇#DATAuPut(8DATAPuuu#DATAuuPu"DATAu(vu0DATA(vpvuDATApvv(v#DATAvwpvDATAwHwvPDATAHwwwDATAwwHw؊DATAw xw DATA xhxwhDATAhxx xDATAxxhxDATAx@yx8DATA@yyxiDATAyy@yDATAyzy`bDATAz`zyDATA`zzz8;DATAzz`z DATAz8{zDATA8{{z@>DATA{{8{.DATA{|{BDATA|X|{DATAX|||Ȑ?DATA||X|8;DATA|0}|DATA0}x}|ؑDATAx}}0} hDATA}~x}DATA~P~}gDATAP~~~ DATA~~P~ؓDATA~(~ DATA(p~hDATAp(DATApDATAH@DATAH'DATA؀HBDATA؀ PcDATA h؀3DATAh @%DATAhLDATA@DATA@hDATAЂ@DATAЂDATA`ЂHDATA`x0DATA`ؙTDATA8`4DATA8Ț"DATAȄ87DATAȄDATAXȄ0DATAX CDATAX0DATA0DATA0xDATAx0BDATAxX`DATAPDATAP0DATAPx+DATA(П,DATA(p0DATAp(x7DATApDATAH 'DATAHxFDATA؉H3DATA؉P3DATA #!BPY DATAXo SDATA""" x4DATA Name: 'RenderMan (.rib)...' DATABlender: 233DATAPGroup: 'Export'DATA8Tooltip: 'Save/Render a Scene to RenderMan Renderers' DATA"""DATA(DATA@X# RenderMan export script by Christoffer Green and Goran KocovDATA(Ȍ# Pixie Extension by Joseph MontanezDATA # version 0.1 Beta9.0bDATA<h# the script needs Blender 2.33 and Python 2.3 installedDATA4Ѝ# to run the script press alt+p in the text windowDATA0DATA`import BlenderDATAimport stringDATA import osDATA import sysDATAPfrom os import P_NOWAITDATAfrom Blender.Draw import *DATAfrom Blender.BGL import *DATA(from Blender import SceneDATA$pfrom Blender.Scene import RenderDATAfrom math import piDATAfrom math import atanDATAHfrom math import powDATA֑DATAtry:DATA import totiffDATA8except:DATAHp print "Did not find the totiff module, will use ImageMagic instead\n"DATADATADATA4H# MAKE SURE YOU CHANGE THIS TO YOUR PYTHON FOLDERDATAif (os.name != "posix"):DATA  sys.path = ['c:\\python23']DATA@DATA$pscene = Blender.Scene.GetCurrent()?DATA$camobj = scene.getCurrentCamera()ODATA4camera = Blender.Camera.Get(camobj.getData().name)DATApDATA# The bevent constantsDATA,exportevent = 1 # export button pressedDATA(@exitevent = 2 # exit button pressedDATA,updateguievent = 3 # update the pressedjerDATA0filetoggleevent = 999 # file button pressedDATAPDATA# GUI variablesDATAfs = Create('')DATAmenuval = Create(4)DATAHdof = Create(0)DATAsamples = Create(2)DATAИstop = Create(2.0)DATAlenght = Create(1.0)DATA`distance = Create(5.0)DDATAsrate = Create(3)DATAfile = Create(0)DATA8buffer = Create(1)DATA$filename = Create("default.rib")DATA Кimage = Create("default")@2DDATA dirw = Create("default")DATA$ppixierenderer = Create("rndr")JDATA$prmanrenderer = Create("prman")DATA$dlrenderer = Create("renderdl")1DATA$`bmrtrenderer = Create("rendrib")DATA(entropyrenderer = Create("entropy")DATA$aqsisrenderer = Create("aqsis")DATA$Xpixietexmaker = Create("texmake")DATA$prmantexmaker = Create("txmake")DATA$dltexmaker = Create("tdlmake")DATA$Hbmrttexmaker = Create("mkmip")DATA$entropytexmaker = Create("mkmip")DATA$aqsistexmaker = Create("teqser")DATA8radiosity = Create(0)DATAradnum = Create(50)DATAȟgi = Create(0)DATAgisteps = Create(100)DATAP#PixieDATAindirect = Create(0)DATAРocclusion = Create(0)DATAambiSamples = Create(6)DATA `#End PixieDATAgeom = Create(1)DATAmeshexport = Create(1)YDATA(pointwidth = Create(1.0)DATApanim = Create(0)DATA maxpixeldist = Create(20)DATAmaxerror = Create(0.25)DATAPrshadow = Create(1)DATAsmooth = Create(0.00)DATAareasamples = Create(20)DATA(buff256 = Create(0)@DATApbuff512 = Create(1)DATAbuff1024 = Create(0)DATAbuff2048 = Create(0)DATAHmotionblur = Create(0)DATA motionblurframe = Create(1)DATArendert = Create(1)m?DATA(caustics = Create(0)DATApphoton = Create(4000)DATAuv = Create(0)DATArecurs = Create(4)DATA@debug = Create(0)DATAhiddenlayer = Create(0)DATA Чglobalsettings = Create(1)DATA scenesettings = Create(0)DATAhshadereditor = Create(0)DATAsurfaceshader = Create(3)DATA$surfaceshadername = Create("")DATAHabout = Create(0)DATAshadermenu = Create(1)DATA ةambientshader = Create(1.00)DATA (diffuseshader = Create(0.50)DATA xspecularshader = Create(0.50)DATA$Ȫroughnessshader = Create(0.10)DATA coefshader = Create(1.50)DATA hreflblurshader = Create(0.00)DATA refrblurshader = Create(0.00)DATAobjecteditor = Create(0)DATAPconvertbm = Create(1)DiADATA objectshadermenu = Create(0)DATAarealightMESH = Create(0)DATA 0recievecaustics = Create(0)DATA transmittcaustics = Create(0)DATA(Эtransmittcausticsslider = Create(1.40)DATA(reflsamples = Create(0)DATAprefrsamples = Create(0)DATAkr = Create(1.0)DATArendershadow = Create(0)DATAHautogs = Create(0)DATA reflectcaustics = Create(0)DATAprogress = Create(1)DATA(gain = Create(1.0)DATApgamma = Create(1.0)DATAlightx = Create(1.0)DATAbias = Create(0.25)DATA Hraytraceshadow = Create(1)DATAprojection = Create(0)DATA textureblurm = Create(0.0)DATA0norm = Create(0.01)DATAxconverttex = Create(1)DATAgisphere = Create(1)DATArvisibility = Create(0)uADATAPfinalgather = Create(0)CDATArgba = Create(1)DATAسcastshadow = Create(1)DATA reconvert = Create(0)DATAhtexturem = Create(' ')DATA8texturem.val = '' DATAxtextshader = Create('Surface "plastic" ')DATA(textshader.val = 'Surface "plastic"'DATAtextshaderd = Create('Displacement "bumpy" ')DATA,`textshaderd.val = 'Displacement "bumpy"'DATAhdritex = Create(' ')DATAhdritex.val = ''DATAȹhdri = Create(0)DATApreworldrafile = Create(' ')DATAغpreworldrafile.val = ''DATA preworldra = Create(0)DATAhpostworldrafile = Create(' ')DATA@postworldrafile.val = '' DATApostworldra = Create(0)DATAмobjectrafile = Create(' ')DATAobjectrafile.val = ''DATAobjectra = Create(0)DATA0textnor = Create(0)DATA xilluminationmenu = Create(0)DATAȾareagi = Create(0)DATAindirectgi = Create(1)-DATAXeblur = Create(0.00)DATAesamples = Create(1)DATAgianim = Create(1)-DATA0amesh = Create(0)DATAxpatchsize = Create(4.0)DATAelemsize = Create(2.0)-DATAminsize = Create(1.0)DATAPDATA# Other variables DATA@renderer = "PRMan |BMRT |Entropy |3Delight |AQSIS |Pixie "@DATAd0shader = "Plastic (All)|Glass (BMRT, Entropy)|Shiny (BMRT, Entropy) |Custom (All) |BMS (All) "DATA`pixelsamples = "1 Preview|2 Good|3 Recomended|4|5 To High|6|7 For DoF|8|9|10 Best and Crazy"DATADPambiSamplesindex = "7 Preview|8|9|10|11 Good|12|13|14 Perfection"DATADshadingrate = "0.25 Best|0.5|1 Good|2|4 Preview|6|8|12|16 Bad"DATA40sratelist = [0.25, 0.5, 1, 2, 4, 6, 8, 12, 16]DATA@meshex = "PointsPolygons |Polygons |SubdivSurface |Points "DATA|illumination = "Plastic |Matte |RoughMetal |ThinPlastic |ShinyPlastic |ShinyMetal |Clay |BrushedMetal |Ceramic |Glass "DATA8projectionm = "Plane |Cylinder |Sphere |UV-Map |Auto"DATAsshader = "ADD NEW"DATAXsshader2 = ""DATAshadernametemp = ""DATAselectedname = ""DATA(selectedtype = "Type: "DATA ptmp = ""DATAimagelist = ""DATA(imagelistmenu = "No images loaded"DATA$@rgbatext = "rgb |rgba |rgbz |z "DATA0castshadowtext = "Os |opaque |shader |none"DATAtxdone = []DATA0DATA`# Global variablesDATAincrement = 0DATAxbar = 11DATA i = 0DATAXmeshobjects = 0DATAmaxblur = 10.0DATAmeshnum = 0DATADATA0H# Create the BlenderMan directories on startupDATAif (os.name != "posix"):DATA rootdir = '/BlenderMan/'DATA08 partitionname = Blender.sys.progname[0:2]DATAelse:DATA0 rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$0pdir = rootdir + dirw.val + '/'DATA4globalpropertiesdir = pdir + '/GlobalProperties/'DATA0surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<@displacementshadersdir = pdir + '/DisplacementShaders/'DATA0objectsettingsdir = pdir + '/ObjectSettings/'DATA0lightsettingsdir = pdir + '/LightSettings/'DATA4hmeshesdir = os.path.normpath(pdir + '/Meshes/')DATA$imagesdir = pdir + '/images/'DATA$shadowdir = pdir + '/shadows/'DATA(htexturesdir = pdir + '/textures/'DATA$shadersdir = pdir + '/shaders/'DATAtry: os.mkdir(rootdir)DATAXexcept OSError: passDATAtry: os.mkdir(pdir)DATAexcept OSError: passDATA$(try: os.mkdir(surfaceshadersdir)DATAxexcept OSError: passDATA$try: os.mkdir(globalpropertiesdir)DATAexcept OSError: passDATA(Xtry: os.mkdir(displacementshadersdir)DATAexcept OSError: passDATAtry: os.mkdir(meshesdir)DATA@except OSError: passDATA$try: os.mkdir(objectsettingsdir)DATAexcept OSError: passp`DATA try: os.mkdir(lightsettingsdir)DATApexcept OSError: passDATAtry: os.mkdir(shadowdir)DATAexcept OSError: passpDATAHtry: os.mkdir(texturesdir)DATAexcept OSError: passDATAtry: os.mkdir(imagesdir)DATA except OSError: passDATAhDATA def gui():DATAT global menuval, dof, samples, stop, lenght, distance, srate, file, buffer, dirwDATAXP global filename, image, radiosity, radnum, gi, gisteps, geom, meshexport, pointwidthDATA` global anim, maxpixeldist, maxerror, smooth, areasamples, buff256, buff512, buff1024, buff2048DATAth global motionblur, motionblurframe, rendert, caustics, photon, uv, recurs, debug, globalsettings, scenesettingsDATAd global shadereditor, sshader, surfaceshader, surfaceshadername, about, shadermenu, ambientshaderDATAd global diffuseshader, specularshader, roughnessshader, coefshader, reflblurshader, refrblurshaderDATA`( 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, gammaDATATh global lightx, textureblurm, texturem, norm, planarm, converttex, imagelistmenuDATA` global textnor, illuminationmenu, projection, hiddenlayer, gisphere, rvisibility, finalgatherDATAHx global hdritex, hdri, rgba, castshadow, reconvert, maxblur, sshader2DATA` global prmanrenderer, dlrenderer, bmrtrenderer, entropyrenderer, aqsisrenderer, pixierendererDATA` global prmantexmaker, dltexmaker, bmrttexmaker, entropytexmaker, aqsistexmaker, pixietexmakeraDATA\ global preworldra, preworldrafile, postworldra, postworldrafile, objectra, objectrafileDATA@ global ambiSamples, occlusion, indirect #Pixie Ambient stuff DATA3-JDATA48 if (autogs.val == 1): #automaticly select objectshDATA  Redraw(1)DATA getSelectedObject()-0DATA saveload(0,0,'object')DATA`8 .DATA # GUI settingsDATA8 glClearColor(0.4,0.48,0.57, 0.0) # blue background-x DATA 8 glClear(GL_COLOR_BUFFER_BIT)- DATA, glColor3f(0, 0, 0) # main black back 18DATA glRectf(2, 2, 630, 340)1-JDATA0( glColor3f(0.4, 0.48, 0.57) # main blue backgDATA glRectf(4, 4, 628, 300)~@DATA, glColor3f(0.27, 0.3, 0.35) # blue topjerDATA( glRectf(4, 302, 628, 338)ADATAp glColor3f(1,1,1)erDATADATA, # Buttons for the main BlenderMan panels-JDATA|8 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")DATA0 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")DATADATA # Global SettingsDATA  if (globalsettings.val == 1):DATAH 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)REEDATAP0 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")DATAx if (menuval.val != 5):WDATA recurs = Slider("RaySteps ", 0, 440, 248, 180, 20, recurs.val, 0, 15, 0, "Maximum number of steps for the raytracing recursion")KDATA|x 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")DATAdh srate = Menu(shadingrate, updateguievent, 370, 100, 90, 20, srate.val, "Shading quality")@DATAp 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)")DATAd0 dirw = String("Project: ", 500, 150, 125, 140, 19, dirw.val, 200, "Name of the project")DATA if menuval.val == 1:DATA 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")VDATAx elif menuval.val == 2:DATA| bmrtrenderer = String("Renderer: ", 0, 480, 125, 140, 19, bmrtrenderer.val, 200, "Name of the renderer executable")DATAh bmrttexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, bmrttexmaker.val, 200, "Name of the mipmap texture making executable")DATA  elif menuval.val == 3:DATAh entropyrenderer = String("Renderer: ", 0, 480, 125, 140, 19, entropyrenderer.val, 200, "Name of the renderer executable")DATA entropytexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, entropytexmaker.val, 200, "Name of the mipmap texture making executable")DATA elif menuval.val == 4:DATAx  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")EDATA elif menuval.val == 5:DATA aqsisrenderer = String("Renderer: ", 0, 480, 125, 140, 19, aqsisrenderer.val, 200, "Name of the renderer executable")DATAx aqsistexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, aqsistexmaker.val, 200, "Name of the mipmap texture making executable")DATA8 elif menuval.val == 6:npuDATA pixierenderer = String("Renderer: ", 0, 480, 125, 140, 19, pixierenderer.val, 200, "Name of the renderer executable")DATA0 pixietexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, pixietexmaker.val, 200, "Name of the mipmap texture making executable")DATAx 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")DATAlH 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")DATALx Button("Exit", exitevent, 385, 30, 75, 20, "Exit the script")DATAP Button("Export", exportevent, 310, 30, 74, 20, "Start the export")DATAXp Button("Load Sett", 30, 310, 51, 74, 20, "Load global and scene settings")DATAX Button("Save Sett", 31, 385, 51, 75, 20, "Save global and scene settings")DATA glRasterPos2i(310, 80)DATA Text("Samples")DATA glRasterPos2i(310, 105)DATAP Text("ShRate")DATA glRasterPos2i(310, 130)DATA Text("Renderer")DATA glRasterPos2i(310, 155)DATA` Text("Channels")DATA if (progress.val == 1):DATA # Progressbar textDATA0 glRasterPos2i(10, 25)DATA8x Text("Mesh: %s/%s"%(int(meshnum), int(meshobjects)))DATA## if anim.val:DATA ## glRasterPos2i(10, 40)DATA,h## display = Blender.Scene.GetCurrent()DATAd## Text("Frame: %s/%s"%(display.currentFrame(), display.endFrame() - display.startFrame() + 1))EDATAP # Progressbar backplateDATA glColor3f(0, 0, 0)DATA glRectf(9, 10, 620, 21)DATA (  glColor3f(0.78, 0.7, 0.8)DATAx  glRectf(10, 9, 621, 20)DATA  glColor3f(0.4, 0.4, 0.4)DATA  glRectf(10, 10, 620, 20)DATAP  # ProgressbarDATA  glColor3f(0, 0, 0)DATA$  glRectf(10, 10, xbar + 1, 20)DATA (  glColor3f(0.78, 0.7, 0.8)DATA x  glRectf(10, 11, xbar, 20)XDATA  glColor3f(0.52, 0.25, 0.45)DATA   glRectf(11, 11, xbar, 19)DATAh  DATA  # 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\H 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):# glRasterPos2i(200, 15)DATAH> Text(selectedtype)DATA(> 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")DATA? if (objectra.val == 1):DATAX@ objectrafile = String("File: ", 18, 190, 60, 430, 20, objectrafile.val, 100)DATAP@ convertbm = Toggle("Use Shader", 18, 10, 220, 180, 20, convertbm.val)DATAA if (convertbm.val == 1):DATA,PA namelist = string.split(sshader, "|")DATA A namelist.remove('ADD NEW')DATA$A namelist = map(str, namelist)DATA,HB sshader2 = string.join(namelist, "|")DATA B if (len(sshader2) == 0):DATAB glRasterPos2i(10, 205)DATA$8C Text("No shaders available.")DATA C else:DATA\C objectshadermenu = Menu(sshader2, 18, 10, 200, 180, 20, objectshadermenu.val)DATAtHD geom = Toggle("Export Geometry", 18, 230, 270, 180, 20, geom.val, "Output the mesh geometry to a RIB file")DATAD if (geom.val == 1):DATAL0E meshexport = Menu(meshex, 18, 230, 250, 180, 20, meshexport.val)DATAxE amesh = Toggle("Animated Mesh", 18, 230, 230, 120, 20, amesh.val, "Turn this on if the mesh deforms in time")DATA PF if (meshexport.val != 4):DATAF 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 XG else:DATAG pointwidth = Slider("Width ", 18, 230, 180, 180, 20, pointwidth.val, 0.0, 10.0, 0, "Radius of the Points primitive")DATA0@H if (menuval.val == 2) or (menuval.val == 3):DATAH rvisibility = Toggle("Hide Source", 18, 230, 200, 180, 20, rvisibility.val, "Hides the object from primary rays")DATA4PI if ((menuval.val == 2) or (menuval.val == 3)):DATA|I arealightMESH = Toggle("AreaLight", 18, 10, 270, 180, 20, arealightMESH.val, "Use the object as an area light")DATA$XJ if (arealightMESH.val == 1):DATAJ areasamples = Slider("AreaSamp ", 18, 10, 250, 180, 20, areasamples.val, 0, 400, 0, "Controls the graininess of the area light")DATAd`K recievecaustics = Toggle("Recieve Caustics", 18, 440, 270, 180, 20, recievecaustics.val)DATAdK reflectcaustics = Toggle("Reflect Caustics", 18, 440, 250, 180, 20, reflectcaustics.val)DATAhL transmittcaustics = Toggle("Transmitt Caustics", 18, 440, 230, 180, 20, transmittcaustics.val)DATA(M if (transmittcaustics.val == 1):DATApM transmittcausticsslider = Slider("IOR ", 18, 440, 210, 180, 20, transmittcausticsslider.val, 0.00, 2.20, 0, "Index of refraction")DATA(N if (menuval.val != 5):DATApN glRasterPos2i(10, 165)DATA N Text('Raytraced Shadows')DATAO 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(0P if (selectedtype == 'Type: Lamp'):DATA4P if ((menuval.val == 2) or (menuval.val == 3)):DATAP caustics = Toggle("Caustics", 18, 230, 270, 180, 20, caustics.val, "Turn on photon emission used for caustics calculations")DATALQ if ((caustics.val == 1) & ((menuval.val == 2) or (menuval.val == 3))):DATAtR photon = Slider("Photons ", 18, 230, 250, 180, 20, photon.val, 4000, 80000, 0, "Number of photons emitted")DATA0R lampobj = Blender.Object.Get(selectedname)DATA4S lamp = Blender.Lamp.Get(lampobj.getData().name)DATAHxS if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATAS if (menuval.val != 5):DATAt8T raytraceshadow = Toggle("Ray Shadow", 245, 100, 270, 90, 20, raytraceshadow.val, "Use raytraced shadows")DATAT if lamp.type == 2:DATAh U rendershadow = Toggle("Ren Shadow", 244, 10, 270, 90, 20, rendershadow.val, "Use shadowmaps")DATA(U prmanshadowbuttonsposition = 270DATA V if (rendershadow.val == 1):DATA``V bias = Slider("Bias ", 18, 10, 210, 180, 20, bias.val, 0.0, 1.0, 0, "Shadowmap bias")DATA V if (rendershadow.val == 1):DATA\@W buff256 = Toggle("256", 8, 10, 190, 42, 20, buff256.val, "Shadowmap resolution")DATA\W buff512 = Toggle("512", 9, 52, 190, 42, 20, buff512.val, "Shadowmap resolution")DATA`PX buff1024 = Toggle("1024", 10, 95, 190, 48, 20, buff1024.val, "Shadowmap resolution")DATA`X buff2048 = Toggle("2048", 11, 143, 190, 48, 20, buff2048.val, "Shadowmap resolution")DATAHpY if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATApY if ((((menuval.val == 1) or (menuval.val == 3)) and (raytraceshadow.val == 1)) or (rendershadow.val == 1)):DATAdZ eblur = Slider("Blur ", 18, 10, 250, 180, 20, eblur.val, 0.0, maxblur, 0, "Shadow blur")DATAh[ esamples = Slider("Samples ", 18, 10, 230, 180, 20, esamples.val, 0, 256, 0, "Blur quality")DATA[DATA[ # About dialogDATA \ if (about.val == 1):DATAh\ glColor3f(0,0,0)DATA\ glRasterPos2i(10, 279)DATA$\ Text("BlenderMan 0.1 Beta 9.0")DATA@] glRasterPos2i(10, 259)DATA0] Text("by Christoffer Green and Goran Kocov")DATA] glColor3f(1,1,1)DATA(^ glRasterPos2i(9, 280)DATA$p^ Text("BlenderMan 0.1 Beta 9.0")DATA^ glRasterPos2i(9, 260)DATA0_ Text("by Christoffer Green and Goran Kocov")DATAh_ glRasterPos2i(10, 230)DATAd_ Text("_______________________________________________________________________________________")DATA@` glRasterPos2i(10, 200)DATA4` Text("Thanks to sgefant for the name suggestion")DATA` glRasterPos2i(10, 180)DATAp0a Text("Thanks to Phillipe Crassous for helping me fix the spotlight rotation bug and other code improvements")DATAa glRasterPos2i(10, 160)DATA<b Text("Thanks to desaster and #python for syntax help")DATAb glRasterPos2i(10, 140)DATAXb Text("Thanks to K-Rich, Macke, Kib_Tph, sgefant and #Blender3d for pre-beta testing")DATAPc glRasterPos2i(10, 120)DATA<c Text("Thanks to Jan Walter for the basic exporting code")DATAd glRasterPos2i(10, 100)DATA4Hd Text("Thanks to svo for the pointspolygon code")DATAd glRasterPos2i(10, 80)DATA4d Text("Thanks to nishin for alpha/beta-testing")DATAPe glRasterPos2i(10, 60)DATA4e Text("Thanks to eeshlo for the totiff module")DATAe glRasterPos2i(10, 40)DATAT@f Text("Thanks to DetectiveThorn for the help with the light intensity conversion")DATAfDATAfdef event(evt, val):DATA$8g if (evt == ESCKEY and not val): DATA g Exit()DATA,g if (evt == ACCENTGRAVEKEY and not val): DATA h export()DATAPhDATAhdef bevent(evt):DATAph global sshader, increment, pdir, maxblur, imagelist, imagelistmenu, imagelisttif, shadernametemp, selectednameDATA(`i if (evt == 500): # Change projectDATA i newdirs()DATA i surfaceshadername.val = ""DATA@j sshader = "ADD NEW"DATAj try: DATA4j f = open(surfaceshadersdir + 'ShaderNames','r')DATA k saveShaderName(0)DATA hk except:DATAk saveShaderName(1)DATAk resetObject()DATA(l saveload(0, 0, 'object')DATApl saveload(0, 0, 'global')DATA l Register (gui, event, bevent)DATA0m if (evt == exportevent): # Export buttonDATA hm export()DATA,m if (evt == exitevent): # Exit buttonDATA m Exit()DATA00n if (evt == updateguievent): # Update GUIDATA n Register (gui, event, bevent)DATA0n if (evt == filetoggleevent): # File toggleDATA@o file.val = 1DATAo buffer.val = 0DATA o Register (gui, event, bevent)DATA(p if (evt == 5): # Buffer toggleDATAhp file.val = 0DATAp buffer.val = 1DATA p Register (gui, event, bevent)DATA48q if (evt == 6): # Global Illumination toggleDATAq radiosity.val = 0DATA q Register (gui, event, bevent)DATA((r if (evt == 7): # Radiosity toggleDATAr gi.val = 0DATA r Register (gui, event, bevent)DATA0s if (evt == 8): # Shadow buffer buttonsDATAps if (buff256.val == 1):DATAs buff512.val = 0DATAs buff1024.val = 0DATA8t buff2048.val = 0DATAxt saveload(1,0,'object')DATA t Register (gui, event, bevent)DATA0u if (evt == 9): # Shadow buffer buttonsDATApu if (buff512.val == 1):DATAu buff256.val = 0DATAu buff1024.val = 0DATA8v buff2048.val = 0DATAxv saveload(1,0,'object')DATA v Register (gui, event, bevent)DATA0w if (evt == 10): # Shadow buffer buttonsDATApw if (buff1024.val == 1):DATAw buff512.val = 0DATAw buff256.val = 0DATA8x buff2048.val = 0DATAxx saveload(1,0,'object')DATA x Register (gui, event, bevent)DATA0y if (evt == 11): # Shadow buffer buttonsDATApy if (buff2048.val == 1):DATAy buff512.val = 0DATAy buff1024.val = 0DATA8z buff256.val = 0DATAxz saveload(1,0,'object')DATA z Register (gui, event, bevent)DATA{ if (evt == 12):DATAP{ globalsettings.val = 1DATA{ scenesettings.val = 0DATA{ shadereditor.val = 0DATA(| objecteditor.val = 0DATAp| about.val = 0DATA | Register (gui, event, bevent)DATA} if (evt == 557):DATA@} globalsettings.val = 0DATA} scenesettings.val = 1DATA} shadereditor.val = 0DATA~ objecteditor.val = 0DATA`~ about.val = 0DATA ~ Register (gui, event, bevent)DATA~ if (evt == 13):DATA0 globalsettings.val = 0DATAx scenesettings.val = 0DATA shadereditor.val = 1DATA objecteditor.val = 0DATAP about.val = 0DATA  Register (gui, event, bevent)DATA if (evt == 16):DATA  globalsettings.val = 0DATAh scenesettings.val = 0DATA shadereditor.val = 0DATA objecteditor.val = 0DATA@ about.val = 1DATA  Register (gui, event, bevent)DATAЂ if (evt == 33):DATA globalsettings.val = 0DATAX scenesettings.val = 0DATA shadereditor.val = 0DATA objecteditor.val = 1DATA0 about.val = 0DATA p Register (gui, event, bevent)DATA( if (evt == 14): # Add shader menuDATA` 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 selectedDATA4X 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))DATAX while (name == 0):DATA name = 1DATA for x in namelist[:]:DATA(( if ('Surface.%s'%numbername == x):DATA  increment = increment +1DATAЉ name = 0DATA0 numbername = "%03d" % (int(increment))DATA@p namelist.insert(listlenght - 1 , 'Surface.%s'%numbername)DATA( sshader = string.join(namelist, "|")DATA<8 surfaceshadername.val = namelist[surfaceshader.val - 1]DATA saveShaderName(1)DATA resetShaderVal()DATA( shadermenu.val = 1DATAp else:DATA saveload(0,0,'shader')DATA saveShaderName(1)DATA,0 shadernametemp = surfaceshadername.valDATA  Register (gui, event, bevent)DATA؍ if (evt == 340):DATA resetShaderVal()DATAX saveload(1,0,'shader')DATA  Register (gui, event, bevent)DATAP if ((evt == 15) & (surfaceshadername.val != "")): # Surface shader deleteDATA$p deleteshader = surfaceshader.valDATA  tempselected = selectednameDATA( namelist = string.split(sshader, "|")DATA,h namelist.remove(surfaceshadername.val)DATA< surfaceshadername.val = namelist[surfaceshader.val - 1]DATA ( namelist = map(str, namelist)DATA(x sshader = string.join(namelist, "|")DATA Б listlenght = len(namelist)DATA(  if (surfaceshader.val == listlenght):DATA<x surfaceshadername.val = namelist[surfaceshader.val - 2]DATA  surfaceshadername.val = ""DATA,0 surfaceshader.val = surfaceshader.val - 1DATA saveShaderName(1)DATAȓ saveload(0,0,'shader')DATA( for objects in Blender.Object.Get():DATA(h if (objects.getType() == "Mesh"):DATA resetObject()DATA  selectedname = objects.nameDATAP saveload(0,0,'object')DATA0 if deleteshader == objectshadermenu.val:DATA convertbm.val = 0DATA0@ elif deleteshader < objectshadermenu.val:DATA8 objectshadermenu.val = objectshadermenu.val - 1DATA saveload(1,0,'object')DATA P selectedname = tempselectedDATA saveload(0,0,'object')DATA  Register (gui, event, bevent)DATA48 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,X namelist = string.split(sshader, "|")DATA< namelist[surfaceshader.val - 1] = surfaceshadername.valDATA( sshader = string.join(namelist, "|")DATAp saveload(1,0,'shader')DATA saveShaderName(1)DATA$ Register (gui, event, bevent) DATAP if (evt == 18):DATA saveload(1,0,'object')DATA ؛ Register (gui, event, bevent)DATA( if (evt == 19):DATA8h testrender = open('%s/testrender.rib'%rootdir, 'w')DATA<М testrender.write('Projection "perspective" "fov" 40\n')DATA,8 testrender.write('Format 320 240 1\n')DATA if (rgba.val == 1):DATA؝ channels = "rgb"DATA elif (rgba.val == 2):DATA` channels = "rgba"DATA elif (rgba.val == 3):DATA channels = "rgbz"DATA8 elif (rgba.val == 4):DATA channels = "z"DATAL testrender.write('Display "Test Render" "framebuffer" "%s"\n'%channels)DATAL8 testrender.write('Option "searchpath" "texture" ["%s"]\n'%texturesdir)DATA( testrender.write('Exposure 1 1.2\n')DATA, testrender.write('PixelSamples 1 1\n')DATA(` testrender.write('Translate 0 0 5\n')DATA, testrender.write('Rotate -120 1 0 0\n')DATA( testrender.write('Rotate 25 0 0 1\n')DATA$h testrender.write('WorldBegin\n')DATA0 if (menuval.val == 1) or (menuval.val == 4):DATAH testrender.write('\tAttribute "visibility" "integer trace" [1]\n')DATA if (menuval.val == 3):DATADأ testrender.write('\tAttribute "visibility" "reflection" [1]\n')DATA@H testrender.write('\tAttribute "visibility" "shadow" [1]\n')DATA0 if (menuval.val == 1) or (menuval.val == 4):DATAT testrender.write('\tAttribute "visibility" "string transmission" ["shader"]\n')DATA4 elif (menuval.val == 2) or (menuval.val == 3):DATAP testrender.write('\tAttribute "render" "string casts_shadows" ["shade"]\n')DATAHx if (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATA if (menuval.val != 5):DATA@8 testrender.write('\tAttribute "light" "shadows" ["on"]\n')DATA` testrender.write('\tLightSource "spotlight" 1 "intensity" 20 "from" [0 3 4] "to" [0 0 0]\n')DATAd8 testrender.write('\tLightSource "spotlight" 2 "intensity" 20 "from" [0 -3 4] "to" [0 0 0]\n')DATAȨ elif (menuval.val == 3):DATA testrender.write('\tLightSource "spotlight" 1 "intensity" 10 "from" [0 3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')DATAة testrender.write('\tLightSource "spotlight" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')DATA elif (menuval.val == 1):DATA testrender.write('\tLightSource "shadowspot" 1 "intensity" 10 "from" [0 3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')DATA testrender.write('\tLightSource "shadowspot" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')DATA$p elif (menuval.val == 6): #Pixie!DATAL testrender.write('\tAttribute "visibility" "transmission" "opaque"\n') DATA8 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 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,ȯ testrender.write('\tAttributeBegin\n')DATA  name = 'foobar'DATA` meshobj = 10DATAt testrender.write('\t\tAttribute "displacementbound" "string coordinatesystem" ["object"] "float sphere" [1]\n')DATA,@ writeShader(testrender, name, meshobj, 0)DATA0 testrender.write('\t\tSphere 1 -1 1 360\n')DATA( testrender.write('\tAttributeEnd\n')DATA,P testrender.write('\tAttributeBegin\n')DATA4 if ((menuval.val == 2) or (menuval.val == 3)):DATA0 testrender.write('\tSurface "oakplank"\n')DATA4h elif (menuval.val == 4) or (menuval.val == 1):DATA0ȳ testrender.write('\tSurface "rmarble"\n')DATA4( elif (menuval.val == 5) or (menuval.val == 6):DATA, testrender.write('\tSurface "matte"\n')DATA< testrender.write('\tPointsPolygons [4 ] [0 3 2 1 ]\n')DATA`H 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$0 testrender.write('WorldEnd\n')DATA testrender.close()DATA(ȶ render('%s/testrender.rib'%rootdir)DATA(  if (evt == 20): # Load settingsDATAx loadSettings()DATA  Register (gui, event, bevent)DATA( if (evt == 21): # Save settingsDATA` saveSettings()DATA  Register (gui, event, bevent)DATA if (evt == 30):DATA0 saveload(0, 0, 'global')DATA x Register (gui, event, bevent)DATAȹ if (evt == 31):DATA saveload(1, 0, 'global')DATA P Register (gui, event, bevent)DATA if (evt == 32):DATA saveload(1,0,'shader')DATA ( Register (gui, event, bevent)DATAx if (evt == 34):DATA  worked = getSelectedObject()DATA if (worked == 1):DATAH resetObject()DATA$ Register (gui, event, bevent)DATAؼ saveload(0,0,'object')DATA  Register (gui, event, bevent)DATAp if (evt == 244):DATA rendershadow.val = 1DATA raytraceshadow.val = 0DATA@ saveload(1,0,'object')DATA if (eblur.val > 0.2):DATAо eblur.val = 0.2DATA maxblur = 0.2DATA P Register (gui, event, bevent)DATA if (evt == 245):DATA rendershadow.val = 0DATA( raytraceshadow.val = 1DATAp saveload(1,0,'object')DATA maxblur = 10.0DATA  Register (gui, event, bevent)DATAH if (evt == 475):DATA indirectgi.val = 1DATA areagi.val = 0DATA  Register (gui, event, bevent)DATA` if (evt == 476):DATA indirectgi.val = 0DATA areagi.val = 1DATA ( Register (gui, event, bevent)DATA,x if (evt == 367): # Convert texturesDATA( imagelist = os.listdir(texturesdir) DATA( if (imagelist != []):DATAp for image in imagelist:DATA, rawimage = '%s/%s'%(texturesdir, image)DATA$ totiff.SetOutDir(texturesdir)DATA(` ok = totiff.ConvertShort(rawimage)DATA$ if not ok[0]: # error occurredDATA( print ok[1] # print error messageDATA(` imagelist = os.listdir(texturesdir) DATA imagelisttif = []DATA for image in imagelist:DATA H if (image[-3:] == 'tif'):DATA, imagelisttif = imagelisttif + [image]DATA4 imagelistmenu = string.join(imagelisttif, "|")DATA P Register (gui, event, bevent)DATA if (evt == 368):DATA( imagelist = os.listdir(texturesdir) DATA8 if (imagelist != []):DATA imagelisttif = []DATA for image in imagelist:DATA  if (image[-3:] == 'tif'):DATA,` imagelisttif = imagelisttif + [image]DATA4 imagelistmenu = string.join(imagelisttif, "|")DATA8 texturem.val = str(imagelisttif[converttex.val - 1])DATA saveload(1,0,'shader')DATA  Register (gui, event, bevent)DATA Register (gui, event, bevent)DATAhDATAdef getSelectedObject():DATA@ global selectedname, selectedtype, namelist, sshader2, sshaderDATAP try:DATA0 selected = Blender.Object.GetSelected()[0]DATA  except:DATA  return 0DATA X selectedname = selected.nameDATA$ if (selected.getType() == "Mesh"):DATA  selectedtype = 'Type: Mesh'DATA(H elif (selected.getType() == "Lamp"):DATA  selectedtype = 'Type: Lamp'DATA else:DATA ( selectedtype = 'Type: Other'DATA(x namelist = string.split(sshader, "|")DATA namelist.remove('ADD NEW')DATA  namelist = map(str, namelist)DATA(h sshader2 = string.join(namelist, "|")DATA  return 1DATA DATA((def saveload(save, exportS, module):DATA if (module == 'shader'):DATA Variables = [shadermenu.val, ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, coefshader.val, DATAx reflblurshader.val, refrblurshader.val, reflsamples.val, refrsamples.val, kr.val, textshader.val, textshaderd.val, texturem.val,DATAT( 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.valDATA( if (name == ''):DATA h returnDATA$ fname = surfaceshadersdir + nameDATA if (module == 'object'):DATAl8 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, DATApx rendershadow.val, buff256.val, buff512.val, buff1024.val, buff2048.val, eblur.val, esamples.val, amesh.val, DATAh reflectcaustics.val, raytraceshadow.val, bias.val, rvisibility.val, castshadow.val, pointwidth.val, DATA$ objectra.val, objectrafile.val]DATA, fname = objectsettingsdir + selectednameDATAX 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, DATApp motionblur.val, motionblurframe.val, dof.val, stop.val, lenght.val, distance.val, autogs.val, progress.val, DATAx 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, DATAtX prmanrenderer.val, bmrtrenderer.val, entropyrenderer.val, dlrenderer.val, aqsisrenderer.val, pixierenderer.val,DATAt 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$h writeln(f,'BlenderMan0.1Beta9.0')DATA for i in Variables:DATA  writeln(f,type(i).__name__)DATAP if (i == '\n'):DATA writeln(f,'')DATA continueDATA writeln(f,i)DATAPDATA # Load variablesDATA if (save == 0):DATA try:DATA8 f = open(fname,'r')DATA  except: DATA  returnDATA  index = 0DATA ( version = str(f.readline())DATA,x if (version != 'BlenderMan0.1Beta9.0\n'):DATA  returnDATA for i in Variables:DATA P 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,8 Variables[index] = int(f.readline())DATA index += 1DATA  f.close()DATA if (module == 'shader'):DATA$P shadermenu.val = Variables[0]DATA( ambientshader.val = Variables[1]DATA( diffuseshader.val = Variables[2]DATA(P specularshader.val = Variables[3]DATA( roughnessshader.val = Variables[4]DATA$ coefshader.val = Variables[5]DATA(P reflblurshader.val = Variables[6]DATA( refrblurshader.val = Variables[7]DATA$ reflsamples.val = Variables[8]DATA$P refrsamples.val = Variables[9]DATA  kr.val = Variables[10]DATA$ textshader.val = Variables[11]DATA$@ textshaderd.val = Variables[12]DATA$ texturem.val = Variables[13]DATA( textureblurm.val = Variables[14]DATA 8 norm.val = Variables[15]DATA$ textnor.val = Variables[16]DATA, illuminationmenu.val = Variables[17]DATA$0 projection.val = Variables[18]DATA elif (module == 'object'):DATA$ convertbm.val = Variables[0]DATA( objectshadermenu.val = Variables[1]DATA p geom.val = Variables[2]DATA$ meshexport.val = Variables[3]DATA uv.val = Variables[4]DATA(X arealightMESH.val = Variables[5]DATA$ areasamples.val = Variables[6]DATA( recievecaustics.val = Variables[7]DATA,X transmittcaustics.val = Variables[8]DATA0 transmittcausticsslider.val = Variables[9]DATA$ caustics.val = Variables[10]DATA ` photon.val = Variables[11]DATA( rendershadow.val = Variables[12]DATA$ buff256.val = Variables[13]DATA$X buff512.val = Variables[14]DATA$ buff1024.val = Variables[15]DATA$ buff2048.val = Variables[16]DATA H eblur.val = Variables[17]DATA$ esamples.val = Variables[18]DATA  amesh.val = Variables[19]DATA(8 reflectcaustics.val = Variables[20]DATA( raytraceshadow.val = Variables[21]DATA  bias.val = Variables[22]DATA$8 rvisibility.val = Variables[23]DATA$ castshadow.val = Variables[24]DATA$ pointwidth.val = Variables[25]DATA$( objectra.val = Variables[26]DATA$x objectrafile.val = Variables[27]DATA elif (module == 'global'):DATA gi.val = Variables[0]DATA X gisteps.val = Variables[1]DATA$ radiosity.val = Variables[2]DATA  radnum.val = Variables[3]DATA H dirw.val = Variables[4]DATA  image.val = Variables[5]DATA$ filename.val = Variables[6]DATA 8 file.val = Variables[7]DATA  buffer.val = Variables[8]DATA  anim.val = Variables[9]DATA$( rendert.val = Variables[10]DATA$x menuval.val = Variables[11]DATA$ samples.val = Variables[12]DATA  srate.val = Variables[13]DATA h debug.val = Variables[14]DATA$ maxerror.val = Variables[15]DATA( maxpixeldist.val = Variables[16]DATA ` geom.val = Variables[17]DATA$ motionblur.val = Variables[18]DATA( motionblurframe.val = Variables[19]DATA X dof.val = Variables[20]DATA  stop.val = Variables[21]DATA  lenght.val = Variables[22]DATA$H distance.val = Variables[23]DATA  autogs.val = Variables[24]DATA$ progress.val = Variables[25]DATA$8 indirectgi.val = Variables[26]DATA  areagi.val = Variables[27]DATA  gianim.val = Variables[28]DATA$( patchsize.val = Variables[29]DATA$x elemsize.val = Variables[30]DATA$ minsize.val = Variables[31]DATA  recurs.val = Variables[32]DATA h gain.val = Variables[33]DATA  gamma.val = Variables[34]DATA  lightx.val = Variables[35]DATA$X hiddenlayer.val = Variables[36]DATA$ gisphere.val = Variables[37]DATA$ finalgather.val = Variables[38]DATA H hdri.val = Variables[39]DATA  hdritex.val = Variables[40]DATA  rgba.val = Variables[41]DATA$8 reconvert.val = Variables[42]DATA( prmanrenderer.val = Variables[43]DATA$ bmrtrenderer.val = Variables[44]DATA(0 entropyrenderer.val = Variables[45]DATA$ dlrenderer.val = Variables[46]DATA( aqsisrenderer.val = Variables[47]DATA(0 pixierenderer.val = Variables[48]DATA( prmantexmaker.val = Variables[49]DATA$ bmrttexmaker.val = Variables[50]DATA(0  entropytexmaker.val = Variables[51]DATA$  dltexmaker.val = Variables[52]DATA(  aqsistexmaker.val = Variables[53]DATA(0  pixietexmaker.val = Variables[54]DATA$  preworldra.val = Variables[55]DATA(  preworldrafile.val = Variables[56] DATA$0  postworldra.val = Variables[57]DATA(  postworldrafile.val = Variables[58] DATA(  ambiSamples.val = Variables[59] DATA$0  occlusion.val = Variables[60] DATA,  #ambiSamplesindex.val = Variables[61] DATA$  indirect.val = Variables[61]DATA(  DATAX 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 x nn = string.find(x, '\n')DATA if (nn > 0):DATA x = x[:nn] + x[nn + 1:]DATAP f.write(str(x))DATA f.write('\n')DATA  except:DATA passDATA@DATApdef readint(f):DATA try:DATA return int(f.readline())DATA 0 except:DATAh passDATAdef readfloat(f):DATA try:DATA  return float(f.readline())DATA h except:DATA passDATAdef readstr(f):DATA try:DATAP s = (f.readline())DATA nn = string.find(s, '\n')DATA if (nn > 0):DATA  s = s[:nn] + s[nn + 1:]DATA h return sDATA  except:DATA  print sDATADATA@def saveShaderName(save):DATA global sshaderDATA< if save: f = open(surfaceshadersdir + 'ShaderNames','w')DATA80 else: f = open(surfaceshadersdir + 'ShaderNames','r')DATA  if save: writeln(f,sshader)DATA else: sshader = readstr(f)DATA 0 f.close()DATAhtry: DATA4 f = open(surfaceshadersdir + 'ShaderNames','r')DATAexcept:DATA8 saveShaderName(1)DATA x Register (gui, event, bevent)DATADATAsaveShaderName(0)DATA 8Register (gui, event, bevent)DATAsshader2 = sshaderDATADATADATA(def newdirs():DATA`h global pdir, globalpropertiesdir, surfaceshadersdir, displacementshadersdir, objectsettingsdirDATAh global lightsettingsdir, lightsettingsdir, meshesdir, imagesdir, shadowdir, texturesdir, shadersdirDATA if (os.name != "posix"):DATA rootdir = '/BlenderMan/'DATA  else:DATA0X rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$ pdir = rootdir + dirw.val + '/'DATA4 globalpropertiesdir = pdir + '/GlobalProperties/'DATA0h surfaceshadersdir = pdir + '/SurfaceShaders/'DATA< displacementshadersdir = pdir + '/DisplacementShaders/'DATA00 objectsettingsdir = pdir + '/ObjectSettings/'DATA0 lightsettingsdir = pdir + '/LightSettings/'DATA  meshesdir = pdir + '/Meshes/'DATA @ imagesdir = pdir + '/images/'DATA  shadowdir = pdir + '/shadows/'DATA$ texturesdir = pdir + '/textures/'DATA$0  shadersdir = pdir + '/shaders/'DATA  try:DATA  os.mkdir(pdir)DATA  os.mkdir(globalpropertiesdir)DATA H! os.mkdir(surfaceshadersdir)DATA$! os.mkdir(displacementshadersdir)DATA! os.mkdir(meshesdir)DATA 0" os.mkdir(objectsettingsdir)DATA " os.mkdir(lightsettingsdir)DATA" os.mkdir(shadowdir)DATA# os.mkdir(texturesdir)DATA`# os.mkdir(imagesdir)DATA# except OSError: DATA# passDATA $DATA,P$def writeHeader(ribfile, frames, frames2):DATA\$ ribfile.write('Option "searchpath" "texture" ["%s"]\n'%(texturesdir + ":" + shadowdir))DATA 0% display = Scene.GetCurrent()DATA,% context = display.getRenderingContext()DATA$% yResolution = context.imageSizeY()DATA$(& xResolution = context.imageSizeX()DATA x& if xResolution >= yResolution:DATA,& factor = yResolution / float(xResolution)DATA ' else:DATA,X' factor = xResolution / float(yResolution)DATA ' if Blender.World.Get() != []:DATA$( world = Blender.World.Get()[0]DATA P( 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)DATApH* 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))DATAHX+ ribfile.write("Clipping %s %s\n" % (camera.clipStart, camera.clipEnd))DATAD+ ribfile.write('PixelSamples %s %s\n'%(samples.val, samples.val))DATA@, try:DATA<x, ribfile.write('Exposure %s %s\n'%(gain.val, gamma.val))DATA , except: DATA- passDATAP- if (menuval.val != 2):DATA- if (dof.val == 1): DATAT- 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@(/ ribfile.write('Option "radiosity" "steps" [%s]\n'%radnum.val)DATAH/ ribfile.write('Attribute "indirect" "maxerror" [%s]\n'%maxerror.val)DATAX0 ribfile.write('Attribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATAP0 ribfile.write('Attribute "radiosity" "float patchsize" [%s]'%patchsize.val)DATAL1 ribfile.write('Attribute "radiosity" "float elemsize" [%s]'%elemsize.val)DATAL1 ribfile.write('Attribute "radiosity" "float minsize" [%s]'%minsize.val)DATA2 if (motionblur.val == 1):DATA$P2 ribfile.write('Shutter 0 1\n')DATA02 if (menuval.val == 1) or (menuval.val == 4):DATAH3 ribfile.write('Option "trace" "integer maxdepth" [%s]\n'%recurs.val)DATA0x3 elif (menuval.val == 2) or (menuval.val == 3):DATAD3 ribfile.write('Option "render" "max_raylevel" [%s]\n'%recurs.val)DATALH4 ribfile.write('Option "statistics" "integer endofframe" [%s]\n'%debug.val)DATA04 if ((indirectgi.val == 1) & (gi.val == 1)):DATA, 5 if ((gianim.val == 0) & (frames2 == 0)):DATAPx5 ribfile.write('Option "indirect" "string savefile" ["%s/irr.dat"]\n'%pdir)DATA05 elif ((frames2 > 0) or (gianim.val == 1)):DATAX6 if (anim.val == 1):DATAP6 ribfile.write('Option "indirect" "string seedfile" ["%s/irr.dat"]\n'%pdir)DATA 7 if (menuval.val == 3):DATA@h7 ribfile.write('Option "indirect" "integer maxbounce" [3]\n')DATA7DATA8DATA(88def writeTransform(ribfile, lampobj):DATA8 global cframeDATA8 Blender.Get('curframe')DATA9 Blender.Window.RedrawAll()DATA`9 if (lampobj == 0):DATA$9 camobj = scene.getCurrentCamera()DATA9 else:DATA(: camobj = lampobjDATA,h: 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" %DATAx; (caminvmatrix[0][0],DATA; caminvmatrix[0][1],DATA< -caminvmatrix[0][2],DATAP< caminvmatrix[0][3],DATA< caminvmatrix[1][0],DATA< caminvmatrix[1][1],DATA(= -caminvmatrix[1][2],DATAp= caminvmatrix[1][3],DATA= caminvmatrix[2][0],DATA> caminvmatrix[2][1],DATAH> -caminvmatrix[2][2],DATA> caminvmatrix[2][3],DATA> caminvmatrix[3][0],DATA ? caminvmatrix[3][1],DATAh? -caminvmatrix[3][2],DATA? caminvmatrix[3][3]))DATA?DATA(@def ambientLight(ribfile):DATA p@ if Blender.World.Get() != []:DATA$@ world = Blender.World.Get()[0]DATA(A if (occlusion.val) or (indirect.val):DATAHhA ribfile.write('\tAttribute "visibility" "transmission" "opaque"\n')DATAA else:DATAB ribfile.write('\tLightSource "ambientlight" 998 "float intensity" [1] "color lightcolor" [%s %s %s]\n\n'%(world.amb[0], world.amb[1], world.amb[2]))DATABDATACdef checkLamps(ribfile):DATAXC global selectednameDATAC lampnum = 0DATA(C for objects in Blender.Object.Get():DATA8D name = objects.getName()DATA$D if (objects.getType() == "Lamp"):DATAD lampnum += 1DATAE resetObject()DATAPE selectedname = nameDATA$E Register (gui, event, bevent)DATAE saveload(0,0,'object')DATA$0F Register (gui, event, bevent)DATA(F writeLamps(ribfile, name, lampnum)DATAF ribfile.write("\n")DATA GDATA(PGdef renderShadows(ribfile, frames2):DATA$G global selectedname, partitionnameDATA(G display = Blender.Scene.GetCurrent()DATA$PH cframe = Blender.Get('curframe')DATA(H for objects in Blender.Object.Get():DATAH name = objects.getName()DATA$@I if (objects.getType() == "Lamp"):DATAI resetObject()DATA$I Register (gui, event, bevent)DATA J selectedname = nameDATAhJ saveload(0,0,'object')DATA$J Register (gui, event, bevent)DATA K if (rendershadow.val == 1):DATAPK if (anim.val == 1):DATA,K shadowframe = Blender.Get('curframe')DATA K else:DATA(L shadowframe = ''DATAHpL ribfiledir = os.path.normpath(shadowdir + name + str(shadowframe))DATA(L shadowrib = open(ribfiledir, 'w')DATA4@M if ((menuval.val == 4) & (os.name != "posix")):DATAM ribfile.write('ReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + shadowdir + name + str(shadowframe))))))DATA hN else:DATAPN ribfile.write('ReadArchive "%s"\n'%(shadowdir + name + str(shadowframe)))DATA( O shadowrib.write('FrameBegin 0\n')DATA(xO lampobj = Blender.Object.Get(name)DATA4O lamp = Blender.Lamp.Get(lampobj.getData().name)DATA|0P if ((lamp.getMode() & lamp.Modes['Shadows']) & (lamp.type == 2)): # if it is set to render shadow and is a spotlightDATAP if (buff256.val == 1):DATA Q buffer = 256DATA `Q elif (buff512.val == 1):DATAQ buffer = 512DATA Q elif (buff1024.val == 1):DATA@R buffer = 1024DATA R elif (buff2048.val == 1):DATAR buffer = 2048DATAPS shadowrib.write('Projection "perspective" "fov" %s\n' %(lamp.spotSize))DATA,S shadowrib.write('PixelSamples 1 1\n')DATA4S if (menuval.val != 2) and (menuval.val != 3):DATADHT shadowrib.write('Hider "hidden" "depthfilter" "midpoint"\n')DATAT if (menuval.val == 3):DATA4U shadowrib.write('PixelFilter "min" 1 1\n')DATA `U else:DATA4U shadowrib.write('PixelFilter "box" 1 1\n')DATA8U shadowrib.write('Hider "hidden" "jitter" [0]\n')DATA(`V writeTransform(shadowrib, lampobj)DATA<V shadowrib.write('Format %s %s 1\n'%(buffer, buffer))DATA\ W shadowrib.write('Display "%s/%s%s.pic" "zfile" "z"\n'%(shadowdir, name, shadowframe))DATAW if menuval.val == 5:DATA,W shadowrib.write('ShadingRate 1\n')DATA HX else:DATA,X shadowrib.write('ShadingRate 4\n')DATA(X shadowrib.write('WorldBegin \n')DATA0Y shadows = 1DATA8pY createObjects(shadowrib, cframe, shadows, frames2)DATA$Y shadowrib.write('WorldEnd \n')DATA(Z shadowrib.write('MakeShadow "%s/%s%s.pic" "%s/%s%s.tx"\n'%(shadowdir, name, shadowframe, shadowdir, name, shadowframe))DATA$Z shadowrib.write('FrameEnd\n')DATA([DATA(X[def writeLamps(ribfile, name, lampnum):DATA[ global selectednameDATA$[ lampobj = Blender.Object.Get(name)DATA4H\ lamp = Blender.Lamp.Get(lampobj.getData().name)DATA4\ x = lampobj.matrix[3][0] / lampobj.matrix[3][3]DATA4] y = lampobj.matrix[3][1] / lampobj.matrix[3][3]DATA4h] 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]DATA4^ toz = -lampobj.matrix[2][2] + lampobj.matrix[3][2]DATA0^ if lamp.getMode() & lamp.Modes['Negative']:DATAH_ negative = -1DATA_ else:DATA_ negative = 1DATA` selectedname = nameDATA H` Register (gui, event, bevent)DATA` saveload(0,0,'object')DATA` if (caustics.val):DATA0 a ribfile.write('\tLightSource "caustic" 2\n')DATA(a ribfile.write('\tIlluminate 2 0\n\n')DATA(a ribfile.write('\tTransformBegin\n')DATAL0b ribfile.write('\tAttribute "light" "integer nphotons" [%s]\n'%photon.val)DATA,b if lamp.getMode() & lamp.Modes['Shadows']:DATAc shadow = 'on'DATA@c else:DATAxc shadow = 'off'DATA0c if (menuval.val == 2) or (menuval.val == 4):DATA d if (raytraceshadow.val == 1):DATAHhd ribfile.write('\tAttribute "light" "shadows" ["%s"]\n' % (shadow))DATAd else:DATA<e ribfile.write('\tAttribute "light" "shadows" ["off"]\n')DATAe if (lamp.type == 2):DATAe if (anim.val == 1):DATA0f shadowframe = '%s'%(Blender.Get('curframe'))DATApf else:DATAf shadowframe = ''DATA$f energratio = lamp.dist * negativeDATA88g if ((shadow == 'on') and (raytraceshadow.val == 1)):DATAg if (menuval.val == 3):DATAg shadowname = 'shadow'DATA0h elif (menuval.val == 1):DATAxh shadowname = 'raytrace'DATAh elif (menuval.val == 6):DATAHi ribfile.write('\t(Attribute "visibility" "transmission" "opaque")')DATAi shadowname = 'raytrace'DATA i else:DATAj shadowname = ''DATA@j else:DATA4xj if (shadow == 'on') and (rendershadow.val == 1):DATA,j shadowname = name + shadowframe + '.tx'DATA 0k else:DATAhk shadowname = ''DATA@k if (menuval.val == 6) and (shadow == 'off'): #Pixie RenderDATAl 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' \DATA8m %(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))DATApHn elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 0): #Pixie Render with SpotShadowsDATAn 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 q elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 1): #Pixie Render with Ray Spot shadowsDATAq 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' \DATAr %(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))DATAs else:DATA0t 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' \DATAPu %(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`v elif (lamp.type == 1):DATAv energratio = negativeDATAxv if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATAw 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))DATAx else:DATAx if (menuval.val == 3):DATAD y 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))DATAz elif (menuval.val == 1):DATADz 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))DATAH| 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))DATALx~ 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): DATA0h 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):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$0 ribfile.write('\tTransformEnd\n')DATADATA def writeMatrix(ribfile, name):DATA Blender.Get('curframe')DATAH Blender.Window.RedrawAll()DATA, matrix = Blender.Object.Get(name).matrixDATA$ ribfile.write("\t\tTransform [" +DATA<8 "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATA  (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 0 matrix[2][2], matrix[2][3],DATA  matrix[3][0], matrix[3][1],DATA Ќ matrix[3][2], matrix[3][3]))DATA DATAPdef resetObject():DATA convertbm.val = 0DATAЍ objectshadermenu.val = 0DATA geom.val = 1DATAX meshexport.val = 1DATA pointwidth.val = 1.0DATA  uv.val = 0DATA arealightMESH.val = 0DATA` areasamples.val = 20DATA recievecaustics.val = 0DATA transmittcaustics.val = 0DATA$8 transmittcausticsslider.val = 1.4DATA caustics.val = 0DATAȐ photon.val = 4000DATA buff256.val = 0DATAH buff512.val = 1DATA buff1024.val = 0DATAȑ buff2048.val = 0DATA eblur.val = 0.00DATAH esamples.val = 1DATA amesh.val = 0DATAȒ reflectcaustics.val = 0DATA raytraceshadow.val = 0DATAX rendershadow.val = 0DATA bias.val = 0.25DATA rvisibility.val = 0DATA( castshadow.val = 1DATAh objectra.val = 0DATADATAؔdef resetShaderVal():DATA  if (shadermenu.val == 1):DATAh ambientshader.val = 1DATA diffuseshader.val = 0.5DATA specularshader.val = 0.5DATA@ roughnessshader.val = 0.1DATA if (shadermenu.val == 2):DATAЖ ambientshader.val = 0.2DATA diffuseshader.val = 0.0DATA` specularshader.val = 0.5DATA  roughnessshader.val = 0.05DATA coefshader = 1.5DATA8 reflblurshader = 0DATA refrblurshader.val = 0DATAȘ reflsamples.val = 0DATA refrsamples.val = 0DATAX if (shadermenu.val == 3):DATA ambientshader.val = 1.0DATA diffuseshader.val = 0.1DATA0 specularshader.val = 1.0DATAx roughnessshader.val = 0.2DATA if (shadermenu.val == 5):DATA ambientshader.val = 1DATAP diffuseshader.val = 0.5DATA specularshader.val = 0.5DATA roughnessshader.val = 0.1DATA(( textshader.val = 'Surface "plastic"'DATA, textshaderd.val = 'Displacement "bumpy"'DATA؜ texturem.val = ''DATA textnor.val = 0DATAX illuminationmenu.val = 0DATADATA0Нdef writeShader(ribfile, name, meshobj, anim):DATA0 global texturefile, txdoneDATA x if (arealightMESH.val == 0):DATAȞ MName = '"plastic"'DATA else: DATAH MName = ''DATA, if ((uv.val == 1) and (meshobj != 10)):DATA0 mesh = Blender.NMesh.GetRawFromObject(name)DATA@ if mesh.faces[0].image:DATA, imagename = mesh.faces[0].image.filenameDATA  imagename = imagename[:-3]DATA0 imagename = imagenameDATA$x imagename = imagename + 'tif'DATATȡ imagename = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(imagename)[1])DATAhH 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$H outfile = open(rawimage, 'wb')DATA  outfile.write(infile.read())DATA outfile.close()DATA( infile.close()DATA`h 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( if os.path.isfile(imagename) == 0:DATA إ try:DATA$ totiff.SetOutDir(texturesdir)DATA(` ok = totiff.ConvertShort(rawimage)DATA$ if not ok[0]: # error occurredDATA( print ok[1] # print error messageDATA ` except:DATA  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:DATAPx os.system('convert -depth 8 -compress none %s %s'%(rawimage, imagename))DATA except OSError:DATA0@ print "\nCould not find ImageMagic\n"DATA, imagename = mesh.faces[0].image.filenameDATA  imagename = imagename[:-3]DATAH imagename = imagenameDATA  tdlname = imagename + 'tx'DATA$ imagename = imagename + 'tif'DATA40 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@h 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))DATA elif menuval.val == 2:DATAH os.system('%s %s %s'%(bmrttexmaker.val, imagenameconv, txname))DATAX elif menuval.val == 3:DATAH os.system('%s %s %s'%(entropytexmaker.val, imagenameconv, txname))DATA elif menuval.val == 4:DATAD` 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))DATAP else: DATA 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 P mr = 1DATA  mg = 1DATA  mb = 1DATA` ribfile.write('\t\tAttribute "caustic" "color refractioncolor" [%s %s %s]\n'%(mr, mg, mb))DATAh ribfile.write('\t\tAttribute "caustic" "float refractionindex" [%s]\n'%transmittcausticsslider.val)DATA  if (reflectcaustics.val == 1):DATAPp ribfile.write('\t\tAttribute "caustic" "color specularcolor" [.9 .9 .9]\n')DATA  if (recievecaustics.val == 1):DATA(@ ribfile.write('\t\tIlluminate 2 1\n')DATA8 if ((shadermenu.val == 1) & (arealightMESH.val != 1)):DATA0 if ((convertbm.val != 0) or (meshobj == 10)):DATA` ribfile.write('\t\tSurface "plastic" "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val))DATA<0 elif ((shadermenu.val == 2) & (arealightMESH.val != 1)):DATA0 if ((convertbm.val != 0) or (meshobj == 10)):DATA8 ribfile.write('\t\tDeclare "eta" "uniform float"\n')DATA<` ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@ȼ ribfile.write('\t\tDeclare "refrblur" "uniform float"\n')DATA@8 ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATAD ribfile.write('\t\tDeclare "refrraysamples" "uniform float"\n')DATA@ ribfile.write('\t\tDeclare "envname" "uniform string"\n')DATA if (menuval.val == 3):DATAо 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))DATAؿ elif (menuval.val == 2):DATA  evar = '"blur" [%s] "raysamples" [%s] "refrraysamples" %s "refrblur" %s "eta" %s'%(reflblurshader.val, reflsamples.val, refrsamples.val, refrblurshader.val, coefshader.val)DATA  else:DATA8 evar = ''DATAx 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<` elif ((shadermenu.val == 3) & (arealightMESH.val != 1)):DATA0 if ((convertbm.val != 0) or (meshobj == 10)):DATA<( ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@ ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATA if (menuval.val == 3):DATA`H evar = '"string envname" ["reflection"] "string envspace" ["current"] "float twosided" 1'DATA elif (menuval.val == 2):DATAP  evar = ('"raysamples" %s "blur" %s'%(reflsamples.val, reflblurshader.val))DATA  else:DATA evar = ''DATA 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)):DATA0X if ((convertbm.val != 0) or (meshobj == 10)):DATAt ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA,X 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)):DATA0x if ((convertbm.val != 0) or (meshobj == 10)):DATAt ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA x txname = texturem.val[:-3]DATA txname = txname + 'tx'DATA tdlname = txnameDATA$P txname = texturesdir + txnameDATA converttex = 1DATA$ if os.path.isfile(txname) == 0:DATA0 for texture in txdone:DATA x if (txname == texture):DATA converttex = 0DATA  breakDATAH if (converttex == 1):DATA if (menuval.val == 1):DATAT os.system('%s %s %s'%(prmantexmaker.val, texturesdir + texturem.val, txname))DATA X elif (menuval.val == 2):DATAT os.system('%s %s %s'%(bmrttexmaker.val, texturesdir + texturem.val, txname))DATA ( elif (menuval.val == 3):DATAXx os.system('%s %s %s'%(entropytexmaker.val, texturesdir + texturem.val, txname))DATA  elif (menuval.val == 4):DATATP os.system('%s %s %s'%(dltexmaker.val, texturesdir + texturem.val, txname))DATA  elif (menuval.val == 5):DATAT  os.system('%s %s %s'%(aqsistexmaker.val, texturesdir + texturem.val, txname))DATA  elif (menuval.val == 6):DATAT os.system('%s %s %s'%(pixietexmaker.val, texturesdir + texturem.val, txname))DATA p txdone = txdone + [txname]DATA txname = tdlnameDATA if (textnor.val == 1):DATAH ribfile.write('\t\tDisplacement "bmd" "string texname" ["%s"] "float maptype" %s "float Km" %s\n'%(txname, projection.val - 1, norm.val))DATA 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  returnDATAX try:DATA< material = Blender.Material.Get(mesh.materials[0].name)DATA$ hard = 1-(material.hard*0.00392)DATAH ribfile.write('\t\tSurface %s "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(MName, material.amb, material.ref, material.spec, hard))DATA  except:DATA08 ribfile.write('\t\tSurface %s\n'%(MName))DATA if (meshobj != 10):DATA0 mesh = Blender.NMesh.GetRawFromObject(name)DATA@ try:DATAx if mesh.materials:DATA< material = Blender.Material.Get(mesh.materials[0].name)DATAT( ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA except: passDATA  if (arealightMESH.val == 1):DATA,8 ribfile.write('\t\tSurface "constant"\n')DATAL ribfile.write('\t\tAttribute "light" "nsamples" [%s]\n'%areasamples.val)DATA if (menuval.val == 2):DATA@P ribfile.write('\t\tAttribute "light" "shadows" ["on"]\n')DATA0 mesh = Blender.NMesh.GetRawFromObject(name)DATA  try:DATA<X material = Blender.Material.Get(mesh.materials[0].name)DATA if (menuval.val == 3):DATA 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))DATA elif (menuval.val == 2):DATAX ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(material.emit * 100, material.R, material.G, material.B))DATA ( except:DATAx` ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(0.7 * 100, 1, 1, 1))DATADATA88def 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():DATAx name = objects.getName()DATA try:DATAD if (objects.getType() == "Mesh"): meshobjects = meshobjects + 1DATA h except: DATA passDATA( for objects in Blender.Object.Get():DATA0 name = objects.getName()DATAx resetObject()DATA  area = 0DATA$ obj = Blender.Object.Get(name)DATA@ i = 0DATA0x while (obj.Layer>>i): # convert layer numberDATA i = i + 1DATA  if (i == hiddenlayer.val):DATAh layer = 1DATA else:DATA layer = 0DATA8  if ((objects.getType() == "Mesh") & (layer == 0)):DATA meshnum = meshnum + 1DATA( meshobj = Blender.Object.Get(name)DATA$( obj = Blender.Object.Get(name)DATAx selectedname = nameDATA$ Register (gui, event, bevent)DATA saveload(0,0,'object')DATAX if (shadows == 0):DATA( ribfile.write('\tAttributeBegin\n')DATA0 if ((shadows == 0) and (objectra.val == 1)):DATA@X ribfile.write('\t\tReadArchive "%s"\n' %(objectrafile.val))DATA if (shadows != 1):DATA0 mesh = Blender.NMesh.GetRawFromObject(name)DATA p if (len(mesh.faces) == 0):DATA( ribfile.write('\tAttributeEnd\n')DATA del(mesh)DATA X returnDATA if (mesh.materials):DATA  try:DATA@ 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  passDATA del(mesh)DATAHDATA x if (motionblur.val == 1):DATA, ribfile.write('\tMotionBegin [0 1]\n')DATA(  Blender.Set('curframe', cframe) DATA x writeMatrix(ribfile, name)DATA< Blender.Set('curframe', cframe + motionblurframe.val)DATA 0 writeMatrix(ribfile, name)DATA$ ribfile.write('\tMotionEnd\n')DATA( Blender.Set('curframe', cframe) DATA ( else:DATA ` writeMatrix(ribfile, name)DATA, namelist = string.split(sshader, "|")DATA if len(namelist) > 1: DATA@P surfaceshadername.val = namelist[objectshadermenu.val - 1] DATA$ Register (gui, event, bevent)DATA if (convertbm.val == 1):DATAX saveload(0,1,'shader')DATA$ Register (gui, event, bevent)DATA  if (castshadow.val == 1):DATA@ op = "Os"DATA  elif (castshadow.val == 2):DATA op = "opaque"DATA  elif (castshadow.val == 3):DATA4` if (menuval.val == 1) or (menuval.val == 4):DATA op = "shader"DATA  else:DATA8 op = "shade"DATA x elif (castshadow.val == 4):DATA4 if (menuval.val == 1) or (menuval.val == 4):DATA( op = "transparent"DATA p else:DATA op = "none"DATA0 if (menuval.val == 1) or (menuval.val == 4):DATATH ribfile.write('\t\tAttribute "visibility" "string transmission" ["%s"]\n'%op)DATA4 elif (menuval.val == 2) or (menuval.val == 3):DATAP( ribfile.write('\t\tAttribute "render" "string casts_shadows" ["%s"]\n'%op)DATA  if (rvisibility.val == 1):DATA if (menuval.val == 3):DATAH@ ribfile.write('\t\tAttribute "visibility" "integer camera" [0]\n')DATA  elif (menuval.val == 2):DATAH ribfile.write('\t\tAttribute "render" "integer visibility" [2]\n')DATA if (shadows == 0):DATA4 writeShader(ribfile, name, meshobj, frames2)DATA( if (amesh.val == 1):DATAp objecttime = frames2DATA  else:DATA objecttime = ''DATA 0 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\ else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA  else:DATA  if (meshexport.val == 2):DATA, if ((frames2 == 0) or amesh.val == 1):DATAp if (geom.val == 1):DATAH meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA80 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:DATAX if (amesh.val != 1):DATA if (frames2 == 0):DATA if (geom.val == 1):DATAL0 meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA< 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(  Blender.Set('curframe', cframe) DATA$(  Blender.Window.RedrawAll()DATAx  if (geom.val == 1):DATAH  meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA88  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\  else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA<  Blender.Set('curframe', cframe + motionblurframe.val)DATA$  Blender.Window.RedrawAll()DATA4H objecttime = frames2 + motionblurframe.valDATA if (geom.val == 1):DATAP meshfile = open('%s/%s%s.rib'%(meshesdir,name, str(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 + str(objecttime) + ".rib")))))DATA` else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, str(objecttime)))DATA(p ribfile.write('\tMotionEnd\n')DATA( Blender.Set('curframe', cframe) DATA$  Blender.Window.RedrawAll()DATAp objecttime = frames2DATA if (shadows == 0):DATA( ribfile.write('\tAttributeEnd\n')DATA X if (arealightMESH.val == 1):DATA, ribfile.write('\tIlluminate 999 1\n')DATADATA(0def drawBar(meshnum, qwerty, pixels):DATA if (progress.val == 1):DATA$ global thisone, meshobjects, xbarDATA  xbar = 0DATAX xbar = qwertyDATA if (xbar < 10): xbar = 11DATA  Draw()DATA0 elif ((progress.val == 0) & (anim.val == 1)):DATA(x testtime = Blender.Get('curframe')DATADATA8def check(name, meshfile, meshobj, meshnum, shadows):DATAh if (shadows != 1):DATA  print 'Exporting: %s'%nameDATA0 mesh = Blender.NMesh.GetRawFromObject(name)DATA X if (len(mesh.faces) == 0):DATA del(mesh)DATA  returnDATA  if (meshexport.val == 1):DATA$h pointspolygon(meshfile, mesh)DATA  elif (meshexport.val == 2):DATA0 polygon(mesh, meshfile, meshobj, meshnum)DATA h elif (meshexport.val == 3):DATA  subdivmesh(meshfile, mesh)DATA  elif (meshexport.val == 4):DATAX points(meshfile, mesh)DATA  elif (meshexport.val == 5):DATA general(meshfile, mesh)DATA 8 elif (meshexport.val == 6):DATA bilinear(meshfile, mesh)DATA  del(mesh)DATA meshfile.close()DATAHDATA xdef pointspolygon(file, mesh): DATA global meshnumDATA$ testtime = Blender.Get('curframe')DATA X update = 5DATA colorif = 0DATA perso = 0.0DATA pixels = 0.0DATAP update = 100DATA  index = 0DATA facenum = len(mesh.faces)DATA  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 = 619DATA(# 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:DATA(@& 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:DATAp' 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('] ')DATA) 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]))DATA* file.write(']')DATA$+ if mesh.hasVertexColours() == 1:DATA(`+ 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$80 for vi in range(len(face.v)):DATAD0 file.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA0 file.write(']')DATA81 else:DATA,p1 if (len(mesh.faces[0].uv) != 0):DATA1 file.write('\n"st" [ ')DATA2 vtuv = [] DATA(P2 for i in range(len(mesh.verts)): DATA2 vtuv.append(0) DATA2 for f in mesh.faces: DATA 03 for i in range(len(f.uv)): DATA3 uv = f.uv[i]DATA 3 uv = uv[0], 1.0 - uv[1]DATA 4 vtuv[f.v[i].index] = uvDATA`4 for c in vtuv:DATA4 for d in c: DATA4 file.write('%s '%d)DATA(5 file.write(']')DATAh5 file.write('\n')DATA5DATA05def polygon(mesh, meshfile, meshobj, meshnum):DATA86 global meshobjects, iDATA6 i = 0DATA 6 update = 5DATA6 colorif = 0DATA07 perso = 0.0DATAp7 pixels = 0.0DATA7 facenum = len(mesh.faces)DATA7 for face in mesh.faces:DATA@8 if mesh.materials:DATA$8 matname=mesh.materials[0].nameDATA8 try:DATA09 material = Blender.Material.Get(matname)DATA<p9 if (colorif != material.R + material.G + material.B):DATA49 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:DATA @ returnDATA0A meshfile.write('"st" [ ')DATAxA if (number == 1):DATAA for x in [0, 1, 2]:DATA(B meshfile.write("%s "%face.uv[x][0])DATA0XB meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAB if (number == 2):DATA$B if len(mesh.faces[i].v) == 3: DATA HC returnDATAC for x in [0, 2, 3]:DATA(C meshfile.write("%s "%face.uv[x][0])DATA0 D meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAD meshfile.write(']\n')DATADDATA8Ddef writePoly(mesh, face, meshfile, i, vertar, smooth):DATA$`E meshfile.write('Polygon "P" [ ')DATAE for x in [0, 1, 2]:DATAE for y in range(3):DATA@F try:DATA4xF meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATAF except Error:DATA G print iDATA PG print xDATA G print yDATAG meshfile.write(']\n')DATAH if (smooth == 1):DATAHH meshfile.write('"N" [')DATAH for x in [0, 1, 2]:DATAH for y in range(3):DATA4 I meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATAI meshfile.write(']\n')DATA I number = 1DATA4J textureUV(i,mesh,0,1,2, meshfile, face, number)DATA`J if (vertar == 4):DATA$J meshfile.write('Polygon "P" [ ')DATAJ for x in [0, 2, 3]:DATA8K for y in range(3):DATA4K meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATAK meshfile.write(']\n')DATA(L if (smooth == 1):DATAhL meshfile.write('"N" [')DATAL for x in [0, 2, 3]:DATAL for y in range(3):DATA4@M meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATAM meshfile.write(']\n')DATAM number = 2DATA4(N textureUV(i,mesh,0,1,2, meshfile, face, number)DATANDATA Ndef general(meshfile, mesh):DATA O index = 0DATA,@O meshfile.write('PointsGeneralPolygons [')DATAO for face in mesh.faces:DATAO meshfile.write('1 ')DATA(P index = index + 1DATAhP meshfile.write(']\n[')DATA P index = 0DATAP for face in mesh.faces:DATA 0Q meshfile.write(str(nr) + ' ')DATAQ index = index + 1DATAQ meshfile.write(']\n[')DATA R index = 0DATA@R for f in mesh.faces:DATAR for v in f.v:DATA(R meshfile.write(str(v.index) + ' ')DATA S index = index + 1DATA`S meshfile.write(']\n"P" [')DATA S index = 0DATA$S for x in range(len(mesh.verts)):DATA0T for y in range(3):DATA4xT meshfile.write(str(mesh.verts[x].co[y]) + '')DATAT index = index + 1DATAU meshfile.write(']\n')DATA`UDATA Udef bilinear(meshfile, mesh):DATAU f = 0DATAV for face in mesh.faces:DATA,`V meshfile.write('Patch "bilinear" "P" [ ')DATAV for x in [3, 2, 0, 1]:DATAW for y in range(3):DATA4HW meshfile.write('%s '%mesh.faces[f].v[x].co[y])DATAW meshfile.write(']\n')DATAW if face.smooth:DATA0X meshfile.write('"N" [ ')DATAxX for x in [3, 2, 0, 1]:DATAX for y in range(3):DATA4Y meshfile.write('%s '%mesh.faces[f].v[x].no[y])DATAhY meshfile.write(']\n')DATA Y f = f + 1DATAYDATA Zdef subdivmesh(meshfile, mesh):DATAhZ if menuval.val != 2:DATAZ if mesh.hasFaceUV() == 1:DATA<Z meshfile.write('Declare "st" "facevarying float[2]"\n')DATA8`[ meshfile.write('SubdivisionMesh "catmull-clark" [')DATA[ for face in mesh.faces:DATA\ num = len(face.v)DATA P\ meshfile.write('%s '%(num))DATA\ meshfile.write(']\n[')DATA\ for face in mesh.faces:DATA0] for vert in face.v:DATA(x] meshfile.write('%s ' % vert.index)DATAD] meshfile.write(']\n["interpolateboundary"] [0 0] [] []\n"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(']')DATAH_ if (menuval.val != 2):DATA_ if mesh.hasFaceUV() == 1:DATA _ meshfile.write('\n"st" [')DATA(` for face in mesh.faces:DATAp` num = len(face.v)DATA ` if num == 3 or num == 4:DATA$a for vi in range(len(face.v)):DATAHXa meshfile.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATAa meshfile.write(']')DATA$b if mesh.hasVertexColours() == 1:DATA(hb vertexcol = range(len(mesh.verts))DATA b meshfile.write('\n"Cs" [')DATAc for face in mesh.faces:DATAXc num = len(face.v)DATAc if num == 3 or num == 4:DATA$c for vi in range(len(face.v)):DATA08d vertexcol[face.v[vi].index] = face.col[vi]DATAd for vc in vertexcol:DATAHd meshfile.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATAXe meshfile.write(']')DATAe meshfile.write('\n')DATAeDATAfdef points(meshfile, mesh):DATA `f meshfile.write('Points "P" [')DATAf for vert in mesh.verts:DATAHf meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATA@pg meshfile.write('] "constantwidth" [%s]\n' % (pointwidth.val))DATAgDATA hdef createGI(ribfile, frames):DATA0`h if (areagi.val == 1) and (menuval.val !=6):DATA8h ribfile.write('\tDeclare "casts_shadows" "string"\n')DATAH(i ribfile.write('\tAttribute "render" "casts_shadows" ["opaque"]\n')DATATi ribfile.write('\tLightSource "ambientlight" 998 "lightcolor" [0.02 0.02 0.02]\n')DATA( j ribfile.write('\tAttributeBegin\n')DATA@xj ribfile.write('\t\tAttribute "identifier" "name" ["sky"]\n')DATA`j ribfile.write('\t\tConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 -1573.14 307.099 -988.299 1]\n')DATAXxk ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(l ribfile.write('\t\tAttributeBegin\n')DATA,Xl ribfile.write('\t\t\tColor [1 1 1]\n')DATA,l ribfile.write('\t\t\tOrientation "rh"\n')DATA0m ribfile.write('\t\t\tReverseOrientation\n')DATA0hm ribfile.write('\t\t\tSurface "constant"\n')DATALm ribfile.write('\t\t\tAttribute "light" "nsamples" [%s]\n'%gisteps.val)DATA@@n ribfile.write('\t\t\tAttribute "light" "shadows" ["on"]\n')DATAhn ribfile.write('\t\t\tAreaLightSource "arealight" 1 "lightcolor" [1 1 1] "intensity" [10000000000]\n')DATA4Ho ribfile.write('\t\t\tSphere 50000 0 50000 360\n')DATA(o ribfile.write('\t\tAttributeEnd\n')DATA$p ribfile.write('\tAttributeEnd\n')DATA(Pp ribfile.write('\tIlluminate 1 1\n')DATA4p if (indirectgi.val == 1) and (menuval.val !=6):DATA q if (finalgather.val == 0):DATAPXq ribfile.write('\tAttribute "indirect" "float maxerror" [%s]\n'%maxerror.val)DATAXq ribfile.write('\tAttribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATA`r else:DATAHr ribfile.write('\tAttribute "indirect" "float maxpixeldist" [0]\n')DATAPs ribfile.write('\tAttribute "indirect" "integer nsamples" [%s]\n'%gisteps.val)DATA4s ribfile.write('\tLightSource "indirect" 42\n\n')DATAs if (gisphere.val == 1):DATA(8t ribfile.write('\tAttributeBegin\n')DATAXt ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(u ribfile.write('\t\tColor [1 1 1]\n')DATA0pu ribfile.write('\t\tSurface "constant"\n')DATA8u ribfile.write('\t\tSphere 2000 -2000 2000 360\n')DATA(8v ribfile.write('\tAttributeEnd\n')DATAvDATAvdef render(ribfile):DATAw if (os.name != "posix"):DATAPw if (menuval.val == 1):DATA4w os.system('%s %s'%(prmanrenderer.val, ribfile))DATAw elif (menuval.val == 2):DATA4@x os.system('%s %s'%(bmrtrenderer.val, ribfile))DATAx elif (menuval.val == 3):DATA8x os.system('%s %s'%(entropyrenderer.val, ribfile))DATAPy elif (menuval.val == 4):DATA0y os.system('%s %s'%(dlrenderer.val, ribfile))DATAy elif (menuval.val == 5):DATA4@z os.system('%s %s'%(aqsisrenderer.val, ribfile))DATAz elif (menuval.val == 6):DATA4z os.system('%s %s'%(pixierenderer.val, ribfile))DATAH{ elif (os.name == "posix"):DATA{ if (menuval.val == 1):DATA8{ 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):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))DATADATAdef closeFile(ribfile):DATA ribfile.close()DATAXDATAdef 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):DATA$ Blender.Set('curframe', cframe)DATA8@ print 'Exporting Frame: %s'%Blender.Get('curframe')DATA$ 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 + 1DATAHDATA4xdef 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 placeDATA4 if (rendert.val == 1): # if the renderbutton is onDATA4P render(pdir + filename.val) # render the rib fileOBGs=OBCube?????????????5?5?,b3̷̷>\? ? ?AA?DOBdA? #=?>=?@???0=pfDATADATA,0I=L> ף ף;Z5//fluidsimdata/ready_OBCube_   AAAOBs=GOBLamp.001 `O/ BA???????? BA?????5?5?[03̷̷>\? ? ?!3?DOBdB? #=?>=?@???OBGH~?s=OBSuzannePaPa(???????i!3?i!3?????5?35̷\?̷ ???AAA?DOBdA? #=?>=?@???Xx.`V5DATA(DATA,XI=L> ף ף;@ZA@AADATADPa7SubsurfOBH~?G`=OBCamera P)`AA??????5?5?}2̷̷>\? ??AA??????2/VL)1?=TCs*U2?I]44?DOBdB? #=?>=?@???a`a`DATA,`DATA4a``Const?OB`=GH~?OBLamp ^5A??????>U? 3ӡ>ս>E`R?+d /?A?????H>n ?lJNC?t>FX?O>'3>h&B|AEV?DOBdB? #=?>=?@??? a aDATA,S<DATA4 aS<Const?MA0!MAMaterial>>???????????L????2 ???????@?=?==????MA!0MAMaterial.001?L?=??????????fff????2 ???????@?=?==????ME.MECube=hص 5 A A ADATA0DATAص3 A A AIII A A II A I A AII A AIIA  I    AIDATA0 ############DATAxh/ME.MESuzanneج?8(@@@@DATADATA'(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/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'8/.,/-,*-+         !" !#"$& '%#! &()'!&,*(+-')$.,&-/%'.$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@GLOBTnrjj  fDNA1?@ A!BC7 "DEFGHIJKLMNO*P#$Q%R%STUVWXYZ[\]^!_`abcd&efgh'i(jklmnopqrstuvwxyz{|) }~  *stu+*,'i##FGTUE(44y*#)+,-2rstuvFG&*P.*/_rstu     ef+ +!"#$%&'()&**+,-./012345678P09:1 !_2223;<=>?@ABCDEFGHIJ4KL43; M N*/OPqQpRSTU5 VWXYZ[\]^6_WX[^777`^abcdefghij6k5lm8n`09o:63; p N'q'r's*;tu/O vQpRqwPxyz{cd49|}~0000988<'===6k5l  <> ? 3; *u/O@> ABCDE?F qQpRP@`BGXCGA`DstuEHHH"IH7  JH'i"KH'i"LHMHNHO HyPHE0'iQ H'i"RHSH'iTab06*uUUU"3FpV''_ ''*;t3;WX    N  /OQpRD      !"#P$P % & ' ( )*+,-./ 0 1 2Y3Z4[5V6V789:\;]<]=^^^'>"?@Y ABCDEFGHIJK__ZLM`NaOPQRSTUVWXYZE[\]^0__`,\abcdefghijklmnopqrs?t?u?vwxyb8rz{|}~*&Pcddd'ie  f  0ghbef]B      !"#$i%E0'jjj&'k ()*+,E-./010'l'2b3l4# 5d6m789:;<=>? @cA iBkChsgDP EnFGHIo #(jBJKLMNp5qqOPrQRSTUVWXYZ['2o\p]^_`abHcdefgo8hijklmnopqrs3t uvw0sxyz{|}~qqqOPrQRtqqOPrQRuqqOPrQR0s  *+lvqqOPrQRsl mNEw qqOPrQRsJ0xqqOPrQRyz {qqOPrQRs   |}qqOPrQRs#Jl~ qqOPrQRlsqqOPrQR 7l qqOPrQ07lqqOPrQsQqqOPrQ     0%   !"#$%&$'()*+,-./0123456789:;<=>?@ABCDEFGH"IJKLMNOPQRSTUVWX_-YZ[\]^_`abcdefghijklmnopqrst uvwxyz{|}~E0'   l @rrrOP     %RT 4 9 }~  & 4*l$Q      4)Z,Ny| "^   "     "E0"/""0"""E' !" #$%E0" &''( ")*+,-./ 01% 20'" &3456' W7"89:;cd< =>?@=AB 6'?C"DEl'2"' FGQRHIJK "ELM'NOPQRSTU "ELMm7VWXYZ['\!]E0"^_ 0 `" ' abcdefgh i!_!j k*Blmnopq7rstuvwxyz{|qqOPrQs=0]"}''*QpRD    ~' m   "Xp/   0"wE0  QpDtX * "cW qqOPrQRsW* c 'X0'cd'c'c' 'NW7' ' 'E0q   '*W78ENDB