MMA How To I —— 使用Blender渲染三维图形
MMA How To I —— 使用Blender渲染三维图形

MMA How To I —— 使用Blender渲染三维图形

使用Blender渲染三维图形

如果你看过这篇文章:

重新发明复数 篇五 卡西尼曲线和复数域上的变换

那么你一定记得卡西尼曲线的形状。在Blender里,我们可以通过添加光源等方法,让卡西尼面看起来金光闪闪:

视频中的曲面,就是由Mathematica导出的stl文件编辑而成的。

用Mathematica创造一个曲面

曲面表达式

事实上,卡西尼曲面的表达式并不是可以不经思考就写出来的,但是使用WolframAlpha, 我们可以得到卡西尼曲面的文字表达式:

WolframAlpha["cassini surface", {{"EquationsPod:Surface", 1}, "Plaintext"}]
((x – a)^2 + y^2) ((a + x)^2 + y^2) = z^4

ContourPlot3D

使用ContourPlot3D函数: 生成关于 x、y 和 z 的函数 f 的三维等高图.

使用ContourPlot3D函数,我们能够绘制出该表达式的等高线图.

cp=ContourPlot3D[((x – 1)^2 + y^2)((1 + x)^2 + y^2)== z^4,{x, -2.3, 2.3},{y, -2, 2},{z, -2, 2},Mesh -> All, MaxRecursion -> 4, PlotPoints -> 40, Boxed -> False, Axes -> None]

值得注意的这里的一些选项,其中Mesh->All代表了绘制出所有的网格,而为了获得更高的模型精度,PlotPoints和MaxRecursion可以稍微大一些,Boxed和Axes选项在这里上去了边框和坐标轴。

得到的结果为:
cassini surface

可以看到,精度相对来说很高,这对之后的渲染效果有很大的影响。

导出STL文件

Blender可以支持多种3D文件类型,Mathematica也支持多种文件格式的输出,我在这里使用stl文件,obj和x3d文件也可以。

Export["CassiniSurface.stl", cp]

这样就导出了stl文件(使用SetDirectory[NotebookDirectory[]]将导出位置修改为notebook的位置)

Blender渲染

导入stl文件

我们这里使用另一个stl文件进行导入,方法为

一个海螺就会出现在原点处,选择左侧的移动按钮,将海螺沿z轴上移一些,再如下图,创建一个平面:

创建的平面会非常小,但通过修改右侧的缩放x,y选项,可以放大这个平面。

灯光,材质

在打开Blender时会自动生成一个灯光,所以可以直接在右侧调节该灯光的属性,例如颜色,亮度等,也可以选择左侧移动按钮来移动灯光的位置。

(注意,右侧有很多选项,可以一个个先浏览一遍)

我们也可以按照之前创建平面的方法创建灯光,但要注意新建的灯光只有10w,而默认的灯光是1000w的。

在这里,我创建了一个聚光灯。

如你所见,我们现在有一个海螺,一个平面,两个灯光和一个摄像机。

我们需要修改平面和海螺的材质才能让整个画面看起来比较真实。

海螺材质(光泽)

平面材质 (漫射)

调整相机,渲染!

按小键盘0或者3D界面右侧的摄像机按钮进入相机视角,在右上角选择Camera之后,在右下方属性里面调整相机xyz轴位置和角度,使其正对海螺。

左上角渲染-渲染图像,或者F12, 就能得到这样一张图片

动画

更新中…

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据