400-616-5551

您所在位置: 首页> java技术> python培训 | Python创意编程,实现傅里叶级数可视化

python培训 | Python创意编程,实现傅里叶级数可视化

发布百知教育 来源:java技术 2019-11-18

前言的前言:

如果你的技能点选择了 Python,恭喜,现在 Python 赶上了 AI 热潮。
而如果恰好还想做 Creative Programming,苦于漫天教程大多集中在 Processing、Unity、OpenFrameworks、vvvv 等平台,真青年不要慌,Python 大法依然香,往下看。



前言:

【编程德鲁伊】系列是我的横向编程练习笔记,每期围绕一个主题(数学物理电子图形声音...),用几种程序语言分别实现。战法牧贼同时修,能抗能打能奶能开溜。

(老乡别走,干货后面有)



编程德鲁伊 - 数学篇 - 傅里叶级数可视化

Blender + Python 实现

本章做傅里叶级数可视化,已经分别练习了 JavaScript (React) 版


python培训


以及 Unity 版:



python培训


这一节又轮到 Python 了。



Playground 的选择

在上一章三角函数主题里(Python三角函数可视化),Python 的开发环境或者 Playground ,我用的是 Jupyter Notebook 。它是一个 Web 版的在线 Python 开发环境,可以基本做到实时编程,边写边看运行结果,还可以代码和文档混编。


python培训


这样会相对容易一些,不用考虑如何搭建合理的本地 Python 环境、如何可视化图形渲染等问题。先把注意力集中在 Python 代码编写上,直接在浏览器里就可编写并查看运行结果。


Jupyter 虽好,但仍不够野,如果想做更丰富的可视化效果,而非仅仅把公式曲线画出来,那用 Jupyter 来跑 Python 就稍有点限制。

我需要一个不用太操心图形渲染底层实现,并且渲染效果又强悍粗暴的 Python 运行环境。
Blender 和 TouchDesigner 是两款看上去符合条件的软件。


Blender 是一款开源的 3D 内容创作软件,核心功能可以类比 3D Max、Maya 等,体积短小精湛却又功能粗暴,横跨多操作系统。


Blender 的生态基于 Python 而建,插件、扩展以及高级定制功能,都可以用 Python 来编写。(其实也可以做实时交互的游戏,这一点有点像 Unity,当然 Blender 更偏重 3D 内容的制作。)


TouchDesigner


python培训


TouchDesigner 是一款图形化编程工具,可以类比其他连连看工具如 MaxMSP 、 vvvv 等。
TouchDesigner 的扩展脚本语言,也是 Python。


对我来说,目前用 MaxMSP 连连看完全够用,等何时 TouchDesigner 火了我再来蹭热点。

所以本次我用 Blender 作为 Python 编程练习的运行环境


Hello World


首先在 Blender 官网下载 2.80 版的安装文件,Mac、Windows、Linux都支持。


2.80 版起,Blender 有了巨大的更新,究竟有多大,我也不太清楚,因为我上一次用 Blender 是十多年前了,当时还是 2.4x 版,用 Python 试了试参数化建筑生成。
反正 2.80 版我当新软件用就对了。

2.80 版安装后启动:


它的功能很多,建模、贴图、动画、渲染等都有,反正我跟十多年前一样仍然不太会用,推荐查阅官方教程。

本文直接切到 Scripting 来跑 Python。


在 Scripting 里有一个 Console,开箱即用,直接在里面输入 Python 代码即可。百年传统,hello world:


python培训


仅在 Console 里写是很不方便的,点选图中的 Text,这实际上是一个代码文本编辑器,点击新建(New)开始玩耍:


python培训


继续用 hello world 试试:

print ("hello world from Text Editor")


python培训



输入代码,点击 Run Script 后,可以发现左侧的自带Console区域里,并没有打印 "hello world from Text Editor" 字样。

(老乡别走,干货后面还有)

要调试打印 Text Editor 的代码,需要打开操作系统自带的 Console。这里有官方 Tips :
https://docs.blender.org/api/current/info_tips_and_tricks.html#use-the-terminal

对 Blender Windows 版,直接在 help 菜单里开启系统 Console 即可。

对 Mac 版,要先开系统 Terminal/终端(如果已打开 Blender 可以先关闭),在 Terminal 里打开 Blender:

  • 打开 Terminal 或终端

  • 在应用程序里右键点击 Blender(.app),选择 “Show Package Contents” 或“查看包内容”

  • 找到 Contents->MacOS->Blender

  • 将 'Blender' 拖拽到 Terminal 窗口中

  • 回车


开启系统 Terminal 后,重新在 Blender Scripting 的 Text 中输入
print ("hello world from Text Editor") 
然后 Run Script,便可在 Terminal 中看到打印的信息:


python培训


Grease Pencil

Grease Pencil 是 Blender 2.80 版的新功能,它是一种特殊的 Blender object,允许你在 3D 空间里绘制 2D 图形,制作传统 2D 动画,剪切,动效,甚至制作故事版等。


前边说过,Blender 是深度结合 Python 的软件,基本上所有软件操作,都有对应的 Python API 供使用。所以铺垫了那么多,现在终于可以总结为:

在 Blender 里用 Python 调用 Grease Pencil API 进行 2D 图形绘制。

有点像在 Processing 和 P5js 里用代码画图的形式,但同时可以使用 Blender 强大的软件功能,比如直接使用功能菜单,去修改代码所画物体的贴图、材质等等,这一点上,又有点像 Unity 的操作。


傅里叶级数

终于回到正题了……

再回顾一下傅里叶级数的简化公式:


python培训


有关傅里叶级数的数学知识学习笔记,可见 JavaScript (React)傅里叶级数可视化 

用 Python 编写公式逻辑,以及调用 Blender Grease Pencil API 进行绘制渲染:


python培训





完整代码可见后文。


最终效果:


python培训



注释:本文内容来自公众号实验编程


python培训:http://www.baizhiedu.com/python2019



上一篇:Python培训 | 怎样做才能让python技术突飞猛进

下一篇:应届生去公司找个Java程序员的职位需要什么技能?

相关推荐

www.baizhiedu.com

有位老师想和您聊一聊

关闭

立即申请