POV-RAY代码转换为Python的Vapory

时间:2018-07-05 18:09:19

标签: python povray

在这里,我正在尝试将一些POV-Ray代码转换为Python。我正在使用VAPORY模块。尤其是scale <4/3,1,1>*1.75pigment{ color rgb<1,1,1>*1.1 }这部分非常令人困惑。无法弄清楚如何将*1.75*1.1添加到Python代码中。

纯POV射线码:

box { <-0.04,-0.04,0>,< 1.03, 1.04, 0.01>   
      // 1st layer: White
      texture{ 
        pigment{ color rgb<1,1,1>*1.1 } 
        finish{ phong 1}
      } // ------------------------------ 
      // 2nd layer: image_map
      texture{
        pigment{
          image_map{ jpeg "Image_gamma_0.jpg"  
          // maps an image on the xy plane from <0,0,0> to <1,1,0> (aspect ratio 1:1)
          // accepted types: gif, tga, iff, ppm, pgm, png, jpeg, tiff, sys
          map_type 0 // 0=planar, 1=spherical, 2=cylindrical, 5=torus
          interpolate 2 // 0=none, 1=linear, 2=bilinear, 4=normalized distance
          once //
         } // end of image_map
       } //  end of pigment
     } // end of texture

     scale <4/3,1,1>*1.75
     rotate<  0, 0,0>
     translate<-1.5,0.1,-2>
} // end of box //

蒸汽代码:

# box with layered textures
box = Box ([-0.04, -0.04, 0], [1.03, 1.04, 0.01],
           # 1st layer: White
           Texture(
               Pigment('color', [0, 0, 1]),
               Finish('phong', 1)
               ), # End of 1st layer ------------------------------
           # 2nd layer: image_map
           Texture(
               Pigment(
                   ImageMap(
                       'jpeg', 
                       '"Image_gamma_0.jpg"',
                       'gamma', 2.0,
                       'map_type', 0,
                       'interpolate', 2,
                       'once'
                       ), # end of image_map
                   ), # end of pigment
               ), # end of texture
           'scale', [4/3, 1, 1],
           'translate', [-1.5, 0.1, -2]
           ) # end of box # -----------------------

1 个答案:

答案 0 :(得分:1)

您可以使用numpy进行矢量操作:
python列表[]对应于POV-Ray向量<>
numpy数组支持所需的标量乘法(* x)

  1. 从列表中创建一个numpy数组
  2. 乘数组
  3. 将数组转换为列表

像这样:

import numpy as np
print(list(np.array([1,2,3])*2.5)) 
  

结果:[2.5、5.0、7.5]