BLENDER_v240REND +StageSRtx m SRAnimation  U   P ~N~KDATA nxDATAxn KDATAnx~KDATAnS~DATASnDATAnٴS~DATAٴn0(1DATA0(nٴ~1DATAn 0(DATA nX 1DATAX n  DATA nX ~DATAUoxxDATAxoU DATAo(ۿxSDATA(ۿo*ٴxDATA*o: (ۿ0(DATA: oa *ٴ0(DATAa o؝ : SDATA؝ o  a DATA  oh ؝ ٴ DATAh o  0( DATA o h  DATA o@  0(DATA@ o  ٴSDATA oП @ X DATAП o  SX DATA o` П  DATA` o   DATA o` X  DATA qx X  ~~~   ( DATA p Link and MaterialsEditing>DATA p  MeshEditingF>DATA pX  Anim settingsObject>DATAX p(  DrawObjectF>DATA( p X ConstraintsObject>DATA pȦ ( EffectsObjectDATAȦ p  HooksObjectF>X DATA ph Ȧ Particle InteractionObject>( DATAh p8  ScriptlinksScript>DATA8 p h CameraEditingF>DATA pت 8 OutputRender>DATAت p  RenderRenderF>DATA px ت AnimRender>DATAx pH  FormatRender>DATAH p x AnimAnim>DATA p H SoundSound>DATA p  ListenerSoundF>DATA p  SequencerSound>DATA pX  Curve and SurfaceEditingF>DATAX p(  Curve ToolsEditing>DATA( pX Curve Tools1Editing>DATA ^ 333?X @DhCQDhCC(BDC?z?DATAT ` 333?X /9DATAx qp  ٴx0(~2K~2L~KKDATAp qP x Sٴ ?2?AHM00-g н h 8 DATAh p8 Transform PropertiesView3d[>DATA8 ph 3D Viewport propertiesView3d>"DATA Y 333?(X z"?ǾML*?yE?>| Mp]\?U?5n4?u"?yE?Ǿ>^\?JL*?| T?@(%o@? .2? *ML* W?D> ?| ?fS?U?j4ةAA?&4?Ĵsk>q?)Aڻ'ןAZ.A)@?2?AHMz"?ǾML*?yE?>| Mp]\?U?5n4?H?;澲XvfA B?=CY_@ DATA  e8  333?(X DATAx8 d  333?(X  . ǁ@#%%DATA aн 8 333?(X }lA@zA‰B}K -B- A@CC #<@-DATATн ` 333?(X Open Text File/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.py DATAP q p  0(??Pף~0~~0- P H H DATAH pTransform PropertiesIpo!>DATA( ]p 333?/X yC̽̌?yC@-uu- #< #<`jFzD OByC̽̌?DATAp YP  333?/X ??? ???? A???PA A!O?j?}GCHB? A B? #<CDATATP `p 333?/X /9DATA qP X S ~~~ #h 8   DATA p Link and MaterialsEditing>DATA p MeshEditingF>DATAh 8 333?5X zCCHBC#?CFC= ADATA8 ^8 h 333?5X #DhC`DpJgChCC(BDC?z?DATAT8 `8 333?5X /9SRt m x SRBlenderManX  X h  ( P ~N~KDATAX n DATA n X KDATA n  ~KDATA nX  ~DATAX n  ,DATA n X ~,DATA n  0DATA nX  ~0DATAX n  ,DATA n X 0DATA n  DATA n DATAX o   DATA o X X  DATA o0  X X DATA0 ox    DATAx o 0 X  DATA o x   DATA oP    DATAP o    DATA o P   DATA o(  X X DATA( op   X DATAp o (   DATA o p   DATA oH  X  DATAH o  X  DATA o H   DATA o     DATA  oh  X  DATAh o    DATA q X X   ?@Pף~+~~+ ,    DATA px OutputRender>DATAx pH  RenderRenderF>DATAH p x AnimRender>DATA pH FormatRender>DATA  333?,>zCCHBC,?CFC= ADATA ^  333?,>DhC?DhCC(BDC?z?mDATA Y  333?,>??? ???? A??@PA Aj?c3>}GCHB? A B? #<CDATA a  333?,>@̌AR|B1@lA A@CC #<@DATAT ` 333?,>/9DATA q      ~1K~1K~KKDATA q  X    G@? JL~-/~-G~H/ @  8 DATA p OutputRender>DATA p  RenderRender>DATA ph  AnimRender0>DATAh p8  FormatRenderH>DATA8 p h PreviewMaterial>DATA p 8 MaterialMaterial>DATA p  ShadersMaterial0>DATA px  TextureMaterialH>DATAx pH  Map InputMaterialD>DATAH p x Map ToMaterial,>DATA p H Link and MaterialsEditing>DATA p  MeshEditing>DATA p  Mesh ToolsEditing0>DATA pX  Mesh Tools 1EditingH>DATAX p(  RampsMaterial> DATA( p X Mirror TranspMaterial0> DATA p ( PreviewLamp>DATA p  LampLamp>DATA ph  Shadow and SpotLamp0>DATAh p8  Texture and InputLampH>DATA8 p h Map ToLampH>h DATA p 8 PreviewTexture>DATA p  TextureTexture>DATA px  ColorsTexture> DATAx pH  CloudsTexture0>DATAH p x Anim settingsObject>DATA p H DrawObject>DATA p  HooksObject> DATA p  ConstraintsObject0>DATA pX  EffectsObject0 DATAX p(  Particle InteractionObject0> DATA( p X PreviewWorld>DATA p ( WorldWorld>DATA p  Mist / Stars / PhysicsWorld0>DATA ph  Amb OccWorld0> DATAh p8  Texture and InputWorldH>DATA8 ph Map ToWorldH>h DATA ^ 333?LChCCpb@\CC(BDC?z?DATA Y  333?LJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?J>#xu?ܗ=Hi6>(? ?Pb^L?\FAA?4[?[!?@jG>gb>Pb>4Im>k&?]M^L<0@AzA=>Kc<2֍7&> ?:x¸A1vB,jB~@G@? JLJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?@?$$OA  B?=Ch?j(4?t'>dDATA( ]@  333?LzC AzC A #< #<`jFzD OBDATAT@ ` 333?L;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA q(  X   X ʫ==o?--GH`w     DATA pTransform PropertiesView3di>"DATA  e  333?DATAx  d   333?`'> B@DATA  Y`   333????]־Z?????]>Z??ʫ==o=>n? ;?ɾ>A,A]>Z??ʫ==o????]־Z???ɾ>A  B?=C]־Z?lJ@B@?1?dDATA`  aP  333?@ffzAbB@jA A@CC #<@DATAP ^P `  333?DdC>9C,DeCC(BDC?z?DATA(P ] P 333?zC AzC A #< #<`jFzD OBDATAT `P 333? Open Text FileATH/home/jerome/soft/3D/blender/blenderman0.1beta9.0//../pts/../blenderman0.1beta9.0.py DATA( q     ?4@ JL//lg h   DATA  pTransform PropertiesView3di>"DATA Y 333?9I>jvz)vK@>*ĘҿAf9?`Ivz*<>)vRpo?jK@>>(D>*@?&\"|?j?j?m@-_@K@:<()@j(WRbGF6Af9AS8fve<1=N>RBj{N@AY@?4@ JL9I>jvz)vK@>*ĘҿAf9? ?O>r"?ɾ>A  B?=C]־Z?lJ@B@?1?dDATA  e   333?DATAx  d  333?`'> B@DATA a  333?@ffzAbB@jA A@CC #<@  DATA, SC@ffP DATA ^  333?DdC>9C,DeCC(BDC?z?DATA( ]h  333?zC AzC A #< #<`jFzD OBDATATh ` 333? Open Text FileATH/home/jerome/soft/3D/blender/blenderman0.1beta9.0//../pts/../blenderman0.1beta9.0.py SRt m@g  SRModel 4-split   & h& _ P ^`DATA n DATA n  `DATA nH  `DATAH n  DATA n H DATA n  DATA nH  DDATAH n  DDATA n H LDATA n   LDDATA  nH   L DATAH  n     DATA  nH  DATA  o!   DATA! oX!   H DATAX! o! !   DATA! o! X! H  DATA! o0" !   DATA0" ox" !   DATAx" o" 0"  H DATA" o# x"  H DATA# oP# "   DATAP# o# #   DATA# o# P#   DATA# o($ # H  DATA($ op$ #    DATAp$ o$ ($    DATA$ o% p$ H H  DATA% oH% $  H  DATAH% o% %   H  DATA% o% H%   DATA% o & %   DATA & o%    DATAh& qpD    H ?@Pף > B `' P= DATA`' p0( PreviewLamp>DATA0( p) `' LampLamp@>DATA) p) 0( SpotLamp>DATA) p* ) Texture and InputLamp>DATA* pp+ ) Map ToLamp>) DATAp+ p@, * PreviewMaterial>DATA@, p- p+ MaterialMaterial@>DATA- p- @, PreviewWorld>DATA- p. - WorldWorld@>DATA. p/ - Mist Stars PhysicsWorld>DATA/ pP0 . Texture and InputWorld>DATAP0 p 1 / Map ToWorld>/ DATA 1 p1 P0 OutputRender>DATA1 p2 1 RenderRenderF>DATA2 p3 1 AnimRender>DATA3 p`4 2 FormatRender>DATA`4 p05 3 Link and MaterialsEditing>DATA05 p6 `4 MeshEditingF>DATA6 p6 05 Mesh ToolsEditing>DATA6 p7 6 Mesh Tools 1Editing>DATA7 pp8 6 CameraEditing@>DATAp8 p@9 7 ShadersMaterial>DATA@9 p: p8 TextureMaterial>DATA: p: @9 Anim settingsObject>DATA: p; : DrawObjectF>DATA; p< : ConstraintsObject>DATA< pP= ; ScriptlinksScript>DATAP= p< EffectsObject; DATA > ^ ? 333?бDhC^e¸/DuOlCC(BDC?z?mDATA ? YB > 333?б??? ???? A??@PA Aj?c3>}GCHB? A B? #<CDATAB aB ? 333?б@̌AR|B1@lA A@CC #<@DATATB `B 333?б/9DATApD qhE h&    H E`E_``DATAhE qN pD    H   X<*a=o?MMM4(0G M `F `F DATA`F p3D Viewport propertiesView3d>"DATA0G YJ 333?о??DD$?N?D$?%N%D??%H ?oX< xI !*a=S!?& B'!k'_Ay@?X<*a=o???DD$?N?? B  B??==C DATAJ ^K 0G 333?оDdCSC/ugD4=CC(BDC?z?DATAxK dK J 333?о x?OQ6RDATA(K ]M K 333?оzC AzC A #< #<`jFzD OBDATATM `K 333?оMSAVE FILE/home/intrr/blender/blend/jects/klo/untitled.blend7DATAN qW hE      QB=tn=o?KKKL(XP U O O DATAO pTransform PropertiesView3dx>"DATAXP Y8S 333?پ?3?3??3?3?QB=(^1n;sn=?QBA=4Xg)AzC?QB=tn=o??3?3?5?5QBA B??を==C DATA8S ^8T XP 333?پDdC8CnD fCC(BDC?z?DATA(8T ]U 8S 333?پzC AzC A #< #<`jFzD OBDATATU `8T 333?پ"LOAD FILEPUT PICTURES/Users/ton/Desktop/render/d/../er/../B.blendDATAW q_ N    H H  ?@ JLM!CM!!M!C4#CX ^ X X DATAX pTransform PropertiesView3dj>"DATAX Y[ 333?xx"?ǾLL*?yE?>| ) 2\\?V?!?y"?yE?3Ǿ>]\?LL*?| V?vA]~LA?C.2?S]*LL*iW?e.? ?| ?52?VA!A?Z4?)P<]>VI>3q ܠBiȦBg}B@?@ JLx"?ǾLL*?yE?>| ) 2\\?V?!?H?;澲Xv!A  B??8zT;=C DATA[ ^\ X 333?xDdCaCnDCC(BDC?z?DATA(\ ]^ [ 333?xzC AzC A #< #<`jFzD OBDATAT^ `\ 333?x SELECT SEQ PLUGIN PATH/home/jerome/local/blender-2.30/plugins/sequence/ DDATA_ qW      0,"=0أ=o?K!CK!!K!CL#C` e DATA` Yhc 333?????????0,"=0أ=o?kAGAy?0,"=0أ=o??????kA B??==C DATAhc ^hd ` 333?DdCQ"CfDAӗCC(BDC?z?DATA(hd ]e hc 333?zC AzC A #< #<`jFzD OBDATATe `hd 333?SELECT SCRIPT PATH/home/jerome/local/blender-2.30/scripts/ntitled.blend lSRt@g m  SRModel Singleg j `j Pn n  P ^` DATAg n h DATA h n`h g `DATA`h nh h `DATAh nh `h DATAh n i h 0DATA i n`i h 0DATA`i ni i FDATAi ni `i FDATAi n j i 0DATA j ni FDATA`j oj h `h DATAj oj `j g h DATAj o8k j g h DATA8k ok j h i DATAk ok 8k h i DATAk ol k h `i DATAl oXl k `h i DATAXl ol l `i i DATAl ol Xl i i DATAl o0m l h i DATA0m oxm l i i DATAxm om 0m `i j DATAm on xm i j DATAn oPn m i j DATAPn on h `i DATAn qy g h i h ?@Pף// 0r px o r DATAo p`p OutputRender>DATA`p p0q o RenderRenderF>DATA0q pr `p AnimRender>DATAr p0q FormatRender>DATAr s 333?n zCCHBC0?CFC= ADATAs ^t r 333?n DhC?DhCC(BDC?z?mDATAt Yw s 333?n ??? ???? A??@PA Aj?c3>}GCHB? A B? #<CDATAw apx t 333?n @̌AR|B1@lA A@CC #<@DATATpx `w 333?n /9DATAy qz n `i h `h i G`Ga``||DATAz q y i j i i G@? JL1E1KLEwО  {  DATA{ p| OutputRender>DATA| p} { RenderRender>DATA} pP~ | AnimRender0>DATAP~ p  } FormatRenderH>DATA  p P~ PreviewMaterial>DATA p  MaterialMaterial>DATA p  ShadersMaterial0>DATA p`  TextureMaterialH>DATA` p0  Map InputMaterialD>DATA0 p ` Map ToMaterial,>DATA pЄ 0 Link and MaterialsEditing>DATAЄ p  MeshEditing>DATA pp Є Mesh ToolsEditing0>DATAp p@  Mesh Tools 1Editing`>DATA@ p p RampsMaterial> DATA p @ Mirror TranspMaterial0> DATA p  PreviewLamp>DATA p  LampLamp>DATA pP  Shadow and SpotLamp0>DATAP p   Texture and InputLampH>DATA  p P Map ToLampH>P DATA p  PreviewTexture>DATA p  TextureTexture>DATA p`  ColorsTexture> DATA` p0  CloudsTexture0>DATA0 p ` Anim settingsObject>DATA pБ 0 DrawObject>DATAБ p  HooksObject> DATA pp Б ConstraintsObject0>DATAp p@  EffectsObject0 DATA@ p p Particle InteractionObject0> DATA p @ PreviewWorld>DATA p  WorldWorld>DATA p  Mist / Stars / PhysicsWorld0>DATA pP  Amb OccWorld0> DATAP p   Texture and InputWorldH>DATA  p P Map ToWorldH>P DATA p  Fields and DeflectionPhysics>EDATA p  Particles Physics>EDATA p`  Soft BodyPhysics0>E` DATA` p0  Fluid SimulationPhysics0>EDATA0 p ` ModifiersEditing0>DATA p0 ShapesEditing0>0 DATAО ^П 333?z ChCC'wgCC(BDC?z?DATAП Y О 333?z J>H!?)xu?i6>Pbܗ=(?^L?a?滎z?J>#xu?ܗ=Hi6>(? ?Pb^L?\FAA?4[?[!?@jG>gb>Pb>4Im>k&?]M^L<0@AzA=>Kc<2֍7&> ?:x¸A1vB,jB~@G@? JLJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?@?$$OA  B?=Ch?j(4?t'>dDATA( ] П 333?z zC AzC A #< #<`jFzD OBDATAT ` 333?z ;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATA qz h `i j i ʫ==o?1E1KLE P p   DATA pTransform PropertiesView3di>"DATAP Y0 333? ?3?3ˆ>=+ƾ??3?3ˆ+ƾ?ʫ=mt1n;=<"_G<:?ɾ>Ayְ4`AzCˆ+ƾ?ʫ==o??3?3ˆ>=+ƾ?5?5ɾ>A  B??<=Cˆ>+>=lJ@B@?1?d????DATA 0 e P 333? DATAx d( 0 333? `'> B@DATA( a  333? @ffzAbB@jA A@CC #<@DATA ^ ( 333? DdC>9C,DeCC(BDC?z?DATA( ]p  333? zC AzC A #< #<`jFzD OBDATATp ` 333? Save FileFileATH/home/jerome/blender/Fluid//blenderman0.1beta9.0//../pts/../fountain.blendta9.0.pyaSRt m@g SRSequence Edit P  X   P 5DATA nа DATAа n  DATA nP а DATAP n  DATA nб P DATAб n  DATA nP б DATAP n  DATA nв P \DATAв n  \DATA nP в \DATAP n DATA oس а  DATAس o    P DATA  oh س   DATAh o  P б DATA o h  б DATA o@  а  DATA@ o   P DATA oе @  P DATAе o    DATA o` е   DATA` o  P в DATA o ` б в DATA o8   в DATA8 o    DATA oȷ 8 в  DATAȷ o   P DATA oX ȷ P P DATAX o  P DATA qX   б P ؼ ؽ   DATA ph OutputRender>DATAh p8  RenderRenderF>DATA8 p h AnimRender>DATA p8 FormatRender>DATAؼ ^ؽ 333?ƼDhC&ԓDhCC(BDC?z?DATATؽ `ؼ 333?Ƽ/9DATAX qP   а  P DATAP qx X   в б 8=i>o?[  [P H  DATAH _ 333?\zCAzCAPP A@FB= A DATA Y H 333?\????????8=i>o?fffAD&@??fffA B? #<CDATAT ` 333?\AVE TARGA/t1.blend9DATAx q P  P P в 8=H>o?]]]]S p  DATAp _@ 333?zCAzCA1||1 A@FB= A DATA@ Y  p 333?????????8=H>o?fffA*@??fffA B? #<CDATAT  `@ 333?AVE TARGA/t1.blend9DATA qx   P  8=>o?]]wx8  DATA( ] 333?|B̽̌?B̽̌?88 #< #<`jFzD SQB̽̌?DATA Y  333?|????????8=>o?fffA@??fffA B? #<CDATAT ` 333?|OAD FILE/9SCP WSCStageainx p   = 0 dd??< ddd??_@@????L?fff??@ A///tmp///@&#@^@&^#D DATAp O lDATA O p lDATA OH  lDATAH O  DATA OH  DATA( N,d'=A@DATA0 VZ ?o: WO x MWOWorld>>>===??A@pA A?L=TXd  TX=====LAYERS====X    x DATAX  RDATA  X  NDATA 0  pMDATA0 x  DATAx  0 H MDATA  x p5reenDATA P  `DATAP    QreenDATA  P < ====DATA (  DATA( p  H QDATAp  ( DATA  p 00DATA H   QDATAH   @DATA  H vrDATA    H QDATA  h  P)DATAh   DATA  h  QDATA @  ]reenDATA@   ,DATA  @ H QDATA   vH@DATA `  `DATA`    QDATA  ` FREEDATA 8  h====DATA8   H QDATA  8 HϿDATA   0reenDATA X   NDATAX   p@ NEWDATA  X H DATA 0  x QDATA0 x  DATAx  0  DATA  x ( Q==LADATA P  + vH@DATAP    DATA  P  QDATA (  DATA( p  X DATAp  (  QFREEDATA  p  DATA H  @ İbDATAH   p RDATA  H  LRpDATA    ( vH@DATA  h  X QDATAh     NEWDATA  h  NEWDATA @  @ QDATA@    DATA  @  reenDATA   ( QreenDATA `   reenDATA`    NEWDATA  `  QvH@DATA 8   DATA8    DATA 8  QDATAR 32DATAP ============================================================================= DATApM 1: DATA DATAPH -----------------------------------------------------------------------------x DATAp5 2: DATA`rDATAT ----------------------------------------------------------------------------- EEDATA<  3: DATArDATATH ----------------------------------------------------------------------------- EEDATA 4: DATA00rDATAT ----------------------------------------------------------------------------- --DATA@ 5: DATAvrDATATH ============================================================================= EEDATAP 6: DATArDATAT ----------------------------------------------------------------------------- 6 DATA] 7: DATA,rDATATH ----------------------------------------------------------------------------- DATA 8: DATA`rDATAT ----------------------------------------------------------------------------- DATA 9: DATAhrDATATH ----------------------------------------------------------------------------- EEDATAHϿ10: DATA0DATAP ============================================================================= @DATAp@11: DATAH bDATATx ----------------------------------------------------------------------------- EEDATA12: DATA oDATAT( ----------------------------------------------------------------------------- t DATA+ 13: DATA bDATAT ----------------------------------------------------------------------------- EEDATA14: DATAX bDATAT ----------------------------------------------------------------------------- DATA 15: DATA@ bDATATp ============================================================================= EDATA 16: DATA( jDATATX ----------------------------------------------------------------------------- EEDATA 17: DATA jDATAT@ ----------------------------------------------------------------------------- EEDATA 18: DATA jrDATAT( ----------------------------------------------------------------------------- EEDATA 19: DATA jDATAT ----------------------------------------------------------------------------- qDATA 20: DATA ==DATAT ============================================================================= EETXd  TXblenderman0.1beta8    DATAL8 /home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.pyDATA  htmlDATA @  X)DATA@   DATA  @ FREEDATA    DATA `  PDATA`   6zDATA  ` RW@DATA 8  (DATA8   X> 0 SDATA  8 $DATA   FREEDATA X  h8e.icDATAX   2.X DATA  X 0DATA 0  `DATA0 x   DATAx  0  DATA  x  9DATA P  PDATAP   DATA  P DATA (  (culaDATA( p  p QDATAp  ( DATA  p DATA H  HDATAH   ts@DATA  H of@DATA    $DATA  h  8DATAh   pFDATA  h DATA @   DATA@     H1DATA    @  eo SDATA     r %xDATA  `   @DATA`      p"CDATA    `  !FREEDATA  8   2e EdDATA8     pile DATA    8  DATA     *ytagDATA  X   @&DATAX      (ageTDATA    X  -|DATA  0   PDATA0  x   DATAx    0  `-DATA   x  DATA P  HDATAP   DATA  P  rDATA (  72 .DATA( p  `44 .DATAp  ( DATA  p artDATA H  8DATAH   #DATA  H DATA    DATA  h  p ip@DATAh   !DATA  h "4 21DATA @  `# DATA@   %-W@DATA  @ !--- DATA   X# jerDATA `  "4 23DATA`   !@DATA  ` H!DATA 8  #27-MDATA8   " DATA  8 8 RelaDATA   DATA X  DATAX    DATA  X P LDATA 0   (DATA0 x   DATAx  0  DATA  x ` DATA P   DATAP    'DATA  P ( DATA (  p DATA( p   DATAp  (  DATA  p P 'DATA H   DATAH   _DATA  H _DATA    @`?DATA  h  `'DATAh   `DATA  h aDATA @  `aDATA@   a?DATA  @ a'DATA   @bDATA `  bDATA`   bDATA  ` cDATA 8  XccDATA8   cDATA  8 cDATA   8dDATA X  dDATAX   d LDATA  X eDATA 0  `eDATA0 x  eDATAx  0 eDATA   x HfDATA  P   f DATAP      fDATA    P  8gDDATA  (!  gDATA(! p!  gt FiDATAp! ! (! hDATA! " p! hhDATA" H" ! h-X DATAH" " " i DATA" " H" PiDATA"  # " i'DATA # h# " iDATAh# # # @j/DDATA# # h# jDATA# @$ # jPDATA@$ $ # kDATA$ $ @$ `kDATA$ % $ kpADATA% `% $ kʒDATA`% % % @lFREEDATA% % `% l(DATA% 8& % lDATA8& & % mDATA& & 8& hmDATA& ' & m?DATA' X' & nDATAX' ' ' HnDATA' ' X' nDATA' 0( ' nDATA0( x( ' oDATAx( ( 0( ho4 21DATA( ix( o jerDATAiPi( o27-SDATAPiii8p21-FDATAiiPiqDATAi(jiHqDATA(jpjir&DATApjj(jrDATAjkpj0t*DATAkHkjtyk&DATAHkkkXuDATAkkHku Hz&DATAk lkuqDATA lhlkvr-- DATAhll lv23-ODATAllhl8w07-FDATAl@mlx4 22DATA@mmlXx DATAmm@mx DATAmnmpy4 21DATAn`nmy04-JDATA`nnnz(DATAnn`nHzDATAn8onzDATA8oonzDATAoo8o({?DATAopop{DATApXpo{DATAXppp|DATAppXpH|DATAp0qp|DATA0qxqp| jerDATAxqq0q }08-ODATAqrxqP} jerDATArPrq}=r-x DATAPrrr~a96 .DATArrPr~_@DATAr(sr Cr-x DATA(spsrA@DATApss(s148 .DATAstps`> jerDATAtHtsЀy DATAHtttx703-ADATAttHtDATAt ut(DATA uhuth DATAhuu uDATAuuhu4DATAu@vu@ DATA@vvuxDATAvv@v$DATAvwv"DATAw`wv`,DATA`www08:3DATAww`wDATAw8xw0DATA8xxwp834DATAxx8x DATAxyx DATAyXyx(DATAXyyyhDATAyyXy 1DATAy0zy\t{ADATA0zxzy.DATAxzz0zxDATAz{xz@DATA{P{z,4DATAP{{{hDATA{{P{/DATA{(|{#DATA(|p|{P3DATAp||(|/DATA|}p|8DATA}H}|x/DATAH}}}؊-DATA}}H}828DATA} ~} DATA ~h~}!DATAh~~ ~8$DATA~~h~")ADATA~@~DATA@~(DATA@pDATA3DATA` DATA`HDATA`"DATA8DATA8(%DATAȁ83 DATAȁȏDATAXȁDATAXX (DATAXDATA0DATA0x@DATAx0DATAxБiDATAPDATAP`DATAPDATA(DATA(p8DATAp(h DATApPDATAH U?DATAH_DATA؆H8pDATA؆ ؕaDATA h؆hb8DATAh _DATAhZDATA@gFREEDATA@`DATAЈ@8PDATAЈ^DATA`ЈHEUV/IDATA`^DATA`P^DATA8XbDATA8h=DATAȊ8؜DATAȊ2DATAXȊh DATAXDATAXDATA00DATA0x`DATAx04DATAxtor DATAPX(DATAPDATAP.DATA(XDATA(p(DATAp(DATAp@DATAH&ADATAH)DATA؏HxDATA؏ sDATA h؏P?DATAh DATAhdDATA@XDATA@dDATAБ@ȥDATAБDATA`БDATA`DATA`LDATA8N@2YDATA8100%DATAȓ8HDATAȓDATAXȓHyDATAX}DATAXDATA0DATA0x8bDATAx0ȮnDATAxhiDATAPaDATAPDATAPذ}DATA(@DATA(pHjeroDATAp({*.&DATAp8 2 DATAHay-0DATAH8DATAؘHDATAؘ @`DATA hؘwmeDATAh 4DATAhP DATA@}12:4DATA@HDATAК@DATAКP}DATA`КDATA`tzEiADATA`hDATA8jDATA8iDATAȜ8HIDATAȜLvDATAXȜ@TDATAXȾTDATAXPDATA0DATA0xSDATAx0PDATAxDATAPؚDATAPDATAP`DATA(-UDATA(pDATAp(0DATApx7DATAHDATAH DATAءHh*DATAء bDATA hءPDATAh  DATAhDATA@(DATA@xDATAУ@DATAУDATA`УPDATA`t DATA`ؠ tDATA8(tDATA8x}DATAȥ8ȡiDATAȥt|DATAXȥh | DATAXdDATAXآdDATA0(tDATA0xWqDATAx0HYidDATAxФo?DATAP7}DATAP[*tDATAPqWDATA(Ȧu|DATA(pptDATAp(p|DATApX}xDATAHDATAHȩDATAتHx DATAت ȪDATA hتDATAh DATAhDATA@s DATA@0meDATAЬ@yDATAЬmeDATA`ЬخA{ADATA`{ DATA`0v19:1DATA8ذDATA8(832DATAȮ8xDATAȮ@r--DATAXȮDATAXȳDATAX@DATA0ȴF4DATA0x'7@DATAx0ȵDATAxxDATAPȶbDATAPxDATAP@ DATA(4DATA(p"DATAp(c4DATApDATAH~DATAHDATAسHHDATAس  DATA hسwDATAh DATAhȽDATA@aDATA@DATAе@]DATAе@DATA`еDATA`@@DATA`@DATA8 KDATA8@DATAȷ8jF4DATAȷkDATAXȷjDATAXlCADATAXPDATA0fDATA0x8pDATAx0ssuADATAxxd+hDATAPcDATAPM(WDATAP DATA(pq}@DATA(pbDATAp(DATApDATAH8DATAHMdDATAؼHi DATAؼ HdDATA hؼOGHnDATAh |DATAhi"DATA@HOnDATA@S:iDATAо@HPjDATAо=itDATA`о8gDATA``d*tDATA``Dx&DATA8[jDATA8`|DATA8d,DATAiDATAX ed0|DATAX|DATAX7nBDATA0hjDATA0x].}DATAx0d DATAxH}DATAP$iDATAP}DATAPtDATA(VqPDATA(pO|DATAp(dLocDATApP)DATAHDATAH!DATAHH)DATA DATA hDATAh 8"DATAh CDATA@XDATA@HsDATA@DATA0IACDATA`ud5DATA`PDATA`DATA8X DATA8DATA8@/DATA|DATAXP1?DATAXy?DATAXX DATA0DATA0x`a?DATAx0aDATAxfDATAP$hDATAPpx"' DATAP(``DATA(pDATA(pDATAp(DATAp0$DATAH1DATAHDATAHIDATA sDATA h-DATAh 2DATAhxDDATA@DATA@8qDATA@BDATA eFREEDATA`$DATA`DATA``^'+|ADATA85SDATA8@[DATA8[4DATAP^ADATAX^QDATAXpDDATAXoDATA0aDATA0xdDATAx0DATAxDATAP DATAPhADATAP24-ODATA(!DATA(p@DATAp(.DATApmeDATAH(A{ADATAHp!bDATAHDATA .T{ADATA hhDATAh aDATAh@DATA@3rw-DATA@@DATA@0orwDATADATA`8DATA`1DATA`WDATA8PDATA8;DATA8bDATAH2meDATAXDATAX1DATAXPDATA00r--DATA0xDATAx0@SDATAxʒDATAP/homDATAP8!DATAPDATA()DATA(p DATAp(PDATApDATAHoDATAH`&?DATAH 52 .DATA DATA h@DATAh DATAh2'+|ADATA@ DATA@h DATA@DATADATA`(DATA`pDATA`QDATA8,DATA8h DATA8*DATAADATAX0,DATAX"DATAX.DATA0@DATA0xDATAx0ADATAx$DATAPhDATAPDATAPDATA(81DATA(pA{ADATAp(DATAp('DATAH T{ADATAHXQDATAH ,DATA p DATA h DATAh  DATAh8 DATA@x DATA@ DATA@ ,DATAp DATA` DATA` DATA`8 DATA8x DATA8 DATA8 -DATAp DATAX DATAX DATAX8DATA0xDATA0xDATAx0-DATAxpDATAPDATAPDATAP8DATA(xDATA(pDATAp(`DATApP`DATAHPPPDATAHPPPDATAH(PPPDATA pDATA hDATAh DATAh@DATA@DATA@DATA@DATA`DATA`DATA`DATA`0DATA8xDATA8DATA8DATAPDATAXDATAXDATAX DATA0h`DATA0xDATAx0DATAx@DATAPPPPDATAPDATAPDATA(XDATA(pDATAp(DATAp0DATAHpDATAH'DATAH]˾DATA DATA hX1DATAh DATAhDATA@ DATA@)µDATA@XDATA DATA`DATA`('ķDATA`DATA8DATA8 ,DATA8p <ǺDATA 'DATAX8!:DATAX!DATAX!ɼDATA0("DATA0xp"DATAx0"DATAx"DATAP0#(DATAP#DATAP#DATA($DATA(pX$DATAp($DATAp$MDATAHp%"DATAH%DATAH&'DATA h&(DATA h&9DATAh ('DATAhx'&DATA@'DATA@ ('DATA@x(:DATA(DATA`0)+PPPDATA`)DATA`)DATA8*&DATA8h*$FREEDATA8*DATA +DATA X P+DATAX   +,DATA  X +@2YDATA 0  @,-DATA0 x  ,4DATAx  0 -DATA  x P-DATA P  -Th DATAP   -nce DATA  P 8.3DATA (  .DATA( p  X/(kCDATAp  ( /:H DATA  p 0'DATA H  p0DATAH   0DATA  H 1!DATA   P1DATA h 1DATAh 1DATAh(2DATA@h25DATA@29PoinDATA@83(QDATA38DATA`3SDATA`4UDATA``4FREEDATA84DATA84DATA885DATA58DATAX5IΒDATAX86HlYDATAX6&FREEDATA07(UIDATA0x`7'DATAx07)DATAx8'DATAPh8"9DATAP8.]DATAP9EZDATA(9UIDATA(p9BFREEDATAp(H:>8DATAp:.DATAH;RDATAH;0DATAH;NDATA x<D8aDATA h<UIDATAh 8=>FREEDATAh=_FREEDATA@8>`UIDATA@>bDATA@?lgDATA?ΒDATA`@8DATA`@UIDATA`A8DATA8pB"lDATA8BJRW@DATA88CDATADlDATAXE(DATAX FFREEDATAX`FDATA0FqXnDATA0x@G+pDATAx0G-8DATAxG&DATAPPH(HrDATAPH09DATAPI-FREEDATA(hI0LvDATA(pI,UIDATAp((J0sDATApJ*8DATAHJ9DATAHHK_DATAHK&ΒDATA 0L FREEDATA h LUIDATAh   L%DATA  h  M&(zDATA @! xMFREEDATA@!! MpyDATA!!@!N& = DATA!"!`NzDATA"`"!NDATA`"""NDATA""`"0ODATA"8#"xODATA8##"ODATA##8#PDATA#$#PP)1DATA$X$#PZQk;DATAX$$$PDATA$$X$(QNo SDATA$0%$xQDATA0%x%$QDATAx%%0%RDATA%&x%HRDATA&P&%R @BDATAP&&&RDATA&&P& SDATA&('&pSDATA('p'&SDATAp''('SDATA'(p'@TLDATA(H('TDATAH(((TDATA((H(UDATA( )(PUDATA )h)(UDATAh)) )UpUW@DATA))h)(VUIDATA)@*)pVFREEDATA@**)V= DATA**@*V= DATA*+*HW9DATA+`+*W= DATA`+++W4= DATA++`+XFREEDATA+8,+`X= DATA8,,+X= DATA,,8,XFREEDATA,-,(Y= DATA-X-,xY*D= DATAX---Y&ΒDATA--X-(ZFREEDATA-0.-pZDATA0.x.-Z+t= DATAx..0.[!= DATA./x.`[&FREEDATA/P/.["DATAP///\&8DATA//P/`\'L= DATA/(0/\DATA(0p0/]UIDATAp00(0H]DATA01p0]*= DATA1H10]19DATAH111P^FREEDATA11H1^ DATA1 21^&GDATA 2h218_DATAh22 2_DATA22h2_DATA2@32`DATA@332``*DATA33@3`1DATA343a7DATA4`43aDATA`444aDATA44`4bDATA4854hbDATA8554bDATA5585b?DATA565PcDATA6X65c,%t|BDATAX666cn EdDATA66X6 d er PDATA6076XdFREEDATA07x76d#Add DATAx7707dDATA78x7He%DATA8P87eDATAP888e,DATA88P8(fTo ODATA8(98xf&DATA(9p98fDATAp99(9gDATA9:p9hg&xDATA:H:9g DATAH:::gDATA::H:(h$DATA: ;:hADATA ;h;:h~FREEDATAh;; ;xiDATA;;h;(jQDATA;@<;j ,DATA@<<;j(DATA<<@<@k,DATA<=<kDATA=`=<k CDATA`===(lFREEDATA==`=hl DATA=8>=l"DATA8>>=lDATA>>8>8miDATA>?>mwDATA?X?>xnoDATAX???ogDATA??X?o"DATA?0@?p*DATA0@x@?XpDATAx@@0@p DATA@Ax@pDATAAPA@ qxDATAPAAAqtDATAAAPAproDATAA(BAsvDATA(BpBAsoDATApBB(BXtrDATABCpBtrDATACHCBuzDATAHCCC@v2DATACCHCvDATAC DCvDATA DhDC wDATAhDD Dhw#DATADDhDwDATAD@EDxDATA@EEDPxDATAEE@ExDATAEFEx DATAF`FEyDATA`FFFPyDATAFF`FyDATAF8GFyDATA8GGFzDATAGG8G8zDATAGHGz DATAHXHGz DATAXHHHz DATAHHXH({DATAH0IHx{+DATA0IxIH{ DATAxII0I|DATAIJxIP|DATAJPJI|DATAPJJJ|(DATAJJPJ@}DATAJ(KJ}*DATA(KpKJ}DATApKK(K8~(DATAKLpK~ DATALHLK~ DATAHLLLDATALLHLP"DATAL ML$DATA MhML$DATAhMM MP%DATAMMhM&DATAM@NM"DATA@NNMP%DATANN@N%DATANON#DATAO`ONP"DATA`OOODATAOO`O#DATAO8PO@#DATA8PPO!DATAPP8P$DATAPQP8DATAQXQP DATAXQQQ؄(DATAQQXQ0#DATAQ0RQDATA0RxRQȅ!DATAxRR0R'DATARSxRpDATASPSR"DATAPSSSDATASSPSX$DATAS(TS"DATA(TpTS&DATApTT(TX(DATATUpT-DATAUHUT!DATAHUUU`DATAUUHU$DATAU VU DATA VhVUX DATAhVV V!DATAVVhV!DATAV@WVHDATA@WWV!DATAWW@WDATAWXW8'sDATAX`XW'DATA`XXXDATAXX`X8#DATAX8YX"DATA8YYX؍"DATAYY8Y( DATAYZYx#DATAZXZYȎDATAXZZZDATAZZXZXDATAZ0[Z!DATA0[x[ZDATAx[[0[HDATA[\x[DATA\P\[ DATAP\\\8DATA\\P\DATA\(]\ؑDATA(]p]\( DATAp]](]x DATA]^p]Ȓ DATA^H^]DATAH^^^hDATA^^H^!`DATA^ _^$`DATA _h_^``DATAh_ _#DATAбh_'DATAбXPPPDATA`бPPPDATA`PPPDATA`H!PPPDATA8DATA8!DATAȳ88#DATAȳDATAXȳؗDATAX("аDATAXx!DATA0Ș DATA0xDATAx0hDATAx˾DATAPDATAPX#DATAP!DATA(#DATA(pHDATAp(DATApDATAH8!DATAH$fffDATAظH#fffDATAظ 0&µDATA hظ"DATAh ؝$DATAh0%DATA@$mmmDATA@#mmmDATAк@0&ķDATAк"DATA`к؟$DATA`0$uuuDATA`"uuuDATA8ؠ'ǺDATA80#DATAȼ8'DATAȼء$DATAXȼ0#}}}DATAX(}}}DATAXآ!DATA0(DATA0xXDATAx0DATAxУvDATAPxDATAPȤDATAPDATA(PDATA(pDATAp(ХDATApDATAH@DATAHpDATAHDATA DATA h0DATAh hDATAhDATA@DATA@DATA@hDATADATA`بDATA`DATA`PDATA8DATA8DATA8 DATAh DATAXDATAXت DATAXDATA0@DATA0xPPPDATAx0ȫ9PPPDATAx06PPPDATAPDATAPDATAP0 FREEDATA(hDATA(p0DATAp(DATAp8DATAHxDATAHȮDATAHDATA 8DATA hDATAh ȯDATAhDATA@(DATA@h_DATA@dDATADATA`رDATA` DATA`X.DATA8 DATA82DATA8h.DATAȳ8DATAX0.DATAX,DATAXDATA0@DATA0xմDATAx0"մDATAx0 մDATAPմDATAPDATAPDATA(HPPPDATA(p"PPPDATAp(PPPDATAp0PPPDATAHDATAHиDATAHDATA `DATA hDATAh DATAh ɼDATA@P*DATA@XDATA@0DATA(DATA`ػ#DATA`(#˾DATA`xDATA8ȼ+DATA8 DATA8X+DATADATAX DATAXPDATAXoDATA0@#DATA0x"hhhDATAx0:PPPDATAxHnDATAP?DATAPXGDATAPApppDATA(@ŸDATA(px9DATAp( DATApDATAHPDATAHxxxDATAHPDATA `;DATA h0DATAh (?DATAhFDATA@TDATA@MDATA@KDATAIDATA`DATA`P ̿DATA`-DATA8FDATA8x/DATA8CDATAHKDATAX,DATAX *DATA(XxMDATA(p,DATAp(XDATApNDATAH DATAHh?DATAHDATA DATA h8%DATAh DATAhDATA@DATA@`DATA@#DATADATA`(DATA`h)PPPDATA`DATA89DATA8xDATA8DATADATAXPDATAXDATAXDATA0(DATA0xpDATAx0DATAxDATAPHDATAPDATAPDATA( DATA(phDATAp(DATApDATAH(DATAHpDATAH DATA 'DATA hhFDATAh DATAhDATA@DATA@DATA@XDATA DATA`%DATA`8DATA`#DATA8DATA8DATA8PDATA DATAXDATAX0 DATAX%DATA0DATA0x DATAx0P$DATAx#DATAP%DATAPP!DATAP%DATA(DATA(p@#DATAp(DATAp DATAH DATAHhDATAH DATA DATA hPDATAh *DATAh DATA@(DATA@pFDATA@%DATA@3DATA`DATA`h DATA`NDATA8 %DATA8x&DATA83DATA0xDATAXDATAX DATAX`DATA0DATA0xDATAx0@DATAxDATAPDATAPLDATAP*DATA(2DATA(pHBDATAp(DATAp0DATAH` DATAH0DATAH5DATA `'DATA h9DATAh  ZDATAhDATA@(DATA@H DATA@(DATA%DATA`0DATA`p7DATA`#DATA8(|DATA8!DATA8(DATAX'DATAXDATAX#DATAXH0DATA00DATA0x0DATAx0h0DATAx3DATAP(3DATAP3DATAP,DATA(HDATA(pDATAp(DATApDATAHHDATAHDATAHDATA  .DATA h'DATAh %DATAh0KDATA@+DATA@DATA@@DATAxDATA`-DATA`DATA`hEDATA8DATA8;DATA8DATADATAX/DATAXpPPPDATAXDATA0#DATA0x86DATAx0DATAxDATAP0DATAPxDATAPDATA(GDATA(pDATAp(DATApDATAH@DATAHx3DATAH+DATA 0DATA hhDATAh <DATAhDATA@8DATA@HlDATA@DATADATA` qDATA`DATA`DATA8 DATA80 DATA8P DATA` `DATAX PPPDATAX vPPPDATAX PPPDATA0DATA0xPPPDATAx0 @DATAxDATAPBDATAPHDATAP#DATA(vDATA(pDATAp(xJDATApDATAHDATAHDATAHh,DATA DATA hDATAh 6DATAh`DATA@DDATA@ DATA@@DATADATA`DATA`DATA`0#DATA8DATA8PPPDATA8DATAHDATAX)DATAX"DATAX8 8DATA0 DATA0x DATAx0@!DATAx!DATAP!DATAP0"DATAP"DATA("DATA(p #DATAp(P#DATAp#DATAH#DATAH$ DATAHX$DATA $DATA h$ DATAh %DATAh`%DATA@%DATA@%DATA@8&"DATA&DATA`&DATA`'DATA`H'DATA8'DATA8'DATA8(DATAH(DATAX(DATAX(DATAX)DATA0X)DATA0x)DATAx0)DATAx(*DATAPh*DATAP*DATAP*DATA( +DATA(ph+DATAp(+DATA p+DATA H @,DATAH   ,DATA  H ,DATA   -DATA h  `-DATAh   -DATA  h -DATA @  8.DATA@   .DATA  @ .DATA   /DATA `  X/DATA`   /DATA  ` /DATA 8  00DATA8   x0DATA  8 0DATA  1DATAX P1DATAX1DATAX1DATA0(2&DATA0x2*DATAx02DATAx3DATAPX3DATAP3DATAP3.DATA(04DATA(px4DATAp(4DATAp5DATAHH5 DATAH5(DATAH5-DATA @6DATA h6+DATAh 6DATAh07DATA@x7 DATA@7SDATA@H8eDATA84DATA`H9!DATA`9DATA`9DATA8(:DATA8h:\DATA8:TDATA;%DATAX;DATAX<"DATAX`<'DATA0<#DATA0x='DATAx0`= DATAx=DATAP= DATAP >`DATAP>DATA(>DATA(p@ DATAp(@@ DATApx@ODATAH@DATAH@A,DATAHA+DATA ADATA hHBDATAh BDATAhB DATA@0C1DATA@C-DATA@CFDATAhD>DATA`DDATA` EEDATA`EDATA8EDDATA8XFDATA8FGDATA GDATA X `GBDATAX   GDATA  X HEDATA 0! HDATA0!x! HEDATAx!!0!PIDATA!"x!IDATA"P"!I!DATAP""" J-DATA""P"JDATA"(#"J:DATA(#p#" KDATAp##(#`KFREEDATA#$p#KDATA$H$#K?zDDATAH$$$PL DATA$$H$L DATA$ %$L DATA %h%$L\DATAh%% %MePE DATA%%h% N(}DATA%@&%pNMDATA@&&%NDATA&&@&@O'DATA&'&O7DATA'`'&P/DATA`'''`PDATA''`'0Q9DATA'8('Q/DATA8(('Q7DATA((8(`R8DATA()(R<DATA)X)(8S>DATAX)))SBDATA))X)T<DATA)0*)TDATA0*x*)TDATAx**0*UDATA*+x* VDATA+P+*WDATAP+++8W DATA++P+xWDATA+(,+`X9DATA(,p,+X/DATAp,,(,(Y8DATA,-p,Y>DATA-H-,ZDATAH---HZ]DATA--H-ZDATA- .- [NDATA .h.-[DATAh.. .[ DATA..h.\DATA.@/.\9DATA@//.X]/DATA//@/]pDATA/0/X^+DATA0`0/^,DATA`000_9DATA00`0x_/DATA0810_pDATA8110x`DATA1181`DATA121aDATA2X21Pa DATAX222aDATA22X2a"DATA20320bDATA03x32xbDATAx3303bDATA34x3c DATA4P43HcDATAP444cDATA44P4cSDATA4(54XdDATA(5p54dRDATAp55(5(eDATA56p5xeUDATA6H65fDATAH666PfPDATA66H6fDATA6 76 gSDATA 7h76gDATAh77 7gSDATA77h7phDATA7@87hDATA@887iDATA88@8HiDATA898jDATA9`98 k-DATA`999k-DATA99`9kDATA98:9 l DATA8::9XlDATA::8:l:DATA:;:l#DATA;X;:HmDATAX;;;n DATA;;X;8n,DATA;0<;nDATA0<x<;n-DATAx<<0<@oDATA<=x<xoDATA=P=<o;DATAP===(pQDATA==P=pDATA=(>=pDATA(>p>=8q+DATAp>>(>qJDATA>?p>rDATA?H?>Pr<DATAH???r-DATA??H? sDATA? @?Xs:DATA @h@?sDATAh@@ @tDATA@@h@uDATA@@A@XuDATA@AA@(v DATAAA@A`vwDATAABAwDATAB`BA8w5DATA`BBBwQDATABB`B xDATAB8CB`x DATA8CCBx DATACC8CxDATACDC y%DATADXDCxyDATAXDDDyDATADDXDyBDATAD0EDhz DATA0ExEDzDATAxEE0Ez%DATAEFxE0{DATAFPFEx{DATAPFFF{ DATAFFPF{ DATAF(GF@|DATA(GpGFx|.DATApGG(G| DATAGHpG}DATAHHHGh} DATAHHHH}DATAHHHH} DATAH IH ~4DATA IhIH~DATAhII I~%DATAIIhI(!DATAI@JIxDATA@JJI DATAJJ@JDATAJKJXDATAK`KJ'DATA`KKK/DATAKK`KX?DATAK8LKȁDATA8LLK/DATALL8LpDATALML&DATAMXMLDATAXMMMX DATAMMXMDATAM0NM؃ DATA0NxNM=DATAxNN0NSDATANOxNaDATAOPON DATAPOOOЅ DATAOOPO DATAO(POHDATA(PpPOxDATApPP(PȆ*DATAPQpP $DATAQHQPxDATAHQQQȇ9DATAQQHQ0DATAQ RQ"DATA RhRQЈ$DATAhRR R(DATARRhR`DATAR@SR(DATA@SSRDATASS@SP?DATASTS DATAT`TSDATA`TTTXDATATT`T!DATAT8UTDATA8UUT@ DATAUU8UDATAUVUЌDATAVXVUDATAXVVV`0DATAVVXVDATAV0WV DATA0WxWV8DATAxWW0WxDATAWXxWȎ0DATAXPXW(DATAPXXXp DATAXXPXDATAX(YX/DATA(YpYXHQDATApYY(YȐ1DATAYZpY(NDATAZHZYDATAHZZZDATAZZHZ@GDATAZ [ZDATA [h[ZGDATAh[[ [DATA[[h[ȓ0DATA[@\[(DATA@\\[pDATA\\@\DATA\]\DATA]`]\0DATA`]]]*DATA]]`]ؕDATA]8^] FDATA8^^]6DATA^^8^DATA^_^XDATA_X_^DATAX___ȘDATA__X_+DATA_0`_pDATA0`x`_GDATAx``0`07DATA`ax`DATAaPa`YDATAPaaa  DATAaaPaXDATAa(baDATA(bpbaDATApbb(b0HDATAbcpb8DATAcHcbDATAHcccZDATAccHc DATAc dcП&DATA dhdc( DATAhdd dxDATAddhdGDATAd@ed87DATA@eed,DATAee@eDATAefeZDATAf`fe;DATA`fff DATAff`fH0DATAf8gfDATA8ggfLDATAgg8gp7DATAghgإDATAhXhg_DATAXhhhp$DATAhhXhȧ&DATAh0ih  DATA0ixihpDATAxii0iIDATAijxi%DATAjPjiXDATAPjjj)DATAjjPjDATAj(kj0%ADATA(kpkjDATApkk(kЪ#qJDATAklpk  DATAlHlkXy@DATAHllli`DATAllHl` DATAl ml.^DATA mhmlx$ԏ`DATAhmm mЬ,@DATAmmhm5ihDATAm@nmh`V@DATA@nnm*ZDATAnn@n-DATAnonXDATAo`on DATA`ooo `;@DATAoo`o DATAo8poh DATA8ppoD`DATApp8p,DATApqphDATAqXqpDATAXqqq`Z@DATAqqXqX8g`DATAq0rq:DATA0rxrqDATAxrr0r8q@DATArsxr7tDATAsPsrв X΂@DATAPsssł@DATAssPsH9vDATAs(tsx@DATA(tptsȳ`DATAptt(t84#DATAtupt4 }^DATAuHut4 g`DATAHuuu5 DATAuuHu@5 `DATAu vu5 첂@DATA vhvu5 `DATAhvv v5DATAvvhv@6LĈDATAv@wv6DATA@wwv66DATAww@w87 DATAwxw7DATAx`xw7+`DATA`xxx(8kpJDATAxx`xp8ztDATAx8yx8"DATA8yyx8n@DATAyy8y89.;DATAyzy9̎`DATAzXzy98apJDATAXzzz :'9@DATAzzXzx:(@DATAz0{z:"u DATA0{x{z ;sfDATAx{{0{`;x`DATA{|x{;@^@DATA|P|{;\`DATAP|||(<DATA||P|p<$aDATA|(}|<DATA(}p}|=(*ZDATAp}}(}h=X@DATA}~p}=6qJDATA~H~}=#DATAH~~~8>DATA~~H~x>DATA~ ~>,`DATA h~?@DATAh x?x`DATAh?@DATA@@DATA@H@^@DATAЀ@@ADATAЀA"@DATA`Ѐ@A!DATA`A$}t^DATA`ADATA80BtpJDATA8xBܒ`DATAȂ8BDATAȂC! @DATAXȂXC/L@DATAXC@@DATAXDADATA0pDВ`DATA0xDDATAx0DDATAx@EȮ@DATAPEDATAPEDATAPFDATA(hF"DATA(pFCADATAp((G`DATAphGDATAHG)^DATAHGDATA؇H@H DATA؇ H$`4qJDATA h؇Hf`DATAh I`!@DATAh`Ih`DATA@IDATA@I`DATAЉ@@JDATAЉJ@DATA`ЉJDATA`KT`DATA`XK|.DATA8K|@DATA8KDATAȋ8L.DATAȋhLDATAXȋLDATAXL U@DATAX M @_@DATA0`M DATA0xM DATAx0MDATAx(Nxf`DATAPpNjDATAPN!DATAPOQ@DATA(@O,CBTDATA(pO:t#qJDATAp(P3~pJDATAphPSDATAHP %tDATAH QDATAؐHXQ߭QjDATAؐ Q @DATA hؐQ@DATAh  R DATAh`RDATA@R pJDATA@RDATAВ@S DATAВXS4DATA`ВS =V;WDATA`S'DATA`PTc^DATA8TDATA8T$`DATAȔ80U(DATAȔU#8@DATAXȔUpڂ@DATAXV;`DATAXpV`DATA0VDATA0xV̻@DATAx0(WDATAx`W`DATAPWyDATAPW pJDATAP0X&DATA(X.`X@DATA(pX7DATAp((Y DATApxY DATAHYi`DATAHY&X@DATAؙHPZ. %@DATAؙ ZDATA hؙZ @DATAh ([7DATAh[!@DATA@[H @DATA@(\?~DATAЛ@p\<`DATAЛ\2DATA`Л]`pJDATA`H] DATA`] DATA8] DATA8]'ZDATAȝ88^h`DATAȝx^=@DATAXȝ^`DATAX_pJDATAXP_2t*pDATA0_teleDATA0x_ agaDATAx00`0edsDATAx`epyDATAP`"jxpDATAP aarsDATAPharesDATA(a2gainDATA(pbcropDATAp(XbstsDATApbareaDATAHbltraDATAH(cransDATAآHpc3rinDATAآ colrDATA hآd e[25DATAh Xd1t[3]DATAhdv*bDATA@dspacDATA@8e [4]DATAФ@pe*etoDATAФewtyDATA`ФfrsubDATA`XfquaDATA`fondDATA8f actDATA8gft*DATAȦ8`gbkfDATAȦgizeDATAXȦghysiDATAX8h asxDATAXphrleaDATA0hgesDATA0xh%yscDATAx0PigeinDATAxiFexpDATAPi lesDATAPj!160]DATAP`jblocDATA(j0]peDATA(pkaskDATAp(HkschDATApkckrDATAHkmenDATAHlightDATAثHHlove_DATAث l+i_hDATA hثlhfoDATAh 0mr_spDATAhxm2ctioDATA@m]buDATA@ n4]vDATAЭ@`nfacDATAЭnfontDATA`ЭnggaDATA`8o3menuDATA`ondyDATA8o neltDATA8pswapDATAȯ8HpgloDATAȯptartDATAXȯppmeDATAX(q:endDATAXq4eighDATA0qxycoDATA0x@rl2tDATAx0r*froDATAxractDATAPslocaDATAP`snlocDATAPs%filDATA(tAsounDATA(pptmeenDATAp(tDclasDATAp0u]caDATAHxuutDATAHu4ivDATAشHvxPlDATAش XvrveDATA hشvbConDATAh vGrouDATAh8w"ceImDATA@wGcrEdDATA@xybNDATAж@Hx!MessDATAжx$tActDATA`жxageADATA`@yeChaDATA`yionCDATA8yonStDATA8z! DATAȸ8hz/8DATAȸz DATAXȸ{EDATAX{DATAX{1DATA0|GDATA0xH|]DATAx0|}DATAx|DATAP(}DDATAP}>DATAP~DATA(@~DATA(p~,DATAp(~74DATApXDFDATAHSaDATAHP%?|DATAؽH>DATAؽ ^DATA hؽVDATAh 0'MDATAh(DATA@+(DATA@8-6DATAп@-RDATAпHtDATA`пp= DATA`gDATA`x3\DATA8؅% DATA80#DATA8%hDATA؆0DATAX8DATAXO5DATAXW`DATA0qDATA0xȈEDATAx0@OwDATAx2DATAP wDATAPh&DATAPWDATA(H'DATA(p,2DATAp(4DATAph$ DATAHDATAHDATAH8DATA DATA hȍ2tDATAh (DATAhp1DATA@Ў]DATA@45DATA@DATAȏ/DATA`(DATA`p2'DATA`АDATA82Ȇm DATA8x\m DATA8m DATA4Тm DATAXpĨm DATAX3DATAXDATA0`6DATA0xȓDATAx01DATAxpDATAP4DATAP DATAPh4DATA(ЕDATA(pDATAp(HDATApDATAHDATAHDATAHHDATA (DATA h DATAh 0%DATAhDATA@И4DATA@8DATA@p DATADATA`DATA`HDATA`"sssDATA8КsssDATA8 !sssDATA8p5sssDATA؛!sssDATAX(+DATAX'DATAX؜ DATA0DATA0x`'DATAx0"DATAx#DATAPX8DATAP#DATAP"DATA(`DATA(pDATAp(#DATAp8DATAHDATAHDATAHDATA PDATA hDATAh DATAh(DATA@hDATA@iDATA@HDATAbDATA` DATA`h;DATA`Ф DATA8 DATA8p>DATA8.DATA@BDATAXDATAX?DATAXh;DATA0ЧDATA0xDATAx0PhDATAxDATAP0gDATAPȩ DATAPDATA(PDATA(pDATAp(تDATAp(DATAHpDATAH'DATAHBDATA cDATA h3DATAh p%DATAhȭLDATA@HDATA@DATA@DATA0DATA`xDATA`0DATA`TDATA84DATA8"DATA8H7DATADATAX0DATAXPCDATAX0DATA0 DATA0xDATAx0BDATAx`DATAPDATAP`DATAP+DATA(,DATA(p`DATAp(7DATApDATAHP'DATAHFDATAH 3`DATA3`DATA #!BPY tDATAX6 dDATA""" y-0DATA Name: 'RenderMan (.rib)...' DATABlender: 233DATAPGroup: 'Export'DATA8Tooltip: 'Save/Render a Scene to RenderMan Renderers' DATA"""DATA(RW@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 string-gDATA 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 powDATADATAtry: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 FOLDER|ADATAif (os.name != "posix"):encDATA  sys.path = ['c:\\python23']DATA@DATA$pscene = Blender.Scene.GetCurrent()DATA$camobj = scene.getCurrentCamera()DATA4camera = Blender.Camera.Get(camobj.getData().name)ODATApREEDATA# The bevent constantsDATA,exportevent = 1 # export button pressed DATA(@exitevent = 2 # exit button pressedDATA,updateguievent = 3 # update the pressedu7 DATA0filetoggleevent = 999 # file button pressed7 DATAPDATA# GUI variablesDATAfs = Create('')DATAmenuval = Create(4)DATAHdof = Create(0)DATAsamples = Create(2)DATAstop = Create(2.0)0DATAlenght = Create(1.0)DATA`distance = Create(5.0)neDATAsrate = Create(3)DATAfile = Create(0)DATA8buffer = Create(1)DATA$filename = Create("default.rib")DATA image = Create("default")DATA dirw = Create("default")DATA$ppixierenderer = Create("rndr")-x DATA$prmanrenderer = Create("prman")12DATA$dlrenderer = Create("renderdl").DATA$`bmrtrenderer = Create("rendrib")DATA(entropyrenderer = Create("entropy")x DATA$aqsisrenderer = Create("aqsis")erDATA$Xpixietexmaker = Create("texmake")DATA$prmantexmaker = Create("txmake")DATA$dltexmaker = Create("tdlmake")erDATA$Hbmrttexmaker = Create("mkmip")-JDATA$entropytexmaker = Create("mkmip")DATA$aqsistexmaker = Create("teqser")aDATA8 radiosity = Create(0)DATA radnum = Create(50)DATA gi = Create(0)DATA gisteps = Create(100)DATAP #PixieDATA indirect = Create(0)DATA occlusion = Create(0)DATA ambiSamples = Create(6)DATA ` #End PixieDATA geom = Create(1)DATA meshexport = Create(1)DATA( pointwidth = Create(1.0)DATAp anim = Create(0)DATA  maxpixeldist = Create(20)DATA maxerror = Create(0.25)DATAP rshadow = Create(1)DATA smooth = Create(0.00)DATA_areasamples = Create(20)DATA_buff256 = Create(0)DATA@`buff512 = Create(1)DATA`buff1024 = Create(0)DATA`buff2048 = Create(0)DATAamotionblur = Create(0)DATA `amotionblurframe = Create(1)DATAarendert = Create(1)DATAacaustics = Create(0)DATA@bphoton = Create(4000)DATAbuv = Create(0)DATAbrecurs = Create(4)DATAcdebug = Create(0)DATAXchiddenlayer = Create(0)DATA cglobalsettings = Create(1)DATAcscenesettings = Create(0)DATA8dshadereditor = Create(0)DATAdsurfaceshader = Create(3)DATA$dsurfaceshadername = Create("")serDATAeabout = Create(0)DATA`eshadermenu = Create(1)DATA eambientshader = Create(1.00)ADATA ediffuseshader = Create(0.50) DATA Hfspecularshader = Create(0.50)DATA$froughnessshader = Create(0.10)DATA fcoefshader = Create(1.50)DATA 8greflblurshader = Create(0.00)DATA grefrblurshader = Create(0.00)DATAgobjecteditor = Create(0)DATA hconvertbm = Create(1)DATA hhobjectshadermenu = Create(0)DATAharealightMESH = Create(0)DATA irecievecaustics = Create(0)DATA Pitransmittcaustics = Create(0)DATA(itransmittcausticsslider = Create(1.40)DATAireflsamples = Create(0)DATA@jrefrsamples = Create(0)DATAjkr = Create(1.0)DATAjrendershadow = Create(0)DATAkautogs = Create(0)DATA `kreflectcaustics = Create(0)DATAkprogress = Create(1)DATAkgain = Create(1.0)DATA@lgamma = Create(1.0)DATAllightx = Create(1.0)DATAlbias = Create(0.25)DATA mraytraceshadow = Create(1)DATAhmprojection = Create(0)DATA mtextureblurm = Create(0.0)DATAnnorm = Create(0.01)DATAHnconverttex = Create(1)DATAngisphere = Create(1)DATAnrvisibility = Create(0)DATA ofinalgather = Create(0)DATAhorgba = Create(1)DATAocastshadow = Create(1)3-DDATAoreconvert = Create(0)DATA8ptexturem = Create(' ')DATAqtexturem.val = ''DATAHqtextshader = Create('Surface "plastic" ')DATA(rtextshader.val = 'Surface "plastic"'DATArtextshaderd = Create('Displacement "bumpy" ')DATA,0ttextshaderd.val = 'Displacement "bumpy"'DATAthdritex = Create(' ')DATAXuhdritex.val = ''DATAuhdri = Create(0)DATAupreworldrafile = Create(' ')DATAvpreworldrafile.val = ''jerDATAvpreworldra = Create(0)9-MDATA8wpostworldrafile = Create(' ') DATAxpostworldrafile.val = '' DATAXxpostworldra = Create(0) .DATAxobjectrafile = Create(' ')2DATApyobjectrafile.val = ''0DATAyobjectra = Create(0)DATAztextnor = Create(0)DATA Hzilluminationmenu = Create(0)DATAzareagi = Create(0)DATAzindirectgi = Create(1)DATA({eblur = Create(0.00)DATAp{esamples = Create(1)DATA{gianim = Create(1)DATA|amesh = Create(0)DATAH|patchsize = Create(4.0)DATA|elemsize = Create(2.0)DATA|minsize = Create(1.0)8-FDATA } DATAP}# Other variablesDATA@}renderer = "PRMan |BMRT |Entropy |3Delight |AQSIS |Pixie "ngDATAd~shader = "Plastic (All)|Glass (BMRT, Entropy)|Shiny (BMRT, Entropy) |Custom (All) |BMS (All) "W@DATA`~pixelsamples = "1 Preview|2 Good|3 Recomended|4|5 To High|6|7 For DoF|8|9|10 Best and Crazy"DATAD ambiSamplesindex = "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" .DATA4sratelist = [0.25, 0.5, 1, 2, 4, 6, 8, 12, 16]erDATA@`meshex = "PointsPolygons |Polygons |SubdivSurface |Points "nDATA|Ѐillumination = "Plastic |Matte |RoughMetal |ThinPlastic |ShinyPlastic |ShinyMetal |Clay |BrushedMetal |Ceramic |Glass "-ODATA8xprojectionm = "Plane |Cylinder |Sphere |UV-Map |Auto"DATAsshader = "ADD NEW" DATA(sshader2 = ""DATAhshadernametemp = ""DATAselectedname = "" DATAselectedtype = "Type: "DATA @tmp = ""DATAximagelist = ""DATA(imagelistmenu = "No images loaded"DATA$rgbatext = "rgb |rgba |rgbz |z "DATA0`castshadowtext = "Os |opaque |shader |none"DATAtxdone = []DATAw-DATA0# Global variablesDATApincrement = 0DATAxbar = 111 DATA i = 0DATA(meshobjects = 0-MDATAhmaxblur = 10.0DATAmeshnum = 0DATA--DATA0# Create the BlenderMan directories on startup@DATAxif (os.name != "posix"):DATA rootdir = '/BlenderMan/'DATA0 partitionname = Blender.sys.progname[0:2]26DATAhelse:DATA0 rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$pdir = rootdir + dirw.val + '/'DATA4Pglobalpropertiesdir = pdir + '/GlobalProperties/'DATA0surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<displacementshadersdir = pdir + '/DisplacementShaders/'DATA0xobjectsettingsdir = pdir + '/ObjectSettings/'DATA0؊lightsettingsdir = pdir + '/LightSettings/'DATA48meshesdir = os.path.normpath(pdir + '/Meshes/')DATA$imagesdir = pdir + '/images/'DATA$shadowdir = pdir + '/shadows/'DATA(8texturesdir = pdir + '/textures/'dDATA$shadersdir = pdir + '/shaders/'DATAtry: os.mkdir(rootdir)DATA(except OSError: passDATAptry: os.mkdir(pdir)DATAexcept OSError: passDATA$try: os.mkdir(surfaceshadersdir)DATAHexcept OSError: passDATA$try: os.mkdir(globalpropertiesdir)DATAexcept OSError: passDATA((try: os.mkdir(displacementshadersdir)DATAexcept OSError: passDATAȏtry: os.mkdir(meshesdir)DATAexcept OSError: passDATA$Xtry: os.mkdir(objectsettingsdir)DATAexcept OSError: passDATA try: os.mkdir(lightsettingsdir)DATA@except OSError: pass|DATAtry: os.mkdir(shadowdir)dDATAБexcept OSError: passSSDATAtry: os.mkdir(texturesdir)DATA`except OSError: passDATAtry: os.mkdir(imagesdir)DATAexcept OSError: passDATA8DATA hdef gui():DATAT global menuval, dof, samples, stop, lenght, distance, srate, file, buffer, dirwDATAX  global filename, image, radiosity, radnum, gi, gisteps, geom, meshexport, pointwidthDATA` global anim, maxpixeldist, maxerror, smooth, areasamples, buff256, buff512, buff1024, buff2048DATAt8 global motionblur, motionblurframe, rendert, caustics, photon, uv, recurs, debug, globalsettings, scenesettingsDATAdؕ global shadereditor, sshader, surfaceshader, surfaceshadername, about, shadermenu, ambientshaderEEDATAdh 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, gammaDATAT8 global lightx, textureblurm, texturem, norm, planarm, converttex, imagelistmenu.CDATA` global textnor, illuminationmenu, projection, hiddenlayer, gisphere, rvisibility, finalgathereDATAHH global hdritex, hdri, rgba, castshadow, reconvert, maxblur, sshader2DATA` global prmanrenderer, dlrenderer, bmrtrenderer, entropyrenderer, aqsisrenderer, pixierendererDATA`P global prmantexmaker, dltexmaker, bmrttexmaker, entropytexmaker, aqsistexmaker, pixietexmakerDATA\ global preworldra, preworldrafile, postworldra, postworldrafile, objectra, objectrafileDATA@h global ambiSamples, occlusion, indirect #Pixie Ambient stuffDATA؜REEDATA4 if (autogs.val == 1): #automaticly select objects?DATA h Redraw(1)DATA getSelectedObject()DATA saveload(0,0,'object')DATA0DATA` # GUI settingsDATA8 glClearColor(0.4,0.48,0.57, 0.0) # blue backgroundL DATA  glClear(GL_COLOR_BUFFER_BIT)DATA,X glColor3f(0, 0, 0) # main black backDATA glRectf(2, 2, 630, 340)DATA0 glColor3f(0.4, 0.48, 0.57) # main blue backDATAX glRectf(4, 4, 628, 300)dDATA, glColor3f(0.27, 0.3, 0.35) # blue topDATA glRectf(4, 302, 628, 338)DATA@ glColor3f(1,1,1)DATA?DATA, # Buttons for the main BlenderMan panelsDATA| 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")DATAP shadereditor = Toggle("Shader Editor", 13, 275, 310, 100, 20, shadereditor.val, "Surface and diplacement shader settings")DATA objecteditor = Toggle("Object Editor", 33, 375, 310, 100, 20, objecteditor.val, "Edit object settings that Blender doesn't support")DATAh about = Toggle("About", 16, 475, 310, 100, 20, about.val, "Information about this script")#CDATAXDATA # Global SettingsDATA ȥ if (globalsettings.val == 1):DATA debug = Slider("Debug Level ", updateguievent, 440, 270, 180, 20, debug.val, 0, 3, 0, "How much debug information the renderer should output")DATA hiddenlayer = Number("Hidden Layer:", 0, 10, 270, 120, 20, hiddenlayer.val, 0, 20, "Objects that are present on this layer won't be exported")DATA progress = Toggle("Progressbar", updateguievent, 520, 30, 100, 20, progress.val, "Hint: It takes slightly less time to export a scene with the progressbar off")DATAP gain = Slider("Gain ", 0, 225, 270, 180, 20, gain.val, 0.0, 5.0, 0)DATAP 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")DATAH if (menuval.val != 5):DATA recurs = Slider("RaySteps ", 0, 440, 248, 180, 20, recurs.val, 0, 15, 0, "Maximum number of steps for the raytracing recursion")DATA|H 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")DATAd8 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")DATAlh image = String("Image: ", 0, 150, 100, 140, 19, image.val, 200, "Name of the rendered image(s)")DATAd dirw = String("Project: ", 500, 150, 125, 140, 19, dirw.val, 200, "Name of the project")ADATA 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")DATAH elif menuval.val == 2:vDATA| bmrtrenderer = String("Renderer: ", 0, 480, 125, 140, 19, bmrtrenderer.val, 200, "Name of the renderer executable")DATA8 bmrttexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, bmrttexmaker.val, 200, "Name of the mipmap texture making executable")DATA elif menuval.val == 3:DATA8 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:qDATAx dlrenderer = String("Renderer: ", 0, 480, 125, 140, 19, dlrenderer.val, 200, "Name of the renderer executable")DATA dltexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, dltexmaker.val, 200, "Name of the mipmap texture making executable")5DATAP elif menuval.val == 5:)ADATA aqsisrenderer = String("Renderer: ", 0, 480, 125, 140, 19, aqsisrenderer.val, 200, "Name of the renderer executable")-DATAH aqsistexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, aqsistexmaker.val, 200, "Name of the mipmap texture making executable")DATA elif menuval.val == 6:15 DATAP pixierenderer = String("Renderer: ", 0, 480, 125, 140, 19, pixierenderer.val, 200, "Name of the renderer executable")DATA 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")DATAh rendert = Toggle("Render", updateguievent, 220, 30, 69, 19, rendert.val, "Start the renderer after the export is done")ADATAl file = Toggle("File", filetoggleevent, 150, 50, 70, 20, file.val, "Render the image to a file")DATAl buffer = Toggle("Buffer", 5, 220, 50, 70, 20, buffer.val, "Render the image to the framebuffer")DATALH Button("Exit", exitevent, 385, 30, 75, 20, "Exit the script")DATAP Button("Export", exportevent, 310, 30, 74, 20, "Start the export")DATAX@ 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")DATAP glRasterPos2i(310, 80)DATA Text("Samples")DATA glRasterPos2i(310, 105)DATAP Text("ShRate")DATA glRasterPos2i(310, 130)DATAؚ Text("Renderer")DATA glRasterPos2i(310, 155)|ADATA` 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))DATAP # 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 # Progressbar}DATA glColor3f(0, 0, 0)DATA$ؠ glRectf(10, 10, xbar + 1, 20)iDATA ( glColor3f(0.78, 0.7, 0.8)}DATA x glRectf(10, 11, xbar, 20)}DATA ȡ 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):qDATA\ postworldrafile = String("File: ", 0, 190, 40, 430, 20, postworldrafile.val, 100)DATA if (menuval.val != 2):iDATAxȦ dof = Toggle("Depth Of Field", updateguievent, 440, 270, 180, 20, dof.val, "Depth of field of the camera")|DATAp if (dof.val == 1):gDATAt stop = Slider("Stop ", 0, 440, 250, 180, 20, stop.val, 0, 100, 0, "Focal Stop. The camera's aperture")dDATAX lenght = Slider("Lenght ", 0, 440, 230, 180, 20, lenght.val, 0, 10, 0, "Focal Lenght. Lenght of the camera's lens")DATA distance = Slider("Distance ", 0, 440, 210, 180, 20, distance.val, 0, 20, 0, "Focal Distance. Distance at which the camera is focused")DATAȩ motionblur = Toggle("Motion Blur", updateguievent, 225, 170, 180, 20, motionblur.val, "Apply blur to objects in motion")REEDATA x if (motionblur.val == 1):DATAȪ motionblurframe = Slider("Frames ", 0, 225, 150, 180, 20, motionblurframe.val, 1, 10, 0, "How much blur to apply based on how many frames to take into account")DATA if (menuval.val == 3):DATA hdri = Toggle("HDRI", updateguievent, 225, 120, 180, 20, hdri.val, "Sets up a sphere that emits light filtered by a HDRI image")DATA if (hdri.val == 1):DATAt hdritex = String("HDRI Texture: ", 0, 225, 100, 280, 20, hdritex.val, 100, "Flie name of the HDRI image")DATA4 if ((menuval.val == 2) or (menuval.val == 3)):DATA| gi = Toggle("Global Illumination", 6, 10, 270, 180, 20, gi.val, "Uses advanced algorithms for realstic lighting")^+DATA if (gi.val == 1):;< DATAخ indirectgi = Toggle("Indirect", 475, 10, 250, 90, 20, indirectgi.val, "Calculate GI from light bouncing between objects")DATA| areagi = Toggle("Area", 476, 100, 250, 90, 20, areagi.val, "Sets up a big sphere that generates skydome lighting")DATAx0 gisteps = Slider("Steps ", 0, 10, 230, 180, 20, gisteps.val, 0, 600, 0, "Controls the detail of the solution")DATA ذ if (indirectgi.val == 1):DATA ( if (finalgather.val == 0):DATAx maxerror = Slider("MaxError ", 0, 10, 210, 180, 20, maxerror.val, 0.01, 0.50, 0, "Smaller numbers cause recomputation to happen more often")DATA@ maxpixeldist = Slider("MPixelDis ", 0, 10, 190, 180, 20, maxpixeldist.val, 0.00, 40.00, 0, "Smaller numbers cause recomputation to happen more often")roDATA gianim = Toggle("Animate GI", updateguievent, 10, 170, 180, 20, gianim.val, "Recompute GI for every frame in the animation")DATAȳ gisphere = Toggle("GI Sphere", 0, 10, 150, 180, 20, gisphere.val, "Sets up a big sphere that generates skydome lighting") DATA if (menuval.val == 3):DATAȴ finalgather = Toggle("Final Gather", updateguievent, 10, 130, 180, 20, finalgather.val, "More precise, but slower form of GI") DATA if (menuval.val == 2)::0DATAȵ radiosity = Toggle("Radiosity", 7, 225, 270, 180, 20, radiosity.val, "Calculate GI from light bouncing between objects")DATA x if (radiosity.val == 1):eDATAȶ radnum = Slider("Steps ", 0, 225, 250, 180, 20, radnum.val, 0, 1000, 0, "Number of stepes for the radiosity calculation")DATAx patchsize = Slider("Patchsize", 0, 225, 230, 180, 20, patchsize.val, 0.0, 10.0, 0, "Smaller numbers cause recomputation to happen more often")DATA@ elemsize = Slider("Elemsize ", 0, 225, 210, 180, 20, elemsize.val, 0.0, 6.0, 0, "Smaller numbers cause recomputation to happen more often")DATA minsize = Slider("Minsize ", 0, 225, 190, 180, 20, minsize.val, 0.0, 3, 0, "Smaller numbers cause recomputation to happen more often")ODATA$ if (menuval.val == 6): #Pixie!!!DATAd gi = Toggle("Global Illumination", 6, 10, 270, 180, 20, gi.val, "Fast Global Illumination")DATA if (gi.val):DATA indirect = Toggle("Indirect", 475, 10, 250, 90, 20, indirect.val, "Calculate GI from light bouncing between objects")DATA occlusion = Toggle("Occlusion", 476, 100, 250, 90, 20, occlusion.val, "Sets up a big sphere that generates skydome lighting")DATAH glRasterPos2i(30, 235)ADATA$ Text("Samples:", "normal")DATAx ambiSamples = Menu(ambiSamplesindex, updateguievent, 90, 230, 100, 20, ambiSamples.val, "Smoothness of shading")DATA # Shader editorDATA Ƚ if (shadereditor.val == 1):DATAd surfaceshader = Menu(sshader, 14, 10, 270, 20, 20, surfaceshader.val, "Choose shader")DATA  if (surfaceshader.val != 0):@DATA` surfaceshadername = String("SH: ", 17, 30, 270, 140, 20, surfaceshadername.val, 200)DATAD Button("X", 15, 171, 270, 20, 20, "Delete shader")S_DATA if surfaceshadername.val:DATAD@ Button("Test Render Shader", 19, 220, 230, 150, 20)DATAD Button("Set default values", 340, 380, 230, 150, 20)DATAL  shadermenu = Menu(shader, 32, 10, 230, 200, 20, shadermenu.val)DATA  if (shadermenu.val != 4):DATAl ambientshader = Slider("Ambient (Ka) ", 32, 10, 200, 300, 20, ambientshader.val, 0.00, 1.00, 0)DATAl diffuseshader = Slider("Diffuse (Kd) ", 32, 10, 175, 300, 20, diffuseshader.val, 0.00, 1.00, 0)DATAl specularshader = Slider("Specular (Ks) ", 32, 10, 150, 300, 20, specularshader.val, 0.00, 1.00, 0)DATAp roughnessshader = Slider("Roughness ", 32, 10, 125, 300, 20, roughnessshader.val, 0.00, 1.00, 0)DATA P if (shadermenu.val == 2):DATAh coefshader = Slider("Coefficient (eta)", 32, 10, 100, 300, 20, coefshader.val, 0.00, 3.00, 0)DATAt8 reflblurshader = Slider("Reflect Blur (blur)", 32, 10, 75, 300, 20, reflblurshader.val, 0.00, 1.00, 0)DATAt refrblurshader = Slider("Refract Blur (refrblur)", 32, 10, 50, 300, 20, refrblurshader.val, 0.00, 1.00, 0)DATAhx reflsamples = Slider("Reflect Samples ", 32, 315, 200, 300, 20, reflsamples.val, 0, 30, 0)}@DATAd refrsamples = Slider("Refract Samples ", 32, 315, 175, 300, 20, refrsamples.val, 0, 30, 0)DATAP kr = Slider("Kr ", 32, 315, 150, 300, 20, kr.val, 0.0, 2.0, 0)DATA  if (shadermenu.val == 3):DATAtp reflblurshader = Slider("Reflect Blur (blur)", 32, 10, 100, 300, 20, reflblurshader.val, 0.00, 1.00, 0)WDATAd reflsamples = Slider("Reflect Samples ", 32, 10, 75, 300, 20, reflsamples.val, 0, 30, 0)DATA  elif (shadermenu.val == 4):DATA glRasterPos2i(10, 200)DATA8 Text('Surface Shader')DATAP textshader = String("", 32, 10, 175, 600, 20, textshader.val, 100)iDATA glRasterPos2i(10, 150)DATA H Text('Displacement Shader')DATAP textshaderd = String("", 32, 10, 125, 600, 20, textshaderd.val, 100)DATA 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  elif (shadermenu.val == 5):DATAPH projection = Menu(projectionm, 32, 315, 200, 180, 20, projection.val)DATAT texturem = String("Texture: ", 32, 315, 180, 280, 20, texturem.val, 100)DATATH converttex = Menu(imagelistmenu, 368, 595, 180, 20, 20, converttex.val)&DATA@ Button("Convert and Reload", 367, 495, 200, 120, 20)jDATAh8 textureblurm = Slider("Texture Blur ", 32, 315, 160, 300, 20, textureblurm.val, 0.0, 1.0, 0)DATAd norm = Slider("Bump Height ", 32, 315, 140, 300, 20, norm.val, 0.0, 10.0, 0)dDATAH` textnor = Toggle("Nor", 32, 315, 120, 60, 20, textnor.val)dDATA\ illuminationmenu = Menu(illumination, 32, 375, 120, 120, 20, illuminationmenu.val)DATA`dDATA # Object editoriDATA  if (objecteditor.val == 1):}DATAh  autogs = Toggle("Auto getSelected (drains cpu)", updateguievent, 10, 10, 180, 20, autogs.val)dDATA if (autogs.val == 0):DATA8 Button("Get Selected", 34, 10, 30, 180, 20)DATAh glRasterPos2i(200, 35)}DATA  Text('Name: ' + selectedname)DATA glRasterPos2i(200, 15)|DATAH Text(selectedtype)dDATA( if (selectedtype == 'Type: Mesh'):DATA objectra = Toggle("Object ReadArchive", 18, 10, 60, 180, 20, objectra.val, "Add a ReadArchive to a user-defined file just after object's AttributeBegin")iDATA if (objectra.val == 1):DATAX objectrafile = String("File: ", 18, 190, 60, 430, 20, objectrafile.val, 100)iDATAP convertbm = Toggle("Use Shader", 18, 10, 220, 180, 20, convertbm.val)DATA if (convertbm.val == 1):DATA,P namelist = string.split(sshader, "|")DATA  namelist.remove('ADD NEW')DATA$ namelist = map(str, namelist)DATA,H sshader2 = string.join(namelist, "|")DATA  if (len(sshader2) == 0):DATA glRasterPos2i(10, 205)DATA$8 Text("No shaders available.")DATA  else:DATA\ objectshadermenu = Menu(sshader2, 18, 10, 200, 180, 20, objectshadermenu.val)DATAtH geom = Toggle("Export Geometry", 18, 230, 270, 180, 20, geom.val, "Output the mesh geometry to a RIB file")DATA if (geom.val == 1):DATAL0 meshexport = Menu(meshex, 18, 230, 250, 180, 20, meshexport.val)DATAx amesh = Toggle("Animated Mesh", 18, 230, 230, 120, 20, amesh.val, "Turn this on if the mesh deforms in time")DATA P if (meshexport.val != 4):DATA uv = Toggle("ExportUV", 18, 350, 230, 60, 20, uv.val, "Exports and converts the UV map attached to the object (if there is one)")DATA X else:DATA pointwidth = Slider("Width ", 18, 230, 180, 180, 20, pointwidth.val, 0.0, 10.0, 0, "Radius of the Points primitive")DATA0@ if (menuval.val == 2) or (menuval.val == 3):DATA rvisibility = Toggle("Hide Source", 18, 230, 200, 180, 20, rvisibility.val, "Hides the object from primary rays")DATA4P if ((menuval.val == 2) or (menuval.val == 3)):DATA| arealightMESH = Toggle("AreaLight", 18, 10, 270, 180, 20, arealightMESH.val, "Use the object as an area light")DATA$X if (arealightMESH.val == 1):DATA areasamples = Slider("AreaSamp ", 18, 10, 250, 180, 20, areasamples.val, 0, 400, 0, "Controls the graininess of the area light")DATAd` recievecaustics = Toggle("Recieve Caustics", 18, 440, 270, 180, 20, recievecaustics.val)DATAd reflectcaustics = Toggle("Reflect Caustics", 18, 440, 250, 180, 20, reflectcaustics.val)DATAh transmittcaustics = Toggle("Transmitt Caustics", 18, 440, 230, 180, 20, transmittcaustics.val)DATA( if (transmittcaustics.val == 1):"' DATAp transmittcausticsslider = Slider("IOR ", 18, 440, 210, 180, 20, transmittcausticsslider.val, 0.00, 2.20, 0, "Index of refraction")`DATA( if (menuval.val != 5):DATAp glRasterPos2i(10, 165)DATA  Text('Raytraced Shadows')DATA 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(0 if (selectedtype == 'Type: Lamp'):DATA4 if ((menuval.val == 2) or (menuval.val == 3)):DATA caustics = Toggle("Caustics", 18, 230, 270, 180, 20, caustics.val, "Turn on photon emission used for caustics calculations")DATAL if ((caustics.val == 1) & ((menuval.val == 2) or (menuval.val == 3))):DATAt photon = Slider("Photons ", 18, 230, 250, 180, 20, photon.val, 4000, 80000, 0, "Number of photons emitted")DATA0 lampobj = Blender.Object.Get(selectedname)DATA4 lamp = Blender.Lamp.Get(lampobj.getData().name)DATAHx if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATA if (menuval.val != 5):DATAt8 raytraceshadow = Toggle("Ray Shadow", 245, 100, 270, 90, 20, raytraceshadow.val, "Use raytraced shadows")DATA if lamp.type == 2:DATAh  rendershadow = Toggle("Ren Shadow", 244, 10, 270, 90, 20, rendershadow.val, "Use shadowmaps")xDATA( prmanshadowbuttonsposition = 270@DATA  if (rendershadow.val == 1):DATA`` bias = Slider("Bias ", 18, 10, 210, 180, 20, bias.val, 0.0, 1.0, 0, "Shadowmap bias")DATA  if (rendershadow.val == 1):DATA\@ buff256 = Toggle("256", 8, 10, 190, 42, 20, buff256.val, "Shadowmap resolution")DATA\ buff512 = Toggle("512", 9, 52, 190, 42, 20, buff512.val, "Shadowmap resolution")DATA`P buff1024 = Toggle("1024", 10, 95, 190, 48, 20, buff1024.val, "Shadowmap resolution")DATA` buff2048 = Toggle("2048", 11, 143, 190, 48, 20, buff2048.val, "Shadowmap resolution")DATAHp if (lamp.getMode() & lamp.Modes['Shadows']) and (lamp.type != 3):DATAp if ((((menuval.val == 1) or (menuval.val == 3)) and (raytraceshadow.val == 1)) or (rendershadow.val == 1)):DATAd eblur = Slider("Blur ", 18, 10, 250, 180, 20, eblur.val, 0.0, maxblur, 0, "Shadow blur")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)92DATA0 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("_______________________________________________________________________________________")0DATA@ glRasterPos2i(10, 200)`DATA4 Text("Thanks to sgefant for the name suggestion")DATA glRasterPos2i(10, 180)7-JDATAp0 Text("Thanks to Phillipe Crassous for helping me fix the spotlight rotation bug and other code improvements")DATA glRasterPos2i(10, 160)37DATA< Text("Thanks to desaster and #python for syntax help")DATA glRasterPos2i(10, 140)DATAX Text("Thanks to K-Rich, Macke, Kib_Tph, sgefant and #Blender3d for pre-beta testing")DATAP glRasterPos2i(10, 120)b-0DATA< Text("Thanks to Jan Walter for the basic exporting code")DATA glRasterPos2i(10, 100)DATA4H Text("Thanks to svo for the pointspolygon code")DATA glRasterPos2i(10, 80)DATA4 Text("Thanks to nishin for alpha/beta-testing")-DATAP glRasterPos2i(10, 60)DATA4 Text("Thanks to eeshlo for the totiff module")sDATA glRasterPos2i(10, 40)DATAT@ Text("Thanks to DetectiveThorn for the help with the light intensity conversion")DATADATAdef event(evt, val):DATA$8 if (evt == ESCKEY and not val): DATA  Exit()DATA, if (evt == ACCENTGRAVEKEY and not val): DATA  export()DATAPDATAdef bevent(evt):DATAp global sshader, increment, pdir, maxblur, imagelist, imagelistmenu, imagelisttif, shadernametemp, selectednameDATA(` if (evt == 500): # Change projectDATA  newdirs()DATA  surfaceshadername.val = ""DATA@ sshader = "ADD NEW"DATA try: DATA4 f = open(surfaceshadersdir + 'ShaderNames','r')DATA  saveShaderName(0)DATA h except:DATA saveShaderName(1)DATA resetObject()DATA( saveload(0, 0, 'object')DATAp saveload(0, 0, 'global')DATA  Register (gui, event, bevent)DATA0 if (evt == exportevent): # Export buttonDATA h export()DATA, if (evt == exitevent): # Exit buttonDATA  Exit()DATA00 if (evt == updateguievent): # Update GUIDATA  Register (gui, event, bevent)DATA0 if (evt == filetoggleevent): # File toggleDATA@ file.val = 1DATA buffer.val = 0DATA  Register (gui, event, bevent)DATA( if (evt == 5): # Buffer toggleDATAh file.val = 0DATA buffer.val = 1DATA  Register (gui, event, bevent)DATA48 if (evt == 6): # Global Illumination toggleDATA radiosity.val = 0DATA  Register (gui, event, bevent)DATA(( if (evt == 7): # Radiosity toggleDATA gi.val = 0DATA  Register (gui, event, bevent)DATA0  if (evt == 8): # Shadow buffer buttonsDATAp  if (buff256.val == 1):DATA  buff512.val = 0DATA  buff1024.val = 0DATA8  buff2048.val = 0DATAx  saveload(1,0,'object')DATA  Register (gui, event, bevent)DATA0  if (evt == 9): # Shadow buffer buttonsDATAp  if (buff512.val == 1):DATA  buff256.val = 0ADATA  buff1024.val = 0DATA8  buff2048.val = 0DATAx  saveload(1,0,'object')e{ADATA  Register (gui, event, bevent)DATA0  if (evt == 10): # Shadow buffer buttonsDATAp  if (buff1024.val == 1):DATA  buff512.val = 0DATA  buff256.val = 0DATA8 buff2048.val = 0DATAx saveload(1,0,'object')DATA  Register (gui, event, bevent)DATA0 if (evt == 11): # Shadow buffer buttonsDATAp if (buff2048.val == 1):DATA buff512.val = 0DATA buff1024.val = 0DATA8 buff256.val = 0DATAx saveload(1,0,'object')DATA  Register (gui, event, bevent)DATA if (evt == 12):`DATAP globalsettings.val = 1`DATA 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 = 0`DATAh 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))PPDATA@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 deletePDATA$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 = 0 DATA0@, elif deleteshader < objectshadermenu.val:DATA8, objectshadermenu.val = objectshadermenu.val - 1DATA- saveload(1,0,'object')DATA P- selectedname = tempselectedDATA- saveload(0,0,'object')matDATA - 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, "|")2YDATA</ namelist[surfaceshader.val - 1] = surfaceshadername.valDATA(0 sshader = string.join(namelist, "|")DATAp0 saveload(1,0,'shader')DATA0 saveShaderName(1)DATA$1 Register (gui, event, bevent) EEDATAP1 if (evt == 18):DATA1 saveload(1,0,'object')DATA 1 Register (gui, event, bevent)DATA(2 if (evt == 19):DATA8h2 testrender = open('%s/testrender.rib'%rootdir, 'w')DATA<2 testrender.write('Projection "perspective" "fov" 40\n')DATA,83 testrender.write('Format 320 240 1\n')REEDATA3 if (rgba.val == 1):DATA3 channels = "rgb"DATA4 elif (rgba.val == 2):DATA`4 channels = "rgba"@DATA4 elif (rgba.val == 3):DATA4 channels = "rgbz"DATA85 elif (rgba.val == 4):DATA5 channels = "z"DATAL5 testrender.write('Display "Test Render" "framebuffer" "%s"\n'%channels)DATAL86 testrender.write('Option "searchpath" "texture" ["%s"]\n'%texturesdir)E DATA(6 testrender.write('Exposure 1 1.2\n')DATA,7 testrender.write('PixelSamples 1 1\n')DATA(`7 testrender.write('Translate 0 0 5\n')DATA,7 testrender.write('Rotate -120 1 0 0\n')DATA(8 testrender.write('Rotate 25 0 0 1\n')DATA$h8 testrender.write('WorldBegin\n')DATA08 if (menuval.val == 1) or (menuval.val == 4):DATAH9 testrender.write('\tAttribute "visibility" "integer trace" [1]\n')IDATA9 if (menuval.val == 3):DATAD9 testrender.write('\tAttribute "visibility" "reflection" [1]\n')EDATA@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):REEDATAP; testrender.write('\tAttribute "render" "string casts_shadows" ["shade"]\n')DATAHx< if (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):IDATA< 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')dDATA? testrender.write('\tLightSource "spotlight" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float shadowsamples" [1]\n')EEDATA@ 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')DATAA testrender.write('\tLightSource "shadowspot" 2 "intensity" 10 "from" [0 -3 4] "to" [0 0 0] "string shadowname" ["shadow"] "float samples" [1]\n')REEDATA$pB elif (menuval.val == 6): #Pixie!DATALB testrender.write('\tAttribute "visibility" "transmission" "opaque"\n') DATA8C 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')DATAD 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,E testrender.write('\tAttributeBegin\n')DATA F name = 'foobar'DATA`F meshobj = 10DATAtF testrender.write('\t\tAttribute "displacementbound" "string coordinatesystem" ["object"] "float sphere" [1]\n')W@DATA,@G writeShader(testrender, name, meshobj, 0)DATA0G testrender.write('\t\tSphere 1 -1 1 360\n')DATA(G testrender.write('\tAttributeEnd\n')DATA,PH testrender.write('\tAttributeBegin\n')REEDATA4H if ((menuval.val == 2) or (menuval.val == 3)):DATA0I testrender.write('\tSurface "oakplank"\n')EEDATA4hI elif (menuval.val == 4) or (menuval.val == 1):tDATA0I testrender.write('\tSurface "rmarble"\n')sDATA4(J elif (menuval.val == 5) or (menuval.val == 6):REEDATA,J testrender.write('\tSurface "matte"\n')DATA<J testrender.write('\tPointsPolygons [4 ] [0 3 2 1 ]\n')DATA`HK 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(K testrender.write('\tAttributeEnd\n')DATA$0L testrender.write('WorldEnd\n')xDATAL testrender.close()DATA(L render('%s/testrender.rib'%rootdir)DATA( M if (evt == 20): # Load settingsDATAxM loadSettings()DATA M Register (gui, event, bevent)DATA(N if (evt == 21): # Save settings@DATA`N saveSettings()|DATA N Register (gui, event, bevent)DATAN if (evt == 30):DATA0O saveload(0, 0, 'global')DATA xO Register (gui, event, bevent)DATAO if (evt == 31):DATAP saveload(1, 0, 'global')BDATA PP Register (gui, event, bevent)DATAP if (evt == 32):DATAP saveload(1,0,'shader')/DATA (Q Register (gui, event, bevent)DATAxQ if (evt == 34):DATA Q worked = getSelectedObject()DATAR if (worked == 1):DATAHR resetObject()E DATA$R Register (gui, event, bevent)upSDATAR saveload(0,0,'object')DATA S Register (gui, event, bevent)DATApS if (evt == 244):@ADATAS rendershadow.val = 1DATAS raytraceshadow.val = 0RW@DATA@T saveload(1,0,'object')DATAT if (eblur.val > 0.2):DATAT eblur.val = 0.2DATAU maxblur = 0.2DATA PU Register (gui, event, bevent)DATAU if (evt == 245):YDATAU rendershadow.val = 0DATA(V raytraceshadow.val = 1DATApV saveload(1,0,'object')DATAV maxblur = 10.0DATA V Register (gui, event, bevent)DATAHW if (evt == 475):DATAW indirectgi.val = 1REEDATAW areagi.val = 0DATA X Register (gui, event, bevent)DATA`X if (evt == 476):IDATAX indirectgi.val = 0DATAX areagi.val = 1DATA (Y Register (gui, event, bevent)DATA,xY if (evt == 367): # Convert textures DATA(Y imagelist = os.listdir(texturesdir) DATA(Z if (imagelist != []):DATApZ for image in imagelist:DATA,Z rawimage = '%s/%s'%(texturesdir, image)DATA$[ totiff.SetOutDir(texturesdir)GDATA(`[ ok = totiff.ConvertShort(rawimage)DATA$[ if not ok[0]: # error occurredEDATA(\ print ok[1] # print error messageEDATA(`\ imagelist = os.listdir(texturesdir) DATA\ imagelisttif = []IDATA] for image in imagelist:DATA H] if (image[-3:] == 'tif'):= DATA,] imagelisttif = imagelisttif + [image]EDATA4] 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, "|")DATA8a texturem.val = str(imagelisttif[converttex.val - 1])DATAa saveload(1,0,'shader')?DATA a Register (gui, event, bevent)DATA bRegister (gui, event, bevent)DATAhbDATAbdef getSelectedObject():DATA@b global selectedname, selectedtype, namelist, sshader2, sshaderDATAPc try:DATA0c selected = Blender.Object.GetSelected()[0]REEDATA c except:o SDATA d return 0|DATA Xd selectedname = selected.namensDATA$d if (selected.getType() == "Mesh"):DATA d selectedtype = 'Type: Mesh'DATA(He elif (selected.getType() == "Lamp"):DATA e selectedtype = 'Type: Lamp'DATAe else:cDATA (f selectedtype = 'Type: Other'DATA(xf namelist = string.split(sshader, "|")DATAf namelist.remove('ADD NEW')DATA g namelist = map(str, namelist)DATA(hg sshader2 = string.join(namelist, "|")DATA g return 1DATAg DATA((hdef saveload(save, exportS, module):DATAh if (module == 'shader'):DATAh Variables = [shadermenu.val, ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, coefshader.val, DATAxi reflblurshader.val, refrblurshader.val, reflsamples.val, refrsamples.val, kr.val, textshader.val, textshaderd.val, texturem.val,DATAT(j textureblurm.val, norm.val, textnor.val, illuminationmenu.val, projection.val]DATAj if exportS:DATA,j namelist = string.split(sshader, "|")DATA0@k name = namelist[objectshadermenu.val - 1]DATA k else: DATA k name = surfaceshadername.valDATA(l if (name == ''):DATA hl returnDATA$l fname = surfaceshadersdir + nameDATAl if (module == 'object'):DATAl8m Variables = [convertbm.val, objectshadermenu.val, geom.val, meshexport.val, uv.val, arealightMESH.val, DATAxm areasamples.val, recievecaustics.val, transmittcaustics.val, transmittcausticsslider.val, caustics.val, photon.val, DATApxn rendershadow.val, buff256.val, buff512.val, buff1024.val, buff2048.val, eblur.val, esamples.val, amesh.val, DATAho reflectcaustics.val, raytraceshadow.val, bias.val, rvisibility.val, castshadow.val, pointwidth.val, DATA$o objectra.val, objectrafile.val]DATA,p fname = objectsettingsdir + selectednameDATAXp if (selectedname == ''): DATA p returnDATAp if (module == 'global'):DATA| q Variables = [gi.val, gisteps.val, radiosity.val, radnum.val, dirw.val, image.val, filename.val, file.val, buffer.val, DATAxq anim.val, rendert.val, menuval.val, samples.val, srate.val, debug.val, maxerror.val, maxpixeldist.val, geom.val, DATAppr motionblur.val, motionblurframe.val, dof.val, stop.val, lenght.val, distance.val, autogs.val, progress.val, DATAxs indirectgi.val, areagi.val, gianim.val, patchsize.val, elemsize.val, minsize.val, recurs.val, gain.val, gamma.val, DATAps lightx.val, hiddenlayer.val, gisphere.val, finalgather.val, hdri.val, hdritex.val, rgba.val, reconvert.val, DATAtXt prmanrenderer.val, bmrtrenderer.val, entropyrenderer.val, dlrenderer.val, aqsisrenderer.val, pixierenderer.val,DATAtt prmantexmaker.val, bmrttexmaker.val, entropytexmaker.val, dltexmaker.val, aqsistexmaker.val, pixietexmaker.val,DATA|u preworldra.val, preworldrafile.val, postworldra.val, postworldrafile.val, ambiSamples.val, occlusion.val, indirect.val]DATA4@v fname = globalpropertiesdir + 'GlobalProperties'DATAv # Save variablesDATAv if (save == 1):DATA w f = open(fname,'w')DATA$hw writeln(f,'BlenderMan0.1Beta9.0')DATAw for i in Variables:DATA x writeln(f,type(i).__name__)DATAPx if (i == '\n'):DATAx writeln(f,'')DATAx continueDATAy writeln(f,i)DATAPyDATAy # Load variablesDATAy if (save == 0):DATAz try:DATA8z f = open(fname,'r')DATA z except: DATA z returnDATA z 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]PPDATA  stop.val = Variables[21]PDATA  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]ffDATA$ 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]mDATA( prmantexmaker.val = Variables[49]mmDATA$ 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]uuDATA$ 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( DATAXdef 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 passDATAبdef 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):PDATA global sshaderDATA<ȫ if save: f = open(surfaceshadersdir + 'ShaderNames','w')PDATA80 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)DATAȮDATAsaveShaderName(0)DATA 8Register (gui, event, bevent)DATAsshader2 = sshaderDATAȯDATADATA(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)PDATA$ os.mkdir(displacementshadersdir)DATA os.mkdir(meshesdir)PDATA 0 os.mkdir(objectsettingsdir)PDATA  os.mkdir(lightsettingsdir)DATAи os.mkdir(shadowdir)DATA os.mkdir(texturesdir)DATA` os.mkdir(imagesdir)DATA except OSError: DATA passDATA DATA,Pdef 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): xDATAT ribfile.write('DepthOfField %s %s %s\n'%(stop.val, lenght.val, distance.val))ǺDATA<` ribfile.write('ShadingRate %s\n'%sratelist[srate.val - 1])DATA4 if ((radiosity.val == 1) & (menuval.val == 2)):DATA@( ribfile.write('Option "radiosity" "steps" [%s]\n'%radnum.val)DATAH ribfile.write('Attribute "indirect" "maxerror" [%s]\n'%maxerror.val)DATAX ribfile.write('Attribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)PPDATAP ribfile.write('Attribute "radiosity" "float patchsize" [%s]'%patchsize.val)DATAL ribfile.write('Attribute "radiosity" "float elemsize" [%s]'%elemsize.val)DATAL ribfile.write('Attribute "radiosity" "float minsize" [%s]'%minsize.val)DATA if (motionblur.val == 1):DATA$P ribfile.write('Shutter 0 1\n')DATA0 if (menuval.val == 1) or (menuval.val == 4):DATAH ribfile.write('Option "trace" "integer maxdepth" [%s]\n'%recurs.val)DATA0x elif (menuval.val == 2) or (menuval.val == 3):DATAD ribfile.write('Option "render" "max_raylevel" [%s]\n'%recurs.val)DATALH ribfile.write('Option "statistics" "integer endofframe" [%s]\n'%debug.val)DATA0 if ((indirectgi.val == 1) & (gi.val == 1)):DATA,  if ((gianim.val == 0) & (frames2 == 0)):DATAPx ribfile.write('Option "indirect" "string savefile" ["%s/irr.dat"]\n'%pdir)DATA0 elif ((frames2 > 0) or (gianim.val == 1)):DATAX if (anim.val == 1):DATAP ribfile.write('Option "indirect" "string seedfile" ["%s/irr.dat"]\n'%pdir)DATA  if (menuval.val == 3):DATA@h ribfile.write('Option "indirect" "integer maxbounce" [3]\n')DATADATADATA(8def writeTransform(ribfile, lampobj):PDATA global cframeDATA Blender.Get('curframe')DATA Blender.Window.RedrawAll()DATA` if (lampobj == 0):DATA$ camobj = scene.getCurrentCamera()DATA 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],IDATA caminvmatrix[2][0],IDATA caminvmatrix[2][1],IDATAH -caminvmatrix[2][2],DATA caminvmatrix[2][3],DATA caminvmatrix[3][0],DATA  caminvmatrix[3][1],DATAh -caminvmatrix[3][2],DATA caminvmatrix[3][3]))DATADATA(def ambientLight(ribfile):DATA p if Blender.World.Get() != []:DATA$ world = Blender.World.Get()[0]DATA( if (occlusion.val) or (indirect.val):DATAHh ribfile.write('\tAttribute "visibility" "transmission" "opaque"\n')DATA else:DATA ribfile.write('\tLightSource "ambientlight" 998 "float intensity" [1] "color lightcolor" [%s %s %s]\n\n'%(world.amb[0], world.amb[1], world.amb[2]))DATADATAdef checkLamps(ribfile):DATAX global selectednameDATA lampnum = 0DATA( for objects in Blender.Object.Get():DATA8 name = objects.getName()DATA$ if (objects.getType() == "Lamp"):DATA lampnum += 1DATA resetObject()DATAP selectedname = nameDATA$ Register (gui, event, bevent)DATA saveload(0,0,'object')DATA$0 Register (gui, event, bevent)DATA( writeLamps(ribfile, name, lampnum)DATA ribfile.write("\n")DATA DATA(Pdef renderShadows(ribfile, frames2):DATA$ global selectedname, partitionnameDATA( display = Blender.Scene.GetCurrent()DATA$P cframe = Blender.Get('curframe')DATA( for objects in Blender.Object.Get():DATA name = objects.getName()DATA$@ if (objects.getType() == "Lamp"):DATA resetObject()DATA$ Register (gui, event, bevent)DATA  selectedname = nameDATAh saveload(0,0,'object')DATA$ Register (gui, event, bevent)DATA  if (rendershadow.val == 1):DATAP if (anim.val == 1):DATA, shadowframe = Blender.Get('curframe')DATA  else:DATA( shadowframe = ''DATAHp ribfiledir = os.path.normpath(shadowdir + name + str(shadowframe))DATA( shadowrib = open(ribfiledir, 'w')DATA4@ if ((menuval.val == 4) & (os.name != "posix")):DATA ribfile.write('ReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + shadowdir + name + str(shadowframe))))))DATA h else:DATAP ribfile.write('ReadArchive "%s"\n'%(shadowdir + name + str(shadowframe)))DATA(  shadowrib.write('FrameBegin 0\n')DATA(x lampobj = Blender.Object.Get(name)DATA4 lamp = Blender.Lamp.Get(lampobj.getData().name)DATA|0 if ((lamp.getMode() & lamp.Modes['Shadows']) & (lamp.type == 2)): # if it is set to render shadow and is a spotlightDATA if (buff256.val == 1):DATA  buffer = 256DATA ` elif (buff512.val == 1):DATA buffer = 512DATA  elif (buff1024.val == 1):DATA@ buffer = 1024DATA  elif (buff2048.val == 1):DATA buffer = 2048DATAP shadowrib.write('Projection "perspective" "fov" %s\n' %(lamp.spotSize))DATA, shadowrib.write('PixelSamples 1 1\n')DATA4 if (menuval.val != 2) and (menuval.val != 3):DATADH shadowrib.write('Hider "hidden" "depthfilter" "midpoint"\n')DATA if (menuval.val == 3):DATA4 shadowrib.write('PixelFilter "min" 1 1\n')DATA ` else:DATA4 shadowrib.write('PixelFilter "box" 1 1\n')DATA8 shadowrib.write('Hider "hidden" "jitter" [0]\n')DATA(` writeTransform(shadowrib, lampobj)DATA< shadowrib.write('Format %s %s 1\n'%(buffer, buffer))DATA\  shadowrib.write('Display "%s/%s%s.pic" "zfile" "z"\n'%(shadowdir, name, shadowframe))DATA if menuval.val == 5:DATA, shadowrib.write('ShadingRate 1\n')DATA H else:DATA, shadowrib.write('ShadingRate 4\n')DATA( shadowrib.write('WorldBegin \n')DATA0 shadows = 1DATA8p createObjects(shadowrib, cframe, shadows, frames2)DATA$ shadowrib.write('WorldEnd \n')DATA( shadowrib.write('MakeShadow "%s/%s%s.pic" "%s/%s%s.tx"\n'%(shadowdir, name, shadowframe, shadowdir, name, shadowframe))DATA$ shadowrib.write('FrameEnd\n')DATA(DATA(Xdef 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  ribfile.write('\tLightSource "caustic" 2\n')DATA( ribfile.write('\tIlluminate 2 0\n\n')DATA( ribfile.write('\tTransformBegin\n')DATAL0 ribfile.write('\tAttribute "light" "integer nphotons" [%s]\n'%photon.val)DATA, if lamp.getMode() & lamp.Modes['Shadows']:DATA shadow = 'on'DATA@ else:DATAx shadow = 'off'DATA0 if (menuval.val == 2) or (menuval.val == 4):DATA  if (raytraceshadow.val == 1):DATAHh ribfile.write('\tAttribute "light" "shadows" ["%s"]\n' % (shadow))DATA else:DATA< ribfile.write('\tAttribute "light" "shadows" ["off"]\n')DATA if (lamp.type == 2):DATA if (anim.val == 1):DATA0 shadowframe = '%s'%(Blender.Get('curframe'))DATAp else:DATA shadowframe = ''DATA$ energratio = lamp.dist * negativeDATA88 if ((shadow == 'on') and (raytraceshadow.val == 1)):DATA if (menuval.val == 3):DATA shadowname = 'shadow'DATA0 elif (menuval.val == 1):DATAx shadowname = 'raytrace'DATA elif (menuval.val == 6):DATAH ribfile.write('\t(Attribute "visibility" "transmission" "opaque")')DATA shadowname = 'raytrace'DATA  else:DATA shadowname = ''DATA@ else:DATA4x if (shadow == 'on') and (rendershadow.val == 1):DATA, shadowname = name + shadowframe + '.tx'DATA 0 else:DATAh shadowname = ''DATA@ if (menuval.val == 6) and (shadow == 'off'): #Pixie RenderDATA ribfile.write('\tLightSource "spotlight" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA8 %(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))DATApH elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 0): #Pixie Render with SpotShadowsDATA ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAt  elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 1): #Pixie Render with Ray Spot shadowsDATA ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA  else:DATA0  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' \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))DATA`  elif (lamp.type == 1):DATA  energratio = negativeDATAx  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATA  ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA else:DATA if (menuval.val == 3):DATAD  ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowsamples" [%s] "float shadowblur" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val))DATA elif (menuval.val == 1):DATAD ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["raytrace"] "float samples" [%s] "float width" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val * 100 + 1))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],PDATA ! 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 #DATAP#def 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 = 0DATA*DATA*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.1DATA00 specularshader.val = 1.0DATAx0 roughnessshader.val = 0.2DATA0 if (shadermenu.val == 5):DATA1 ambientshader.val = 1DATAP1 diffuseshader.val = 0.5DATA1 specularshader.val = 0.5DATA1 roughnessshader.val = 0.1DATA((2 textshader.val = 'Surface "plastic"'DATA,2 textshaderd.val = 'Displacement "bumpy"'DATA2 texturem.val = ''DATA3 textnor.val = 0DATAX3 illuminationmenu.val = 0DATA3DATA03def writeShader(ribfile, name, meshobj, anim):DATA04 global texturefile, txdoneDATA x4 if (arealightMESH.val == 0):DATA4 MName = '"plastic"'DATA5 else: DATAH5 MName = ''DATA,5 if ((uv.val == 1) and (meshobj != 10)):DATA05 mesh = Blender.NMesh.GetRawFromObject(name)DATA@6 if mesh.faces[0].image:DATA,6 imagename = mesh.faces[0].image.filenameDATA 6 imagename = imagename[:-3]DATA07 imagename = imagenameDATA$x7 imagename = imagename + 'tif'DATAT7 imagename = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(imagename)[1])DATAhH8 rawimage = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(mesh.faces[0].image.filename)[1])DATA88 infile = open(mesh.faces[0].image.filename, 'rb')DATA$H9 outfile = open(rawimage, 'wb')DATA 9 outfile.write(infile.read())DATA9 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@A print "\nCould not find ImageMagic\n"DATA,A imagename = mesh.faces[0].image.filenameDATA A imagename = imagename[:-3]DATAHB imagename = imagenameDATA B tdlname = imagename + 'tx'DATA$B imagename = imagename + 'tif'DATA40C imagename = '%s'%(os.path.split(imagename)[1])DATA0C tdlname = '%s'%(os.path.split(tdlname)[1])DATAHC MName = '"bms" "string texname" ["%s"] "float maptype" 3'%(tdlname)DATA@hD if ((os.path.isfile(txname) == 0) or (reconvert.val == 1)):DATAD if menuval.val == 1:DATAH E os.system('%s %s %s'%(prmantexmaker.val, imagenameconv, txname))DATAE elif menuval.val == 2:DATAHE os.system('%s %s %s'%(bmrttexmaker.val, imagenameconv, txname))DATAXF elif menuval.val == 3:DATAHF os.system('%s %s %s'%(entropytexmaker.val, imagenameconv, txname))DATAG elif menuval.val == 4:DATAD`G os.system('%s %s %s'%(dltexmaker.val, imagenameconv, txname))DATAG elif menuval.val == 5:DATAHH os.system('%s %s %s'%(aqsistexmaker.val, imagenameconv, txname))DATAH elif menuval.val == 6:DATAHH os.system('%s %s %s'%(pixietexmaker.val, imagenameconv, txname))DATAPI else: DATAI MName = '"plastic"'DATA$I if (transmittcaustics.val == 1):DATA0 J mesh = Blender.NMesh.GetRawFromObject(name)DATAJ try:DATA<J material = Blender.Material.Get(mesh.materials[0].name)DATA K mr = material.RDATA`K mg = material.GDATAK mb = material.BDATA@K except: # if the mesh doesnt have a material default to whiteDATA PL mr = 1DATA L mg = 1DATA L mb = 1DATA`L ribfile.write('\t\tAttribute "caustic" "color refractioncolor" [%s %s %s]\n'%(mr, mg, mb))E DATAhM ribfile.write('\t\tAttribute "caustic" "float refractionindex" [%s]\n'%transmittcausticsslider.val)DATA N if (reflectcaustics.val == 1):DATAPpN ribfile.write('\t\tAttribute "caustic" "color specularcolor" [.9 .9 .9]\n')DATA N if (recievecaustics.val == 1):DATA(@O ribfile.write('\t\tIlluminate 2 1\n')DATA8O if ((shadermenu.val == 1) & (arealightMESH.val != 1)):DATA0P if ((convertbm.val != 0) or (meshobj == 10)):DATA`P ribfile.write('\t\tSurface "plastic" "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val))DATA<0Q elif ((shadermenu.val == 2) & (arealightMESH.val != 1)):DATA0Q if ((convertbm.val != 0) or (meshobj == 10)):DATA8Q ribfile.write('\t\tDeclare "eta" "uniform float"\n')DATA<`R ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@R ribfile.write('\t\tDeclare "refrblur" "uniform float"\n')DATA@8S ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATADS ribfile.write('\t\tDeclare "refrraysamples" "uniform float"\n')DATA@T ribfile.write('\t\tDeclare "envname" "uniform string"\n')DATAT if (menuval.val == 3):DATAT 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))DATAU elif (menuval.val == 2):DATA V evar = '"blur" [%s] "raysamples" [%s] "refrraysamples" %s "refrblur" %s "eta" %s'%(reflblurshader.val, reflsamples.val, refrsamples.val, refrblurshader.val, coefshader.val)DATA W else:DATA8W evar = ''DATAxW 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<`X elif ((shadermenu.val == 3) & (arealightMESH.val != 1)):DATA0X if ((convertbm.val != 0) or (meshobj == 10)):DATA<(Y ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@Y ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATAZ if (menuval.val == 3):DATA`HZ evar = '"string envname" ["reflection"] "string envspace" ["current"] "float twosided" 1'DATAZ 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'DATAa tdlname = txnameDATA$Pa txname = texturesdir + txnameDATAa converttex = 1DATA$a if os.path.isfile(txname) == 0:DATA0b for texture in txdone:DATA xb if (txname == texture):DATAb converttex = 0DATA c breakDATAHc if (converttex == 1):DATAc if (menuval.val == 1):DATATc os.system('%s %s %s'%(prmantexmaker.val, texturesdir + texturem.val, txname))DATA Xd elif (menuval.val == 2):DATATd os.system('%s %s %s'%(bmrttexmaker.val, texturesdir + texturem.val, txname))DATA (e elif (menuval.val == 3):DATAXxe os.system('%s %s %s'%(entropytexmaker.val, texturesdir + texturem.val, txname))DATA f elif (menuval.val == 4):DATATPf os.system('%s %s %s'%(dltexmaker.val, texturesdir + texturem.val, txname))DATA f elif (menuval.val == 5):DATAT g os.system('%s %s %s'%(aqsistexmaker.val, texturesdir + texturem.val, txname))DATA g elif (menuval.val == 6):DATATg os.system('%s %s %s'%(pixietexmaker.val, texturesdir + texturem.val, txname))DATA ph txdone = txdone + [txname]DATAh txname = tdlnameDATAi if (textnor.val == 1):DATAHi ribfile.write('\t\tDisplacement "bmd" "string texname" ["%s"] "float maptype" %s "float Km" %s\n'%(txname, projection.val - 1, norm.val))DATAj 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 k if ((convertbm.val == 0) & (meshobj != 10)):DATA0k mesh = Blender.NMesh.GetRawFromObject(name)DATAk if (MName == ''):DATA l returnDATAXl try:DATA<l material = Blender.Material.Get(mesh.materials[0].name)DATA$l hard = 1-(material.hard*0.00392)DATAHm ribfile.write('\t\tSurface %s "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(MName, material.amb, material.ref, material.spec, hard))DATA n except:DATA08n ribfile.write('\t\tSurface %s\n'%(MName))DATAn if (meshobj != 10):DATA0n mesh = Blender.NMesh.GetRawFromObject(name)DATA@o try:DATAxo if mesh.materials:DATA<o material = Blender.Material.Get(mesh.materials[0].name)DATAT(p ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATAp except: passDATA p if (arealightMESH.val == 1):DATA,8q ribfile.write('\t\tSurface "constant"\n')DATALq ribfile.write('\t\tAttribute "light" "nsamples" [%s]\n'%areasamples.val)DATAr if (menuval.val == 2):DATA@Pr ribfile.write('\t\tAttribute "light" "shadows" ["on"]\n')DATA0r mesh = Blender.NMesh.GetRawFromObject(name)DATA s try:DATA<Xs material = Blender.Material.Get(mesh.materials[0].name)DATAs if (menuval.val == 3):DATAt 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))DATAu elif (menuval.val == 2):DATAXu ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(material.emit * 100, material.R, material.G, material.B))DATA (v except:DATAx`v ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(0.7 * 100, 1, 1, 1))DATAwDATA88wdef createObjects(ribfile, cframe, shadows, frames2):DATATw global sshader, selectedname, thisone, meshobjects, xbar, meshnum, partitionnameDATA x meshobjects = 0.0DATA`x thisone = 0DATAx meshnum = 0DATAx objecttime = ''DATA( y for objects in Blender.Object.Get():DATAxy name = objects.getName()DATAy try:DATADy if (objects.getType() == "Mesh"): meshobjects = meshobjects + 1DATA hz except: DATAz passDATA(z 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')DATAЬDATA8def 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):yDATA  subdivmesh(meshfile, mesh)EJDATA  elif (meshexport.val == 4):`DATAX points(meshfile, mesh)@DATA  elif (meshexport.val == 5):pJDATA general(meshfile, mesh)@DATA 8 elif (meshexport.val == 6):UDATA bilinear(meshfile, mesh)DATA в del(mesh)DATA meshfile.close()`DATAHyDATA xdef pointspolygon(file, mesh): DATAȳ global meshnumDATA$84 testtime = Blender.Get('curframe')DATA 4 update = 5DATA4 colorif = 0@DATA5 perso = 0.0z^DATA@5 pixels = 0.0@DATA5 update = 100DATA 5 index = 0DATA5 facenum = len(mesh.faces)JDATA@6 if menuval.val != 2:DATA6 if mesh.hasFaceUV() == 1:DATA86 file.write('Declare "st" "facevarying float[2]"\n')DATA$87 file.write("PointsPolygons [");DATA7 for face in mesh.faces:@DATA,7 if len(face.v) == 4 and menuval.val == 2:DATA(8 file.write('3 3 ')DATAp8 else:DATA$8 file.write('%s '%(len(face.v)))DATA8 index = index + 1DATA089 if ((index == update) or (index == facenum)):DATA9 update = update + 100DATA9 pixels = 619@DATA( : perso = float(index) / float(facenum)DATA,x: qwerty = float(pixels) * float(perso) @DATA$: drawBar(meshnum, qwerty, pixels)DATA ; file.write("] ")DATA`; file.write("[ ")DATA; for face in mesh.faces:DATA; num = len(face.v)DATA(< if num == 3 or num == 4:JDATA(p< 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 h= else:pJDATA= for vert in face.v:DATA$= file.write('%s ' % vert.index)DATA8> file.write("]")`DATAx> 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]))DATAx? file.write('] ')urDATA? if mesh.faces[0].smooth:DATA@ file.write(' "N" [')@DATAH@ for vert in mesh.verts:@DATAD@ file.write("%s %s %s " % (vert.no[0], vert.no[1], vert.no[2]))Y+DATAA file.write(']')`DATA$@A if mesh.hasVertexColours() == 1:aDATA(A vertexcol = range(len(mesh.verts))DATAA file.write('\n"Cs" [')˴DATA0B for face in mesh.faces:@DATAxB num = len(face.v)͂@DATAB if num == 3 or num == 4:DATA$C for vi in range(len(face.v)):DATA0XC vertexcol[face.v[vi].index] = face.col[vi]DATAC for vc in vertexcol: DATADD file.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))@DATApD file.write(']')`DATAD if (menuval.val != 2):DATAD if mesh.hasFaceUV() == 1:DATA@E file.write('\n"st" [')@DATAE for face in mesh.faces:DATAE num = len(face.v)`DATA F if num == 3 or num == 4:DATA$hF for vi in range(len(face.v)):@DATADF file.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA(G file.write(']')DATAhG else:JDATA,G if (len(mesh.faces[0].uv) != 0):DATAG file.write('\n"st" [ ')DATA@H vtuv = [] `DATA(H for i in range(len(mesh.verts)): aDATAH vtuv.append(0) DATAI for f in mesh.faces: DATA `I for i in range(len(f.uv)): DATAI uv = f.uv[i]DATA I uv = uv[0], 1.0 - uv[1]DATA @J vtuv[f.v[i].index] = uv^@DATAJ for c in vtuv:DATAJ for d in c: DATAK file.write('%s '%d)@DATAXK file.write(']')DATAK file.write('\n')}DATAKDATA0Ldef polygon(mesh, meshfile, meshobj, meshnum):@DATAhL global meshobjects, iDATAL i = 0DATA L update = 5DATA M colorif = 0@DATA`M perso = 0.0DATAM pixels = 0.0DATAM facenum = len(mesh.faces)@DATA(N for face in mesh.faces:R@DATApN if mesh.materials:DATA$N matname=mesh.materials[0].nameDATAO try:DATA0@O material = Blender.Material.Get(matname)~@DATA<O if (colorif != material.R + material.G + material.B):@DATA4P colorif = material.R + material.G + material.BDATAThP meshfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA P except:DATA Q passDATA XQ if len(mesh.faces[i].v) == 3:DATAQ vertar = 3DATAQ else:DATA R vertar = 4DATA`R if face.smooth:DATAR smooth = 1DATAR else:DATAS smooth = 0DATA8XS writePoly(mesh,face, meshfile, i, vertar, smooth);DATA S i = i + 1DATA(S if ((i == update) or (i == facenum)):DATAPT update = update + 5DATAT pixels = 619DATA(T perso = float(i) / float(facenum)`DATA,0U qwerty = float(pixels) * float(perso)DATA$U drawBar(meshnum, qwerty, pixels)DATAUDATA<Vdef textureUV(i, mesh, va, vb, vc, meshfile, face, number):DATApV try:DATAV etest = face.uv[0][0]DATA V except:pJDATA (W returnDATA`W meshfile.write('"st" [ ')DATAW if (number == 1):DATAW for x in [0, 1, 2]:@DATA(0X meshfile.write("%s "%face.uv[x][0])@DATA0X meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAX if (number == 2):JDATA$(Y if len(mesh.faces[i].v) == 3: ς@DATA xY return@DATAY for x in [0, 2, 3]:DATA(Y meshfile.write("%s "%face.uv[x][0])JDATA0PZ meshfile.write("%s "%(1.0 - face.uv[x][1]))DATAZ meshfile.write(']\n')DATAZ`DATA8([def writePoly(mesh, face, meshfile, i, vertar, smooth):DATA$[ meshfile.write('Polygon "P" [ ')DATA[ for x in [0, 1, 2]:DATA(\ for y in range(3):DATAp\ try:DATA4\ meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATA] except Error:v@DATA H] print iDATA ] print xDATA ] print yDATA] meshfile.write(']\n')JDATA8^ if (smooth == 1):DATAx^ meshfile.write('"N" [')DATA^ for x in [0, 1, 2]:pJDATA_ for y in range(3):`DATA4P_ meshfile.write('%s '%mesh.faces[i].v[x].no[y])dDATA_ meshfile.write(']\n')DATA _ number = 1DATA40` textureUV(i,mesh,0,1,2, meshfile, face, number)*ibDATA` if (vertar == 4):eDATA$` meshfile.write('Polygon "P" [ ')fDATA a for x in [0, 2, 3]:poDATAha for y in range(3):faDATA4a meshfile.write('%s '%mesh.faces[i].v[x].co[y])pDATAb meshfile.write(']\n')DATAXb if (smooth == 1):DATAb meshfile.write('"N" [')rDATAb for x in [0, 2, 3]:mDATA(c for y in range(3):tDATA4pc meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATAc meshfile.write(']\n')mpfDATAd number = 2radDATA4Xd textureUV(i,mesh,0,1,2, meshfile, face, number)uDATAdpatDATA ddef general(meshfile, mesh):codDATA 8e index = 0mDATA,pe meshfile.write('PointsGeneralPolygons [')oDATAe for face in mesh.faces:ef_DATAf meshfile.write('1 ')CDATAXf index = index + 1DATAf meshfile.write(']\n[')DATA f index = 0aDATAg for face in mesh.faces:actDATA `g meshfile.write(str(nr) + ' ')DATAg index = index + 1DATAg meshfile.write(']\n[')DATA 8h index = 0lDATAph for f in mesh.faces:xrDATAh for v in f.v:DATA(h meshfile.write(str(v.index) + ' ')deDATAPi index = index + 1DATAi meshfile.write(']\n"P" [')DATA i index = 0rDATA$j for x in range(len(mesh.verts)):eDATA`j for y in range(3):4][DATA4j meshfile.write(str(mesh.verts[x].co[y]) + '')ogDATAk index = index + 1DATAHk meshfile.write(']\n')iDATAkr[1DATA kdef bilinear(meshfile, mesh):efDATAl f = 0eDATAHl for face in mesh.faces:li_DATA,l meshfile.write('Patch "bilinear" "P" [ ')DATAl for x in [3, 2, 0, 1]:dirDATA0m for y in range(3):alDATA4xm meshfile.write('%s '%mesh.faces[f].v[x].co[y])cDATAm meshfile.write(']\n')DATA n if face.smooth:elDATA`n meshfile.write('"N" [ ')DATAn for x in [3, 2, 0, 1]:pyDATAn for y in range(3):uDATA48o meshfile.write('%s '%mesh.faces[f].v[x].no[y])DATAo meshfile.write(']\n')nelDATA o f = f + 1DATApdatDATA Hpdef subdivmesh(meshfile, mesh):DATAp if menuval.val != 2:*sDATAp if mesh.hasFaceUV() == 1:DATA<(q meshfile.write('Declare "st" "facevarying float[2]"\n')[DATA8q meshfile.write('SubdivisionMesh "catmull-clark" [')lasDATAq for face in mesh.faces:typDATA@r num = len(face.v)DATA r meshfile.write('%s '%(num))12DATAr meshfile.write(']\n[')DATAs for face in mesh.faces:dedDATA`s for vert in face.v:fDATA(s meshfile.write('%s ' % vert.index)mpDATADt meshfile.write(']\n["interpolateboundary"] [0 0] [] []\n"P" [') aiDATApt for vert in mesh.verts:[3]DATAHt meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))3]DATA0u meshfile.write(']')aneDATAxu if (menuval.val != 2):DATAu if mesh.hasFaceUV() == 1:DATA v meshfile.write('\n"st" [')mDATAXv for face in mesh.faces:gDATAv num = len(face.v)QuDATA v if num == 3 or num == 4:eSeDATA$8w for vi in range(len(face.v)):hDATAHw meshfile.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATAx meshfile.write(']')DATA$Hx if mesh.hasVertexColours() == 1:AcDATA(x vertexcol = range(len(mesh.verts))orDATA x meshfile.write('\n"Cs" [')erDATA@y for face in mesh.faces:kTDATAy num = len(face.v)itCDATAy if num == 3 or num == 4:DATA$z for vi in range(len(face.v)): DATA0hz vertexcol[face.v[vi].index] = face.col[vi]DATAz for vc in vertexcol:DATAH{ meshfile.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATA{ meshfile.write(']')(DATA{ meshfile.write('\n')DATA|DATAH|def points(meshfile, mesh):DATA | meshfile.write('Points "P" [')DATA| for vert in mesh.verts:DATAH(} meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))lDATA@} meshfile.write('] "constantwidth" [%s]\n' % (pointwidth.val))DATA~DATA @~def createGI(ribfile, frames):DATA0~ if (areagi.val == 1) and (menuval.val !=6):&DATA8~ ribfile.write('\tDeclare "casts_shadows" "string"\n')DATAHX ribfile.write('\tAttribute "render" "casts_shadows" ["opaque"]\n')YDATAT ribfile.write('\tLightSource "ambientlight" 998 "lightcolor" [0.02 0.02 0.02]\n')DATA(P ribfile.write('\tAttributeBegin\n')\DATA@ ribfile.write('\t\tAttribute "identifier" "name" ["sky"]\n')DATA` ribfile.write('\t\tConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 -1573.14 307.099 -988.299 1]\n')DATAX ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(0 ribfile.write('\t\tAttributeBegin\n')DATA, ribfile.write('\t\t\tColor [1 1 1]\n') DATA, ribfile.write('\t\t\tOrientation "rh"\n')DATA08 ribfile.write('\t\t\tReverseOrientation\n')FDATA0 ribfile.write('\t\t\tSurface "constant"\n')fDATAL ribfile.write('\t\t\tAttribute "light" "nsamples" [%s]\n'%gisteps.val)uDATA@p ribfile.write('\t\t\tAttribute "light" "shadows" ["on"]\n')DATAh ribfile.write('\t\t\tAreaLightSource "arealight" 1 "lightcolor" [1 1 1] "intensity" [10000000000]\n')DATA4x ribfile.write('\t\t\tSphere 50000 0 50000 360\n')DATA(؅ ribfile.write('\t\tAttributeEnd\n')DATA$0 ribfile.write('\tAttributeEnd\n')DATA( ribfile.write('\tIlluminate 1 1\n')DATA4؆ if (indirectgi.val == 1) and (menuval.val !=6):DATA 8 if (finalgather.val == 0):&DATAP ribfile.write('\tAttribute "indirect" "float maxerror" [%s]\n'%maxerror.val)DATAX ribfile.write('\tAttribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATA else:DATAHȈ ribfile.write('\tAttribute "indirect" "float maxpixeldist" [0]\n')DATAP@ ribfile.write('\tAttribute "indirect" "integer nsamples" [%s]\n'%gisteps.val)DATA4 ribfile.write('\tLightSource "indirect" 42\n\n')DATA  if (gisphere.val == 1):DATA(h ribfile.write('\tAttributeBegin\n')DATAX ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(H ribfile.write('\t\tColor [1 1 1]\n')DATA0 ribfile.write('\t\tSurface "constant"\n')DATA8 ribfile.write('\t\tSphere 2000 -2000 2000 360\n')DATA(h ribfile.write('\tAttributeEnd\n')%DATADATAdef render(ribfile):DATA8 if (os.name != "posix"):DATA if (menuval.val == 1):DATA4ȍ os.system('%s %s'%(prmanrenderer.val, ribfile))DATA( elif (menuval.val == 2):DATA4p os.system('%s %s'%(bmrtrenderer.val, ribfile))DATAЎ elif (menuval.val == 3):DATA8 os.system('%s %s'%(entropyrenderer.val, ribfile))DATA elif (menuval.val == 4):DATA0ȏ os.system('%s %s'%(dlrenderer.val, ribfile))DATA( elif (menuval.val == 5):DATA4p os.system('%s %s'%(aqsisrenderer.val, ribfile))DATAА elif (menuval.val == 6):DATA4 os.system('%s %s'%(pixierenderer.val, ribfile)) DATAx elif (os.name == "posix"):DATA if (menuval.val == 1):m DATA8 os.system('%s %s &'%(prmanrenderer.val, ribfile))m DATAp elif (menuval.val == 2):@DATA4 os.system('%s %s &'%(bmrtrenderer.val, ribfile))DATA elif (menuval.val == 3):DATA8` os.system('%s %s &'%(entropyrenderer.val, ribfile))DATAȓ elif (menuval.val == 4):DATA4 os.system('%s %s &'%(dlrenderer.val, ribfile))DATAp elif (menuval.val == 5):DATA8 os.system('%s %s &'%(aqsisrenderer.val, ribfile))DATA  elif (menuval.val == 6):DATA8h os.system('%s %s &'%(pixierenderer.val, ribfile))DATAЕDATAdef closeFile(ribfile):DATAH ribfile.close()DATADATAdef writeFrame(ribfile):DATA global sshader, cframeDATA H display = Scene.GetCurrent()DATA, context = display.getRenderingContext()DATA frames2 = 0DATA(0 display = Blender.Scene.GetCurrent()DATA if (anim.val == 1):DATA8И frames = context.endFrame() - context.startFrame()DATA8 else:DATAp frames = 0DATA if (anim.val == 1):DATA  cframe = context.startFrame()DATAH else:DATA$ cframe = Blender.Get('curframe')DATA К for x in range(frames + 1):ssDATA$  Blender.Set('curframe', cframe)sDATA8p print 'Exporting Frame: %s'%Blender.Get('curframe')sDATA$؛ renderShadows(ribfile, frames2)DATA,( ribfile.write('\nFrameBegin %s\n'%cframe)DATA( writeHeader(ribfile, frames, frames2)DATA؜ lampobj = 0DATA if (motionblur.val == 1):DATA(` ribfile.write('MotionBegin [0 1]\n')DATA$ Blender.Set('curframe', cframe)DATA$ writeTransform(ribfile, lampobj)DATA<X Blender.Set('curframe', cframe + motionblurframe.val)DATA$ writeTransform(ribfile, lampobj)DATA$ Blender.Set('curframe', cframe)DATA ` ribfile.write('MotionEnd\n')DATA else:DATA$ writeTransform(ribfile, lampobj)DATA8 if (rgba.val == 1):DATA channels = "rgb"DATA elif (rgba.val == 2):DATA channels = "rgba"DATAP elif (rgba.val == 3):DATA channels = "rgbz"DATA elif (rgba.val == 4):DATA( channels = "z"DATAh if (buffer.val == 1):DATAl ribfile.write('Display "%s/%s%05d.tif" "framebuffer" "%s"\n'%(imagesdir, image.val, cframe, channels))DATAH 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<h ribfile.write('ReadArchive "%s"\n'%(preworldrafile.val))DATA$Ф ribfile.write('WorldBegin \n')DATA  if (postworldra.val == 1):DATA@p 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<h ribfile.write('\tAttribute "visibility" "shadow" [1]\n')DATA Ч #PixieDATA if (occlusion.val == 1):DATAlP ribfile.write('\tLightSource "ambientocclusion" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATA if (indirect.val == 1):DATAh0 ribfile.write('\tLightSource "ambientindirect" 1 "numSamples" %s\n'%(int(pow(2,ambiSamples.val+6))))DATAȩ #End PixieDATA ambientLight(ribfile)DATAP checkLamps(ribfile)DATA if (gi.val == 1):DATA ت createGI(ribfile, frames)DATA( if (hdri.val == 1):DATAp if (menuval.val == 3):DATA( ribfile.write('\tAttributeBegin\n')DATAD ribfile.write('\t\tAttribute "visibility" "reflection" [1]\n')DATAd ribfile.write('\t\tSurface "envsurf" "string envname" ["%s"] "float blur" [0]\n'%(hdritex.val))DATA4 ribfile.write('\t\tSphere 50000 0 50000 360\n')DATA(p ribfile.write('\tAttributeEnd\n')DATAPȭ createObjects(ribfile, cframe, 0, frames2) # 0 is for the shadows variableDATA H ribfile.write('WorldEnd \n')DATA  ribfile.write('FrameEnd\n')DATA cframe = cframe + 1DATA0 frames2 = frames2 + 1DATAxDATA4def 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 progressbarDATA8H selectedtype = 'Type:' # reset the object editor stuffDATA selectedname = ''DATA4 filedir = os.path.normpath(pdir + filename.val)DATADP ribfile = open(filedir, 'w') # open the main ribfile (default.rib)DATA4 if ((menuval.val == 4) & (os.name != "posix")):DATA  ribfile.write('ReadArchive "%s%s"\n'% os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + pdir + "/texturefile.rib") ) ) )DATA else:DATAD ribfile.write('ReadArchive "%s"\n'% (pdir + "/texturefile.rib"))DATAd texturefile = open(os.path.normpath(pdir + 'texturefile.rib'), 'w') # open the texture rib fileDATA if (menuval.val == 5):DATA` texturefile.write('#\n')DATA, writeFrame(ribfile) # write all the framesDATA0 closeFile(ribfile) # close the main ribfileDATA` texturefile.close()DATA8 selectedtype = 'Type:' # reset the object editor stuffDATA selectedname = ''DATA(P surfaceshadername.val = shadernametempDATAH Register (gui, event, bevent) # make sure all gui values are in place`DATA4  if (rendert.val == 1): # if the renderbutton is onDATA4 render(pdir + filename.val) # render the rib fileTXd`' TXKEYLIST.intrr0#DATA,/home/intrr/tuhopuu/blender/KEYLIST.intrrDATA@(DATA@XDATAо@DATAоODATA`оHDATA`%DATA`CDATA8DATA8h"DATA8%DATA%DATAXhDATAXDATAX,FREEDATA0@,DATA0x$oDATAx0DDATAxp%DATAPD0BDATAP@DATAP+DATA(!DATA(p0DATAp(xDATApDATAHt: DATAHX48 tDATAHme/iDATA .xDATA h@FREEDATAh 4pDATAhwin DATA@DDATA@`DATA@W#?DATA win DATA`(0?DATA`$DATA`4headDATA8HDATA8xwin DATA8DDATADATAXP?DATAXFREEDATAXDATA0!FREEDATA0x`DATAx0@BDATAxFREEDATAP0tDATAP4pDATAPtpDATA(8 FREEDATA(p1DATAp(DATApDATAHXDATAHDATAH DATA (DATA hXDATAh ,ADATAhYDATA@PBDATA@2DATA@ DATAPcDDATA`%DATA`/ DATA`P$DATA8DATA8 DATA8DATAHDATAXsDATAXsDATAX0sDATA0x"sDATA0x'DATAx0 (' DATAxxDATAPDATAP!DATAP0/CDATA(&DATA(pDATAp(0ADATAp`!PBDATAHDATAHDATAHH-DATA "DATA h!DATAh HDATAhxDATA@DATA@/DATA@H&DATADATA`DATA`8!DATA` TimDATA8'pDATA8 !DATA8` nterDATA $VDATAX 2ibDATAX` )DATAX DATA0 DATA0x0 ;DATAx0 'DATAx DATAP8 DATAP DATAP #DATA( <DATA(pp DATAp( &DATAp .DATAHX/DATAH'DATAH)DATA hDATA h2DATAh DATAh@*DATA@DDATA@DATA@@DATA /DATA h!DATAh 85DATAhIDATA@@DATA@/homDATA@ DATA,?DATA`PT FIDATA`*DATA`?DATA88*DATA8DATA8*DATA0DATAXDATAXDATAX DATA00DATA0xxDATAx0=DATAx0DATAPxDATAPDATAPDATA(@0DATA(pW#?DATAp(DATAp8DATAH ?DATAH1ecDATAH0#DATA DATA hDATAh DATAh@ADATA@3DATA@#DATA@`+DATAhcDATA` DATA`8DATA`:endDATA84DATA8PxxH@DATA8dummDATAwH@DATAX  DATAXh  )DATAX 3DATA0!DATA0xH!0xH@DATAx0!*wH@DATAx!throDATAP"65DATAPx"29-ADATAP"%DATA#DATA(DATAXDATAKey FunctionDATAP-------------------------------------------------------------------------------DATAH~ Display all layersDATA(Shift-~ Display all/previous layersDATAREEDATA 1..2..0-= Show layer 1..2..12DATA$hALT-1..2..0 Show layer 11..12..20DATA(SHIFT-1..2..0-= Toggle layer 1..2..12DATA(SHIFT-ALT-... Toggle layer 11..12..20DATAhDATANumpad DEL Zoom on objectDATA0Numpad / Local view on object (hide others)DATA0@Numpad * Rotate view to object's local axesDATA(Numpad + Zoom in (works everywhere)DATAHNumpad + Proportional vertex edit mode: Increase range of influenceDATA(pNumpad - Zoom out (works everywhere)DATAHNumpad - Proportional vertex edit mode: Decrease range of influenceoDATA@Numpad INS Set Camera viewDATA,CTRL-Numpad INS Set active object as cameraDATA$ALT-Numbad INS Restore old cameraDATA0Numpad 1 Front viewDATAxCTRL-Numpad 1 Back viewDATANumpad 3 Right-Side viewDATA CTRL-Numpad 3 Left-Side view aDATAXNumpad 7 Top viewDATACTRL-Numpad 7 Bottom view EDATA0Numpad 5 Toggle orthogonal / perspective viewNDATA@Numpad 9 Redraw viewEEDATANumpad 2 Rotate view leftDATANumpad 6 Rotate view rightDATANumpad 8 Rotate view upDATA`Numpad 2 Rotate view downDATAREEDATA$PgUp IPO: Select next keyframeDATA4(CTRL-PgUp IPO: Select and jump to next keyframeDATA(PgDn IPO: Select previous keyframe_DATA8CTRL-PgDn IPO: Select and jump to previous keyframeDATAHREEDATAxLEFT One frame backwardsDATARIGHT One frame forwardsDATADOWN 10 frames backwardsDATAPUP 10 frames forwardsDATADATATAB Enter/exit edit modeDATA$TAB Sequencer: Edit meta stripDATA `CTRL-TAB Enter/exit pose modeDATADATA A Select all / Deselect allDATA 0ALT-A Animate current windowDATA8CTRL-A Apply object's size/rotation to object dataDATA SHIFT-A Sequencer: ADD menuDATA$8SHIFT-ALT-A Animate all windowsDATA4SHIFT-CTRL-A Apply lattice / Make dupliverts realDATADATAB Border selectDATAXBB Circle selectDATASHIFT-B Set render borderDATADATAC Center view on cursorDATA XC Sequencer: Change imagesDATA0C IPO: Snap current frame to selected keyDATAALT-C Convert menu@fDATADPCTRL-C Copy menu (Copy properties of active to selected objects)DATA4SHIFT-C Center and zoom view on selected objectsDATA DATAPD Set 3d draw modeDATA(ALT-D Create new instance of objectCDATA0CTRL-D Display alpha of image texture as wireDATA(PSHIFT-D Create full copy of objectDATADATAE ExtrudeDATAsDATA HF Edit mode: Make edge/faceDATA F Sequencer: Set Filter YsDATAF Faceselect modeDATA0ALT-F Beautify fillsDATA$xCTRL-F Sort faces in Z directionDATA(CTRL-F Edit mode: Flip triangle edgesDATA, SHIFT-F Edit mode: Fill with trianglesDATAxDATAG Grab (move)DATAALT-G Clear locationDATA00SHIFT-ALT-G Remove selected objects from groupDATA(CTRL-G Add selected objects to groupDATASHIFT-G Group menuDATA0DATA$`H Hide selected vertices/facesDATA H Curves: Set handle typeDATAALT-H Reveal verticesDATA0HCTRL-H Curves: Automatic handle calculationEEDATA$SHIFT-H Hide deselected verticesDATA$SHIFT-H Curves: Set handle typeDATAHDATAxI Keyframe menuDATADATA0J Mesh: Join all adjacent triangles to quadsDATA(HJ Swap render page of render windowDATA CTRL-J Join selected objectsDATACTRL-J Nurbs: Add segmentDATA$8CTRL-J IPO: Join keyframes menu DATAwH@DATA(K 3d window: Show keyframe positionsDATA$ K IPO: Show keyframe positionsDATA` K Nurbs: Print knotsDATA( CTRL-K Make skeleton from armatureDATA4 SHIFT-K Show and select all keyframes for objectDATA,` SHIFT-K Faceselect: Clear vertexcoloursDATA DATA L Make local menuDATA<0 L Edit mode: Select linked vertices (near mouse pointer)DATA( L OOPS window: Select linked objectsDATA CTRL-L Make links menuDATA8 SHIFT-L Select links menuDATA DATA$ M Move object to different layerDATA@ M Sequencer: Make meta strip (group) from selected stripsDATAp DATA( N Numeric input menu (Size/Rot/Loc)DATA0 N OOPS window: Rename object/linked objectsDATA0XCTRL-N Armature: Recalculate bone roll anglesDATA(CTRL-N Recalculate normals to outsideDATA,CTRL-ALT-N Recalculate normals to insideDATAhDATA4O Edit mode: Toggle proportional vertex editingDATAALT-O Clear object originDATA,@CTRL-O Revert current file to last savedDATAHSHIFT-O Proportional vertex edit mode: Toggle smooth/steep falloffDATADATA@P Start realtime engineDATA0P Edit mode: Seperate vertices to new objectDATA$ALT-P Clear parent relationshipDATA88CTRL-P Make active object parent of selected objectDATALCTRL-SHIFT-P Make active object parent of selected object without inverseDATADCTRL-P Edit mode: Make active vertex parent of selected objectDATADATA R RotateDATA0R IPO: Record mouse movement as IPO curveXcDATAPRX Rotate around X axisDATA,RXX Rotate around object's local X axisDATARY Rotate around Y axisEDATA,8RYY Rotate around object's local Y axisDATARZ Rotate around Z axisDATA,RZZ Rotate around object's local Z axisEDATA 0ALT-R Clear object rotationDATASHIFT-R Nurbs: Select rowDATADATA S ScaleDATA0SX Flip around X axisDATAxSY Flip around Y axisDATA@ALT-S Edit mode: Shrink/fatten (Scale along vertex normals)cDATA0ALT-S Clear object sizeDATAxCTRL-S Edit mode: ShearDATA SHIFT-S Cursor/Grid snap menuDATADATA4@T Sequencer: Touch and print selected moviesDATAT Adjust texture spaceEEDATA T Edit mode: Flip 3d curveDATA8T IPO: Change IPO typeDATA$ALT-T Clear tracking of objectDATA4CTRL-T Make selected object track active objectDATA$0CTRL-T Mesh: Convert to trianglesDATACTRL-ALT-T BlenchmarkDATADATAU Make single user menuDATAD@U Edit mode: Reload object data from before entering edit modeBDATA4U Faceselect mode: Automatic UV calculation menuDATA$U Vertex-/Weightpaint mode: UndoDATA,`CTRL-U Save current state as user defaultDATADATA$V Curves/Nurbs: Vector handleDATA8V Vertexpaint modeonDATA<ALT-V Scale object to match image texture's aspect ratioDATA8SHIFT-V Edit mode: Align view to selected verticesDATAPausDATA W Boolean operations menuwH@DATA W Edit mode: Specials menuDATA CTRL-W Save current fileDATA$h CTRL-W Nurbs: Switch directionDATA4 SHIFT-W Warp/bend selected vertices around cursorDATA!tonDATAH!X Delete menuDATA,!CTRL-X Restore default state (Erase all)DATA!rtrDATA8"Y Mesh: Split selected vertices/faces from the restDATAx"sDATA("Z Switch 3d draw type (see also D)-ADATA#Q>TXd`'TXblenderman0.1beta9.0.'h(h(h(DATAL'/home/jerome/soft/3D/blender/blenderman0.1beta9.0/blenderman0.1beta9.0.pyDATAh((`DATA((h(DATA(@)(DATA@))(w xDATA))@)P DATA)*)DATA*`*)6DATA`***8DATA**`*hDATA*8+*>DATA8++*$DATA++8+`DATA+,+8RDATA,X,+2DATAX,,,pDATA,,X,DATA,0-, DATA0-x-,  DATAx--0-X DATA-.x-DATA.P.-DATAP... DATA..P.hDATA.(/. DATA(/p/.DATAp//(/@BDATA/0p/DDATA0H0/CDATAH000DATA00H08'DATA0 10xDATA 1h10FDATAh11 1(DATA11h1XDATA1@211DATA@221DATA22@20DATA232DATA3`32"DATA`333!DATA33`3P2DATA3843DATA8443DATA4484(*DATA454&FREEDATA5X54(14.zDATAX5550-~DATA55X5romeDATA5065DATA06x65DATAx6606@DATA67x6DATA7P76DATAP777DATA77P7XDATA7(87DATA(8p87DATAp88(80DATA89p8xDATA9H98#DATAH999DATA99H9`DATA9 :9 `-W@DATA :h:9!DATAh:: :P"DATA::h:#RW@DATA:@;:%FileDATA@;;:H!DATA;;@;#DATA;<;"DATA<`<;8!DATA`<<<!DATA<<`<#DATA<8=<("DATA8==<xDATA==8=DATA=>=DATA>X>=HDATAX>>>DATA>>X>?DATA>0?>ܦDATA0?x?>XDATAx??0? DATA?@x?DATA@P@? DATAP@@@hDATA@@P@DATA@(A@DATA(ApA@HDATApAA(ADATAABpADATABHBA DATAHBBBhDATABBHBDATAB CBDATA ChCB@DATAhCC CDATACChCDATAC@DC DATA@DDChDATADD@DDATADEDDATAE`ED8DATA`EEEDATAEE`EDATAE8FEDATA8FFE`DATAFF8FDATAFGFDATAGXGF8 h@DATAXGGG/kDATAGGXGDATAG0HGDATA0HxHGhDATAxHH0HDATAHIxH DATAIPIHXDATAPIIIDATAIIPIDATAI(JIHDATA(JpJI DATApJJ(JDATAJKpJ(DATAKHKJpDATAHKKKDATAKKHK'DATAK LKhDATA LhLKDATAhLL LDATALLhL@DATAL@MLDATA@MMLDATAMM@M DATAMNMhDATAN`NMDATA`NNNDATANN`N@DATAN8ONDATA8OONDATAOO8O DATAOPOp DATAPXPODATAXPPPDATAPPXPH DATAP0QPDATA0QxQPDATAxQQ0QDATAQRxQ`DATARPRQDATAPRRRxDATARRPRDATAR(SR&DATA(SpSRX176DATApSS(S*208DATASTpSՀ/&DATATHTSDATAHTTTY%DATATTHTHADATAT UT"DATA UhUT`DATAhUU U19-SDATAUUhUDATAU@VUDATA@VVU 1 DATAVV@VDATAVWV( rwxDATAW`WVp DATA`WWW DATAWW`W rwxDATAW8XWP DATA8XXW DATAXX8X rwxDATAXYX( DATAYXYXp DATAXYYY 859 DATAYYXY DATAY0ZYH DATA0ZxZY r--DATAxZZ0Z DATAZ[xZ =DATA[P[Zp aDATAP[[[_18-MDATA[[P[Ceb-0DATA[(\[ADATA(\p\[p1rwxDATAp\\(\>@DATA\]p\@y]DATA]H]\7DATAH]]]PDATA]]H]DATA] ^]077DATA ^h^] DATAh^^ ^hDATA^^h^ DATA^@_^DATA@__^($DATA__@_"DATA_`_,DATA```_0DATA````pDATA````DATA`8a`DATA8aa`  DATAaa8a` DATAabaDATAbXbaDATAXbbb DATAbbXbXDATAb0cb.DATA0cxcbDATAxcc0c0DATAcdxcx,DATAdPdcDATAPddd/DATAddPdp#pDATAd(ed3DATA(eped /DATApee(e8DATAefpe/DATAfHfeH-DATAHfff2DATAffHf DATAf gfX!DATA ghgf$DATAhgg g"pp`DATAgghgPDATAg@hgDATA@hhgDATAhh@h pDATAhihh DATAi`ihDATA`iii"DATAii`iPDATAi8ji%DATA8jjiDATAjj8j8DATAjkjDATAkXkj DATAXkkk DATAkkXk` DATAk0lk DATA0lxlk DATAxll0l@!DATAlmxl!DATAmPml!DATAPmmm"DATAmmPm`"DATAm(nm"DATA(npnm" DATApnn(n#PDATAnopn#UDATAoHon$_DATAHooo$pDATAooHoH%aDATAo po%bDATA phpoh&_DATAhpp p&ZDATApphp'gDATAp@qp(`DATA@qqp(PDATAqq@q()^DATAqrq)EDATAr`rq0*^DATA`rrr*^DATArr`rP+X24 .DATAr8sr+=@DATA8ssrH, DATAss8sx,204-ODATAsts, 39 .DATAtXts-4 21DATAXtttX-RW@DATAttXt-@DATAt0ut-81 .DATA0uxut.4 DATAxuu0ux.r-- DATAuvxu.(r-- DATAvPvu /24-ODATAPvvvh/.23-ODATAvvPv/59 .DATAv(wv0(.docDATA(wpwvh0 jerDATApww(w023-ADATAwxpw0 jerDATAxHxw 1)@DATAHxxxx1x23-ADATAxxHx 2ssavDATAx yx2DATA yhyxp3DATAhyy y04dDATAyyhy4DATAy@zy4DATA@zzy85DATAzz@z5H2YDATAz{zP6FDATA{`{z7pDATA`{{{7LDATA{{`{p8NDATA{8|{8~KDATA8||{9WDATA||8|:DATA|}|:y0DATA}X}|`;}XDATAX}}}<DATA}}X}<8DATA}0~}=bZDATA0~x~}8>nTPDATAx~~0~>iDATA~x~p?aDATAP~@`DATAPH@}TSDATAP@YDATA(APDATA(pB{DATAp(BDATAp`CDATAHCDATAHXDDATA؁HEDATA؁ `EwDATA h؁FDATAh FDATAhG}FREEDATA@GFREEDATA@xHDATAЃ@H}DATAЃpIDATA`Ѓ0JtDATA`JDATA`KjDATA8 LiDATA8LIDATAȅ80MLDATAȅMTfDATAXȅ8NTFREEDATAXNDATAXODATA0HODATA0xODATAx0ODATAxPDATAPXPqDATAPPDATAPPDATA((QDATA(ppQDATAp(Q7DATAp RDATAH`RctsDATAHR*DATA؊HSbDATA؊ SDATA h؊SDATAh  TDATAhhTDATA@TDATA@U1@DATAЌ@HUFREEDATAЌU/DATA`ЌUDATA`V DATA`hVDATA8VDATA8WDATAȎ8XWDATAȎWDATAXȎW4zDATAXXD$DATAXhX'DATA0@YDATA0xYYDATAx0ZDATAxZ DATAP8[[DATAP[der/DATAP\uDATA(\DATA(p\ptDATAp(]}DATApH^DATAH_DATAH_333?DATAؓH`DATAؓ ` DATA hؓ(aDATADATAh aB.blDATAh(bsDATA@b0DATA@(cy3dDATAЕ@c>DATAЕdrDATA`Еd{DATA`pevDATA`f333?DATA8hf DATA8fDATADATAȗ8gDATAȗPhDATAXȗiDATAXiDATAXjDATA0jDATA0xkDATAx0kDATAxlDATAlDATA8m0DATA8@nXDATA8o"~(DATAPocDATADATAXo1DATAX p~8DATAXpTDATA0q`DATA0xq DATADATAx0 rwFREEDATAxrDATAPsDATAPXsa`DATAPsDATA(8t]FREEDATA(pt@DATAp(8uerDATApu@DATADATAHu@DATAH`vKDATAHvDATA (wjDATA hwkDATAh XxjDATAhxlDATA@yDATA@yfDATA@xzpDATA{sDATA`{dDATA`P|c۷zADATA`|MDATA8`}jzADATA8}qDATA8P~bDATA~(DATAX0DATAXxDATAXMg.DATA0@DATA0xDATAx0؀ODATAxXDATAP8DATAPODATAPSDATA(PDATA(p=DATAp(xgDATAp`DATAHDDATAH[DATAHDATA ІDATA hDATAh `eDATAhDATA@@7DATA@p~DATA@DATA@@DATA`eDATA`Љ$DATA`(DATA8DATA8@VDATA8ȋODATAHDATAX)DATAXDATAX8!DATA0)DATA0xDATAx00DATAxx"DATAPȎ DATAPXDATAPsDATA((DATA(ppIDATAp(uDATApDATAHDATAH DATAHВDATA /DATA h|DATAh 1DATAhyDATA@ DATA@DATA@aDATA0aDATA`fDATA`X$DATA`DATA8hDATA8DATA8DATAHDATAXp$DATAXț1DATAX(DATA0IDATA0xXsDATAx0-DATAxX2DATAPDDATAP0DATAPxqDATA(DATA(p`eDATAp($DATApPDATAH^DATAH0DATAH[DATA [DATA h^DATAh  ^DATAhDDATA@(oDATA@ȥaDATA@XdDATADATA` DATA``DATA`DATA8DATA80!DATA8DATAȨ.DATAX(DATAXhDATAX!DATA0DATA0xH.DATAx0DATAxaDATAPDATAPȫ3DATAP(DATA(poDATA(pDATAp(X8DATApDATAHWDATAHDATAHخ;DATA @DATA h2DATAh DATAh01DATA@DATA@ذ0DATA@8DATASDATA`DATA`0DATA`x!DATA8ȲDATA8)DATA8X DATADATAXDATAXoDATAX&DATA0 DATA0x0DATAx0DATAxȵDATAP2DATAP`DATAP DATA(DATA(p(DATAp(hDATApDATAHDATAHH,DATAH DATA *DATA h8DATAh p,DATAhйDATA@ .DATA@DATA@DATADATA`P$DATA`DATA`DATA8(DATA8x1DATA8ؼDATADATAXh'DATAX DATAXDATA0P,DATA0xDATAx0DATAx8DATAPxDATAPDATAPDATA(P,DATA(pDATAp(DATAp8DATAHxDATAHDATAHDATA P-DATA hDATAh DATAh8DATA@ xDATA@  DATA  @ DATA   P-DATA `  DATA`   DATA  ` 8DATA 8  xDATA8   DATA  8 DATA   PDATA X  DATAX   DATA  X  DATA 0  hDATA0 x  DATAx  0 DATA x @DATAP DATAPDATAPDATA(XDATA(pDATAp(DATAp0DATAHpDATAHDATAHDATA HDATA hDATAh DATAh DATA@`DATA@DATA@DATA8DATA`DATA`DATA`DATA8PDATA8DATA8DATA(DATAXpDATAXDATAX'DATA0X]DATA0xDATAx01DATAxDATAPDATAP DATAP@)DATA(DATA(p DATAp( DATAph'DATAHDATAHDATAHP,DATA <DATA h 'DATAh x:DATAhDATA@(DATA@hDATA@DATADATA`0DATA`p(DATA`DATA8DATA8XDATA8DATADATAX0MDATAX"DATAXDATA0P'DATA0x(DATAx09DATA xhDATA P &DATAP   DATA  P `'DATA (! :DATA(!p!  DATAp!!(!p+DATA!"p!DATA"H"!DATAH"""P&DATA""H"$DATA" #"DATA #h#"@DATAh## #DATA##h#,DATA#@$#8DATA@$$#-DATA$$@$4DATA$%$HDATA%`%$DATA`%%%DATA%%`%(DATA%8&%x3DATA8&&%DATA&&8&(DATA&'&:DATA'X'&X'DATAX'''DATA''X'DATA'0('@!DATA0(x('DATAx((0(DATA()x(DATA)P)(hDATAP)))5DATA))P)9DATA)(*)x(DATA(*p*)DATAp**(*DATA*+p*XDATA+H+*DATAH+++DATA++H+0DATA+ ,+xDATA ,h,+DATAh,, ,IDATA,,h,xHDATA,@-,&DATA@--,H(DATA--@-'DATA-.-)DATA.`.-P'DATA`..."DATA..`..DATA.8/.XEDATA8//.DATA//8/BDATA/0/>DATA0X0/.DATAX000XRDATA00X00DATA00108NDATA01x10DDATAx11010DATA12x1x>DATA2P21_DATAP222x`DATA22P2DATA2(32PDATA(3p32DATAp33(3DATA34p3(DATA4H43DATAH444"DATA44H4JDATA4 54xDATA 5h54DATAh55 5(DATA55h5`DATA5@65DATA@665qDATA66@6+DATA676-DATA7`768&DATA`777(DATA77`70DATA7887H-DATA88870DATA8888,DATA898h0DATA9X98*DATAX999 9DATA99X9_DATA90:9&DATA0:x:9p DATAx::0:DATA:;x:%DATA;P;:`&DATAP;;;DATA;;P;DATA;(<;H&DATA(<p<;DATAp<<(<DATA<=p<0DATA=H=<pDATAH===DATA==H=DATA= >=HDATA >h>=DATAh>> >DATA>>h> DATA>@?>hDATA@??>DATA??@?DATA?@?HDATA@`@?DATA`@@@ DATA@@`@DATA@8A@`DATA8AA@DATAAA8ADATAABA8 DATABXBA DATAXBBB DATABBXB DATAB0CBP DATA0CxCB DATAxCC0C DATACDxC DATADPDCh DATAPDDD DATADDPD DATAD(ED8 DATA(EpED DATApEE(E DATAEFpE DATAFHFEP DATAHFFF DATAFFHF DATAF GF(DATA GhGFhDATAhGG G*DATAGGhG&DATAG@HGhDATA@HHGDATAHH@H+DATAHIHP!DATAI`IH&DATA`III"DATAII`IH&DATAI8JI'DATA8JJIDATAJJ8J@DATAJKJDATAKXKJ*DATAXKKK01DATAKKXKDATAK0LKDATA0LxLK &DATAxLL0LxDATALMxLDATAMPMLDATAPMMMPDATAMMPM*DATAM(NM1DATA(NpNMX7DATApNN(NDATANOpNDATAOHONXDATAHOOODATAOOHODATAO PO ?DATA PhPODATAhPP P,DATAPPhP(DATAP@QP` DATA@QQPDATAQQ@Q#DATAQRQ8DATAR`RQ%DATA`RRRDATARR`R0DATAR8SRhDATA8SSR&DATASS8SDATASTSXDATATXTS&DATAXTTT DATATTXT8DATAT0UTh$DATA0UxUTDATAxUU0U~DATAUVxUDATAVPVUhQDATAPVVV DATAVVPV( (DATAV(WV ,DATA(WpWV DATApWW(W!DATAWXpWh!DATAXHXW! DATAHXXX!"DATAXXHX0"DATAX YXx"iDATA YhYX#wDATAhYY Y#oDATAYYhYX$gDATAY@ZY$"DATA@ZZY@%*DATAZZ@Z%DATAZ[Z% DATA[`[Z&DATA`[[[`&xDATA[[`['tDATA[8\['oDATA8\\[P(vDATA\\8\(oDATA\]\)rDATA]X]\8*rDATAX]]]*zDATA]]X]+2DATA]0^]+DATA0^x^] ,DATAx^^0^`,DATA^_x^,#DATA_P_^,DATAP___@-DATA__P_-DATA_(`_-DATA(`p`_. DATAp``(`P.DATA`ap`.DATAaHa`.DATAHaaa/DATAaaHa@/DATAa bax/DATA bhba/ DATAhbb b/ DATAbbhb00 DATAb@cbh0DATA@ccb0+DATAcc@c1 DATAcdcH1DATAd`dc1DATA`ddd1DATAdd`d(2(DATAd8ed2DATA8eed2*DATAee8e(3DATAefex3(DATAfXfe3 DATAXfff4 DATAffXfH4DATAf0gf4"DATA0gxgf4$DATAxgg0g85$DATAghxg5%DATAhPhg5&DATAPhhh@6"DATAhhPh6%DATAh(ih6%DATA(ipih@7#DATApii(i7"DATAijpi7DATAjHji08#DATAHjjj8#DATAjjHj8!DATAj kj 9$DATA khkjx9DATAhkk k9 DATAkkhk:(DATAk@lkp:#DATA@llk:DATAll@l;!DATAlmlX;'DATAm`ml;DATA`mmm<"DATAmm`mP<DATAm8nm<$DATA8nnm<"DATAnn8n@=&DATAnon=(DATAoXon=-DATAXoooP>!DATAooXo>DATAo0po>$DATA0pxpoH? DATAxpp0p? DATApqxp?!DATAqPqp8@!DATAPqqq@DATAqqPq@!DATAq(rq(ADATA(rprqxA'DATAprr(rA'DATArspr(BDATAsHsrxB#DATAHsssB"DATAssHsC"DATAs tshC DATA thtsC#DATAhtt tDDATAtthtPDDATAt@utDDATA@uutD!DATAuu@u8EDATAuvuEDATAv`vuEDATA`vvv(F DATAvv`vxFDATAv8wvFDATA8wwvGDATAww8whG DATAwxwG DATAxXxwH DATAXxxxXHDATAxxXxHDATAx0yxH!DATA0yxyxHI$DATAxyy0yIDATAyzxyI#DATAzPzy@J'DATAPzzzJDATAzzPzJDATAz({z8KDATA({p{zK!DATAp{{({KDATA{|p{(L!DATA|H|{xL#DATAH|||LDATA||H|MDATA| }|hM"DATA }h}|M!DATAh}} }N DATA}}h}XNDATA}@~}NDATA@~~}NDATA~~@~HODATA~~O#DATA`~O!DATA`8P#DATA`PDATA8PDATA8(QDATAȀ8xQ!DATAȀQ$DATAXȀ R#DATAXpR&DATAXR"DATA0S$DATA0xpS%DATAx0S$DATAx T#DATAPpT&DATAPT"DATAPU$DATA(pU$DATA(pU"DATAp(V'DATAppV#DATAHV'DATAHW$DATA؅HpW#DATA؅ W(DATA h؅X!DATAh hXDATAhXDATA@XDATA@YvDATAЇ@YDATAЇZDATA`ЇHZDATA`ZDATA`ZDATA8[DATA8H[DATAȉ8[DATAȉ[DATAXȉ[DATAX(\DATAXp\DATA0\DATA0x\DATAx0 ]DATAxX]DATAP]DATAP]DATAP^DATA(X^DATA(p^DATAp(^DATAp _DATAH`_DATAH_ DATA؎H_DATA؎ ` DATA h؎P`DATAh `DATAh`DATA@a9DATA@pa6DATAА@aDATAА(bDATA`Аpb DATA`bDATA`b0DATA8@cDATA8xcDATAȒ8cDATAȒdDATAXȒ8dDATAXxdDATAXdDATA0eDATA0x8eDATAx0heDATAxe_DATAP8fdDATAPfDATAPgDATA(`gDATA(pg.DATAp(g DATApHh2DATAHh.DATAHi8DATAؗHpi.DATAؗ i,DATA hؗ0jDATAh jDATAhjDATA@ k"DATA@pk DATAЙ@kDATAЙkDATA`Й8lDATA`lDATA`l"DATA8(mDATA8pmDATAț8mDATAțnDATAXțXnDATAXnDATAXnDATA0(oDATA0x`oDATAx0o*DATAxoXDATAPppDATAPp(DATAPq#DATA(hq#DATA(pqDATAp(r+DATAp`rDATAHr+DATAHrDATAؠH@s DATAؠ sDATA hؠsoDATAh t#DATAht"DATA@ u:DATA@unDATAТ@(v?DATAТvGDATA`ТwADATA`wDATA`w9DATA8 x DATA8XxDATAȤ8xDATAȤxDATAXȤ yPDATAXy;DATAXz0DATA0hz?DATA0xzFDATAx0P{TDATAx{MDATAPX|KDATAP|IDATAPH}DATA(} DATA(p}-DATAp(@~FDATAp~/DATAHCDATAHKDATAةH,DATAة `*DATA hةMDATAh 8,DATAhDATA@NDATA@`DATAЫ@?DATAЫDATA`ЫHDATA`x%DATA`ЃDATA8DATA8XDATAȭ8DATAȭ#DATAXȭ0DATAXhDATAX)DATA0DATA0xP9DATAx0DATAxDATAPHDATAPDATAP؇DATA( DATA(phDATAp(DATApDATAH@DATAHDATAزHЉDATAز DATA hز`DATAh DATAhDATA@8DATA@hDATAд@DATAд DATA`дP'DATA`FDATA` DATA8XDATA8 DATAȶ8PDATAȶDATAXȶ DATAX %DATAXxDATA0#DATA0xDATAx0PDATAxDATAPؐ DATAP(DATAPp DATA(%DATA(pDATAp(`DATAp$DATAH#DATAH8%DATAػH!DATAػ %DATA hػ8DATAh #DATAhДDATA@ DATA@`DATAн@DATAн DATA`н@DATA`DATA`ؖ*DATA80 DATA8hDATAȿ8FDATAȿ(%DATAXȿ3DATAXDATAX DATA0NDATA0x`%DATAx0&DATAx3DATAPpxDATAPDATAP`DATA(DATA(pDATAp(0DATApDATAHDATAHDATAHPLDATA О*DATA h(2DATAh BDATAhDATA@@0DATA@ DATA@ؠ0DATA85DATA`'DATA`9DATA``ZDATA8DATA80(DATA8 DATA(DATAX%DATAXpDATAX7DATA0#DATA0xh|DATAx0!DATAxhDATAP'DATAPDATAP8#DATA(0DATA(p0DATAp(H0DATAp0DATAH3DATAHh3DATAHȩ3DATA (,DATA hDATAh ȪDATAhDATA@@DATA@DATA@ثDATA DATA``.DATA`'DATA`%DATA8pKDATA8+DATA8@DATADATAXDATAX-DATAXXDATA0EDATA0x DATAx0X;DATAxDATAPDATAPP/DATAPDATA(DATA(p(#DATAp(x6DATApDATAH(DATAHpDATAHDATA DATA hHGDATAh DATAhDATA@@DATA@DATA@3DATA+DATA`pDATA`DATA`<DATA8XDATA8xDATA8lDATA(DATAXPDATAX`qDATAXDATA0(DATA0x8DATAx0pDATAxDATAPDATAPDATAP0vDATA(DATA(pDATAp(DATAp`@DATAHDATAHBDATAHDATA #DATA h vDATAh DATAhJDATA@0DATA@ DATA@XDATA,DATA`DATA`XDATA`86DATA8DATA8DDATA8`DATADATAXDATAXDATAX(DATA0p#DATA0xDATAx0DATAx@DATAPDATAP)DATAP("DATA(x8DATA(pDATAp(0DATApDATAHDATAH DATAHpDATA DATA hDATAh `DATAhDATA@DATA@DATA@X DATADATA`DATA`  DATA`XDATA8DATA8DATA80DATAx"DATAXDATAXDATAXHDATA0DATA0xDATAx0DATAxHDATAPDATAPDATAPDATA(PDATA(pDATAp(DATAp DATAHhDATAHDATAHDATA DATA h`DATAh DATAhDATA@8DATA@DATA@DATADATA`XDATA`DATA`DATA88DATA8xDATA8DATADATAXPDATAXDATAXDATA0(DATA0xpDATAx0DATAxDATAPHDATAPDATAPDATA( DATA(ph&DATAp(*DATApDATAHXDATAHDATAHDATA .DATA hpDATAh DATAhDATA@PDATA@ DATA@(DATA -DATA`DATA`+DATA` DATA8pDATA8 DATA8SDATAeDATAX 4DATAX!DATAXDATA0(DATA0xhDATAx0\DATAx8TDATAP%DATAPDATAPP"DATA('DATA(p#DATAp(H'DATAp DATAHDATAH( DATAH``DATA DATA h8DATAh H DATAh DATA@ODATA@8DATA@,DATA+DATA`8DATA`DATA`DATA8  DATA8p1DATA8-DATA0FDATAX>DATAXDATAX`EDATA0 DATA0 x  DDATAx  0 DATA  x GDATA P  XDATAP   BDATA  P DATA (  XEDATA( p  DATAp  ( EDATA  p DATA H  DATAH   !DATA  H `-DATA   DATA h  :DATAh   `DATA  h DATA @ DATA@  ?DATA@ DATA DATA` DATA`8\DATA`eDATA8`DATA8MDATA80DATA'DATAX7DATAX@/DATAXDATA0p9DATA0x/DATAx087DATAx8DATAP<DATAPx>DATAPBDATA(X <DATA(p DATAp( DATAp DATAH` DATAH@ DATAHx  DATA  DATA h 9DATAh /DATAhh8DATA@>DATA@@DATA@]DATADATA``NDATA`DATA` DATA8XDATA809DATA8/DATApDATAX+DATAX,DATAXP9DATA0/DATA0xpDATAx0DATAxDATAPPDATAP DATAPDATA( "DATA(ppDATAp(DATApDATAHP DATAHDATAHDATA SDATA hDATAh RDATAhhDATA@ UDATA@  @DATA  @ PDATA ! DATA!`! `SDATA`!!!DATA!!`!0SDATA!8"!DATA8""!DATA""8"@DATA"#"DATA#X#"HDATAX###` -DATA##X# -DATA#0$# !DATA0$x$#`! DATAx$$0$!DATA$%x$!:DATA%P%$8"#DATAP%%%"DATA%%P%@# DATA%(&%x#,DATA(&p&%#DATAp&&(& $-DATA&'p&$DATA'H'&$DATAH'''%;DATA''H'h%QDATA' ('%DATA (h('(&DATAh(( (x&+DATA((h(&JDATA(@)(H'DATA@))('<DATA))@)(-DATA)*)`(DATA*`*)(:DATA`***)DATA**`*H)DATA*8+*P*DATA8++**DATA++8+h+ DATA+,++wDATA,X,+H,DATAX,,,x,5DATA,,X,,QDATA,0-,`-DATA0-x-,- DATAx--0-- DATA-.x- .DATA.P.-`.%DATAP....DATA..P./DATA.(/.8/BDATA(/p/./ DATAp//(//DATA/0p/0%DATA0H0/p0DATAH0000DATA00H00 DATA0 1001 DATA 1h101DATAh11 11.DATA11h12 DATA1@21X2DATA@2212 DATA22@22DATA232 3 DATA3`32`34DATA`3333DATA33`34%DATA3843h4!DATA84434DATA44845 DATA454P5DATA5X545DATAX5555'DATA55X586/DATA50656?DATA06x657DATAx6606P7/DATA67x67DATA7P768&DATAP777X8DATA77P78 DATA7(878DATA(8p879 DATAp88(8P9=DATA89p89SDATA9H98@:aDATAH999: DATA99H9; DATA9 :9H; DATA :h:9;DATAh:: :;DATA::h:<*DATA:@;:`<$DATA@;;:<DATA;;@;=9DATA;<;p=DATA<`<;="DATA`<<<>$DATA<<`<h>DATA<8=<>DATA8==<>(DATA==8=H?DATA=>=??DATA>X>=@ DATAX>>>P@DATA>>X>@DATA>0?>@!DATA0?x?>0ADATAx??0?A DATA?@x?ADATA@P@?BDATAP@@@PBDATA@@P@B0DATA@(A@CDATA(ApA@@C DATApAA(AxCDATAABpACDATABHBAD0DATAHBBBhDDATABBHBD DATAB CBDDATA ChCB(E/DATAhCC CEQDATACChCF1DATAC@DChFNDATA@DDCFDATADD@D8GDATADEDGGDATAE`EDGDATA`EEEHHGDATAEE`EHDATAE8FEI0DATA8FFEhIDATAFF8FIDATAFGFIDATAGXGF0JDATAXGGGpJDATAGGXGJ*DATAG0HGKDATA0HxHG`KFDATAxHH0HK6DATAHIxH@LDATAIPIHHMXDATAPIIIMDATAIIPINDATAI(JIXN+DATA(JpJINDATApJJ(JNGDATAJKpJpO7DATAKHKJODATAHKKKPYDATAKKHK`Q DATAK LKQDATA LhLKQDATAhLL L(RDATALLhLpRHDATAL@MLR8DATA@MMLPSDATAMM@MPTZDATAMNMT DATAN`NMU&DATA`NNNhU DATANN`NUDATAN8ONVGDATA8OONxV7DATAOO8OV,DATAOPO@WDATAPXPOHXZDATAXPPPX;DATAPPXP8Y DATAP0QPY0DATA0QxQPYDATAxQQ0Q0ZLDATAQRxQZ7DATARPRQ[DATAPRRR \_DATARRPR\$DATAR(SR]&DATA(SpSR`] DATApSS(S]DATASTpS]DATATHTS@^%DATAHTTT^DATATTHT^)DATAT UT@_DATA UhUTp_%DATAhUU U_DATAUUhU`#DATAU@VU`` DATA@VVU`DATAVV@V`DATAVWV aDATAW`WVXa.DATA`WWWa$DATAWW`WbDATAW8XW@b5DATA8XXWbDATAXX8XbDATAXYX8c-DATAYXYXcDATAXYYYc DATAYYXY(d DATAY0ZY`dDATA0ZxZYd DATAxZZ0ZdDATAZ[xZHe,DATA[P[ZeDATAP[[[eDATA[[P[HfDATA[(\[fDATA(\p\[fDATAp\\(\0gDATA\]p\xgDATA]H]\gDATAH]]]h DATA]]H]HhDATA] ^]hDATA ^h^]hDATAh^^ ^iDATA^^h^Hi#DATA^@_^i DATA@__^i DATA__@_j DATA_`_Pj DATA```_j DATA````j DATA````kDATA`8a`PkDATA8aa`kDATAaa8ak6DATAabaHl DATAbXbalDATAXbbbl+DATAbbXb8mDATAb0cbmDATA0cxcbm"DATAxcc0cnDATAcdxcHn.DATAdPdcnDATAPdddnDATAddPd0o'DATAd(edo(DATA(epedo"DATApee(e0pDATAefpeppDATAfHfepDATAHfffpDATAffHf8qDATAf gfq$DATA ghgfqDATAhgg g r(DATAgghgxrDATAg@hgrDATA@hhgr#DATAhh@hHsDATAhihsDATAi`ihsDATA`iiit@DATAii`itDATAi8jitDATA8jjiuDATAjj8jXuDATAjkjuADATAkXkjvDATAXkkkPv!DATAkkXkv$DATAk0lkvDATA0lxlk@wDATAxll0lwDATAlmxlwDATAmPmlx!DATAPmmmhx/DATAmmPmxDATAm(nmyADATA(npnmyDATApnn(nyDATAnopnzDATAoHonPzDATAHooozDATAooHozDATAo po({DATA phpox{"DATAhpp p{CDATApphp8|DATAp@qpx|DATA@qqp|)DATAqq@q}DATAqrqP} DATAr`rq}$DATA`rrr}DATArr`r(~DATAr8srp~DATA8ssr~DATAss8sDATAstsPDATAtXtsDATAXtttDATAttXt DATAt0uthDATA0uxutDATAxuu0uDATAuvxu.DATAvPvuxDATAPvvvDATAvvPv DATAv(wv0 DATA(wpwvp DATApww(w DATAwxpwDATAxHxw8DATAHxxxDATAxxHxȃ!DATAx yxDATA yhyxP,DATAhyy y:DATAyyhy3DATAy@zyxSDATA@zzy DATAzz@z0DATAz{zhDATA{`{z DATA`{{{DATA{{`{0 DATA{8|{pDATA8||{ DATA||8|DATA|}|( DATA}X}|h4DATAX}}}Ј DATA}}X}'DATA}0~}`DATA0~x~}DATAx~~0~$DATA~x~@(DATAP~#DATAPDATAP;DATA(DATA(pDATAp(DATAp8DATAHpDATAHDATA؁HDATA؁ @&DATA h؁.DATAh DATAh8 DATA@ DATA@DATAЃ@&DATAЃ`.DATA`ЃDATA`DATA`87DATA8!DATA8DATAȅ88DATAȅDATAXȅ2DATAXDATAXX DATA0 DATA0xȒ DATAx0DATAxHDATAPDATAPГDATAPDATA(`2DATA(pDATAp( DATAp@0DATAHDATAH"DATA؊H0DATA؊ xDATA h؊2DATAh  DATAhhDATA@DATA@DATAЌ@8DATAЌ3DATA`ЌDATA`( DATA`h1DATA8șDATA8DATAȎ8H DATAȎ*DATAXȎؚDATAX DATAXhDATA0DATA0x DATAx0(DATAxpDATAPDATAPDATAPH DATA(DATA(pȝDATAp(%DATAp`DATAHDATAH DATAؓH !DATAؓ pDATA hؓ0DATAh DATAhXDATA@DATA@РDATAЕ@ DATAЕXDATA`Е+DATA`DATA`@DATA82DATA8DATAȗ80DATAȗpDATAXȗDATAXDATAXH3DATA0DATA0x DATAx0(DATAxXDATAPDATAPDATAP8:DATA(4DATA(pDATAp(PDATApDATAHDATAH(DATA؜HpDATA؜ %DATA h؜ADATAh DATAhȩDDATA@@DATA@DATAО@ЪDATAОDATA`ОhDATA`DATA`DATA8H"DATA8GDATAȠ8DATAȠX!DATAXȠ$DATAXDATAXPDATA0DATA0xDATAx0(!DATAxx/DATAPدDATAP EDATAPDATA(DATA(p(DATAp(XDATApDATAHDATAH8DDATAإH>DATAإ  DATA hإPDATAh ,DATAh7DATA@hDDATA@SDATAЧ@`%DATAЧ>DATA`Ч(^DATA`VDATA`@'DATA8(DATA8+DATAȩ8H-DATAȩ-DATAXȩHDATAX=DATAXgDATA03DATA0x%DATAx0@#DATAx%DATAP0DATAPHDATAPODATA(WDATA(pDATAp(ؽEDATApPODATAHо2DATAH0DATAخHx&DATAخ пWDATA hخX'DATAh ,DATAh4DATA@x$DATA@DATAа@DATAаHDATA`аDATA`2DATA`8DATA81DATA8DATAȲ8(4DATAȲDATAXȲ/DATAX8DATAX2DATA0DATA0x(2DATAx0DATAxDATAP4DATAPDATAP3DATA((DATA(pp6DATAp(DATAp 1DATAHDATAH4DATAطH0DATAط x4DATA hطDATAh DATAhXDATA@DATA@DATAй@DATAйXDATA`й(DATA` DATA`@%DATA8DATA84DATAȻ8HDATAȻ DATAXȻDATAXDATAXXDATA0"DATA0xDATAx00!DATAx5DATAP!DATAP8+DATAP'DATA( DATA(p(DATAp(p'DATAp"DATAH#DATAHh8DATAH#DATA  "DATA hpDATAh DATAh#DATA@HDATA@DATA@DATADATA``DATA`DATA`DATA88DATA8xDATA8iDATAXDATAXbDATAX0DATAXx;DATA0 DATA0x0DATAx0>DATAx.DATAPPBDATAPDATAP?DATA(x;DATA(pDATAp(DATAp`hDATAHDATAH@gDATAH DATA DATA h`DATAh DATAhDATA@8DATA@DATA@'DATA BDATA`cDATA` 3DATA`%DATA8LDATA8XDATA8DATADATAX@DATAXDATAX0DATA0TDATA0x4DATAx0"DATAxX7DATAPDATAP0DATAP`CDATA(0DATA(p0DATAp(DATAp(BDATAH`DATAH(DATAHpDATA +DATA h,DATAh pDATAh7DATA@ DATA@`'DATA@FDATA03DATA3DATA`#!BPY DATAo SDATA""" x4DATA Name: 'RenderMan (.rib)...' DATAPBlender: 233DATAGroup: 'Export'DATA8Tooltip: 'Save/Render a Scene to RenderMan Renderers' DATA8"""DATAhDATA@# RenderMan export script by Christoffer Green and Goran KocovDATA(# Pixie Extension by Joseph MontanezDATA`# version 0.1 Beta9.0bDATA<# the script needs Blender 2.33 and Python 2.3 installedDATA4# to run the script press alt+p in the text windowDATApDATAimport BlenderDATAimport stringDATA import osDATA Ximport sysDATAfrom os import P_NOWAITDATAfrom Blender.Draw import *DATA from Blender.BGL import *DATAhfrom Blender import SceneDATA$from Blender.Scene import RenderDATAfrom math import piDATA@from math import atanDATAfrom math import powDATA֑DATAtry:DATA8 import totiffDATAxexcept:DATAH print "Did not find the totiff module, will use ImageMagic instead\n"DATA(DATAXDATA4# MAKE SURE YOU CHANGE THIS TO YOUR PYTHON FOLDERDATAif (os.name != "posix"):DATA 0 sys.path = ['c:\\python23']DATADATA$scene = Blender.Scene.GetCurrent()?DATA$camobj = scene.getCurrentCamera()ODATA4Pcamera = Blender.Camera.Get(camobj.getData().name)DATADATA# The bevent constantsDATA,(exportevent = 1 # export button pressedDATA(exitevent = 2 # exit button pressedDATA,updateguievent = 3 # update the pressedjerDATA00filetoggleevent = 999 # file button pressedDATADATA# GUI variablesDATAfs = Create('')DATA@menuval = Create(4)DATAdof = Create(0)DATAsamples = Create(2)DATAstop = Create(2.0)DATAXlenght = Create(1.0)DATAdistance = Create(5.0)DDATAsrate = Create(3)DATA0file = Create(0)DATAxbuffer = Create(1)DATA$filename = Create("default.rib")DATA image = Create("default")@2DDATA `dirw = Create("default")DATA$pixierenderer = Create("rndr")JDATA$prmanrenderer = Create("prman")DATA$Pdlrenderer = Create("renderdl")1DATA$bmrtrenderer = Create("rendrib")DATA(entropyrenderer = Create("entropy")DATA$Haqsisrenderer = Create("aqsis")DATA$pixietexmaker = Create("texmake")DATA$prmantexmaker = Create("txmake")DATA$8dltexmaker = Create("tdlmake")DATA$bmrttexmaker = Create("mkmip")DATA$entropytexmaker = Create("mkmip")DATA$(aqsistexmaker = Create("teqser")DATAxradiosity = Create(0)DATAradnum = Create(50)DATAgi = Create(0)DATAHgisteps = Create(100)DATA#PixieDATAindirect = Create(0)DATAocclusion = Create(0)DATAXambiSamples = Create(6)DATA #End PixieDATAgeom = Create(1)DATA meshexport = Create(1)YDATAhpointwidth = Create(1.0)DATAanim = Create(0)DATA maxpixeldist = Create(20)DATAHmaxerror = Create(0.25)DATArshadow = Create(1)DATAsmooth = Create(0.00)DATA areasamples = Create(20)DATAhbuff256 = Create(0)@DATAbuff512 = Create(1)DATAbuff1024 = Create(0)DATA@buff2048 = Create(0)DATAmotionblur = Create(0)DATA motionblurframe = Create(1)DATA rendert = Create(1)m?DATAhcaustics = Create(0)DATAphoton = Create(4000)DATAuv = Create(0)DATA8recurs = Create(4)DATAdebug = Create(0)DATAhiddenlayer = Create(0)DATA globalsettings = Create(1)DATA`scenesettings = Create(0)DATAshadereditor = Create(0)DATAsurfaceshader = Create(3)DATA$8surfaceshadername = Create("")DATAabout = Create(0)DATAshadermenu = Create(1)DATA ambientshader = Create(1.00)DATA hdiffuseshader = Create(0.50)DATA specularshader = Create(0.50)DATA$roughnessshader = Create(0.10)DATA Xcoefshader = Create(1.50)DATA reflblurshader = Create(0.00)DATA refrblurshader = Create(0.00)DATAHobjecteditor = Create(0)DATAconvertbm = Create(1)DiADATA objectshadermenu = Create(0)DATA(arealightMESH = Create(0)DATA precievecaustics = Create(0)DATA transmittcaustics = Create(0)DATA(transmittcausticsslider = Create(1.40)DATAhreflsamples = Create(0)DATArefrsamples = Create(0)DATAkr = Create(1.0)DATA@rendershadow = Create(0)DATAautogs = Create(0)DATA reflectcaustics = Create(0)DATA progress = Create(1)DATAhgain = Create(1.0)DATAgamma = Create(1.0)DATAlightx = Create(1.0)DATA@bias = Create(0.25)DATA raytraceshadow = Create(1)DATAprojection = Create(0)DATA textureblurm = Create(0.0)DATApnorm = Create(0.01)DATAconverttex = Create(1)DATAgisphere = Create(1)DATAHrvisibility = Create(0)uADATAfinalgather = Create(0)CDATArgba = Create(1)DATAcastshadow = Create(1)DATA`reconvert = Create(0)DATAtexturem = Create(' ')DATAxtexturem.val = '' DATAtextshader = Create('Surface "plastic" ')DATA(textshader.val = 'Surface "plastic"'DATAXtextshaderd = Create('Displacement "bumpy" ')DATA,textshaderd.val = 'Displacement "bumpy"'DATAhdritex = Create(' ')DATAhdritex.val = ''DATAhdri = Create(0)DATAHpreworldrafile = Create(' ')DATApreworldrafile.val = ''DATA`preworldra = Create(0)DATApostworldrafile = Create(' ')DATApostworldrafile.val = '' DATApostworldra = Create(0)DATAobjectrafile = Create(' ')DATAobjectrafile.val = ''DATA( objectra = Create(0)DATAp textnor = Create(0)DATA illuminationmenu = Create(0)DATA areagi = Create(0)DATAP indirectgi = Create(1)-DATA eblur = Create(0.00)DATA esamples = Create(1)DATA( gianim = Create(1)-DATAp amesh = Create(0)DATA patchsize = Create(4.0)DATA elemsize = Create(2.0)-DATAH minsize = Create(1.0)DATA DATA # Other variables DATA@ renderer = "PRMan |BMRT |Entropy |3Delight |AQSIS |Pixie "@DATAdp shader = "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"DATADambiSamplesindex = "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"DATA4psratelist = [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"DATAPsshader = "ADD NEW"DATAsshader2 = ""DATAshadernametemp = ""DATA selectedname = ""DATAhselectedtype = "Type: "DATA tmp = ""DATAimagelist = ""DATA((imagelistmenu = "No images loaded"DATA$rgbatext = "rgb |rgba |rgbz |z "DATA0castshadowtext = "Os |opaque |shader |none"DATA0txdone = []DATApDATA# Global variablesDATAincrement = 0DATA xbar = 11DATA `i = 0DATAmeshobjects = 0DATAmaxblur = 10.0DATAmeshnum = 0DATAXDATA0# Create the BlenderMan directories on startupDATAif (os.name != "posix"):DATA0 rootdir = '/BlenderMan/'DATA0x partitionname = Blender.sys.progname[0:2]DATAelse:DATA0 rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$ppdir = rootdir + dirw.val + '/'DATA4globalpropertiesdir = pdir + '/GlobalProperties/'DATA0 surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<displacementshadersdir = pdir + '/DisplacementShaders/'DATA0objectsettingsdir = pdir + '/ObjectSettings/'DATA0Hlightsettingsdir = pdir + '/LightSettings/'DATA4meshesdir = os.path.normpath(pdir + '/Meshes/')DATA$imagesdir = pdir + '/images/'DATA$Xshadowdir = pdir + '/shadows/'DATA(texturesdir = pdir + '/textures/'DATA$shadersdir = pdir + '/shaders/'DATAPtry: os.mkdir(rootdir)DATAexcept OSError: passDATAtry: os.mkdir(pdir)DATA except OSError: passDATA$htry: os.mkdir(surfaceshadersdir)DATAexcept OSError: passDATA$try: os.mkdir(globalpropertiesdir)DATAPexcept OSError: passDATA(try: os.mkdir(displacementshadersdir)DATAexcept OSError: passDATA8try: os.mkdir(meshesdir)DATAexcept OSError: passDATA$try: os.mkdir(objectsettingsdir)DATA except OSError: passp`DATA ` try: os.mkdir(lightsettingsdir)DATA except OSError: passDATA try: os.mkdir(shadowdir)DATA@!except OSError: passpDATA!try: os.mkdir(texturesdir)DATA!except OSError: passDATA"try: os.mkdir(imagesdir)DATA`"except OSError: passDATA"DATA "def gui():DATAT# global menuval, dof, samples, stop, lenght, distance, srate, file, buffer, dirwDATAX# global filename, image, radiosity, radnum, gi, gisteps, geom, meshexport, pointwidthDATA`$ global anim, maxpixeldist, maxerror, smooth, areasamples, buff256, buff512, buff1024, buff2048DATAt$ global motionblur, motionblurframe, rendert, caustics, photon, uv, recurs, debug, globalsettings, scenesettingsDATAdH% global shadereditor, sshader, surfaceshader, surfaceshadername, about, shadermenu, ambientshaderDATAd% global diffuseshader, specularshader, roughnessshader, coefshader, reflblurshader, refrblurshaderDATA`h& global objecteditor, selectedname, convertbm, objectshadermenu, arealightMESH, recievecausticsDATA\& global transmittcaustics, transmittcausticsslider, reflsamples, refrsamples, rendershadowDATAh' global xbar, autogs, kr, progress, indirectgi, areagi, eblur, esamples, gianim, amesh, reflectcausticsDATAd( global patchsize, elemsize, minsize, textshader, raytraceshadow, bias, textshaderd, gain, gammaDATAT( global lightx, textureblurm, texturem, norm, planarm, converttex, imagelistmenuDATA`() global textnor, illuminationmenu, projection, hiddenlayer, gisphere, rvisibility, finalgatherDATAH) global hdritex, hdri, rgba, castshadow, reconvert, maxblur, sshader2DATA`0* global prmanrenderer, dlrenderer, bmrtrenderer, entropyrenderer, aqsisrenderer, pixierendererDATA`* global prmantexmaker, dltexmaker, bmrttexmaker, entropytexmaker, aqsistexmaker, pixietexmakeraDATA\P+ global preworldra, preworldrafile, postworldra, postworldrafile, objectra, objectrafileDATA@+ global ambiSamples, occlusion, indirect #Pixie Ambient stuff DATAH,3-JDATA4x, if (autogs.val == 1): #automaticly select objectshDATA , Redraw(1)DATA- getSelectedObject()-0DATAX- saveload(0,0,'object')DATA-8 .DATA- # GUI settingsDATA8. glClearColor(0.4,0.48,0.57, 0.0) # blue background-x DATA x. glClear(GL_COLOR_BUFFER_BIT)- DATA,. glColor3f(0, 0, 0) # main black back 18DATA / glRectf(2, 2, 630, 340)1-JDATA0h/ glColor3f(0.4, 0.48, 0.57) # main blue backgDATA/ glRectf(4, 4, 628, 300)~@DATA,0 glColor3f(0.27, 0.3, 0.35) # blue topjerDATAh0 glRectf(4, 302, 628, 338)ADATA0 glColor3f(1,1,1)erDATA0DATA, 1 # Buttons for the main BlenderMan panels-JDATA|x1 globalsettings = Toggle("Global Settings", 12, 75, 310, 100, 20, globalsettings.val, "Global project settings")DATAt 2 scenesettings = Toggle("Scene Settings", 557, 175, 310, 100, 20, scenesettings.val, "Global scene settings")DATA2 shadereditor = Toggle("Shader Editor", 13, 275, 310, 100, 20, shadereditor.val, "Surface and diplacement shader settings")DATAp3 objecteditor = Toggle("Object Editor", 33, 375, 310, 100, 20, objecteditor.val, "Edit object settings that Blender doesn't support")DATAh04 about = Toggle("About", 16, 475, 310, 100, 20, about.val, "Information about this script")DATA4DATA4 # Global SettingsDATA 85 if (globalsettings.val == 1):DATA5 debug = Slider("Debug Level ", updateguievent, 440, 270, 180, 20, debug.val, 0, 3, 0, "How much debug information the renderer should output")DATAP6 hiddenlayer = Number("Hidden Layer:", 0, 10, 270, 120, 20, hiddenlayer.val, 0, 20, "Objects that are present on this layer won't be exported")DATA7 progress = Toggle("Progressbar", updateguievent, 520, 30, 100, 20, progress.val, "Hint: It takes slightly less time to export a scene with the progressbar off")DATAP7 gain = Slider("Gain ", 0, 225, 270, 180, 20, gain.val, 0.0, 5.0, 0)REEDATAPp8 gamma = Slider("Gamma ", 0, 225, 248, 180, 20, gamma.val, 0.0, 5.0, 0)DATA8 lightx = Slider("Light* ", 0, 225, 226, 180, 20, lightx.val, 0.0, 15.0, 0, "Light intensity multiplier for lamps (pointlights) and spotlights")DATA9 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|: reconvert = Toggle("Reconvert Textures", updateguievent, 440, 226, 180, 20, reconvert.val, "Reconvert UV textures")DATA`; rgba = Menu(rgbatext, updateguievent, 370, 150, 90, 20, rgba.val, "What channels to export (A = Alpha. Z = Depth)")DATA< menuval = Menu(renderer, updateguievent, 370, 125, 90, 20, menuval.val, "Which renderer should be taken into account when exporting the scene and displaying the GUI")DATA< samples = Menu(pixelsamples, updateguievent, 370, 75, 90, 20, samples.val, "Silhouette, motion blur and depth of field quality")DATAd= srate = Menu(shadingrate, updateguievent, 370, 100, 90, 20, srate.val, "Shading quality")@DATAp8> filename = String("Filename: ", 0, 150, 75, 140, 19, filename.val, 200, "Name of the master RIB file")DATAl> image = String("Image: ", 0, 150, 100, 140, 19, image.val, 200, "Name of the rendered image(s)")DATAdp? dirw = String("Project: ", 500, 150, 125, 140, 19, dirw.val, 200, "Name of the project")DATA@ if menuval.val == 1:DATAH@ prmanrenderer = String("Renderer: ", 0, 480, 125, 140, 19, prmanrenderer.val, 200, "Name of the renderer executable")DATA@ prmantexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, prmantexmaker.val, 200, "Name of the mipmap texture making executable")VDATAA elif menuval.val == 2:DATA|B bmrtrenderer = String("Renderer: ", 0, 480, 125, 140, 19, bmrtrenderer.val, 200, "Name of the renderer executable")DATAB bmrttexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, bmrttexmaker.val, 200, "Name of the mipmap texture making executable")DATA`C elif menuval.val == 3:DATAC entropyrenderer = String("Renderer: ", 0, 480, 125, 140, 19, entropyrenderer.val, 200, "Name of the renderer executable")DATAXD entropytexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, entropytexmaker.val, 200, "Name of the mipmap texture making executable")DATAE elif menuval.val == 4:DATAx`E dlrenderer = String("Renderer: ", 0, 480, 125, 140, 19, dlrenderer.val, 200, "Name of the renderer executable")DATAF dltexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, dltexmaker.val, 200, "Name of the mipmap texture making executable")EDATAF elif menuval.val == 5:DATAG aqsisrenderer = String("Renderer: ", 0, 480, 125, 140, 19, aqsisrenderer.val, 200, "Name of the renderer executable")DATAG aqsistexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, aqsistexmaker.val, 200, "Name of the mipmap texture making executable")DATAxH elif menuval.val == 6:npuDATAH pixierenderer = String("Renderer: ", 0, 480, 125, 140, 19, pixierenderer.val, 200, "Name of the renderer executable")DATApI pixietexmaker = String("Tex. Maker: ", 0, 480, 100, 140, 19, pixietexmaker.val, 200, "Name of the mipmap texture making executable")DATAx0J anim = Toggle("Animation", updateguievent, 150, 30, 69, 19, anim.val, "Render single or multiple frames")DATAJ rendert = Toggle("Render", updateguievent, 220, 30, 69, 19, rendert.val, "Start the renderer after the export is done")DATAlK file = Toggle("File", filetoggleevent, 150, 50, 70, 20, file.val, "Render the image to a file")DATAl L buffer = Toggle("Buffer", 5, 220, 50, 70, 20, buffer.val, "Render the image to the framebuffer")DATALL Button("Exit", exitevent, 385, 30, 75, 20, "Exit the script")DATAP0M Button("Export", exportevent, 310, 30, 74, 20, "Start the export")DATAXM Button("Load Sett", 30, 310, 51, 74, 20, "Load global and scene settings")DATAX8N Button("Save Sett", 31, 385, 51, 75, 20, "Save global and scene settings")DATAN glRasterPos2i(310, 80)DATAO Text("Samples")DATAHO glRasterPos2i(310, 105)DATAO Text("ShRate")DATAO glRasterPos2i(310, 130)DATAP Text("Renderer")DATAXP glRasterPos2i(310, 155)DATAP Text("Channels")DATAP if (progress.val == 1):DATA(Q # Progressbar textDATApQ glRasterPos2i(10, 25)DATA8Q Text("Mesh: %s/%s"%(int(meshnum), int(meshobjects)))DATA R## if anim.val:DATA`R## glRasterPos2i(10, 40)DATA,R## display = Blender.Scene.GetCurrent()DATAdS## Text("Frame: %s/%s"%(display.currentFrame(), display.endFrame() - display.startFrame() + 1))EDATAS # Progressbar backplateDATAS glColor3f(0, 0, 0)DATA T glRectf(9, 10, 620, 21)DATA hT glColor3f(0.78, 0.7, 0.8)DATAT glRectf(10, 9, 621, 20)DATAU glColor3f(0.4, 0.4, 0.4)DATAHU glRectf(10, 10, 620, 20)DATAU # ProgressbarDATAU glColor3f(0, 0, 0)DATA$V glRectf(10, 10, xbar + 1, 20)DATA hV glColor3f(0.78, 0.7, 0.8)DATA V glRectf(10, 11, xbar, 20)XDATA W glColor3f(0.52, 0.25, 0.45)DATA XW glRectf(11, 11, xbar, 19)DATAW DATAW # Scene settingsDATA X if (scenesettings.val == 1):DATAhX preworldra = Toggle("PreWorld ReadArchive", updateguievent, 10, 60, 180, 20, preworldra.val, "Add a ReadArchive to a user-defined file just before WorldBegin")DATA@Y if (preworldra.val == 1):DATA\Y preworldrafile = String("File: ", 0, 190, 60, 430, 20, preworldrafile.val, 100)DATAZ postworldra = Toggle("PostWorld ReadArchive", updateguievent, 10, 40, 180, 20, postworldra.val, "Add a ReadArchive to a user-defined file just after WorldBegin")DATA Z if (postworldra.val == 1):# 0.2):DATA  eblur.val = 0.2DATAP  maxblur = 0.2DATA  Register (gui, event, bevent)DATA  if (evt == 245):DATA  rendershadow.val = 0DATAh  raytraceshadow.val = 1DATA  saveload(1,0,'object')DATA  maxblur = 10.0DATA 8  Register (gui, event, bevent)DATA  if (evt == 475):DATA  indirectgi.val = 1DATA  areagi.val = 0DATA P  Register (gui, event, bevent)DATA  if (evt == 476):DATA  indirectgi.val = 0DATA( areagi.val = 1DATA h Register (gui, event, bevent)DATA, if (evt == 367): # Convert texturesDATA( imagelist = os.listdir(texturesdir) DATAh if (imagelist != []):DATA for image in imagelist:DATA, rawimage = '%s/%s'%(texturesdir, image)DATA$P totiff.SetOutDir(texturesdir)DATA( ok = totiff.ConvertShort(rawimage)DATA$ if not ok[0]: # error occurredDATA(H print ok[1] # print error messageDATA( imagelist = os.listdir(texturesdir) DATA imagelisttif = []DATA@ for image in imagelist:DATA  if (image[-3:] == 'tif'):DATA, imagelisttif = imagelisttif + [image]DATA40 imagelistmenu = string.join(imagelisttif, "|")DATA  Register (gui, event, bevent)DATA if (evt == 368):DATA(  imagelist = os.listdir(texturesdir) DATAx if (imagelist != []):DATA imagelisttif = []DATA for image in imagelist:DATA P if (image[-3:] == 'tif'):DATA, imagelisttif = imagelisttif + [image]DATA4 imagelistmenu = string.join(imagelisttif, "|")DATA8X texturem.val = str(imagelisttif[converttex.val - 1])DATA saveload(1,0,'shader')DATA  Register (gui, event, bevent)DATA XRegister (gui, event, bevent)DATADATAdef getSelectedObject():DATA@  global selectedname, selectedtype, namelist, sshader2, sshaderDATA try:DATA0 selected = Blender.Object.GetSelected()[0]DATA ( except:DATA ` return 0DATA  selectedname = selected.nameDATA$ if (selected.getType() == "Mesh"):DATA 8 selectedtype = 'Type: Mesh'DATA( elif (selected.getType() == "Lamp"):DATA  selectedtype = 'Type: Lamp'DATA0 else:DATA h selectedtype = 'Type: Other'DATA( namelist = string.split(sshader, "|")DATA namelist.remove('ADD NEW')DATA X namelist = map(str, namelist)DATA( sshader2 = string.join(namelist, "|")DATA  return 1DATA8 DATA(hdef saveload(save, exportS, module):DATA if (module == 'shader'):DATA Variables = [shadermenu.val, ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, coefshader.val, DATA reflblurshader.val, refrblurshader.val, reflsamples.val, refrsamples.val, kr.val, textshader.val, textshaderd.val, texturem.val,DATATh textureblurm.val, norm.val, textnor.val, illuminationmenu.val, projection.val]DATA if exportS:DATA,(  namelist = string.split(sshader, "|")DATA0  name = namelist[objectshadermenu.val - 1]DATA  else: DATA ! name = surfaceshadername.valDATAh! if (name == ''):DATA ! returnDATA$! fname = surfaceshadersdir + nameDATA0" if (module == 'object'):DATAlx" Variables = [convertbm.val, objectshadermenu.val, geom.val, meshexport.val, uv.val, arealightMESH.val, DATAx# areasamples.val, recievecaustics.val, transmittcaustics.val, transmittcausticsslider.val, caustics.val, photon.val, DATAp# rendershadow.val, buff256.val, buff512.val, buff1024.val, buff2048.val, eblur.val, esamples.val, amesh.val, DATAhX$ reflectcaustics.val, raytraceshadow.val, bias.val, rvisibility.val, castshadow.val, pointwidth.val, DATA$$ objectra.val, objectrafile.val]DATA,@% fname = objectsettingsdir + selectednameDATA% if (selectedname == ''): DATA % returnDATA& if (module == 'global'):DATA|`& Variables = [gi.val, gisteps.val, radiosity.val, radnum.val, dirw.val, image.val, filename.val, file.val, buffer.val, DATAx' anim.val, rendert.val, menuval.val, samples.val, srate.val, debug.val, maxerror.val, maxpixeldist.val, geom.val, DATAp' motionblur.val, motionblurframe.val, dof.val, stop.val, lenght.val, distance.val, autogs.val, progress.val, DATAxP( indirectgi.val, areagi.val, gianim.val, patchsize.val, elemsize.val, minsize.val, recurs.val, gain.val, gamma.val, DATAp( lightx.val, hiddenlayer.val, gisphere.val, finalgather.val, hdri.val, hdritex.val, rgba.val, reconvert.val, DATAt) prmanrenderer.val, bmrtrenderer.val, entropyrenderer.val, dlrenderer.val, aqsisrenderer.val, pixierenderer.val,DATAt8* prmantexmaker.val, bmrttexmaker.val, entropytexmaker.val, dltexmaker.val, aqsistexmaker.val, pixietexmaker.val,DATA|* preworldra.val, preworldrafile.val, postworldra.val, postworldrafile.val, ambiSamples.val, occlusion.val, indirect.val]DATA4+ fname = globalpropertiesdir + 'GlobalProperties'DATA+ # Save variablesDATA , if (save == 1):DATA`, f = open(fname,'w')DATA$, writeln(f,'BlenderMan0.1Beta9.0')DATA, for i in Variables:DATA @- writeln(f,type(i).__name__)DATA- if (i == '\n'):DATA- writeln(f,'')DATA. continueDATAP. writeln(f,i)DATA.DATA. # Load variablesDATA/ if (save == 0):DATA@/ try:DATAx/ f = open(fname,'r')DATA / except: DATA / returnDATA 00 index = 0DATA h0 version = str(f.readline())DATA,0 if (version != 'BlenderMan0.1Beta9.0\n'):DATA 1 returnDATAH1 for i in Variables:DATA 1 varType = str(f.readline())DATA1 if (varType == "str\n"):DATA,(2 Variables[index] = str(f.readline())DATA 2 elif (varType == "float\n"):DATA,2 Variables[index] = float(f.readline())DATA (3 elif (varType == "int\n"):DATA,x3 Variables[index] = int(f.readline())DATA3 index += 1DATA 4 f.close()DATAH4 if (module == 'shader'):DATA$4 shadermenu.val = Variables[0]DATA(4 ambientshader.val = Variables[1]DATA(85 diffuseshader.val = Variables[2]DATA(5 specularshader.val = Variables[3]DATA(5 roughnessshader.val = Variables[4]DATA$@6 coefshader.val = Variables[5]DATA(6 reflblurshader.val = Variables[6]DATA(6 refrblurshader.val = Variables[7]DATA$@7 reflsamples.val = Variables[8]DATA$7 refrsamples.val = Variables[9]DATA 7 kr.val = Variables[10]DATA$08 textshader.val = Variables[11]DATA$8 textshaderd.val = Variables[12]DATA$8 texturem.val = Variables[13]DATA( 9 textureblurm.val = Variables[14]DATA x9 norm.val = Variables[15]DATA$9 textnor.val = Variables[16]DATA,: illuminationmenu.val = Variables[17]DATA$p: projection.val = Variables[18]DATA: elif (module == 'object'):DATA$; convertbm.val = Variables[0]DATA(X; objectshadermenu.val = Variables[1]DATA ; geom.val = Variables[2]DATA$< meshexport.val = Variables[3]DATAP< uv.val = Variables[4]DATA(< arealightMESH.val = Variables[5]DATA$< areasamples.val = Variables[6]DATA(@= recievecaustics.val = Variables[7]DATA,= transmittcaustics.val = Variables[8]DATA0= transmittcausticsslider.val = Variables[9]DATA$P> caustics.val = Variables[10]DATA > photon.val = Variables[11]DATA(> rendershadow.val = Variables[12]DATA$H? buff256.val = Variables[13]DATA$? buff512.val = Variables[14]DATA$? buff1024.val = Variables[15]DATA$8@ buff2048.val = Variables[16]DATA @ eblur.val = Variables[17]DATA$@ esamples.val = Variables[18]DATA (A amesh.val = Variables[19]DATA(xA reflectcaustics.val = Variables[20]DATA(A raytraceshadow.val = Variables[21]DATA (B bias.val = Variables[22]DATA$xB rvisibility.val = Variables[23]DATA$B castshadow.val = Variables[24]DATA$C pointwidth.val = Variables[25]DATA$hC objectra.val = Variables[26]DATA$C objectrafile.val = Variables[27]DATAD elif (module == 'global'):DATAPD gi.val = Variables[0]DATA D gisteps.val = Variables[1]DATA$D radiosity.val = Variables[2]DATA 8E radnum.val = Variables[3]DATA E dirw.val = Variables[4]DATA E image.val = Variables[5]DATA$(F filename.val = Variables[6]DATA xF file.val = Variables[7]DATA F buffer.val = Variables[8]DATA G anim.val = Variables[9]DATA$hG rendert.val = Variables[10]DATA$G menuval.val = Variables[11]DATA$H samples.val = Variables[12]DATA XH srate.val = Variables[13]DATA H debug.val = Variables[14]DATA$H maxerror.val = Variables[15]DATA(HI maxpixeldist.val = Variables[16]DATA I geom.val = Variables[17]DATA$I motionblur.val = Variables[18]DATA(@J motionblurframe.val = Variables[19]DATA J dof.val = Variables[20]DATA J stop.val = Variables[21]DATA 8K lenght.val = Variables[22]DATA$K distance.val = Variables[23]DATA K autogs.val = Variables[24]DATA$(L progress.val = Variables[25]DATA$xL indirectgi.val = Variables[26]DATA L areagi.val = Variables[27]DATA M gianim.val = Variables[28]DATA$hM patchsize.val = Variables[29]DATA$M elemsize.val = Variables[30]DATA$N minsize.val = Variables[31]DATA XN recurs.val = Variables[32]DATA N gain.val = Variables[33]DATA N gamma.val = Variables[34]DATA HO lightx.val = Variables[35]DATA$O hiddenlayer.val = Variables[36]DATA$O gisphere.val = Variables[37]DATA$8P finalgather.val = Variables[38]DATA P hdri.val = Variables[39]DATA P hdritex.val = Variables[40]DATA (Q rgba.val = Variables[41]DATA$xQ reconvert.val = Variables[42]DATA(Q prmanrenderer.val = Variables[43]DATA$ R bmrtrenderer.val = Variables[44]DATA(pR entropyrenderer.val = Variables[45]DATA$R dlrenderer.val = Variables[46]DATA(S aqsisrenderer.val = Variables[47]DATA(pS pixierenderer.val = Variables[48]DATA(S prmantexmaker.val = Variables[49]DATA$ T bmrttexmaker.val = Variables[50]DATA(pT entropytexmaker.val = Variables[51]DATA$T dltexmaker.val = Variables[52]DATA(U aqsistexmaker.val = Variables[53]DATA(pU pixietexmaker.val = Variables[54]DATA$U preworldra.val = Variables[55]DATA(V preworldrafile.val = Variables[56] DATA$pV postworldra.val = Variables[57]DATA(V postworldrafile.val = Variables[58] DATA(W ambiSamples.val = Variables[59] DATA$pW occlusion.val = Variables[60] DATA,W #ambiSamplesindex.val = Variables[61] DATA$X indirect.val = Variables[61]DATAhX DATAXdef writeln(f,x):DATAX try:DATAxY if (type(x).__name__ == 'string'): # this thing is to combat a bug that saves strings with a \n, (we dont want that)DATA Y nn = string.find(x, '\n')DATAZ if (nn > 0):DATAHZ x = x[:nn] + x[nn + 1:]DATAZ f.write(str(x))DATAZ f.write('\n')DATA [ except:DATAH[ passDATA[DATA[def readint(f):DATA[ try:DATA(\ return int(f.readline())DATA p\ except:DATA\ passDATA\def readfloat(f):DATA ] try:DATA X] return float(f.readline())DATA ] except:DATA] passDATA^def readstr(f):DATAX^ try:DATA^ s = (f.readline())DATA^ nn = string.find(s, '\n')DATA _ if (nn > 0):DATA`_ s = s[:nn] + s[nn + 1:]DATA _ return sDATA _ except:DATA ` print sDATAP`DATA`def saveShaderName(save):DATA` global sshaderDATA<a if save: f = open(surfaceshadersdir + 'ShaderNames','w')DATA8pa else: f = open(surfaceshadersdir + 'ShaderNames','r')DATA a if save: writeln(f,sshader)DATA(b else: sshader = readstr(f)DATA pb f.close()DATAbtry: DATA4b f = open(surfaceshadersdir + 'ShaderNames','r')DATA@cexcept:DATAxc saveShaderName(1)DATA c Register (gui, event, bevent)DATAdDATA8dsaveShaderName(0)DATA xdRegister (gui, event, bevent)DATAdsshader2 = sshaderDATAeDATA8eDATAhedef newdirs():DATA`e global pdir, globalpropertiesdir, surfaceshadersdir, displacementshadersdir, objectsettingsdirDATAh8f global lightsettingsdir, lightsettingsdir, meshesdir, imagesdir, shadowdir, texturesdir, shadersdirDATAf if (os.name != "posix"):DATAg rootdir = '/BlenderMan/'DATA`g else:DATA0g rootdir = os.getenv("HOME") + '/BlenderMan/'DATA$g pdir = rootdir + dirw.val + '/'DATA4Hh globalpropertiesdir = pdir + '/GlobalProperties/'DATA0h surfaceshadersdir = pdir + '/SurfaceShaders/'DATA<i displacementshadersdir = pdir + '/DisplacementShaders/'DATA0pi objectsettingsdir = pdir + '/ObjectSettings/'DATA0i lightsettingsdir = pdir + '/LightSettings/'DATA 0j meshesdir = pdir + '/Meshes/'DATA j imagesdir = pdir + '/images/'DATA j shadowdir = pdir + '/shadows/'DATA$ k texturesdir = pdir + '/textures/'DATA$pk shadersdir = pdir + '/shaders/'DATAk try:DATAk os.mkdir(pdir)DATA 8l os.mkdir(globalpropertiesdir)DATA l os.mkdir(surfaceshadersdir)DATA$l os.mkdir(displacementshadersdir)DATA(m os.mkdir(meshesdir)DATA pm os.mkdir(objectsettingsdir)DATA m os.mkdir(lightsettingsdir)DATAn os.mkdir(shadowdir)DATAXn os.mkdir(texturesdir)DATAn os.mkdir(imagesdir)DATAn except OSError: DATA(o passDATA`oDATA,odef writeHeader(ribfile, frames, frames2):DATA\o ribfile.write('Option "searchpath" "texture" ["%s"]\n'%(texturesdir + ":" + shadowdir))DATA pp display = Scene.GetCurrent()DATA,p context = display.getRenderingContext()DATA$q yResolution = context.imageSizeY()DATA$hq xResolution = context.imageSizeX()DATA q if xResolution >= yResolution:DATA,r factor = yResolution / float(xResolution)DATA`r else:DATA,r factor = xResolution / float(yResolution)DATA r if Blender.World.Get() != []:DATA$@s world = Blender.World.Get()[0]DATA s if world.hor != [0, 0, 0]:DATAps ribfile.write('Imager "background" "color bgcolor" [%s %s %s]\n'%(world.hor[0], world.hor[1], world.hor[2]))DATA$t scene = Blender.Scene.GetCurrent()DATA$t camobj = scene.getCurrentCamera()DATA< u camera = Blender.Camera.Get(camobj.getData().name)DATApu ribfile.write('Projection "perspective" "fov" [%s]\n'%(360.0 * atan(factor * 16.0 / camera.lens) /pi))DATA@(v ribfile.write('Format %s %s 1\n' % (xResolution, yResolution))DATAHv ribfile.write("Clipping %s %s\n" % (camera.clipStart, camera.clipEnd))DATADw ribfile.write('PixelSamples %s %s\n'%(samples.val, samples.val))DATAw try:DATA<w ribfile.write('Exposure %s %s\n'%(gain.val, gamma.val))DATA x except: DATAXx passDATAx if (menuval.val != 2):DATAx if (dof.val == 1): DATAT y ribfile.write('DepthOfField %s %s %s\n'%(stop.val, lenght.val, distance.val))DATA<y ribfile.write('ShadingRate %s\n'%sratelist[srate.val - 1])DATA4z if ((radiosity.val == 1) & (menuval.val == 2)):DATA@hz ribfile.write('Option "radiosity" "steps" [%s]\n'%radnum.val)DATAHz ribfile.write('Attribute "indirect" "maxerror" [%s]\n'%maxerror.val)DATAXP{ ribfile.write('Attribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATAP{ ribfile.write('Attribute "radiosity" "float patchsize" [%s]'%patchsize.val)DATALX| ribfile.write('Attribute "radiosity" "float elemsize" [%s]'%elemsize.val)DATAL| ribfile.write('Attribute "radiosity" "float minsize" [%s]'%minsize.val)DATAH} if (motionblur.val == 1):DATA$} ribfile.write('Shutter 0 1\n')DATA0} if (menuval.val == 1) or (menuval.val == 4):DATAH@~ ribfile.write('Option "trace" "integer maxdepth" [%s]\n'%recurs.val)DATA0~ elif (menuval.val == 2) or (menuval.val == 3):DATAD ribfile.write('Option "render" "max_raylevel" [%s]\n'%recurs.val)DATAL ribfile.write('Option "statistics" "integer endofframe" [%s]\n'%debug.val)DATA0 if ((indirectgi.val == 1) & (gi.val == 1)):DATA,` if ((gianim.val == 0) & (frames2 == 0)):DATAP ribfile.write('Option "indirect" "string savefile" ["%s/irr.dat"]\n'%pdir)DATA08 elif ((frames2 > 0) or (gianim.val == 1)):DATA if (anim.val == 1):DATAP ribfile.write('Option "indirect" "string seedfile" ["%s/irr.dat"]\n'%pdir)DATA` if (menuval.val == 3):DATA@ ribfile.write('Option "indirect" "integer maxbounce" [3]\n')DATADATAHDATA(xdef writeTransform(ribfile, lampobj):DATAЃ global cframeDATA Blender.Get('curframe')DATAX Blender.Window.RedrawAll()DATA if (lampobj == 0):DATA$ camobj = scene.getCurrentCamera()DATA0 else:DATAh camobj = lampobjDATA, caminvmatrix = camobj.getInverseMatrix()DATA  ribfile.write("Transform [" +DATA<P "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s]\n" %DATA (caminvmatrix[0][0],DATA caminvmatrix[0][1],DATAH -caminvmatrix[0][2],DATA caminvmatrix[0][3],DATA؇ caminvmatrix[1][0],DATA  caminvmatrix[1][1],DATAh -caminvmatrix[1][2],DATA caminvmatrix[1][3],DATA caminvmatrix[2][0],DATA@ caminvmatrix[2][1],DATA -caminvmatrix[2][2],DATAЉ caminvmatrix[2][3],DATA caminvmatrix[3][0],DATA` caminvmatrix[3][1],DATA -caminvmatrix[3][2],DATA caminvmatrix[3][3]))DATA8DATAhdef ambientLight(ribfile):DATA  if Blender.World.Get() != []:DATA$ world = Blender.World.Get()[0]DATA(P if (occlusion.val) or (indirect.val):DATAH ribfile.write('\tAttribute "visibility" "transmission" "opaque"\n')DATA  else:DATAX ribfile.write('\tLightSource "ambientlight" 998 "float intensity" [1] "color lightcolor" [%s %s %s]\n\n'%(world.amb[0], world.amb[1], world.amb[2]))DATA DATAPdef checkLamps(ribfile):DATA global selectednameDATA lampnum = 0DATA(  for objects in Blender.Object.Get():DATAx name = objects.getName()DATA$ if (objects.getType() == "Lamp"):DATA lampnum += 1DATAP resetObject()DATA selectedname = nameDATA$ؐ Register (gui, event, bevent)DATA( saveload(0,0,'object')DATA$p Register (gui, event, bevent)DATA( writeLamps(ribfile, name, lampnum)DATA ribfile.write("\n")DATA`DATA(def renderShadows(ribfile, frames2):DATA$ global selectedname, partitionnameDATA(8 display = Blender.Scene.GetCurrent()DATA$ cframe = Blender.Get('curframe')DATA( for objects in Blender.Object.Get():DATA8 name = objects.getName()DATA$ if (objects.getType() == "Lamp"):DATAД resetObject()DATA$ Register (gui, event, bevent)DATA` selectedname = nameDATA saveload(0,0,'object')DATA$ Register (gui, event, bevent)DATA @ if (rendershadow.val == 1):DATA if (anim.val == 1):DATA,ؖ shadowframe = Blender.Get('curframe')DATA 0 else:DATAh shadowframe = ''DATAH ribfiledir = os.path.normpath(shadowdir + name + str(shadowframe))DATA(( shadowrib = open(ribfiledir, 'w')DATA4 if ((menuval.val == 4) & (os.name != "posix")):DATA ribfile.write('ReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + shadowdir + name + str(shadowframe))))))DATA  else:DATAP ribfile.write('ReadArchive "%s"\n'%(shadowdir + name + str(shadowframe)))DATA(` shadowrib.write('FrameBegin 0\n')DATA( lampobj = Blender.Object.Get(name)DATA4 lamp = Blender.Lamp.Get(lampobj.getData().name)DATA|p if ((lamp.getMode() & lamp.Modes['Shadows']) & (lamp.type == 2)): # if it is set to render shadow and is a spotlightDATA if (buff256.val == 1):DATA` buffer = 256DATA  elif (buff512.val == 1):DATA buffer = 512DATA 0 elif (buff1024.val == 1):DATA buffer = 1024DATA  elif (buff2048.val == 1):DATA buffer = 2048DATAPP shadowrib.write('Projection "perspective" "fov" %s\n' %(lamp.spotSize))DATA,О shadowrib.write('PixelSamples 1 1\n')DATA4( if (menuval.val != 2) and (menuval.val != 3):DATAD shadowrib.write('Hider "hidden" "depthfilter" "midpoint"\n')DATA if (menuval.val == 3):DATA4@ shadowrib.write('PixelFilter "min" 1 1\n')DATA  else:DATA4ؠ shadowrib.write('PixelFilter "box" 1 1\n')DATA88 shadowrib.write('Hider "hidden" "jitter" [0]\n')DATA( writeTransform(shadowrib, lampobj)DATA< shadowrib.write('Format %s %s 1\n'%(buffer, buffer))DATA\` shadowrib.write('Display "%s/%s%s.pic" "zfile" "z"\n'%(shadowdir, name, shadowframe))DATA if menuval.val == 5:DATA,0 shadowrib.write('ShadingRate 1\n')DATA  else:DATA, shadowrib.write('ShadingRate 4\n')DATA( shadowrib.write('WorldBegin \n')DATAp shadows = 1DATA8 createObjects(shadowrib, cframe, shadows, frames2)DATA$ shadowrib.write('WorldEnd \n')DATAh shadowrib.write('MakeShadow "%s/%s%s.pic" "%s/%s%s.tx"\n'%(shadowdir, name, shadowframe, shadowdir, name, shadowframe))DATA$ shadowrib.write('FrameEnd\n')DATAhDATA(def writeLamps(ribfile, name, lampnum):DATA global selectednameDATA$8 lampobj = Blender.Object.Get(name)DATA4 lamp = Blender.Lamp.Get(lampobj.getData().name)DATA4 x = lampobj.matrix[3][0] / lampobj.matrix[3][3]DATA4H y = lampobj.matrix[3][1] / lampobj.matrix[3][3]DATA4 z = lampobj.matrix[3][2] / lampobj.matrix[3][3]DATA4 tox = -lampobj.matrix[2][0] + lampobj.matrix[3][0]DATA4h toy = -lampobj.matrix[2][1] + lampobj.matrix[3][1]DATA4ȩ toz = -lampobj.matrix[2][2] + lampobj.matrix[3][2]DATA0( if lamp.getMode() & lamp.Modes['Negative']:DATA negative = -1DATAȪ else:DATA negative = 1DATA@ selectedname = nameDATA  Register (gui, event, bevent)DATAث saveload(0,0,'object')DATA  if (caustics.val):DATA0` ribfile.write('\tLightSource "caustic" 2\n')DATA( ribfile.write('\tIlluminate 2 0\n\n')DATA( ribfile.write('\tTransformBegin\n')DATALp ribfile.write('\tAttribute "light" "integer nphotons" [%s]\n'%photon.val)DATA, if lamp.getMode() & lamp.Modes['Shadows']:DATA@ shadow = 'on'DATA else:DATA shadow = 'off'DATA0 if (menuval.val == 2) or (menuval.val == 4):DATA X if (raytraceshadow.val == 1):DATAH ribfile.write('\tAttribute "light" "shadows" ["%s"]\n' % (shadow))DATA  else:DATA<X ribfile.write('\tAttribute "light" "shadows" ["off"]\n')DATA if (lamp.type == 2):DATA if (anim.val == 1):DATA0P shadowframe = '%s'%(Blender.Get('curframe'))DATA else:DATA shadowframe = ''DATA$( energratio = lamp.dist * negativeDATA8x if ((shadow == 'on') and (raytraceshadow.val == 1)):DATA if (menuval.val == 3):DATA( shadowname = 'shadow'DATAp elif (menuval.val == 1):DATA shadowname = 'raytrace'DATA elif (menuval.val == 6):DATAHH ribfile.write('\t(Attribute "visibility" "transmission" "opaque")')DATA shadowname = 'raytrace'DATA  else:DATA@ shadowname = ''DATA else:DATA4 if (shadow == 'on') and (rendershadow.val == 1):DATA, shadowname = name + shadowframe + '.tx'DATA p else:DATA shadowname = ''DATA@ if (menuval.val == 6) and (shadow == 'off'): #Pixie RenderDATAX ribfile.write('\tLightSource "spotlight" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATAx %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAp elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 0): #Pixie Render with SpotShadowsDATA( ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATAP %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATAt` elif (menuval.val == 6) and (shadow == 'on') and (raytraceshadow.val == 1): #Pixie Render with Ray Spot shadowsDATA ribfile.write('\tLightSource "shadowspot" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA( %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA8 else:DATAp ribfile.write('\tLightSource "bml" %d "float shadowbias" %s "float blur" %s "float samples" %s "coneangle" %s "conedeltaangle" %s "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["%s"]\n' \DATA %(lampnum, bias.val, eblur.val, esamples.val, (lamp.spotSize * pi / 360), (lamp.spotBlend * (lamp.spotSize * pi / 360)), x, y, z, tox, toy, toz, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, shadowname))DATA elif (lamp.type == 1):DATA energratio = negativeDATAx0 if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATA ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA else:DATA if (menuval.val == 3):DATAD` ribfile.write('\tLightSource "distantlight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowsamples" [%s] "float shadowblur" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val))DATA elif (menuval.val == 1):DATAD ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "string shadowname" ["raytrace"] "float samples" [%s] "float width" [%s]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B, esamples.val, eblur.val * 100 + 1))DATA elif (lamp.type == 0):DATA$ energratio = lamp.dist * negativeDATAx  if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 2) or (menuval.val == 4) or (menuval.val == 5):DATA ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B))DATAL if (shadow == "off") or (raytraceshadow.val != 1) or (menuval.val == 6):DATA0 ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B))DATA  else:DATA X if (menuval.val == 3): DATA0 ribfile.write('\tLightSource "pointlight" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float shadowblur" [%s] "float shadowsamples" [%s] "string shadowname" ["shadow"]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, eblur.val, esamples.val))DATA  elif (menuval.val == 1): DATAX ribfile.write('\tLightSource "shadowpoint" %d "from" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float width" [%s] "float samples" [%s] "string sfpx" ["raytrace"] "string sfnx" ["raytrace"] "string sfpy" ["raytrace"] "string sfny" ["raytrace"] "string sfpz" ["raytrace"] "string sfnz" ["raytrace"]\n'%(lampnum, x, y, z, (energratio * lamp.energy) * lightx.val, lamp.R, lamp.G, lamp.B, eblur.val * 100 + 1, esamples.val))DATA88 if (raytraceshadow.val == 1) and (menuval.val == 6):DATA print 'raytrace lamp'DATAH ribfile.write('Attribute "visibility" "transmission" "opaque"\n')DATA` ribfile.write('\tLightSource "shadowdistant" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "shadowname" "raytrace"\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA elif (lamp.type == 3):DATA energratio = negativeDATA ribfile.write('\tLightSource "hemilight" %d "from" [%s %s %s] "to" [%s %s %s] "intensity" %s "lightcolor" [%s %s %s] "float falloff" [0]\n' % (lampnum, x, y, z, tox, toy, toz, energratio * lamp.energy, lamp.R, lamp.G, lamp.B))DATA( if (caustics.val == 1):DATA$p ribfile.write('\tTransformEnd\n')DATADATA def writeMatrix(ribfile, name):DATA@ Blender.Get('curframe')DATA Blender.Window.RedrawAll()DATA, matrix = Blender.Object.Get(name).matrixDATA$( ribfile.write("\t\tTransform [" +DATA<x "%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 0 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 p matrix[2][2], matrix[2][3],DATA  matrix[3][0], matrix[3][1],DATA  matrix[3][2], matrix[3][3]))DATA`DATAdef resetObject():DATA convertbm.val = 0DATA objectshadermenu.val = 0DATAX geom.val = 1DATA meshexport.val = 1DATA pointwidth.val = 1.0DATA  uv.val = 0DATAX arealightMESH.val = 0DATA areasamples.val = 20DATA recievecaustics.val = 0DATA0 transmittcaustics.val = 0DATA$x transmittcausticsslider.val = 1.4DATA caustics.val = 0DATA photon.val = 4000DATAH buff256.val = 0DATA buff512.val = 1DATA buff1024.val = 0DATA buff2048.val = 0DATAH eblur.val = 0.00DATA esamples.val = 1DATA amesh.val = 0DATA reflectcaustics.val = 0DATAP raytraceshadow.val = 0DATA rendershadow.val = 0DATA bias.val = 0.25DATA  rvisibility.val = 0DATAh castshadow.val = 1DATA objectra.val = 0DATADATAdef resetShaderVal():DATA` if (shadermenu.val == 1):DATA ambientshader.val = 1DATA diffuseshader.val = 0.5DATA8 specularshader.val = 0.5DATA roughnessshader.val = 0.1DATA if (shadermenu.val == 2):DATA ambientshader.val = 0.2DATAX diffuseshader.val = 0.0DATA specularshader.val = 0.5DATA  roughnessshader.val = 0.05DATA8 coefshader = 1.5DATAx reflblurshader = 0DATA refrblurshader.val = 0DATA reflsamples.val = 0DATAP refrsamples.val = 0DATA if (shadermenu.val == 3):DATA ambientshader.val = 1.0DATA( diffuseshader.val = 0.1DATAp specularshader.val = 1.0DATA roughnessshader.val = 0.2DATA if (shadermenu.val == 5):DATAH ambientshader.val = 1DATA diffuseshader.val = 0.5DATA specularshader.val = 0.5DATA  roughnessshader.val = 0.1DATA(h textshader.val = 'Surface "plastic"'DATA, textshaderd.val = 'Displacement "bumpy"'DATA texturem.val = ''DATAX textnor.val = 0DATA illuminationmenu.val = 0DATADATA0def writeShader(ribfile, name, meshobj, anim):DATAp global texturefile, txdoneDATA  if (arealightMESH.val == 0):DATA MName = '"plastic"'DATAP else: DATA 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]DATAp imagename = imagenameDATA$ imagename = imagename + 'tif'DATAT imagename = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(imagename)[1])DATAh rawimage = '%s/%s/textures/%s'%(rootdir, dirw.val, os.path.split(mesh.faces[0].image.filename)[1])DATA8  infile = open(mesh.faces[0].image.filename, 'rb')DATA$ outfile = open(rawimage, 'wb')DATA  outfile.write(infile.read())DATA( outfile.close()DATAh infile.close()DATA` imagenameconv = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tif'DATAX8 txname = texturesdir + os.path.split(mesh.faces[0].image.filename)[1][:-3] + 'tx'DATA( if os.path.isfile(imagename) == 0:DATA  try:DATA$P totiff.SetOutDir(texturesdir)DATA( ok = totiff.ConvertShort(rawimage)DATA$ if not ok[0]: # error occurredDATA(H 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:DATA8 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 H else:DATA  try:DATAP os.system('convert -depth 8 -compress none %s %s'%(rawimage, imagename))DATA8 except OSError:DATA0 print "\nCould not find ImageMagic\n"DATA, imagename = mesh.faces[0].image.filenameDATA 8 imagename = imagename[:-3]DATA imagename = imagenameDATA  tdlname = imagename + 'tx'DATA$  imagename = imagename + 'tif'DATA4p imagename = '%s'%(os.path.split(imagename)[1])DATA0 tdlname = '%s'%(os.path.split(tdlname)[1])DATAH0 MName = '"bms" "string texname" ["%s"] "float maptype" 3'%(tdlname)DATA@ 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))DATA elif menuval.val == 3:DATAH os.system('%s %s %s'%(entropytexmaker.val, imagenameconv, txname))DATAX elif menuval.val == 4:DATAD os.system('%s %s %s'%(dltexmaker.val, imagenameconv, txname))DATA elif menuval.val == 5:DATAHX os.system('%s %s %s'%(aqsistexmaker.val, imagenameconv, txname))DATA elif menuval.val == 6:DATAH os.system('%s %s %s'%(pixietexmaker.val, imagenameconv, txname))DATA else: 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  mr = 1DATA  mg = 1DATA  mb = 1DATA`8 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):DATAP ribfile.write('\t\tAttribute "caustic" "color specularcolor" [.9 .9 .9]\n')DATA 0 if (recievecaustics.val == 1):DATA( ribfile.write('\t\tIlluminate 2 1\n')DATA8 if ((shadermenu.val == 1) & (arealightMESH.val != 1)):DATA0@ 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<p elif ((shadermenu.val == 2) & (arealightMESH.val != 1)):DATA0 if ((convertbm.val != 0) or (meshobj == 10)):DATA88 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@x ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATAD ribfile.write('\t\tDeclare "refrraysamples" "uniform float"\n')DATA@X  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:DATAx  evar = ''DATA  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<h ribfile.write('\t\tDeclare "blur" "uniform float"\n')DATA@ ribfile.write('\t\tDeclare "raysamples" "uniform float"\n')DATA@ if (menuval.val == 3):DATA` 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 = ''DATAX 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<0 elif ((shadermenu.val == 4) & (arealightMESH.val != 1)):DATA0 if ((convertbm.val != 0) or (meshobj == 10)):DATAt ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA, ribfile.write('\t\t%s\n'%textshader.val)DATA0 ribfile.write('\t\t%s\n'%textshaderd.val)DATA<P elif ((shadermenu.val == 5) & (arealightMESH.val != 1)):DATA0 if ((convertbm.val != 0) or (meshobj == 10)):DATAt ribfile.write('\t\tAttribute "displacementbound" "sphere" [ %s ] "coordinatesystem" [ "object" ]\n'%norm.val)DATA  txname = texturem.val[:-3]DATA txname = txname + 'tx'DATAP tdlname = txnameDATA$ txname = texturesdir + txnameDATA converttex = 1DATA$  if os.path.isfile(txname) == 0:DATAp for texture in txdone:DATA  if (txname == texture):DATA converttex = 0DATA P breakDATA if (converttex == 1):DATA if (menuval.val == 1):DATAT 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 h elif (menuval.val == 3):DATAX os.system('%s %s %s'%(entropytexmaker.val, texturesdir + texturem.val, txname))DATA @ 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):DATAT0 os.system('%s %s %s'%(pixietexmaker.val, texturesdir + texturem.val, txname))DATA  txdone = txdone + [txname]DATA txname = tdlnameDATA@ 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))DATAH ribfile.write('\t\tSurface "bms" "Ka" %s "Kd" %s "Ks" %s "roughness" %s "string texname" ["%s"] "float maptype" %s\n'%(ambientshader.val, diffuseshader.val, specularshader.val, roughnessshader.val, txname, projection.val - 1))DATA0`  if ((convertbm.val == 0) & (meshobj != 10)):DATA0  mesh = Blender.NMesh.GetRawFromObject(name)DATA ! if (MName == ''):DATA `! returnDATA! try:DATA<! material = Blender.Material.Get(mesh.materials[0].name)DATA$8" hard = 1-(material.hard*0.00392)DATA" ribfile.write('\t\tSurface %s "Ka" %s "Kd" %s "Ks" %s "roughness" %s\n'%(MName, material.amb, material.ref, material.spec, hard))DATA @# except:DATA0x# ribfile.write('\t\tSurface %s\n'%(MName))DATA# if (meshobj != 10):DATA0 $ mesh = Blender.NMesh.GetRawFromObject(name)DATA$ try:DATA$ if mesh.materials:DATA<% material = Blender.Material.Get(mesh.materials[0].name)DATATh% ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA% except: passDATA (& if (arealightMESH.val == 1):DATA,x& ribfile.write('\t\tSurface "constant"\n')DATAL& ribfile.write('\t\tAttribute "light" "nsamples" [%s]\n'%areasamples.val)DATAH' if (menuval.val == 2):DATA@' ribfile.write('\t\tAttribute "light" "shadows" ["on"]\n')DATA0( mesh = Blender.NMesh.GetRawFromObject(name)DATA`( try:DATA<( material = Blender.Material.Get(mesh.materials[0].name)DATA) if (menuval.val == 3):DATAH) ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s] "string shadowname" ["shadow"] "float shadowbias" [0.15]\n'%(material.emit * 100, material.R, material.G, material.B))DATAP* elif (menuval.val == 2):DATA* ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(material.emit * 100, material.R, material.G, material.B))DATA h+ except:DATAx+ ribfile.write('\t\tAreaLightSource "arealight" 999 "intensity" [%s] "lightcolor" [%s %s %s]\n'%(0.7 * 100, 1, 1, 1))DATAH,DATA8x,def createObjects(ribfile, cframe, shadows, frames2):DATAT, global sshader, selectedname, thisone, meshobjects, xbar, meshnum, partitionnameDATA`- meshobjects = 0.0DATA- thisone = 0DATA- meshnum = 0DATA . objecttime = ''DATA(`. for objects in Blender.Object.Get():DATA. name = objects.getName()DATA/ try:DATAD8/ if (objects.getType() == "Mesh"): meshobjects = meshobjects + 1DATA / except: DATA/ passDATA(0 for objects in Blender.Object.Get():DATAp0 name = objects.getName()DATA0 resetObject()DATA 0 area = 0DATA$01 obj = Blender.Object.Get(name)DATA1 i = 0DATA01 while (obj.Layer>>i): # convert layer numberDATA2 i = i + 1DATA X2 if (i == hiddenlayer.val):DATA2 layer = 1DATA2 else:DATA 3 layer = 0DATA8`3 if ((objects.getType() == "Mesh") & (layer == 0)):DATA3 meshnum = meshnum + 1DATA(4 meshobj = Blender.Object.Get(name)DATA$h4 obj = Blender.Object.Get(name)DATA4 selectedname = nameDATA$5 Register (gui, event, bevent)DATAP5 saveload(0,0,'object')DATA5 if (shadows == 0):DATA(5 ribfile.write('\tAttributeBegin\n')DATA086 if ((shadows == 0) and (objectra.val == 1)):DATA@6 ribfile.write('\t\tReadArchive "%s"\n' %(objectrafile.val))DATA7 if (shadows != 1):DATA0P7 mesh = Blender.NMesh.GetRawFromObject(name)DATA 7 if (len(mesh.faces) == 0):DATA(8 ribfile.write('\tAttributeEnd\n')DATAX8 del(mesh)DATA 8 returnDATA8 if (mesh.materials):DATA 9 try:DATA@P9 material = Blender.Material.Get(mesh.materials[0].name)DATAT9 ribfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATAd@: ribfile.write("\t\tOpacity [%s %s %s]\n" %(material.alpha, material.alpha, material.alpha))DATA: except:DATA ; passDATAH; del(mesh)DATA;DATA ; if (motionblur.val == 1):DATA,< ribfile.write('\tMotionBegin [0 1]\n')DATA(`< Blender.Set('curframe', cframe) DATA < writeMatrix(ribfile, name)DATA<= Blender.Set('curframe', cframe + motionblurframe.val)DATA p= writeMatrix(ribfile, name)DATA$= ribfile.write('\tMotionEnd\n')DATA(> Blender.Set('curframe', cframe) DATA h> else:DATA > writeMatrix(ribfile, name)DATA,> namelist = string.split(sshader, "|")DATAH? if len(namelist) > 1: DATA@? surfaceshadername.val = namelist[objectshadermenu.val - 1] DATA$@ Register (gui, event, bevent)DATAP@ if (convertbm.val == 1):DATA@ saveload(0,1,'shader')DATA$@ Register (gui, event, bevent)DATA 0A if (castshadow.val == 1):DATAA op = "Os"DATA A elif (castshadow.val == 2):DATAB op = "opaque"DATA PB elif (castshadow.val == 3):DATA4B if (menuval.val == 1) or (menuval.val == 4):DATAC op = "shader"DATA @C else:DATAxC op = "shade"DATA C elif (castshadow.val == 4):DATA4D if (menuval.val == 1) or (menuval.val == 4):DATAhD op = "transparent"DATA D else:DATAD op = "none"DATA0(E if (menuval.val == 1) or (menuval.val == 4):DATATE ribfile.write('\t\tAttribute "visibility" "string transmission" ["%s"]\n'%op)DATA4F elif (menuval.val == 2) or (menuval.val == 3):DATAPhF ribfile.write('\t\tAttribute "render" "string casts_shadows" ["%s"]\n'%op)DATA F if (rvisibility.val == 1):DATA8G if (menuval.val == 3):DATAHG ribfile.write('\t\tAttribute "visibility" "integer camera" [0]\n')DATA G elif (menuval.val == 2):DATAHHH ribfile.write('\t\tAttribute "render" "integer visibility" [2]\n')DATAH if (shadows == 0):DATA4I writeShader(ribfile, name, meshobj, frames2)DATAhI if (amesh.val == 1):DATAI objecttime = frames2DATA I else:DATA0J objecttime = ''DATA pJ if (motionblur.val != 1):DATA,J if ((frames2 == 0) or amesh.val == 1):DATAK if (geom.val == 1):DATAH`K meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8K check(name, meshfile, meshobj, meshnum, shadows)DATA@L 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\HM else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA M else:DATA N if (meshexport.val == 2):DATA,XN if ((frames2 == 0) or amesh.val == 1):DATAN if (geom.val == 1):DATAHN meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8pO check(name, meshfile, meshobj, meshnum, shadows)DATAO if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + objecttime + ".rib")))))DATA\P else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA `Q else:DATAQ if (amesh.val != 1):DATAQ if (frames2 == 0):DATA(R if (geom.val == 1):DATALpR meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA<R check(name, meshfile, meshobj, meshnum, shadows)DATAPS 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\PT else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA T else:DATA(U Blender.Set('curframe', cframe) DATA$hU Blender.Window.RedrawAll()DATAU if (geom.val == 1):DATAHV meshfile = open('%s/%s%s.rib'%(meshesdir,name, objecttime), 'w')DATA8xV check(name, meshfile, meshobj, meshnum, shadows)DATA0V ribfile.write('\tMotionBegin [0 1]\n')DATA@W 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\HX else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, objecttime))DATA<X Blender.Set('curframe', cframe + motionblurframe.val)DATA$8Y Blender.Window.RedrawAll()DATA4Y objecttime = frames2 + motionblurframe.valDATAY if (geom.val == 1):DATAP0Z meshfile = open('%s/%s%s.rib'%(meshesdir,name, str(objecttime)), 'w')DATA8Z check(name, meshfile, meshobj, meshnum, shadows)DATA[ if ((menuval.val == 4) & (os.name != "posix")): ribfile.write('\t\tReadArchive "%s%s"\n'%(os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + meshesdir + name + str(objecttime) + ".rib")))))DATA` \ else: ribfile.write('\t\tReadArchive "%s/%s%s.rib"\n'%(meshesdir, name, str(objecttime)))DATA(\ ribfile.write('\tMotionEnd\n')DATA(] Blender.Set('curframe', cframe) DATA$`] Blender.Window.RedrawAll()DATA] objecttime = frames2DATA] if (shadows == 0):DATA(@^ ribfile.write('\tAttributeEnd\n')DATA ^ if (arealightMESH.val == 1):DATA,^ ribfile.write('\tIlluminate 999 1\n')DATA@_DATA(p_def drawBar(meshnum, qwerty, pixels):DATA_ if (progress.val == 1):DATA$` global thisone, meshobjects, xbarDATA `` xbar = 0DATA` xbar = qwertyDATA` if (xbar < 10): xbar = 11DATA a Draw()DATA0Xa elif ((progress.val == 0) & (anim.val == 1)):DATA(a testtime = Blender.Get('curframe')DATAbDATA8@bdef check(name, meshfile, meshobj, meshnum, shadows):DATAb if (shadows != 1):DATA b print 'Exporting: %s'%nameDATA08c mesh = Blender.NMesh.GetRawFromObject(name)DATA c if (len(mesh.faces) == 0):DATAc del(mesh)DATA (d returnDATA`d if (meshexport.val == 1):DATA$d pointspolygon(meshfile, mesh)DATA d elif (meshexport.val == 2):DATA0He polygon(mesh, meshfile, meshobj, meshnum)DATA e elif (meshexport.val == 3):DATA e subdivmesh(meshfile, mesh)DATA Hf elif (meshexport.val == 4):DATAf points(meshfile, mesh)DATA f elif (meshexport.val == 5):DATA0g general(meshfile, mesh)DATA xg elif (meshexport.val == 6):DATAg bilinear(meshfile, mesh)DATA h del(mesh)DATAHh meshfile.close()DATAhDATA hdef pointspolygon(file, mesh): DATAi global meshnumDATA$Hi testtime = Blender.Get('curframe')DATA i update = 5DATAi colorif = 0DATAj perso = 0.0DATAPj pixels = 0.0DATAj update = 100DATA j index = 0DATAk facenum = len(mesh.faces)DATAPk if menuval.val != 2:DATAk if mesh.hasFaceUV() == 1:DATA8k file.write('Declare "st" "facevarying float[2]"\n')DATA$Hl file.write("PointsPolygons [");DATAl for face in mesh.faces:DATA,l if len(face.v) == 4 and menuval.val == 2:DATA8m file.write('3 3 ')DATAm else:DATA$m file.write('%s '%(len(face.v)))DATAn index = index + 1DATA0Hn if ((index == update) or (index == facenum)):DATAn update = update + 100DATAn pixels = 619DATA(0o perso = float(index) / float(facenum)DATA,o qwerty = float(pixels) * float(perso) DATA$o drawBar(meshnum, qwerty, pixels)DATA0p file.write("] ")DATApp file.write("[ ")DATAp for face in mesh.faces:DATAp num = len(face.v)DATA8q if num == 3 or num == 4:DATA(q if num == 4 and menuval.val == 2:DATAq for i in (0,1,2,0,2,3):DATA, r file.write('%s ' % face.v[i].index)DATA xr else:DATAr for vert in face.v:DATA$r file.write('%s ' % vert.index)DATAHs file.write("]")DATAs file.write('\n"P" [')DATAs for vert in mesh.verts:DATADt file.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATAt file.write('] ')DATAt if mesh.faces[0].smooth:DATAu file.write(' "N" [')DATAXu for vert in mesh.verts:DATADu file.write("%s %s %s " % (vert.no[0], vert.no[1], vert.no[2]))DATAv file.write(']')DATA$Pv if mesh.hasVertexColours() == 1:DATA(v vertexcol = range(len(mesh.verts))DATAv file.write('\n"Cs" [')DATA@w for face in mesh.faces:DATAw num = len(face.v)DATAw if num == 3 or num == 4:DATA$x for vi in range(len(face.v)):DATA0hx vertexcol[face.v[vi].index] = face.col[vi]DATAx for vc in vertexcol:DATADy file.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATAy file.write(']')DATAy if (menuval.val != 2):DATAz if mesh.hasFaceUV() == 1:DATAPz file.write('\n"st" [')DATAz for face in mesh.faces:DATAz num = len(face.v)DATA ({ if num == 3 or num == 4:DATA$x{ for vi in range(len(face.v)):DATAD{ file.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA8| file.write(']')DATAx| else:DATA,| if (len(mesh.faces[0].uv) != 0):DATA} file.write('\n"st" [ ')DATAP} vtuv = [] DATA(} for i in range(len(mesh.verts)): DATA} vtuv.append(0) DATA(~ for f in mesh.faces: DATA p~ for i in range(len(f.uv)): DATA~ uv = f.uv[i]DATA  uv = uv[0], 1.0 - uv[1]DATA P vtuv[f.v[i].index] = uvDATA for c in vtuv:DATA for d in c: DATA  file.write('%s '%d)DATAh file.write(']')DATA file.write('\n')DATADATA0def polygon(mesh, meshfile, meshobj, meshnum):DATAx global meshobjects, iDATA i = 0DATA  update = 5DATA0 colorif = 0DATAp perso = 0.0DATA pixels = 0.0DATA facenum = len(mesh.faces)DATA8 for face in mesh.faces:DATA if mesh.materials:DATA$ȃ matname=mesh.materials[0].nameDATA try:DATA0P material = Blender.Material.Get(matname)DATA< if (colorif != material.R + material.G + material.B):DATA4 colorif = material.R + material.G + material.BDATATx meshfile.write("\t\tColor [%s %s %s]\n" %(material.R, material.G, material.B))DATA  except:DATA 0 passDATA h if len(mesh.faces[i].v) == 3:DATA vertar = 3DATA else:DATA0 vertar = 4DATAp if face.smooth:DATA smooth = 1DATA else:DATA( smooth = 0DATA8h writePoly(mesh,face, meshfile, i, vertar, smooth);DATA Ј i = i + 1DATA( if ((i == update) or (i == facenum)):DATA` update = update + 5DATA pixels = 619DATA( perso = float(i) / float(facenum)DATA,@ qwerty = float(pixels) * float(perso)DATA$ drawBar(meshnum, qwerty, pixels)DATADATA<def textureUV(i, mesh, va, vb, vc, meshfile, face, number):DATA try:DATA etest = face.uv[0][0]DATA  except:DATA 8 returnDATAp meshfile.write('"st" [ ')DATA if (number == 1):DATA for x in [0, 1, 2]:DATA(@ meshfile.write("%s "%face.uv[x][0])DATA0 meshfile.write("%s "%(1.0 - face.uv[x][1]))DATA if (number == 2):DATA$8 if len(mesh.faces[i].v) == 3: DATA  returnDATA for x in [0, 2, 3]:DATA( meshfile.write("%s "%face.uv[x][0])DATA0` meshfile.write("%s "%(1.0 - face.uv[x][1]))DATA meshfile.write(']\n')DATADATA88def writePoly(mesh, face, meshfile, i, vertar, smooth):DATA$ meshfile.write('Polygon "P" [ ')DATA for x in [0, 1, 2]:DATA8 for y in range(3):DATA try:DATA4 meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATA except Error:DATA X print iDATA  print xDATA Ȓ print yDATA meshfile.write(']\n')DATAH if (smooth == 1):DATA meshfile.write('"N" [')DATAГ for x in [0, 1, 2]:DATA for y in range(3):DATA4` meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATA meshfile.write(']\n')DATA  number = 1DATA4@ textureUV(i,mesh,0,1,2, meshfile, face, number)DATA if (vertar == 4):DATA$ meshfile.write('Polygon "P" [ ')DATA0 for x in [0, 2, 3]:DATAx for y in range(3):DATA4 meshfile.write('%s '%mesh.faces[i].v[x].co[y])DATA  meshfile.write(']\n')DATAh if (smooth == 1):DATA meshfile.write('"N" [')DATA for x in [0, 2, 3]:DATA8 for y in range(3):DATA4 meshfile.write('%s '%mesh.faces[i].v[x].no[y])DATA meshfile.write(']\n')DATA( number = 2DATA4h textureUV(i,mesh,0,1,2, meshfile, face, number)DATAșDATA def general(meshfile, mesh):DATA H index = 0DATA, meshfile.write('PointsGeneralPolygons [')DATAؚ for face in mesh.faces:DATA  meshfile.write('1 ')DATAh index = index + 1DATA meshfile.write(']\n[')DATA  index = 0DATA( for face in mesh.faces:DATA p meshfile.write(str(nr) + ' ')DATA index = index + 1DATA meshfile.write(']\n[')DATA H index = 0DATA for f in mesh.faces:DATAȝ for v in f.v:DATA( meshfile.write(str(v.index) + ' ')DATA` index = index + 1DATA meshfile.write(']\n"P" [')DATA  index = 0DATA$  for x in range(len(mesh.verts)):DATAp for y in range(3):DATA4 meshfile.write(str(mesh.verts[x].co[y]) + '')DATA index = index + 1DATAX meshfile.write(']\n')DATADATA Рdef bilinear(meshfile, mesh):DATA  f = 0DATAX for face in mesh.faces:DATA, meshfile.write('Patch "bilinear" "P" [ ')DATA for x in [3, 2, 0, 1]:DATA@ for y in range(3):DATA4 meshfile.write('%s '%mesh.faces[f].v[x].co[y])DATA meshfile.write(']\n')DATA0 if face.smooth:DATAp meshfile.write('"N" [ ')DATA for x in [3, 2, 0, 1]:DATA for y in range(3):DATA4H meshfile.write('%s '%mesh.faces[f].v[x].no[y])DATA meshfile.write(']\n')DATA  f = f + 1DATA(DATA Xdef subdivmesh(meshfile, mesh):DATA if menuval.val != 2:DATA if mesh.hasFaceUV() == 1:DATA<8 meshfile.write('Declare "st" "facevarying float[2]"\n')DATA8 meshfile.write('SubdivisionMesh "catmull-clark" [')DATA for face in mesh.faces:DATAP num = len(face.v)DATA  meshfile.write('%s '%(num))DATA meshfile.write(']\n[')DATA( for face in mesh.faces:DATAp for vert in face.v:DATA( 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(']')DATA if (menuval.val != 2):DATAЪ if mesh.hasFaceUV() == 1:DATA  meshfile.write('\n"st" [')DATAh for face in mesh.faces:DATA num = len(face.v)DATA  if num == 3 or num == 4:DATA$H for vi in range(len(face.v)):DATAH meshfile.write('%s %s ' % (face.uv[vi][0], 1.0 - face.uv[vi][1]))DATA meshfile.write(']')DATA$X if mesh.hasVertexColours() == 1:DATA( vertexcol = range(len(mesh.verts))DATA  meshfile.write('\n"Cs" [')DATAP for face in mesh.faces:DATA num = len(face.v)DATA if num == 3 or num == 4:DATA$( for vi in range(len(face.v)):DATA0x vertexcol[face.v[vi].index] = face.col[vi]DATAد for vc in vertexcol:DATAH  meshfile.write('%s %s %s ' % (vc.r/256.0, vc.g/256.0, vc.b/256.0))DATA meshfile.write(']')DATA meshfile.write('\n')DATA(DATAXdef points(meshfile, mesh):DATA  meshfile.write('Points "P" [')DATA for vert in mesh.verts:DATAH8 meshfile.write("%s %s %s " % (vert.co[0], vert.co[1], vert.co[2]))DATA@ meshfile.write('] "constantwidth" [%s]\n' % (pointwidth.val))DATA DATA Pdef createGI(ribfile, frames):DATA0 if (areagi.val == 1) and (menuval.val !=6):DATA8 ribfile.write('\tDeclare "casts_shadows" "string"\n')DATAHh ribfile.write('\tAttribute "render" "casts_shadows" ["opaque"]\n')DATAT ribfile.write('\tLightSource "ambientlight" 998 "lightcolor" [0.02 0.02 0.02]\n')DATA(` ribfile.write('\tAttributeBegin\n')DATA@ ribfile.write('\t\tAttribute "identifier" "name" ["sky"]\n')DATA`( ribfile.write('\t\tConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 -1573.14 307.099 -988.299 1]\n')DATAX ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(@ ribfile.write('\t\tAttributeBegin\n')DATA, ribfile.write('\t\t\tColor [1 1 1]\n')DATA, ribfile.write('\t\t\tOrientation "rh"\n')DATA0H ribfile.write('\t\t\tReverseOrientation\n')DATA0 ribfile.write('\t\t\tSurface "constant"\n')DATAL ribfile.write('\t\t\tAttribute "light" "nsamples" [%s]\n'%gisteps.val)DATA@ ribfile.write('\t\t\tAttribute "light" "shadows" ["on"]\n')DATAh ribfile.write('\t\t\tAreaLightSource "arealight" 1 "lightcolor" [1 1 1] "intensity" [10000000000]\n')DATA4 ribfile.write('\t\t\tSphere 50000 0 50000 360\n')DATA( ribfile.write('\t\tAttributeEnd\n')DATA$@ ribfile.write('\tAttributeEnd\n')DATA( ribfile.write('\tIlluminate 1 1\n')DATA4 if (indirectgi.val == 1) and (menuval.val !=6):DATA H if (finalgather.val == 0):DATAP ribfile.write('\tAttribute "indirect" "float maxerror" [%s]\n'%maxerror.val)DATAX ribfile.write('\tAttribute "indirect" "float maxpixeldist" [%s]\n'%maxpixeldist.val)DATA else:DATAHؽ ribfile.write('\tAttribute "indirect" "float maxpixeldist" [0]\n')DATAPP ribfile.write('\tAttribute "indirect" "integer nsamples" [%s]\n'%gisteps.val)DATA4о ribfile.write('\tLightSource "indirect" 42\n\n')DATA0 if (gisphere.val == 1):DATA(x ribfile.write('\tAttributeBegin\n')DATAXп ribfile.write('\t\tAttribute "render" "visibility" [3]\n') # invisible to the cameraDATA(X ribfile.write('\t\tColor [1 1 1]\n')DATA0 ribfile.write('\t\tSurface "constant"\n')DATA8 ribfile.write('\t\tSphere 2000 -2000 2000 360\n')DATA(x ribfile.write('\tAttributeEnd\n')DATADATAdef render(ribfile):DATAH if (os.name != "posix"):DATA if (menuval.val == 1):DATA4 os.system('%s %s'%(prmanrenderer.val, ribfile))DATA8 elif (menuval.val == 2):DATA4 os.system('%s %s'%(bmrtrenderer.val, ribfile))DATA elif (menuval.val == 3):DATA8( os.system('%s %s'%(entropyrenderer.val, ribfile))DATA elif (menuval.val == 4):DATA0 os.system('%s %s'%(dlrenderer.val, ribfile))DATA8 elif (menuval.val == 5):DATA4 os.system('%s %s'%(aqsisrenderer.val, ribfile))DATA elif (menuval.val == 6):DATA4( os.system('%s %s'%(pixierenderer.val, ribfile))DATA 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):DATA8p 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))DATA0 elif (menuval.val == 6):DATA8x os.system('%s %s &'%(pixierenderer.val, ribfile))DATADATAdef closeFile(ribfile):DATAX ribfile.close()DATADATAdef writeFrame(ribfile):DATA global sshader, cframeDATA X display = Scene.GetCurrent()DATA, context = display.getRenderingContext()DATA frames2 = 0DATA(@ display = Blender.Scene.GetCurrent()DATA if (anim.val == 1):DATA8 frames = context.endFrame() - context.startFrame()DATAH else:DATA frames = 0DATA if (anim.val == 1):DATA  cframe = context.startFrame()DATAX else:DATA$ cframe = Blender.Get('curframe')DATA  for x in range(frames + 1):DATA$0 Blender.Set('curframe', cframe)DATA8 print 'Exporting Frame: %s'%Blender.Get('curframe')DATA$ renderShadows(ribfile, frames2)DATA,8 ribfile.write('\nFrameBegin %s\n'%cframe)DATA( writeHeader(ribfile, frames, frames2)DATA lampobj = 0DATA( if (motionblur.val == 1):DATA(p ribfile.write('MotionBegin [0 1]\n')DATA$ Blender.Set('curframe', cframe)DATA$ writeTransform(ribfile, lampobj)DATA<h Blender.Set('curframe', cframe + motionblurframe.val)DATA$ writeTransform(ribfile, lampobj)DATA$  Blender.Set('curframe', cframe)DATA p ribfile.write('MotionEnd\n')DATA else:DATA$ writeTransform(ribfile, lampobj)DATAH if (rgba.val == 1):DATA channels = "rgb"DATA elif (rgba.val == 2):DATA channels = "rgba"DATA` elif (rgba.val == 3):DATA channels = "rgbz"DATA elif (rgba.val == 4):DATA8 channels = "z"DATAx if (buffer.val == 1):DATAl ribfile.write('Display "%s/%s%05d.tif" "framebuffer" "%s"\n'%(imagesdir, image.val, cframe, channels))DATAX if (file.val == 1):DATAd ribfile.write('Display "%s/%s%05d.tif" "file" "%s"\n'%(imagesdir, image.val, cframe, channels))DATA0 if (preworldra.val == 1):DATA<x ribfile.write('ReadArchive "%s"\n'%(preworldrafile.val))DATA$ ribfile.write('WorldBegin \n')DATA 0 if (postworldra.val == 1):DATA@ ribfile.write('\tReadArchive "%s"\n'%(postworldrafile.val))DATA0 if (menuval.val == 1) or (menuval.val == 4):DATADP ribfile.write('\tAttribute "visibility" "integer trace" [1]\n')DATA if (menuval.val == 3):DATA@ ribfile.write('\tAttribute "visibility" "reflection" [1]\n')DATA<x 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)DATA if (gi.val == 1):DATA  createGI(ribfile, frames)DATA8 if (hdri.val == 1):DATA if (menuval.val == 3):DATA( ribfile.write('\tAttributeBegin\n')DATAD  ribfile.write('\t\tAttribute "visibility" "reflection" [1]\n')DATAd ribfile.write('\t\tSurface "envsurf" "string envname" ["%s"] "float blur" [0]\n'%(hdritex.val))DATA4  ribfile.write('\t\tSphere 50000 0 50000 360\n')DATA( ribfile.write('\tAttributeEnd\n')DATAP createObjects(ribfile, cframe, 0, frames2) # 0 is for the shadows variableDATA X ribfile.write('WorldEnd \n')DATA  ribfile.write('FrameEnd\n')DATA cframe = cframe + 1DATA@ frames2 = frames2 + 1DATADATA4def 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 progressbarDATA8X 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")):DATA0 ribfile.write('ReadArchive "%s%s"\n'% os.path.splitdrive( os.path.normcase( os.path.normpath(partitionname + pdir + "/texturefile.rib") ) ) )DATA else:DATAD( ribfile.write('ReadArchive "%s"\n'% (pdir + "/texturefile.rib"))DATAd texturefile = open(os.path.normpath(pdir + 'texturefile.rib'), 'w') # open the texture rib fileDATA( if (menuval.val == 5):DATAp texturefile.write('#\n')DATA, writeFrame(ribfile) # write all the framesDATA0 closeFile(ribfile) # close the main ribfileDATAp texturefile.close()DATA8 selectedtype = 'Type:' # reset the object editor stuffDATA  selectedname = ''DATA(` surfaceshadername.val = shadernametempDATAH Register (gui, event, bevent) # make sure all gui values are in placeDATA40 if (rendert.val == 1): # if the renderbutton is onDATA4 render(pdir + filename.val) # render the rib fileOB GOBCube ?????????????DOBd?? #=?>=?@???@ZDATA,@I=L> ף=?@???8ળDATA,8I=L> ף ף;O{A|A~?OBGOBCube.002???????i!3?i!3?????DOBd?? #=?>=?@???0BDATA,0I=L> ף ף;}4 |4 4 ~4A|4A~4AOBGOBCylinderX?????????????DOBd?? #=?>=?@???(؄*DATA,(I=L> ף ף; #<?5@5@@OBGOBCylinder.001?????????????DOBd?? #=?>=?@??? x XDATA, I=L> ף ף; #<333?5@5@@ME .MECube`}p    5AAADATA 3AAIIAIAIAAAIIIAAIIAIAAIIDATA 0 ############DATAxp /ME.8 MECube.002p5jAjAjADATA@3\@^@^豲@N\@^^II^[^IIIWd@^N@Nd@U@^@豲@Q@i^@IbY^@II[^@^@N@jjAjzjjAjAzpjAjAjpzjAjAjApzpjjjjjjAIjAjjIjAjjAIIDATAPp0############# # # # # # # # # # # # ## # #DATA/             ME8.XMECube.003xA  5@~Z?@DATA 3@}Z?II@~ZI~Z}Z?I@}Z?@III@~Z@II}Z@I~Z?@IIDATA0 ############DATAx/MEX.8MECylinderx+@(5?5??DATAh@3?>j=j=5?cV?j=c5%–5 2%>j=Ie5?V>??j=j=^5?k4?V^??j=^ ݐ5?%^?–^5 4?%^??j=^%ew55??V^?DATA0(!#!! # !#! # !#! # !#! # !#! # !#! #!#!#!## ## # # # ###DATA/            ME.XMECylinder.001w!x(5?5??DATAh3?>j=j=5?cV?j=c5%–5 2%>j=Ie5?V>??j=j=^5?k4?V^??j=^ ݐ5?%^?–^5 4?%^??j=^%ew55??V^?DATAx0(!#!! # !#! # !#! # !#! # !#! # !#! #!#!#!## ## # # # ###DATA!/            GLOB4+r@g P  NeDNA18dSDNANAME*next*prev*first*lastxyzwxminxmaxyminymax*newid*libname[24]usflagpadid*idblock*filedataname[160]totcurvecurblocktypeshowkeyposcurvaltypeadrcodetotelem*data*weightsname[32]vgroup[32]sliderminslidermax*refkeyelemstr[32]elemsizeblock*ipo*fromtotkeyslurph**scripts*flagactscripttotscript*line*formatlenblen*nameflagsnlineslines*curl*sellcurcselc*undo_bufundo_posundo_len*compiledsizeseekpassepartalphapad1clipstaclipendlensortho_scaledrawsizeYF_dofdistYF_apertureYF_bkhtypeYF_bkhbiasYF_bkhrotscriptlink*anim*ibuf*mipmap[10]oklastframelastqualitytpageflagtotbindxrepyreptwstatwendbindcode*repbind*packedfilelastupdatelastusedanimspeedreserved1reserved2texcomaptomaptonegblendtype*object*texprojxprojyprojzmappingofs[3]size[3]texflagcolormodelrgbkdef_varcolfacnorfacvarfacdispfacwarpfac*handle*pname*stnamesstypesvars*varstr*result*cfradata[32](*doit)()(*callback)()versionaipotypedata[16]*ima*cube[6]imat[4][4]stypenotlaycuberesdepthrecalclastsizenoisesizeturbulbrightcontrastrfacgfacbfacfiltersizemg_Hmg_lacunaritymg_octavesmg_offsetmg_gaindist_amountns_outscalevn_w1vn_w2vn_w3vn_w4vn_mexpvn_distmvn_coltypenoisedepthnoisetypenoisebasisnoisebasis2imaflagcropxmincropymincropxmaxcropymaxxrepeatyrepeatextendcheckerdistnablaframesoffsetsfrafie_ima*plugin*coba*envfradur[4][2]modetotexenergydistspotsizespotblendhaintatt1att2bufsizesampshadspotsizebiassoftray_sampray_sampyray_sampzray_samp_typearea_shapearea_sizearea_sizeyarea_sizeztexactshadhalostepYF_numphotonsYF_numsearchYF_phdepthYF_useqmcYF_bufsizeYF_padYF_causticblurYF_ltradiusYF_glowintYF_glowofsYF_pad3YF_glowtypeYF_pad2*mtex[10]layspecrspecgspecbmirrmirgmirbambrambbambgambemitangspectraray_mirroralpharefspeczoffsaddtranslucencyfresnel_mirfresnel_mir_ifresnel_trafresnel_tra_ifilterray_depthray_depth_traharseed1seed2mode2flarecstarclinecringchasizeflaresizesubsizeflarebooststrand_stastrand_endstrand_easergbselpr_typepr_backpr_lampseptexpad4pad5diff_shaderspec_shaderroughnessrefracparam[4]rmsdarkness*ramp_col*ramp_specrampin_colrampin_specrampblend_colrampblend_specramp_showpad3rampfac_colrampfac_specfrictionfhreflectfhdistxyfrictdynamodepad2YF_arYF_agYF_abYF_dscaleYF_dpwrYF_dsmpYF_presetYF_djitname[256]scale*bbi1j1k1i2j2k2selcol1selcol2quat[4]expxexpyexpzradrad2s*mat*imatelemsdisp**mattotcolloc[3]rot[3]wiresizerendersizethreshvec[3][3]alfaweighth1h2f1f2f3hidevec[4]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bp*beztcharidxkernhnurb*bevobj*taperobj*textoncurve*path*keybevpathlenbevresolwidthext1ext2spacemodespacinglinedistshearfsizewordspaceulposulheightxofyoflinewidth*strfamily[24]*vfont*vfontb*vfonti*vfontbisepchartotboxactbox*tbselstartselend*strinfocurinfo*obname[128]maxrcttotrctvartypetotvertipoextraprtbitmask*driver*tpageuv[4][2]col[4]transptileunwrapeffect*mface*tface*dface*mvert*medge*dvert*mcol*msticky*texcomesh*oc*sumohandletotedgetotfacecubemapsizesmoothreshsubdivsubdivrsubsurftypev1v2v3v4edcodecreasedef_nr*dwtotweightco[3]no[3]co[2]*errormodifiersubdivTypelevelsrenderLevels*emCache*mCachestartlengthrandomizeseedaxistolerancepercentfaceCountstartxstartyheightnarrowspeeddamptimeoffslifetimedeformflagparentinv[4][4]cent[3]falloff*indexartotindexforceoperationpntswopntsuopntsvopntswtypeutypevtypewfufvfwdudvdw*defvec[8][3]dvec[3]max**obpartypepar1par2par3parsubstr[32]*pardata*parent*track*action*poseconstraintChannelsnetworkdefbasemodifiersdloc[3]orig[3]dsize[3]drot[3]dquat[4]obmat[4][4]colbitstransflagipoflagtrackflagupflagnlaflagprotectflagipowinscaflagscavisflagboundtypedupondupoffdupstadupendsfctimemassdampinginertiaformfactorsofttimerdampingsizefacdtdtxactcolpropsensorscontrollersactuatorsbbsize[3]dfrasactdefgameflaggameflag2softflaganisotropicFriction[3]constraintsnlastripshooks*pd*soft*lifelbufportfluidsimFlagshapenrshapeflag*fluidsimSettings*derivedDeform*derivedFinalmat[4][4]curindexactivedeflectforcefieldpdef_damppdef_rdamppdef_permf_strengthf_powermaxdistpdef_sbdamppdef_sbiftpdef_sbofttotpointtotspring*bpoint*bspringnodemassgravmediafrictrklimitphysics_speedgoalspringgoalfrictmingoalmaxgoaldefgoalvertgroupinspringinfrictefrainterval**keystotpointkeyshow_advancedoptionsresolutionxyzpreviewresxyzrealsizeguiDisplayModerenderDisplayModeviscosityValueviscosityModeviscosityExponentgravxgravygravzanimStartanimEndgstarmaxRefineiniVelxiniVelyiniVelz*orgMesh*meshSurface*meshBBsurfdataPath[240]bbStart[3]bbSize[3]mistypehorrhorghorbhorkzenrzengzenbzenkambkfastcolexposureexprangelinfaclogfacgravityactivityBoxRadiusskytypephysicsEnginemisimiststamistdistmisthistarrstargstarbstarkstarsizestarmindiststardiststarcolnoisedofstadofenddofmindofmaxaodistaodistfacaoenergyaobiasaomodeaosampaomixaocolor*aospherehemiresmaxiterdrawtypesubshootpsubshootenodelimmaxsublamppamapamielmaelmimaxnodeconvergenceradfacgammaselcolsxsy*lpFormat*lpParmscbFormatcbParmsfccTypefccHandlerdwKeyFrameEverydwQualitydwBytesPerSeconddwFlagsdwInterleaveEveryavicodecname[128]*cdParms*padcdSizeqtcodecname[128]mixratemainpad[3]*avicodecdata*qtcodecdatacfraimagesframaptoframelenblurfacedgeRedgeGedgeBfullscreenxplayyplayfreqplayattribrt1rt2stereomodedimensionspresetfiltertypemaximsizexschyschxaspyaspxpartsypartssafetyborderwinposplanesimtypebufflagqualityscemoderendererocresrpad[2]alphamodedogammaosafrs_secedgeintsame_mat_reduxgausspostmulpostgammapostaddpostigammaposthuepostsatdither_intensityzminfocuszgammazsigmazblurGIqualityGIcacheGImethodGIphotonsGIdirectYF_AAYFexportxmlYF_nobumpYF_clamprgbyfpad1GIdepthGIcausdepthGIpixelspersampleGIphotoncountGImixphotonsGIphotonradiusYF_numprocsYF_raydepthYF_AApassesYF_AAsamplesGIshadowqualityGIrefinementGIpowerGIindirpowerYF_gammaYF_exposureYF_raybiasYF_AApixelsizeYF_AAthresholdbackbuf[160]pic[160]ftype[160]col[3]framename[64]cornertypeeditbutflagdegrstepturnextr_offsdoublimitsegmentsringsvertices*camera*world*setbase*basact*groupcursor[3]twcent[3]twmin[3]twmax[3]selectmodeproportionalprop_modeeditbutsize*ed*radioframing*toolsettingsaudiomarkers*theDagdagisvaliddagflagszoomblendximyim*rectspacetypeblockscale*areablockhandler[8]viewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]winmat1[4][4]viewmat1[4][4]viewquat[4]perspview*bgpic*localvdlocalviewlayactscenelockaroundcamzoomgridgridviewpixsizenearfargridlinesviewbutgridflagmodeselectmenunrtexnrtwtypetwmodetwflagtwdrawflagtwmat[4][4]clip[4][4]*clipbbafterdrawzbufxrayverthormaskmin[2]max[2]minzoommaxzoomscrollkeeptotkeepaspectkeepzoomoldwinxoldwinyrowbutv2d*editipoipokeyactname[32]constname[32]totipopinbutofschannellockmedian[3]cursenscuractaligntabomainbmainbo*lockpointexfromshowgrouprectxrectycurymodeltypescriptblockre_alignoldkeypresstab[7]*filelisttotfiletitle[24]dir[160]file[80]ofssortmaxnamelencollums*libfiledataretvalmenuact(*returnfunc)()*menupoopsvisiflagtree*treestoreoutlinevisstoreflagdeps_flags*imageimanrcurtile*texttopviewlinesfont_idlheightleftshowlinenrstabnumbercurrtab_setshowsyntaxunused_paddpix_per_linetxtscrolltxtbar*scriptredrawstitle[28]fasesubfasemouse_move_redrawimafasemxmydirslidirsli_linesdirsli_sxdirsli_eydirsli_exdirsli_himaslifileselmenuitemimasli_sximasli_eyimasli_eximasli_hdssxdssydsexdseydesxdesydeexdeeyfssxfssyfsexfseydsdhfsdhfesxfesyfeexfeeyinfsxinfsyinfexinfeydnsxdnsydnwdnhfnsxfnsyfnwfnhfole[128]dor[128]file[128]dir[128]*firstdir*firstfiletopdirtotaldirshilitetopfiletotalfilesimage_sliderslider_heightslider_spacetopimatotalimacurimaxcurimay*first_sel_ima*hilite_imatotal_selectedima_redraw*cmap*arg1outline[4]neutral[4]action[4]setting[4]setting1[4]setting2[4]num[4]textfield[4]textfield_hi[4]popup[4]text[4]text_hi[4]menu_back[4]menu_item[4]menu_hilite[4]menu_text[4]menu_text_hi[4]but_drawtypepad1[3]back[4]header[4]panel[4]shade1[4]shade2[4]hilite[4]grid[4]wire[4]select[4]lamp[4]active[4]transform[4]vertex[4]vertex_select[4]edge[4]edge_select[4]edge_seam[4]edge_facesel[4]face[4]face_select[4]face_dot[4]normal[4]bone_solid[4]bone_pose[4]strip[4]strip_select[4]vertex_sizefacedot_sizebpad[2]syntaxl[4]syntaxn[4]syntaxb[4]syntaxv[4]syntaxc[4]tuitbutstv3dtfiletipotinfotsndtacttnlatseqtimatimaseltexttoopsttimespec[4]dupflagsavetimetempdir[160]fontdir[160]renderdir[160]textudir[160]plugtexdir[160]plugseqdir[160]pythondir[160]sounddir[160]yfexportdir[160]versionsvrmlflaggameflagswheellinescrolluiflaglanguageuserprefviewzoomconsole_bufferconsole_outmixbufsizefontsizeencodingtransoptsmenuthreshold1menuthreshold2fontname[256]themesundostepscurssizetb_leftmousetb_rightmouselight[3]tw_hotspottw_flagtw_handlesizetw_sizetextimeouttexcollectrateobcenter_diavertbaseedgebaseareabase*sceneendxendysizexsizeyscenenrscreennrfullmainwinwinakthandler[8]*newvvec*v1*v2panelname[64]tabname[64]ofsxofsycontrolold_ofsxold_ofsysortcounter*paneltab*v3*v4*fullwinmat[4][4]headrctwinrctheadwinwinheadertypebutspacetypewinxwinyhead_swaphead_equalwin_swapwin_equalheadbutlenheadbutofscursorspacedatauiblockspanels*curscreen*curscenedisplaymodefileflagsglobalfname[80]*se1*se2*se3nrdone*stripdataorxory*newseqstartofsendofsstartstillendstillmachinestartdispenddispmulhandsize*strip*curelemfacf0facf1*seq1*seq2*seq3seqbase*soundlevelpancurposstrobe*effectdata*oldbasep*parseq*seqbasepmetastackedgeWidthangleforwardwipetypefMinifClampfBoostdDistdQualitybNoCompbuttypeuserjitstaendtotpartnormfacobfacrandfactexfacrandlifeforce[3]vectsizedefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstepomattimetexspeedtexflag2flag2negvertgroup_vvgroupname[32]vgroupname_v[32]*keysminfacused*idusedelemdxdylinkotypedataold*poin*oldpoinresetdistlastval*makeyqualqual2targetName[32]toggleName[32]value[32]maxvalue[32]materialName[32]damptimerdelaypropname[32]matname[32]axisflag*fromObjectsubject[32]body[32]pulsefreqtotlinks**linksinvertfreq2axisfbuttonbuttonfhathatfprecisionstr[128]*mynewinputstotslinks**slinksvalvalotime*actblendinprioritystridelengthstrideaxisreserved3sndnrmakecopycopymadepad[1]trackvolume*melinVelocity[3]localflagforceloc[3]forcerot[3]linearvelocity[3]angularvelocity[3]addedlinearvelocity[3]anotherpad[4]butstabutendminfacvisifacslowminloc[3]maxloc[3]minrot[3]maxrot[3]distributionint_arg_1int_arg_2float_arg_1float_arg_2toPropName[32]*toObjectbodyTypefilename[64]loadaniname[64]goaccellerationmaxspeedmaxrotspeedmaxtiltspeedrotdamptiltdampspeeddamp*sample*stream*newpackedfile*snd_soundpanningattenuationpitchmin_gainmax_gaindistancestreamlenloopstartloopendchannelshighpriopad[10]gaindopplerfactordopplervelocitynumsoundsblendernumsoundsgameengine*gkeypadfokeygobjectgkey*activechildbaserollhead[3]tail[3]bone_mat[3][3]arm_head[3]arm_tail[3]arm_mat[4][4]xwidthzwidthease1ease2rad_headrad_tailboneclassbonebasechainbaseghostepghostsizeconstflagikflag*bone*childiktree*b_bone_matschan_mat[4][4]pose_mat[4][4]pose_head[3]pose_tail[3]limitmin[3]limitmax[3]stiffness[3]ikstretchchanbasestride_offset[3]actnrtimeslidename[30]enforce*tariterationsrootbonesubtarget[32]orientweightgrabtarget[3]minmaxflagstickystuckcache[3]locallockflagfollowflagoffset[3]zmaxvolmodeplaneorglengthbulgestride_axisactstartactendstridelenrepeatblendoutstridechannel[32]TYPEcharucharshortushortintlongulongfloatdoublevoidLinkListBasevec2svec2ivec2fvec2dvec3ivec3fvec3dvec4ivec4fvec4drctirctfIDLibraryFileDataIpoKeyBlockKeyScriptLinkTextLineTextPackedFileCameraImageanimImBufMTexObjectTexPluginTexCBDataColorBandEnvMapLampWaveMaterialVFontVFontDataMetaElemBoundBoxMetaBallBezTripleBPointNurbCharInfoTextBoxCurvePathIpoDriverIpoCurveTFaceMeshMFaceMVertMEdgeMDeformVertMColMStickyOcInfoMDeformWeightModifierDataSubsurfModifierDataLatticeModifierDataCurveModifierDataBuildModifierDataMirrorModifierDataDecimateModifierDataWaveModifierDataArmatureModifierDataHookModifierDataSoftbodyModifierDataBooleanModifierDataLatticebDeformGroupLBufbActionbPosePartDeflectSoftBodyLifeFluidsimSettingsDerivedMeshObHookSBVertexBodyPointBodySpringWorldRadioBaseAviCodecDataQuicktimeCodecDataAudioDataRenderDataGameFramingTimeMarkerToolSettingsSceneGroupDagForestBGpicView3DSpaceLinkScrAreaView2DSpaceInfoSpaceIpoSpaceButsSpaceSeqSpaceFiledirentryBlendHandleSpaceOopsTreeStoreSpaceImageSpaceNlaSpaceTextSpaceScriptScriptSpaceTimeSpaceImaSelImaDirOneSelectableImaThemeUIThemeSpacebThemeSolidLightUserDefbScreenScrVertScrEdgePanelFileGlobalStripElemStripPluginSeqSequencebSoundMetaStackEditingWipeVarsGlowVarsEffectBuildEffPartEffParticleWaveEffTreeStoreElemOopsbPropertybNearSensorbMouseSensorbTouchSensorbKeyboardSensorbPropertySensorbCollisionSensorbRadarSensorbRandomSensorbRaySensorbMessageSensorbSensorbControllerbJoystickSensorbExpressionContbPythonContbActuatorbAddObjectActuatorbActionActuatorbSoundActuatorbCDActuatorbEditObjectActuatorbSceneActuatorbPropertyActuatorbObjectActuatorbIpoActuatorbCameraActuatorbConstraintActuatorbGroupActuatorbRandomActuatorbMessageActuatorbGameActuatorbVisibilityActuatorFreeCamerabSamplebSoundListenerSpaceSoundGroupKeyObjectKeyGroupObjectBonebArmaturebPoseChannelbActionChannelSpaceActionbConstraintChannelbConstraintbKinematicConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbMinMaxConstraintbActionConstraintbLockTrackConstraintbFollowPathConstraintbDistanceLimitConstraintbRotationConstraintbStretchToConstraintbActionStripTLEN  0Phtdt0XP4@l`88,T< 4DXXD<<\@4@l( 8,\T (PD$$x$(T x H8th  8 ,@0,HhH,(lDLP@< <@Lx0848l(@0pPD<,4L,,,<8,<4XSTRC                   !"#$% &'( )*+,-./012345 678 9:;<=>?@ A!BC7 "DEFGHIJKLMNO*P#$Q%R%STUVWXYZ[\]^!_`abcd&efgh'i(jklmnopqrstuvwxyz{|) }~  *stu+*,'i##FGTUE(44y*#)+,-2rstuvFG&*P.*/_rstu     ef+ +!"#$%&'()&**+,-./012345678P09:1 !_2223;<=>?@ABCDEFGHIJ4KL43; M N*/OPqQpRSTU5 VWXYZ[\]^6_WX[^777`^abcdefghij6k5lm8n`09o:63; p N'q'r's*;tu/O vQpRqwPxyz{cd49|}~0000988<'===6k5l  <> ? 3; *u/O@> ABCDE?F qQpRP@`BGXCGA`DstuEHHH"IH7  JH'i"KH'i"LHMHNHO HyPHE0'iQ H'i"RHSH'iTab06*uUUU"3FpV''_ ''*;t3;WX    N  /OQpRD      !"#P$P % & ' ( )*+,-./ 0 1 2Y3Z4[5V6V789:\;]<]=^^^'>"?@Y ABCDEFGHIJK__ZLM`NaOPQRSTUVWXYZE[\]^0__`,\abcdefghijklmnopqrs?t?u?vwxyb8rz{|}~*&Pcddd'ie  f  0ghbef]B      !"#$i%E0'jjj&'k ()*+,E-./010'l'2b3l4# 5d6m789:;<=>? @cA iBkChsgDP EnFGHEo #(jBIJKLMp5qqNOrPQRSTUVWXYZ'2o[p\]^_`aHbcdefo8ghijklmnopqr3s tuv0swxyz{|}~qqqNOrPQtqqNOrPQuqqNOrPQ0s  *+kvqqNOrPQsk lMEw qqNOrPQsI0xqqNOrPQyz {qqNOrPQs   |}qqNOrPQs#Ik~ qqNOrPQksqqNOrPQ 7k qqNOrP07kqqNOrPsQqqNOrP     0%   !"#$%$&'()*+,-./0123456789:;<=>?@ABCDEFG"HIJKLMNOPQRSTUVW_-XYZ[\]^_`abcdefghijklmnopqrs tuvwxyz{|}~E0'   l @rrrNP     %RT 4 9 }~  & 4*l$Q      4)Z,Ny| "^  "     "E0"/""0"""E' ! "#$E0" %'&' "()*+,-. /0$ 10'" %2345' W6"789:cd; <=>?<@A 5'?B"CDl'2"' EFQRGHIJ "EKL'MNOPQRST "EKLm7UVWXYZ'[ \E0!]^ / _" ' `abcdefg h!_!i j*Aklmnop7qrstuvwxyz{qqNOrPs<0]"|''*QpRD    }' ~m   "Xp/   0"wE0  QpDtX * "cW qqNOrPQsW* c 'X0'cd'c'c' 'MW6' ' 'E0p   '*W67ENDB