press.pov 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: press.pov
  3. // Purpose: POV-Ray scene used to generate clip for splash
  4. // Author: Wlodzimierz ABX Skiba
  5. // Modified by:
  6. // Created: 24/11/2004
  7. // Copyright: (c) Wlodzimierz Skiba
  8. // Licence: wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10. #version 3.6;
  11. // Rendering options : +FT +W80 +H60 +AM1 +A0.05 +R5 +J0 +KFF500
  12. // Produced TGA images converted to MPG with good old (1993) CMPEG tool
  13. // Conversion : cmpeg.exe -v1 ipb.ctl frames.lst press.mpg
  14. #include "colors.inc"
  15. #include "rad_def.inc"
  16. global_settings {
  17. assumed_gamma 1.0
  18. max_trace_level 100
  19. }
  20. background { colour White }
  21. #declare Texts = array[ 3 ];
  22. #declare Texts[0] = "PRESS";
  23. #declare Texts[1] = "ANY";
  24. #declare Texts[2] = "KEY";
  25. camera{ orthographic look_at .5 location .5-z right 1.05*x up 1.05*y }
  26. #declare Items = dimension_size( Texts , 1 );
  27. #declare Objects = array[ Items + 1 ];
  28. #declare f_line = function(x,xa,ya,xb,yb){((yb-ya)/(xb-xa))*(x-xa)+ya};
  29. #declare Counter = 0;
  30. #while ( Counter <= Items )
  31. #if ( Counter < Items )
  32. #declare Object = text{ ttf "crystal.ttf" Texts[ Counter ] 1 0 };
  33. #else
  34. #declare Object = Objects[ Items ];
  35. #end
  36. #declare M = max_extent( Object );
  37. #declare m = min_extent( Object );
  38. #declare S = M - m;
  39. #declare Objects[ Counter ] = object{ Object translate -m + z*Counter scale <1/S.x,1/S.y,1> };
  40. #declare Objects[ Items ] =
  41. #if ( Counter = 0 | Counter = Items )
  42. object{
  43. #else
  44. union{
  45. object{ Objects[ Items ] translate y*1.1 }
  46. #end
  47. object{ Objects[ Counter ] }
  48. };
  49. #declare Pause=0.1;
  50. #declare X0=(Counter+Pause)/(Items+2);
  51. #declare Y0=0;
  52. #declare X1=(Counter+1)/(Items+2);
  53. #declare Y1=1;
  54. #declare X2=(Counter+2-Pause)/(Items+2);
  55. #declare Y2=0;
  56. #declare C1=f_line(clock,0,0,3/4,1);
  57. #declare C2=(Items+1)/(Items+2);
  58. #declare C3=f_line(clock,1/4,0,1,1);
  59. #declare C=max(min(C1,C2),C3);
  60. #declare increase=f_line(C,X0,Y0,X1,Y1);
  61. #declare decrease=f_line(C,X1,Y1,X2,Y2);
  62. #declare change=min(increase,decrease);
  63. #declare level=min(max(change,0),1);
  64. object{
  65. Objects[ Counter ]
  66. pigment{ rgb level transmit 1-level }
  67. }
  68. #declare Counter = Counter + 1;
  69. #end