POV-Ray渲染Mathematica三维图形对象

Mathematica 绘图非常方便,而且也很漂亮。

如果再添上这个“技能”——POV-Ray,就可以方便地绘制出真实世界中的三维物体了。

1、关于 POV-Ray

POV-Ray,全名是 Persistence of Vision Raytracer,是一个使用光线跟踪绘制三维图像的开放源代码自由软件。很多漂亮的图片就是由 POV-Ray 来制作的。有兴趣或有需要的朋友,可以学一下其语法。

从官网下载对应的安装包,直接安装即可。

2、关于 POVRayRender For Mathematica

2.1、介绍

POVRayRender For Mathematica 是 GitHub 上的一个开源项目,它是 Mathematica 的一个扩展包。

2.2、功能

  • 可渲染大多数由 Mathematica 绘制的 Graphics3D 对象

2.3、安装

  1. 下载POVRayRender包,点击这里
  2. 解压POVRayRender包到指定路径:
    Mac 解压到 $UserBaseDirectory
    Windows 解压到 FileNameJoin[{$InstallationDirectory, "AddOns/Packages"}]
  3. 设置 POV-Ray 的安装路径,例如:
(*配置POVRayRender路径,只运行一次即可*)
(*注意:路径要改成自己电脑上POVRayRender的实际安装路径*)
ConfigurePOVRayRender["POVRayPath"->"C:\\Program Files\\POV-Ray\\v3.7\\bin\\pvengine64.exe"]

2.4、使用

直接渲染

(*加载POVRayRender包*)
Needs["POVRayRender`"]

(*绘制要渲染的原图*)
p = SphericalPlot3D[
  1 + 2 Cos[2 \[Theta]], {\[Theta], 0, Pi}, {\[Phi], 0, 2 Pi}, 
  ColorFunction -> Function[{x, y, z, \[Theta], \[Phi], r}, Hue[r]], 
  Mesh -> None, Axes -> None, PlotPoints -> 100]

(*调用POV-Ray渲染原图,并导出到D盘根目录*)
(*此时会弹出渲染对话框,等渲染结束后关闭即可*)
POVRayRender[p, "OutputPath" -> "D:/pov.png"]

生成脚本

Needs["POVRayRender`"](*加载包*)

(*绘制原图*)
p = SphericalPlot3D[
 Evaluate@Abs@SphericalHarmonicY[5, 2, \[Theta], \[Phi]], {\[Theta],
 0, \[Pi]}, {\[Phi], 0, 2 \[Pi]}, Mesh -> None, 
 ColorFunctionScaling -> False, PlotPoints -> 100];

(*生成绘图脚本*)
povStr = ToPOVRayScene[p];

(*背景平面*)
planeStr = "
 plane { z,-2 
 texture{ 
 pigment{ checker rgb<1,1,1> rgb<0,0,0>}
 scale 0.25
 }
 }
 \n
 ";

(*玻璃纹理*)
glassTextureStr = "
 pigment { rgbf <0.5,0.9,1,0.95> }
 finish
 { phong 0.9 phong_size 40 
 // A highlight
 reflection 0.2 
 // Glass reflects a bit
 }
 interior
 { ior 1.5} 
 // Glass refraction
 \n
 ";

(*修改绘图脚本*)
povStr2 = 
 StringInsert[
 StringInsert[povStr, planeStr, 
 StringPosition[povStr, "mesh2"][[1, 1]] - 1], glassTextureStr, 
 StringPosition[povStr, "}"][[-2, 1]] + StringLength[planeStr] + 1];

(*绘图脚本存储地址*)
scencePath = 
 FileNameJoin[{$TemporaryDirectory, "glassWavefunction.pov"}];

(*导出绘图脚本*)
Export[scencePath, povStr2, "String"];

(*运行刚刚生成的脚本*)
Run["\"" <> POVRayRender`Private`$POVRayPath <> "\" " <> scencePath <>
 " +W800 +H600 -J +A0.001"];

(*导入渲染后的图片*)
Import[FileNameJoin[{$TemporaryDirectory, "glassWavefunction.png"}]]

2.5、更多的例子

 

3、问题

扩展包的帮助文件夹为:”./POVRayRender/Documentation/”

问题:在 Windows(10)上,使用 Mathematica 11.1.1,可以查到相关帮助,但无法打开详情页面,如下图所示。参见:https://github.com/xslittlegrass/POVRayRender-For-Mathematica/pull/1

 

About the Author

野鹤

自由学者,爱好广泛,虽无一精通,却常乐在其中...

本博客已停止更新,请您移步到我的新博客阅读更多文章。