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

前言的前言:

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

前言:

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

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

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

Blender + Python 实现

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

6db38b991aab2f8a263d67b67d42e6e4.gif

以及Unity 版:

948589a061d1df5aec281145f2793216.gif

这一节又轮到Python了。

Playground 的选择

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

7fcc23ca859008882456fd225b204367.png

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

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

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

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

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

TouchDesigner

94d1fdb5c259b64f91a5eb7d7005fc7e.png

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:

54a0a8a49d6f7014c8bebe53ddfa52a4.png

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

640b753719cb2a436241029ce5906166.png

继续用 hello world 试试:

print ("hello world from Text Editor")

5d93c39775781d06ac1d46e9f45e48d8.png

输入代码,点击 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 中看到打印的信息:

0349686c17277924cdf0cb7cbab3299e.png

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 的操作。

傅里叶级数

终于回到正题了……

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

9a5e9d10ffef97d8ab7748cb5fffad45.png

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

1dd57ee70035dbfbe35d22562c17968d.png

完整代码可见后文。

最终效果:

325a1ebc4a0b10c4eb7f218380c18b2e.gif

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值