如何制作 3D 可视化编程语言

How can I make a 3D visual programming language

这不是开玩笑。我想要教程。

我想做一个3D(节点编辑器/编程语言/图形编辑器)像这样的图片:

我该怎么做?

这些只是对此事的一些想法,我认为一些规划会被要求uired。 我不知道有任何教程解释如何创建 uild 节点编辑器,但由于存在如此多的节点编辑器,也许您最好的灵感来源是其他人的代码库。

我觉得你可以看看现有技术:

https://architecture.mit.edu/computation/project/visual-programming-three-dimensions-visual-representations-computational-mental

另外,我觉得你可以这样规划:

  1. 弄清楚它会是什么样子(也许你可以先在 blender 上制作模型)
  2. 考虑允许什么样的交互,鼠标将如何工作?
  3. 考虑使用现有的 3d 框架,如 openframeworks 或 unity
  4. 设计一个命令选项板或键盘快捷键列表,列出需要的东西ui红色
  5. 研究现有的 2d 笔记编辑器,考虑评估 John Paul Morrison(基于流的编程)的工作以及 NoFlo 或 PyFlow 等许多其他东西,你可以研究那些有实际用户的东西,比如 Unreal Node Editor,或者最近我觉得 Unity 也有一个。
  6. 设计一个执行引擎(代码实际如何 运行、输入端口、输出端口等)。
  7. 考虑您将用于 saving/loading 网络的格式,是 sqlite 吗? json?您是否需要存储节点的坐标和尺寸,以及节点之间的连接?
  8. 如果要定位一个新的节点,它会放在哪里?您需要在 3d space 中指示任意点,还是让新节点位置相对于现有对象更好?
  9. component 属性 编辑器可能很重要,每个节点可能都有自己的一组属性,每个节点是否都是自定义的,带有自定义 ui 用于编辑?还是所有节点都有一个通用的 属性 编辑器?应该做出这些决定。

自定义节点属性可用于使 ui 对用户来说更容易,但是 全局 属性 编辑器将允许您以相对便宜的方式创建许多组件。

  1. 需要支持哪些操作?你需要自动布局算法吗,比如 graphviz 的点?

  2. 运行时间允许逐步执行吗?节点统计?实时可视化?

  3. 考虑谁是这个工具的目标市场,为什么这个工具在现有工具之外会有用,是音乐艺术家使用下一个 vvvvv 吗?还是图形艺术家正在制作下一个着色器?对网络开发有用吗?还是针对特定的细分市场?

我希望你会发现这些想法和想法在你的过程中有用,我期待着你会做的事情uild。