Snap! 中的 Spline 库

Snap! 中的 Spline 库

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

这篇文章介绍了将3D环境引入到Snap!编程中的想法。作者通过使用iframe库,将基于web的3D环境与Snap!进行通信和互操作。作者选择了Spline作为3D编辑器,并将其与Snap!结合使用。文章还提到了dynatalk-over-postmessage库的使用,以实现同步通信。

🔎

延伸解读

为何选择 Spline 而非深度整合 3D 引擎

作者比较了多种将 3D 引入 Snap! 的方案,最终放弃基于 three.js 或 babylon.js 自研 3D 编辑器的路线,因为工程量巨大且易用性存疑。转而选择 Spline 作为外部编辑器,看中其简单易用和暴露 API 的特点。这种思路将 3D 制作与编程控制分离,类似 Snap! 操作 MicroBlocks 项目的模式,降低了实现难度。

iframe 与 postMessage 的桥梁作用

文章通过通用 iframe 库将基于 Web 的 3D 环境嵌入 Snap!,并利用 postMessage API 实现通信。postMessage 本身是异步的发布/订阅模式,而 dynatalk-over-postmessage 库在此基础上提供了同步通信能力,使得 Snap! 可以像调用本地函数一样与 3D 环境交互,例如 ask _ for _ 积木。这为跨引擎互操作提供了通用基础。

设计哲学:让计算适应人类

作者从 Alan Kay 和 Croquet 团队的视角出发,认为 GUI 的桌面隐喻制造了心理幻觉,让用户能迁移现实经验。3D 环境能进一步增强这种幻觉,因为事物存在于三维空间,更贴近人类的现实认知。将 3D 引入 Snap! 正是为了适应人类而非让人类适应计算,从而提升交互体验。

❓

Q&A

如何将3D环境引入Snap!编程中?

通过使用iframe库,将基于web的3D环境与Snap!进行通信和互操作。

为什么选择Spline作为3D编辑器?

Spline是最简单易用的3D工具,极大降低了3D项目的制作难度。

dynatalk-over-postmessage库的作用是什么?

该库用于实现Snap!与iframe中3D环境的同步和异步通信。

Snap!通常用于什么类型的项目?

Snap!通常用于制作2D项目,但作者希望引入3D环境。

如何实现Snap!与3D环境的通信?

通过postMessage API,Snap!可以与iframe中的3D环境进行通信。

引入3D环境对用户体验有什么影响?

引入3D环境旨在增强用户的交互体验,使计算适应人类,而不是让人类适应计算。

➡️

继续阅读