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、安装
- 安装 POV-Ray;
- 下载POVRayRender包,点击这里 ;
- 解压POVRayRender包到指定路径:
Mac 解压到$UserBaseDirectory
Windows 解压到FileNameJoin[{$InstallationDirectory, "AddOns/Packages"}] - 打开Mathematica,设置 POV-Ray 的安装路径,例如:
(*加载POVRayRender包*) Needs["POVRayRender`"] (*配置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





